summaryrefslogtreecommitdiff
path: root/animism-align/frontend/app/views/viewer/nav
diff options
context:
space:
mode:
authorJules Laplace <julescarbon@gmail.com>2020-12-02 19:47:59 +0100
committerJules Laplace <julescarbon@gmail.com>2020-12-02 19:47:59 +0100
commite47643e882af47546bb3f9c5560d24c4429a4cf3 (patch)
tree3f4b278dd733616ccb3f3694360d070d150e2a3b /animism-align/frontend/app/views/viewer/nav
parentfa287a8b341926fa3866d7dee31b4f4090a5c98f (diff)
video modal mostly working
Diffstat (limited to 'animism-align/frontend/app/views/viewer/nav')
-rw-r--r--animism-align/frontend/app/views/viewer/nav/eflux.chrome.js37
-rw-r--r--animism-align/frontend/app/views/viewer/nav/eflux.css1
-rw-r--r--animism-align/frontend/app/views/viewer/nav/nav.parent.js4
-rw-r--r--animism-align/frontend/app/views/viewer/nav/viewer.icons.js10
4 files changed, 39 insertions, 13 deletions
diff --git a/animism-align/frontend/app/views/viewer/nav/eflux.chrome.js b/animism-align/frontend/app/views/viewer/nav/eflux.chrome.js
index d365c9c..00851be 100644
--- a/animism-align/frontend/app/views/viewer/nav/eflux.chrome.js
+++ b/animism-align/frontend/app/views/viewer/nav/eflux.chrome.js
@@ -24,12 +24,33 @@ class EfluxChrome extends Component {
started: false,
playMessage: PLAY_MESSAGES.not_started,
}
+ constructor(props) {
+ super(props)
+ this.handleToggle = this.handleToggle.bind(this)
+ this.handleClose = this.handleClose.bind(this)
+ }
handleMouseEnter(category) {
this.setState({ [category]: true })
}
handleMouseLeave(category) {
this.setState({ [category]: false })
}
+ handleToggle() {
+ if (this.props.playing) {
+ actions.audio.pause()
+ } else {
+ actions.viewer.playFromClick()
+ }
+ }
+ handleClose() {
+ if (this.props.videoModalOpen) {
+ actions.viewer.closeVideoModal()
+ } else {
+ actions.viewer.toggleFullscreenVisible(false)
+ actions.audio.pause()
+ }
+ this.handleMouseLeave('close')
+ }
componentDidUpdate(prevProps) {
if (this.props.playing !== prevProps.playing) {
if (!this.state.started) {
@@ -61,7 +82,8 @@ class EfluxChrome extends Component {
playing, transcriptOpen,
isFullscreen, fullscreenVisible, isFullscreenSingleton,
growlOpen, growlMessage,
- atEndOfSection, currentSection
+ atEndOfSection, currentSection,
+ videoModalOpen
} = this.props
let className = "eflux-header"
if (navStyle) className += ' ' + navStyle
@@ -69,7 +91,7 @@ class EfluxChrome extends Component {
if (transcriptOpen) className += ' transcript-open'
if (isFullscreen) className += ' is-fullscreen'
// console.log(isFullscreen, fullscreenVisible, isFullscreenSingleton)
- const fullscreenWantsCloseButton = isFullscreen && fullscreenVisible && !isFullscreenSingleton
+ const fullscreenWantsCloseButton = (isFullscreen && fullscreenVisible && !isFullscreenSingleton) || videoModalOpen
return (
<div className={className}>
<div className="eflux-gradient" />
@@ -92,7 +114,7 @@ class EfluxChrome extends Component {
onMouseEnter={() => this.handleMouseEnter('play')}
onMouseLeave={() => this.handleMouseLeave('play')}
>
- <PlayButton playing={playing} />
+ <PlayButton playing={playing} onClick={this.handleToggle} />
</span>
<div
className="transcript-icon"
@@ -108,7 +130,7 @@ class EfluxChrome extends Component {
? "growl-tooltip tooltip-close hover"
: "growl-tooltip tooltip-close"
}>
- {'Close fullscreen player'}
+ {videoModalOpen ? 'Close video' : 'Close fullscreen player'}
</div>
<div className={
this.state.eflux
@@ -142,11 +164,7 @@ class EfluxChrome extends Component {
className="fullscreen-close"
onMouseEnter={() => this.handleMouseEnter('close')}
onMouseLeave={() => this.handleMouseLeave('close')}
- onClick={() => {
- actions.viewer.toggleFullscreenVisible(false)
- actions.audio.pause()
- this.handleMouseLeave('close')
- }}
+ onClick={this.handleClose}
>
{EfluxClose}
</div>
@@ -166,6 +184,7 @@ const mapStateToProps = state => ({
isFullscreen: state.viewer.isFullscreen,
fullscreenVisible: state.viewer.fullscreenVisible,
isFullscreenSingleton: state.viewer.isFullscreenSingleton,
+ videoModalOpen: state.viewer.videoModal.open,
})
export default connect(mapStateToProps)(EfluxChrome)
diff --git a/animism-align/frontend/app/views/viewer/nav/eflux.css b/animism-align/frontend/app/views/viewer/nav/eflux.css
index 3c464ae..2670518 100644
--- a/animism-align/frontend/app/views/viewer/nav/eflux.css
+++ b/animism-align/frontend/app/views/viewer/nav/eflux.css
@@ -128,6 +128,7 @@
padding: 0.75rem;
text-align: center;
pointer-events: none;
+ user-select: none;
}
.growl-tooltip.tooltip-eflux {
left: 1.8rem;
diff --git a/animism-align/frontend/app/views/viewer/nav/nav.parent.js b/animism-align/frontend/app/views/viewer/nav/nav.parent.js
index 33f2d58..0f829dd 100644
--- a/animism-align/frontend/app/views/viewer/nav/nav.parent.js
+++ b/animism-align/frontend/app/views/viewer/nav/nav.parent.js
@@ -74,7 +74,7 @@ class NavParent extends Component {
e && e.stopPropagation()
if (isMobile) {
actions.viewer.toggleComponent('nav')
- } else {
+ } else if (!this.props.videoModal.open) {
// console.log('>> CLICK NAV')
// actions.viewer.toggleComponent('nav')
const percent = (e.pageX / this.navbarRef.current.offsetWidth)
@@ -115,7 +115,7 @@ class NavParent extends Component {
let containerClassName = "viewer-nav " + viewer.navStyle
let navClassName = 'nav-row main-nav'
if (this.state.hoveringNav || !started) containerClassName += ' hovering-nav'
- if ((this.state.hoveringNext || (viewer.atEndOfSection && !playing)) && !viewer.nav && viewer.nextSection) containerClassName += ' hovering-next'
+ if ((this.state.hoveringNext || (viewer.atEndOfSection && !playing && !viewer.videoModal.open)) && !viewer.nav && viewer.nextSection) containerClassName += ' hovering-next'
return (
<div ref={this.navbarRef} className={containerClassName} onMouseMove={this.handleMouseMove} onMouseLeave={this.handleMouseLeave}>
<div className={navClassName} onClick={this.handleNavBarClick}>
diff --git a/animism-align/frontend/app/views/viewer/nav/viewer.icons.js b/animism-align/frontend/app/views/viewer/nav/viewer.icons.js
index 31910b7..95be8b6 100644
--- a/animism-align/frontend/app/views/viewer/nav/viewer.icons.js
+++ b/animism-align/frontend/app/views/viewer/nav/viewer.icons.js
@@ -67,13 +67,19 @@ export const PauseIcon = (
</svg>
)
-export const PlayButton = ({ playing }) => {
+export const PlayButton = ({ playing, onClick }) => {
return (
<div
className={playing ? 'playToggle playing' : 'playToggle paused'}
onClick={e => {
e && e.stopPropagation()
- playing ? actions.audio.pause() : actions.viewer.playFromClick()
+ if (onClick) {
+ onClick(playing)
+ } else if (playing) {
+ actions.audio.pause()
+ } else {
+ actions.viewer.playFromClick()
+ }
}}
>
{playing ? PauseIcon : PlayIcon}