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:
virtuacoplenny 2017-07-05 19:07:00 -07:00 committed by yanas
parent 5c199e2195
commit 84ae7df8f1
6 changed files with 48 additions and 8 deletions

View File

@ -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 {

View File

@ -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;

View File

@ -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

View File

@ -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 />

View File

@ -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'>

View File

@ -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 />