Firefox flex behaves differently from chrome. In firefox, flex is not allowing the local video and invite button to exceed the height of the parent, causing the local video to display shorter than expected due to the invite button. Flex doesn't need to be applied for local video in horizontal filmstrip mode as it's only needed in vertical filmstrip mode to flip the position of the invite button from above the local video to below. Honestly, this could be better off done declaratively in the html, but that's not as straigtforward in this jquery+react world.
209 lines
5.3 KiB
SCSS
209 lines
5.3 KiB
SCSS
%align-right {
|
|
@include flex();
|
|
flex-direction: row-reverse;
|
|
flex-wrap: nowrap;
|
|
justify-content: flex-start;
|
|
}
|
|
|
|
.filmstrip {
|
|
position: absolute;
|
|
bottom: 0;
|
|
right: 0;
|
|
padding: 10px 5px;
|
|
@extend %align-right;
|
|
z-index: $filmstripVideosZ;
|
|
|
|
&__toolbar {
|
|
@include flex();
|
|
flex-direction: column-reverse;
|
|
flex-wrap: nowrap;
|
|
position: relative;
|
|
width: $filmstripToggleButtonWidth;
|
|
|
|
button {
|
|
font-size: 14px;
|
|
line-height: 1.2;
|
|
text-align: center;
|
|
background: transparent;
|
|
opacity: 0.7;
|
|
height: auto;
|
|
width: 100%;
|
|
padding: 0;
|
|
margin: 0;
|
|
border: none;
|
|
outline: none;
|
|
|
|
-webkit-appearance: none;
|
|
|
|
&:hover {
|
|
opacity: 1;
|
|
}
|
|
|
|
i {
|
|
cursor: pointer;
|
|
}
|
|
}
|
|
}
|
|
|
|
&__videos {
|
|
@extend %align-right;
|
|
position:relative;
|
|
padding: 0;
|
|
/* The filmstrip should not be covered by the left toolbar. */
|
|
bottom: 0;
|
|
width:auto;
|
|
overflow: visible !important;
|
|
|
|
&#remoteVideos {
|
|
border: $thumbnailsBorder solid transparent;
|
|
padding-left: $defaultToolbarSize + 5;
|
|
transition: bottom 2s;
|
|
}
|
|
|
|
/**
|
|
* The local video identifier.
|
|
*/
|
|
&#filmstripLocalVideo {
|
|
bottom: 32px;
|
|
display: block;
|
|
|
|
/**
|
|
* The invite button style.
|
|
*/
|
|
.filmstrip__invite {
|
|
padding-bottom: 5px;
|
|
margin-left: 2px;
|
|
}
|
|
|
|
/**
|
|
* The invite button group style.
|
|
* TOFIX: use AtlasKit.ButtonGroup if it starts supporting different
|
|
* flex grow options for the buttons.
|
|
*/
|
|
.invite-button-group {
|
|
display: inline-flex;
|
|
justify-content: space-between;
|
|
width: 100%;
|
|
|
|
& button {
|
|
flex-grow: 1;
|
|
flex-shrink: 1;
|
|
overflow: hidden;
|
|
}
|
|
|
|
& > * {
|
|
flex-grow: 0;
|
|
flex-shrink: 0;
|
|
margin-left: 2px;
|
|
}
|
|
}
|
|
}
|
|
|
|
&.hidden {
|
|
bottom: -196px;
|
|
}
|
|
|
|
.remote-videos-container {
|
|
display: flex;
|
|
}
|
|
|
|
.videocontainer {
|
|
display: none;
|
|
position: relative;
|
|
background-size: contain;
|
|
border: $thumbnailVideoBorder solid transparent;
|
|
border-radius: $borderRadius;
|
|
margin: 0 $thumbnailVideoMargin;
|
|
|
|
&.videoContainerFocused, &:hover {
|
|
cursor: hand;
|
|
}
|
|
|
|
/**
|
|
* Focused video thumbnail.
|
|
*/
|
|
&.videoContainerFocused {
|
|
transition-duration: 0.5s;
|
|
-webkit-transition-duration: 0.5s;
|
|
-webkit-animation-name: greyPulse;
|
|
-webkit-animation-duration: 2s;
|
|
-webkit-animation-iteration-count: 1;
|
|
border: $thumbnailVideoBorder solid $videoThumbnailSelected !important;
|
|
box-shadow: inset 0 0 3px $videoThumbnailSelected,
|
|
0 0 3px $videoThumbnailSelected !important;
|
|
}
|
|
|
|
.remotevideomenu > .icon-menu {
|
|
display: none;
|
|
}
|
|
|
|
.presence-label {
|
|
color: $participantNameColor;
|
|
font-size: 12px;
|
|
font-weight: 100;
|
|
left: 0;
|
|
margin: 0 auto;
|
|
overflow: hidden;
|
|
pointer-events: none;
|
|
position: absolute;
|
|
right: 0;
|
|
text-align: center;
|
|
text-overflow: ellipsis;
|
|
top: calc(50% + 30px);
|
|
white-space: nowrap;
|
|
width: 100%;
|
|
z-index: $zindex3;
|
|
}
|
|
|
|
/**
|
|
* Hovered video thumbnail.
|
|
*/
|
|
&:hover {
|
|
cursor: hand;
|
|
border: $thumbnailVideoBorder solid $videoThumbnailHovered;
|
|
box-shadow: inset 0 0 3px $videoThumbnailHovered,
|
|
0 0 3px $videoThumbnailHovered;
|
|
|
|
.remotevideomenu > .icon-menu {
|
|
display: inline-block;
|
|
}
|
|
}
|
|
|
|
/* With the TemasysWebRTC plugin <object/> element is used
|
|
instead of <video/> */
|
|
& > video,
|
|
& > object {
|
|
cursor: hand;
|
|
border-radius: $borderRadius;
|
|
object-fit: cover;
|
|
overflow: hidden;
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Style the filmstrip videos in filmstrip-only mode.
|
|
*/
|
|
&__videos-filmstripOnly {
|
|
margin-top: auto;
|
|
margin-bottom: auto;
|
|
|
|
.filmstrip__videos {
|
|
&#filmstripLocalVideo {
|
|
bottom: 0px;
|
|
}
|
|
}
|
|
}
|
|
|
|
.remote-videos-container {
|
|
transition: opacity 1s;
|
|
}
|
|
|
|
&.hide-videos {
|
|
.remote-videos-container {
|
|
opacity: 0;
|
|
pointer-events: none;
|
|
}
|
|
}
|
|
}
|