@@ -70,7 +70,6 @@ const toggleVideo = async () => {
70
70
isCameraOn .value = false
71
71
}
72
72
} catch (err ) {
73
- // eslint-disable-next-line no-console
74
73
console .error (' Failed to toggle video:' , err )
75
74
}
76
75
}
@@ -93,7 +92,6 @@ const toggleScreen = async () => {
93
92
isScreenSharing .value = false
94
93
}
95
94
} catch (err ) {
96
- // eslint-disable-next-line no-console
97
95
console .error (' Failed to toggle screen sharing:' , err )
98
96
}
99
97
}
@@ -191,120 +189,98 @@ const showShareScreenSettingDetail = ref(false)
191
189
:class =" $style.closeButton"
192
190
@click =" isSubView = true"
193
191
/>
194
- <UserList />
195
-
196
- <div :class =" $style.TrackContainer" >
197
- <div :class =" $style.controlBar" >
198
- <div :class =" $style.smallButtonGroup" >
199
- <div :class =" $style.soundBoardButton" >
200
- <CallControlButtonSmall
201
- icon =" sound_detection_loud_sound"
202
- :on-click =" handleSound"
192
+
193
+ <!-- 縦並び用のラッパ -->
194
+ <div :class =" $style.stackContainer" >
195
+ <UserList :class =" $style.userList" />
196
+
197
+ <div :class =" $style.controlBarContainer" >
198
+ <div :class =" $style.controlBar" >
199
+ <div :class =" $style.smallButtonGroup" >
200
+ <div :class =" $style.soundBoardButton" >
201
+ <CallControlButtonSmall
202
+ icon =" sound_detection_loud_sound"
203
+ :on-click =" handleSound"
204
+ />
205
+ <ClickOutside @click-outside =" showSoundBoard = false" >
206
+ <SoundBoard v-if =" showSoundBoard" />
207
+ </ClickOutside >
208
+ </div >
209
+ <div ref =" reactionButton" >
210
+ <CallControlButtonSmall
211
+ icon =" add_reaction"
212
+ :on-click =" handleReaction"
213
+ />
214
+ </div >
215
+ </div >
216
+ <div :class =" $style.verticalBar" ></div >
217
+ <div :class =" $style.buttonWithDetail" >
218
+ <CallControlButton
219
+ :icon =" screenShareIcon"
220
+ :is-on =" isScreenSharing"
221
+ :on-click =" toggleScreen"
222
+ :mdi =" false"
223
+ :inverted =" isScreenSharing"
224
+ />
225
+ <DetailButton @click =" showShareScreenSettingDetail = true" />
226
+ <ScreenShareDetailSetting
227
+ :open =" showShareScreenSettingDetail"
228
+ @add =" isScreenSharing = true"
229
+ @close =" showShareScreenSettingDetail = false"
203
230
/>
204
- <ClickOutside @click-outside =" showSoundBoard = false" >
205
- <SoundBoard v-if =" showSoundBoard" />
206
- </ClickOutside >
207
231
</div >
208
- <div ref =" reactionButton" >
209
- <CallControlButtonSmall
210
- icon =" add_reaction"
211
- :on-click =" handleReaction"
232
+ <div :class =" $style.buttonWithDetail" >
233
+ <CallControlButton
234
+ :icon =" cameraIcon"
235
+ :is-on =" isCameraOn"
236
+ :on-click =" toggleVideo"
237
+ :inverted =" isCameraOn"
238
+ />
239
+ <DetailButton
240
+ :inverted =" isCameraOn"
241
+ @click =" showCameraDetailSetting = true"
242
+ />
243
+ <CameraDetailSetting
244
+ :open =" showCameraDetailSetting"
245
+ :video-inputs =" videoInputs"
246
+ @save =" handleBackgroundSave"
247
+ @add =" isCameraOn = true"
248
+ @close =" showCameraDetailSetting = false"
212
249
/>
213
250
</div >
214
- </div >
215
- <div :class =" $style.verticalBar" ></div >
216
- <div :class =" $style.buttonWithDetail" >
217
251
<CallControlButton
218
- :icon =" screenShareIcon"
219
- :is-on =" isScreenSharing"
220
- :on-click =" toggleScreen"
221
- :mdi =" false"
222
- :inverted =" isScreenSharing"
223
- />
224
- <DetailButton
225
- @click ="
226
- () => {
227
- showShareScreenSettingDetail = true
228
- }
229
- "
230
- />
231
- <ScreenShareDetailSetting
232
- :open =" showShareScreenSettingDetail"
233
- @add ="
234
- () => {
235
- isScreenSharing = true
236
- }
237
- "
238
- @close ="
239
- () => {
240
- showShareScreenSettingDetail = false
241
- }
242
- "
252
+ :icon =" micIcon"
253
+ :is-on =" isMicOn"
254
+ :on-click =" toggleAudio"
255
+ :inverted =" isMicOn"
243
256
/>
244
- </div >
245
- <div :class =" $style.buttonWithDetail" >
246
257
<CallControlButton
247
- :icon =" cameraIcon"
248
- :is-on =" isCameraOn"
249
- :on-click =" toggleVideo"
250
- :inverted =" isCameraOn"
251
- />
252
- <DetailButton
253
- :inverted =" isCameraOn"
254
- @click ="
255
- () => {
256
- showCameraDetailSetting = true
257
- }
258
- "
259
- />
260
- <CameraDetailSetting
261
- :open =" showCameraDetailSetting"
262
- :video-inputs =" videoInputs"
263
- @save =" handleBackgroundSave"
264
- @add ="
265
- () => {
266
- isCameraOn = true
267
- }
268
- "
269
- @close ="
270
- () => {
271
- showCameraDetailSetting = false
272
- }
273
- "
258
+ icon =" phone-hangup"
259
+ is-on
260
+ :on-click =" leaveQall"
261
+ :on-background-color =" '#F26451'"
274
262
/>
275
- </div >
276
- <CallControlButton
277
- :icon =" micIcon"
278
- :is-on =" isMicOn"
279
- :on-click =" toggleAudio"
280
- :inverted =" isMicOn"
281
- />
282
- <CallControlButton
283
- icon =" phone-hangup"
284
- is-on
285
- :on-click =" leaveQall"
286
- :on-background-color =" '#F26451'"
287
- />
288
- <div :class =" $style.verticalBar" ></div >
289
- <div :class =" $style.smallButtonGroup" >
290
- <div :class =" $style.participantsContainer" >
291
- <ClickOutside @click-outside =" showParticipants = false" >
292
- <div v-if =" showParticipants" :class =" $style.participantsList" >
293
- <div :class =" $style.participantsContent" >
294
- <participant-list
295
- v-for =" participant in filteredParticipants"
296
- :key =" participant.user.id"
297
- :participant =" participant.user"
298
- :track-info =" getParticipantTrackInfo(participant)!"
299
- />
263
+ <div :class =" $style.verticalBar" ></div >
264
+ <div :class =" $style.smallButtonGroup" >
265
+ <div :class =" $style.participantsContainer" >
266
+ <ClickOutside @click-outside =" showParticipants = false" >
267
+ <div v-if =" showParticipants" :class =" $style.participantsList" >
268
+ <div :class =" $style.participantsContent" >
269
+ <participant-list
270
+ v-for =" participant in filteredParticipants"
271
+ :key =" participant.user.id"
272
+ :participant =" participant.user"
273
+ :track-info =" getParticipantTrackInfo(participant)!"
274
+ />
275
+ </div >
300
276
</div >
301
- </div >
302
- </ ClickOutside >
303
- < CallControlButtonSmall
304
- icon = " account-multiple "
305
- :on-click = " handleGroup "
306
- mdi
307
- / >
277
+ </ClickOutside >
278
+ < CallControlButtonSmall
279
+ icon = " account-multiple "
280
+ :on-click = " handleGroup "
281
+ mdi
282
+ />
283
+ </ div >
308
284
</div >
309
285
</div >
310
286
</div >
@@ -314,55 +290,33 @@ const showShareScreenSettingDetail = ref(false)
314
290
</template >
315
291
316
292
<style lang="scss" module>
317
- .participantsContainer {
293
+ .Block {
294
+ height : 100% ;
295
+ width : 100% ;
318
296
position : relative ;
297
+ display : flex ;
298
+ flex-direction : column ;
299
+ overflow : hidden ;
319
300
}
320
301
321
- .participantsList {
322
- position : absolute ;
323
- bottom : 100% ;
324
- right : 50% ;
325
- width : 450px ;
326
- height : 300px ;
327
- @include background-primary ;
328
- border-radius : 8px ;
329
- margin-bottom : 8px ;
330
- box-shadow : 0 2px 10px rgba (0 , 0 , 0 , 0.1 );
331
- transform : translateX (50% );
332
- @include color-ui-primary ;
333
- }
334
-
335
- .participantsContent {
302
+ .stackContainer {
303
+ display : flex ;
304
+ flex-direction : column ;
305
+ align-items : center ;
306
+ gap : 16px ;
336
307
height : 100% ;
337
- overflow-y : auto ;
338
- padding : 16px ;
339
- border : 2px solid $theme-background-secondary-default ;
340
- border-radius : 8px ;
341
- }
342
-
343
- .TrackContainer {
344
- height : fit-content ;
345
- }
346
-
347
- .channelView {
348
- position : absolute ;
349
- width : 30% ;
350
- right : 0 ;
351
- bottom : 0 ;
352
308
}
353
309
354
- .Block {
355
- height : 100% ;
356
- height : 100% ;
310
+ .userList {
311
+ flex-grow : 1 ;
357
312
}
358
313
359
- .Header {
360
- font : {
361
- size : 30px ;
362
- weight : bold ;
363
- }
364
- color : green ;
365
- text-align : center ;
314
+ .controlBarContainer {
315
+ width : 100% ;
316
+ display : flex ;
317
+ justify-content : end ;
318
+ flex-grow : 0 ;
319
+ margin-bottom : 24px ;
366
320
}
367
321
368
322
.controlBar {
@@ -373,13 +327,6 @@ const showShareScreenSettingDetail = ref(false)
373
327
width : 100% ;
374
328
}
375
329
376
- .verticalBar {
377
- width : 1px ;
378
- height : 64px ;
379
- background-color : #ced6db ;
380
- margin : 0 16px ;
381
- }
382
-
383
330
.smallButtonGroup {
384
331
display : flex ;
385
332
align-items : center ;
@@ -395,6 +342,39 @@ const showShareScreenSettingDetail = ref(false)
395
342
position : relative ;
396
343
}
397
344
345
+ .participantsContainer {
346
+ position : relative ;
347
+ }
348
+
349
+ .participantsList {
350
+ position : absolute ;
351
+ bottom : 100% ;
352
+ right : 50% ;
353
+ width : 450px ;
354
+ height : 300px ;
355
+ @include background-primary ;
356
+ border-radius : 8px ;
357
+ margin-bottom : 8px ;
358
+ box-shadow : 0 2px 10px rgba (0 , 0 , 0 , 0.1 );
359
+ transform : translateX (50% );
360
+ @include color-ui-primary ;
361
+ }
362
+
363
+ .participantsContent {
364
+ height : 100% ;
365
+ overflow-y : auto ;
366
+ padding : 16px ;
367
+ border : 2px solid $theme-background-secondary-default ;
368
+ border-radius : 8px ;
369
+ }
370
+
371
+ .verticalBar {
372
+ width : 1px ;
373
+ height : 64px ;
374
+ background-color : #ced6db ;
375
+ margin : 0 16px ;
376
+ }
377
+
398
378
.closeButton {
399
379
position : absolute ;
400
380
top : 1rem ;
0 commit comments