Add some very basic styling to the Filmstrip
parent
ef2d8a4105
commit
cab3032f8f
|
|
@ -1,6 +1,7 @@
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
|
import classnames from 'classnames';
|
||||||
import * as appPropTypes from '../appPropTypes';
|
import * as appPropTypes from '../appPropTypes';
|
||||||
import Peer from '../Peer';
|
import Peer from '../Peer';
|
||||||
|
|
||||||
|
|
@ -12,9 +13,10 @@ class Filmstrip extends Component
|
||||||
|
|
||||||
handleSelectPeer = (selectedPeerName) =>
|
handleSelectPeer = (selectedPeerName) =>
|
||||||
{
|
{
|
||||||
this.setState({
|
this.setState((oldState) => ({
|
||||||
selectedPeerName
|
selectedPeerName : oldState.selectedPeerName === selectedPeerName ?
|
||||||
});
|
null : selectedPeerName
|
||||||
|
}));
|
||||||
};
|
};
|
||||||
|
|
||||||
render()
|
render()
|
||||||
|
|
@ -25,14 +27,10 @@ class Filmstrip extends Component
|
||||||
// the latest active speaker, or the manually selected peer.
|
// the latest active speaker, or the manually selected peer.
|
||||||
const activePeerName = this.state.selectedPeerName || activeSpeakerName;
|
const activePeerName = this.state.selectedPeerName || activeSpeakerName;
|
||||||
|
|
||||||
// Find the remainding peer names, which will be shown in the filmstrip.
|
|
||||||
const remaindingPeerNames = Object.keys(peers).filter((peerName) =>
|
|
||||||
peerName !== activePeerName);
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div>
|
<div data-component='Filmstrip'>
|
||||||
{peers[activePeerName] && (
|
{peers[activePeerName] && (
|
||||||
<div>
|
<div className='active-peer'>
|
||||||
<Peer
|
<Peer
|
||||||
advancedMode={advancedMode}
|
advancedMode={advancedMode}
|
||||||
name={activePeerName}
|
name={activePeerName}
|
||||||
|
|
@ -40,11 +38,15 @@ class Filmstrip extends Component
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
<div>
|
<div className='filmstrip'>
|
||||||
{remaindingPeerNames.map((peerName) => (
|
{Object.keys(peers).map((peerName) => (
|
||||||
<div
|
<div
|
||||||
key={peerName}
|
key={peerName}
|
||||||
onClick={() => this.handleSelectPeer(peerName)}
|
onClick={() => this.handleSelectPeer(peerName)}
|
||||||
|
className={classnames('film', {
|
||||||
|
selected : this.state.selectedPeerName === peerName,
|
||||||
|
active : activeSpeakerName === peerName
|
||||||
|
})}
|
||||||
>
|
>
|
||||||
<Peer
|
<Peer
|
||||||
advancedMode={advancedMode}
|
advancedMode={advancedMode}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,32 @@
|
||||||
|
[data-component='Filmstrip'] {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
height: 100%;
|
||||||
|
|
||||||
|
> .active-peer {
|
||||||
|
width: 95vmin;
|
||||||
|
padding: 10vmin 1vmin 1vmin 1vmin;
|
||||||
|
}
|
||||||
|
|
||||||
|
> .filmstrip {
|
||||||
|
display: flex;
|
||||||
|
padding: 0.5vmin;
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
> .film {
|
||||||
|
height: 15vmin;
|
||||||
|
max-width: 15vmin * (2 * 4 / 3);
|
||||||
|
margin: 1vmin;
|
||||||
|
|
||||||
|
&.active {
|
||||||
|
border: 5px solid white;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.selected {
|
||||||
|
border: 5px solid pink;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -22,6 +22,7 @@
|
||||||
|
|
||||||
> .view-container {
|
> .view-container {
|
||||||
position: relative;
|
position: relative;
|
||||||
|
flex-grow: 1;
|
||||||
|
|
||||||
&.webcam {
|
&.webcam {
|
||||||
order: 2;
|
order: 2;
|
||||||
|
|
@ -29,6 +30,7 @@
|
||||||
|
|
||||||
&.screen {
|
&.screen {
|
||||||
order: 1;
|
order: 1;
|
||||||
|
max-width: 50%;
|
||||||
}
|
}
|
||||||
|
|
||||||
> .controls {
|
> .controls {
|
||||||
|
|
|
||||||
|
|
@ -50,6 +50,7 @@ body {
|
||||||
@import './components/ParticipantList';
|
@import './components/ParticipantList';
|
||||||
@import './components/FullScreenView';
|
@import './components/FullScreenView';
|
||||||
@import './components/FullView';
|
@import './components/FullView';
|
||||||
|
@import './components/Filmstrip';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Hack to detect in JS the current media query
|
// Hack to detect in JS the current media query
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue