81
81
</template >
82
82
</room >
83
83
</div >
84
+ <transition name =" vac-fade-preview" appear >
85
+ <media-preview
86
+ v-if =" showMediaPreview"
87
+ :file =" previewFile"
88
+ @close-media-preview =" showMediaPreview = false"
89
+ />
90
+ </transition >
84
91
</div >
85
92
</template >
86
93
87
94
<script >
88
95
import RoomsList from ' ./RoomsList/RoomsList'
89
96
import Room from ' ./Room/Room'
97
+ import MediaPreview from ' ./MediaPreview/MediaPreview'
90
98
91
99
import locales from ' ../locales'
92
100
import { defaultThemeStyles , cssThemeVars } from ' ../themes'
@@ -99,7 +107,8 @@ export default {
99
107
name: ' ChatContainer' ,
100
108
components: {
101
109
RoomsList,
102
- Room
110
+ Room,
111
+ MediaPreview
103
112
},
104
113
105
114
props: {
@@ -163,7 +172,8 @@ export default {
163
172
roomMessage: { type: String , default: ' ' },
164
173
scrollDistance: { type: Number , default: 60 },
165
174
acceptedFiles: { type: String , default: ' *' },
166
- templatesText: { type: Array , default: null }
175
+ templatesText: { type: Array , default: null },
176
+ mediaPreviewEnabled: { type: Boolean , default: true }
167
177
},
168
178
169
179
emits: [
@@ -191,7 +201,9 @@ export default {
191
201
room: {},
192
202
loadingMoreRooms: false ,
193
203
showRoomsList: true ,
194
- isMobile: false
204
+ isMobile: false ,
205
+ showMediaPreview: false ,
206
+ previewFile: {}
195
207
}
196
208
},
197
209
@@ -333,7 +345,12 @@ export default {
333
345
this .$emit (' delete-message' , { message, roomId: this .room .roomId })
334
346
},
335
347
openFile ({ message, file }) {
336
- this .$emit (' open-file' , { message, file })
348
+ if (this .mediaPreviewEnabled && file .action === ' preview' ) {
349
+ this .previewFile = file .file
350
+ this .showMediaPreview = true
351
+ } else {
352
+ this .$emit (' open-file' , { message, file })
353
+ }
337
354
},
338
355
openUserTag ({ user }) {
339
356
this .$emit (' open-user-tag' , { user })
0 commit comments