9
9
@dragleave.prevent="handleDragLeave"
10
10
@drop.prevent="handleDropFiles">
11
11
<GuestWelcomeWindow v-if="isGuestWithoutDisplayName" :token="token" />
12
- <TransitionWrapper name="slide-up" mode="out-in">
13
- <div v-show="isDraggingOver"
14
- class="dragover">
15
- <div class="drop-hint">
16
- <div class="drop-hint__icon"
17
- :class="{
18
- 'icon-upload' : !isGuest && !isReadOnly,
19
- 'icon-user' : isGuest,
20
- 'icon-error' : isReadOnly}" />
21
- <h2 class="drop-hint__text">
22
- {{ dropHintText }}
23
- </h2>
24
- </div>
25
- </div>
26
- </TransitionWrapper>
27
- <MessagesList role="region"
28
- :aria-label="t('spreed', 'Conversation messages')"
29
- :token="token"
30
- :is-chat-scrolled-to-bottom.sync="isChatScrolledToBottom"
31
- :is-visible="isVisible" />
12
+ <div class="messages-list-dragover-wrapper">
13
+ <TransitionWrapper name="slide-up" mode="out-in">
14
+ <NcEmptyContent v-show="isDraggingOver"
15
+ :name="dropHintText"
16
+ class="dragover">
17
+ <template #icon>
18
+ <IconTrayArrowUp v-if="!isGuest && !isReadOnly" />
19
+ <IconAccount v-else-if="isGuest" />
20
+ <IconAlertOctagon v-else-if="isReadOnly" />
21
+ </template>
22
+ </NcEmptyContent>
23
+ </TransitionWrapper>
24
+ <MessagesList role="region"
25
+ :aria-label="t('spreed', 'Conversation messages')"
26
+ :token="token"
27
+ :is-chat-scrolled-to-bottom.sync="isChatScrolledToBottom"
28
+ :is-visible="isVisible" />
29
+ </div>
32
30
33
31
<div class="scroll-to-bottom">
34
32
<TransitionWrapper name="fade">
39
37
class="scroll-to-bottom__button"
40
38
@click="scrollToBottom">
41
39
<template #icon>
42
- <ChevronDoubleDown :size="20" />
40
+ <IconChevronDoubleDown :size="20" />
43
41
</template>
44
42
</NcButton>
45
43
</TransitionWrapper>
57
55
</template>
58
56
59
57
<script>
60
- import ChevronDoubleDown from 'vue-material-design-icons/ChevronDoubleDown.vue'
58
+ import IconAccount from 'vue-material-design-icons/Account.vue'
59
+ import IconAlertOctagon from 'vue-material-design-icons/AlertOctagon.vue'
60
+ import IconChevronDoubleDown from 'vue-material-design-icons/ChevronDoubleDown.vue'
61
+ import IconTrayArrowUp from 'vue-material-design-icons/TrayArrowUp.vue'
61
62
62
63
import { t } from '@nextcloud/l10n'
63
64
64
65
import NcButton from '@nextcloud/vue/dist/Components/NcButton.js'
66
+ import NcEmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent.js'
65
67
66
68
import GuestWelcomeWindow from './GuestWelcomeWindow.vue'
67
69
import MessagesList from './MessagesList/MessagesList.vue'
@@ -80,12 +82,17 @@ export default {
80
82
81
83
components: {
82
84
NcButton,
83
- ChevronDoubleDown ,
85
+ NcEmptyContent ,
84
86
MessagesList,
85
87
NewMessage,
86
88
NewMessageUploadEditor,
87
89
TransitionWrapper,
88
90
GuestWelcomeWindow,
91
+ // icons
92
+ IconAccount,
93
+ IconAlertOctagon,
94
+ IconChevronDoubleDown,
95
+ IconTrayArrowUp,
89
96
},
90
97
91
98
props: {
@@ -216,9 +223,17 @@ export default {
216
223
min-height: 0;
217
224
}
218
225
226
+ .messages-list-dragover-wrapper {
227
+ position: relative;
228
+ width: 100%;
229
+ height: 100%;
230
+ display: flex;
231
+ min-height: 0;
232
+ }
233
+
219
234
.dragover {
220
235
position: absolute;
221
- inset: 10 %;
236
+ inset: 5 %;
222
237
background: var(--color-primary-element-light);
223
238
z-index: 11;
224
239
display: flex;
@@ -228,15 +243,6 @@ export default {
228
243
pointer-events: none;
229
244
}
230
245
231
- .drop-hint {
232
- margin: auto;
233
- &__icon {
234
- background-size: 48px;
235
- height: 48px;
236
- margin-bottom: 16px;
237
- }
238
- }
239
-
240
246
.scroll-to-bottom {
241
247
position: relative;
242
248
height: 0;
0 commit comments