fix(filmstrip-only): vertically align center the toolbar (#1700)
* fix(filmstrip-only): vertically align center the toolbar Use top 50% to position the toolbar's top at the vertical center of the iframe. Then use transform 50% to move the toolbar itself up 50% so its middle matches the middle of the iframe. * squash: toolbox should center with filmstrip
This commit is contained in:
parent
5c199e2195
commit
84ae7df8f1
|
@ -135,7 +135,6 @@
|
||||||
&__videos-filmstripOnly {
|
&__videos-filmstripOnly {
|
||||||
margin-top: auto;
|
margin-top: auto;
|
||||||
margin-bottom: auto;
|
margin-bottom: auto;
|
||||||
padding-right: $defaultFilmStripOnlyToolbarSize;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.remote-videos-container {
|
.remote-videos-container {
|
||||||
|
|
|
@ -195,11 +195,8 @@
|
||||||
*/
|
*/
|
||||||
&_filmstrip-only {
|
&_filmstrip-only {
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
bottom: 0;
|
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
height: auto;
|
height: auto;
|
||||||
position: absolute;
|
|
||||||
right: 0;
|
|
||||||
width: $defaultFilmStripOnlyToolbarSize;
|
width: $defaultFilmStripOnlyToolbarSize;
|
||||||
|
|
||||||
.button {
|
.button {
|
||||||
|
@ -228,6 +225,14 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.filmstrip-only {
|
||||||
|
.toolbox,
|
||||||
|
.toolbox-toolbars {
|
||||||
|
align-items: center;
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.subject {
|
.subject {
|
||||||
background: linear-gradient(to bottom, rgba(255,255,255,.85) , rgba(255,255,255,.35));
|
background: linear-gradient(to bottom, rgba(255,255,255,.85) , rgba(255,255,255,.35));
|
||||||
border-bottom-left-radius: 12px;
|
border-bottom-left-radius: 12px;
|
||||||
|
|
|
@ -93,6 +93,29 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
&.filmstrip-only {
|
||||||
|
.filmstrip {
|
||||||
|
flex-direction: row-reverse;
|
||||||
|
}
|
||||||
|
.filmstrip__videos-filmstripOnly {
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* In filmstrip only mode, the toolbar is normally displayed in the
|
||||||
|
* vertical center of the filmstrip strip. In vertical filmstrip mode,
|
||||||
|
* that alignment makes the toolbar appear floating and detached from
|
||||||
|
* the filmstrip. So, instead anchor the toolbar next to the local
|
||||||
|
* video.
|
||||||
|
*/
|
||||||
|
.toolbar_filmstrip-only {
|
||||||
|
bottom: 0;
|
||||||
|
top: auto;
|
||||||
|
transform: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* These styles are for the video labels that display on the top right. The
|
* These styles are for the video labels that display on the top right. The
|
||||||
* styles adjust the labels' positioning as the filmstrip itself or
|
* styles adjust the labels' positioning as the filmstrip itself or
|
||||||
|
|
|
@ -13,6 +13,7 @@ import { HideNotificationBarStyle } from '../../unsupported-browser';
|
||||||
|
|
||||||
declare var $: Function;
|
declare var $: Function;
|
||||||
declare var APP: Object;
|
declare var APP: Object;
|
||||||
|
declare var interfaceConfig: Object;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The conference page of the Web application.
|
* The conference page of the Web application.
|
||||||
|
@ -65,14 +66,16 @@ class Conference extends Component {
|
||||||
* @returns {ReactElement}
|
* @returns {ReactElement}
|
||||||
*/
|
*/
|
||||||
render() {
|
render() {
|
||||||
|
const { filmStripOnly } = interfaceConfig;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div id = 'videoconference_page'>
|
<div id = 'videoconference_page'>
|
||||||
<div id = 'videospace'>
|
<div id = 'videospace'>
|
||||||
<LargeVideo />
|
<LargeVideo />
|
||||||
<Filmstrip />
|
<Filmstrip displayToolbox = { filmStripOnly } />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<Toolbox />
|
{ filmStripOnly ? null : <Toolbox /> }
|
||||||
|
|
||||||
<DialogContainer />
|
<DialogContainer />
|
||||||
<OverlayContainer />
|
<OverlayContainer />
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
|
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
|
|
||||||
|
import { Toolbox } from '../../toolbox';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Implements a React {@link Component} which represents the filmstrip on
|
* Implements a React {@link Component} which represents the filmstrip on
|
||||||
* Web/React.
|
* Web/React.
|
||||||
|
@ -9,6 +11,13 @@ import React, { Component } from 'react';
|
||||||
* @extends Component
|
* @extends Component
|
||||||
*/
|
*/
|
||||||
export default class Filmstrip extends Component {
|
export default class Filmstrip extends Component {
|
||||||
|
static propTypes = {
|
||||||
|
/**
|
||||||
|
* Whether or not the toolbox should be displayed within the filmstrip.
|
||||||
|
*/
|
||||||
|
displayToolbox: React.PropTypes.bool
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Implements React's {@link Component#render()}.
|
* Implements React's {@link Component#render()}.
|
||||||
*
|
*
|
||||||
|
@ -18,6 +27,7 @@ export default class Filmstrip extends Component {
|
||||||
render() {
|
render() {
|
||||||
return (
|
return (
|
||||||
<div className = 'filmstrip'>
|
<div className = 'filmstrip'>
|
||||||
|
{ this.props.displayToolbox ? <Toolbox /> : null }
|
||||||
<div
|
<div
|
||||||
className = 'filmstrip__videos'
|
className = 'filmstrip__videos'
|
||||||
id = 'remoteVideos'>
|
id = 'remoteVideos'>
|
||||||
|
|
|
@ -108,7 +108,7 @@ class Toolbox extends Component {
|
||||||
*/
|
*/
|
||||||
render(): ReactElement<*> {
|
render(): ReactElement<*> {
|
||||||
return (
|
return (
|
||||||
<div>
|
<div className = 'toolbox'>
|
||||||
{
|
{
|
||||||
this._renderSubject()
|
this._renderSubject()
|
||||||
}
|
}
|
||||||
|
@ -171,7 +171,7 @@ class Toolbox extends Component {
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div>
|
<div className = 'toolbox-toolbars'>
|
||||||
<Notice />
|
<Notice />
|
||||||
<PrimaryToolbar />
|
<PrimaryToolbar />
|
||||||
<SecondaryToolbar />
|
<SecondaryToolbar />
|
||||||
|
|
Loading…
Reference in New Issue