summaryrefslogtreecommitdiff
path: root/animism-align/frontend/app
diff options
context:
space:
mode:
authorJules Laplace <julescarbon@gmail.com>2020-08-10 17:04:04 +0200
committerJules Laplace <julescarbon@gmail.com>2020-08-10 17:04:04 +0200
commit01f99cd2f5bd54e643ca5305eeb7e1ba61483b81 (patch)
treebac8925eb53134b36e8d6f586bed76b68c7bcd4f /animism-align/frontend/app
parentd688599a8ce3f2051a13fcd9de0f89b6fd0e6406 (diff)
nav moon logic
Diffstat (limited to 'animism-align/frontend/app')
-rw-r--r--animism-align/frontend/app/views/viewer/nav/nav.css21
-rw-r--r--animism-align/frontend/app/views/viewer/nav/nav.parent.js45
2 files changed, 46 insertions, 20 deletions
diff --git a/animism-align/frontend/app/views/viewer/nav/nav.css b/animism-align/frontend/app/views/viewer/nav/nav.css
index de76368..2c17621 100644
--- a/animism-align/frontend/app/views/viewer/nav/nav.css
+++ b/animism-align/frontend/app/views/viewer/nav/nav.css
@@ -14,7 +14,7 @@
transform: translateZ(0) translateY(0);
border-top: 1px solid transparent;
}
-.main-nav:hover {
+.main-nav.hovering-nav {
background: black;
color: white;
}
@@ -52,7 +52,10 @@
justify-content: flex-start;
align-items: center;
}
-.viewer-nav > .nav-row > div:nth-child(2) {
+.viewer-nav > .nav-row > div:nth-child(2),
+.viewer-nav > .nav-row > div:nth-child(2) > div {
+ display: flex;
+ flex-direction: row;
justify-content: center;
align-items: center;
}
@@ -136,8 +139,8 @@
}
.viewer-nav.black .arrow path,
.viewer-nav.black .arrow polygon,
-.viewer-nav .main-nav:hover .arrow path,
-.viewer-nav .main-nav:hover .arrow polygon,
+.viewer-nav .main-nav.hovering-nav .arrow path,
+.viewer-nav .main-nav.hovering-nav .arrow polygon,
.nav-open .viewer-nav .arrow path,
.nav-open .viewer-nav .arrow polygon,
.checklist-open .viewer-nav .arrow path,
@@ -154,7 +157,7 @@
.nav-player.playing {
opacity: 0.0;
}
-.main-nav:hover .nav-player.playing,
+.main-nav.hovering-nav .nav-player.playing,
.nav-open .nav-player.playing {
opacity: 1.0;
}
@@ -174,11 +177,11 @@
stroke: #000;
stroke-width: 0.5;
}
-.main-nav:hover .volume path,
+.main-nav.hovering-nav .volume path,
.nav-open .volume path {
fill: #fff;
}
-.main-nav:hover .volume.muted path,
+.main-nav.hovering-nav .volume.muted path,
.nav-open .volume.muted path {
fill: #000;
stroke: #fff;
@@ -195,8 +198,8 @@
.playToggle polygon {
fill: #000;
}
-.main-nav:hover .playToggle path,
-.main-nav:hover .playToggle polygon,
+.main-nav.hovering-nav .playToggle path,
+.main-nav.hovering-nav .playToggle polygon,
.nav-open .playToggle path,
.nav-open .playToggle polygon {
fill: #fff;
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 e242e8a..c27947b 100644
--- a/animism-align/frontend/app/views/viewer/nav/nav.parent.js
+++ b/animism-align/frontend/app/views/viewer/nav/nav.parent.js
@@ -9,27 +9,44 @@ import { thumbnailURL } from 'app/utils/annotation.utils'
class NavParent extends Component {
state = {
- hovering: false,
+ hoveringNext: false,
+ hoveringNav: false,
suppressHover: false,
}
constructor(props){
super(props)
- this.handleMouseLeave = this.handleMouseLeave.bind(this)
this.handleMouseEnter = this.handleMouseEnter.bind(this)
+ this.handleMouseLeave = this.handleMouseLeave.bind(this)
+ this.handleMouseEnterNext = this.handleMouseEnterNext.bind(this)
+ this.handleMouseLeaveNext = this.handleMouseLeaveNext.bind(this)
}
handleMouseEnter(){
if (this.state.suppressHover) return
- this.setState({ hovering: true })
+ this.setState({ hoveringNext: false, hoveringNav: true })
+ }
+ handleMouseEnterNext(){
+ if (this.state.suppressHover) return
+ this.setState({ hoveringNext: true, hoveringNav: false })
}
handleMouseLeave(){
- this.setState({ hovering: false, suppressHover: false })
+ this.setState({ hoveringNext: false, hoveringNav: false, suppressHover: false })
+ }
+ handleMouseLeaveNext(){
+ this.setState({ hoveringNext: false, suppressHover: true, })
+ setTimeout(() => {
+ this.setState({ suppressHover: false })
+ }, 50)
}
render() {
const { viewer } = this.props
+ let containerClassName = "viewer-nav " + viewer.navStyle
+ let navClassName = 'nav-row main-nav'
+ if (this.state.hoveringNav) navClassName += ' hovering-nav'
+ if (this.state.hoveringNext) containerClassName += ' hovering-next'
return (
- <div className={"viewer-nav " + viewer.navStyle + " " + (this.state.hovering ? 'hovering-next': '')} onMouseLeave={this.handleMouseLeave}>
- <div className='nav-row main-nav'>
- <div className='nav-section-name'>
+ <div className={containerClassName} onMouseLeave={this.handleMouseLeave}>
+ <div className={navClassName}>
+ <div className='nav-section-name' onMouseEnter={this.handleMouseEnter}>
<span className="section-link link" onClick={() => actions.viewer.toggleComponent('nav')}>
<Arrow type={viewer.nav ? 'down' : 'up'} />
{viewer.currentSection &&
@@ -41,10 +58,16 @@ class NavParent extends Component {
}
</span>
</div>
- <NavPlayer />
- <div className='nav-next' onMouseEnter={this.handleMouseEnter}>
+ <div onMouseEnter={this.handleMouseEnter}>
+ <NavPlayer />
+ </div>
+ <div className='nav-next'>
{viewer.nextSection &&
- <span className="next-link link" onClick={() => actions.viewer.seekToSection(viewer.nextSection)}>
+ <span
+ className="next-link link"
+ onMouseEnter={this.handleMouseEnterNext}
+ onClick={() => actions.viewer.seekToSection(viewer.nextSection)}
+ >
Next
<Arrow type={'right'} />
</span>
@@ -55,7 +78,7 @@ class NavParent extends Component {
<div className="next-section-thumbnail"
onClick={() => {
actions.viewer.seekToSection(viewer.nextSection)
- this.setState({ hovering: false, suppressHover: true })
+ this.setState({ hoveringNext: false, hoveringNav: false, suppressHover: true })
}}
style={{
backgroundImage: viewer.nextSection.media.length && 'url(' + thumbnailURL(viewer.nextSection.media[0].media) + ')',