summaryrefslogtreecommitdiff
path: root/client/modalImage
diff options
context:
space:
mode:
Diffstat (limited to 'client/modalImage')
-rw-r--r--client/modalImage/modal.css86
-rw-r--r--client/modalImage/modalImage.container.js18
2 files changed, 80 insertions, 24 deletions
diff --git a/client/modalImage/modal.css b/client/modalImage/modal.css
index d9180125..3ac9237e 100644
--- a/client/modalImage/modal.css
+++ b/client/modalImage/modal.css
@@ -1,7 +1,7 @@
.modal {
position: fixed;
top: 0; left: 0; width: 100%; height: 100%;
- background: rgba(0,0,0,0.8);
+ background: rgba(0,0,0,0.9);
color: white;
display: flex;
justify-content: center;
@@ -25,45 +25,93 @@
align-items: center;
}
.modal img {
- max-width: 80vw;
- max-height: 80vh;
+ max-width: 85vw;
+ max-height: 90vh;
}
.modal .caption {
display: block;
text-align: center;
+ background: black;
+ padding: 10px;
}
-.modal .prev {
- position: absolute;
- top: 0; left: 0;
- width: 10%;
- height: 100%;
+.modal .prev span,
+.modal .next span,
+.modal .close span {
+ background: #222;
+ border-radius: 50%;
+ width: 40px;
+ height: 40px;
+ text-align: center;
display: flex;
justify-content: center;
align-items: center;
- color: white;
- font-size: 40px;
- cursor: pointer;
+ box-shadow: 0 1px 2px rgba(255,255,255,0.4);
+ transition: all 0.2s cubic-bezier(0,0,1,1);
+ user-select: none;
}
-.modal .next {
+.desktop .modal .prev:hover span,
+.desktop .modal .prev:hover span,
+.desktop .modal .prev:hover span {
+ background: #000;
+ box-shadow: 0 1px 2px rgba(255,255,255,0.6);
+}
+.modal .prev,
+.modal .next,
+.modal .close {
position: absolute;
- top: 0; right: 0;
- width: 10%;
+ top: 0;
+ padding: 20px;
+ width: 8%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
- color: white;
- font-size: 40px;
cursor: pointer;
+ transition: all 0.1s cubic-bezier(0,0,0,1);
}
+.modal .prev {
+ left: 0;
+}
+.modal .next {
+ right: 0;
+}
+.modal .prev img,
+.modal .next img {
+ max-width: 100%;
+ max-height: 100%;
+}
+
.modal .close {
position: absolute;
top: 0; right: 0;
- width: 10vw; height: 10vw;
+ width: 80px;
+ height: 80px;
+ max-width: 10vw;
+ max-height: 10vw;
display: flex;
justify-content: center;
align-items: center;
- color: white;
- font-size: 40px;
cursor: pointer;
+ transition: all 0.1s cubic-bezier(0,0,0,1);
+ padding: 20px;
+}
+.modal .close img {
+ width: 100%;
+ height: 100%;
+}
+
+.desktop .modal .prev:hover {
+ width: 9%;
+ left: -8px;
+}
+.desktop .modal .next:hover {
+ width: 9%;
+ right: -8px;
+}
+.desktop .modal .close:hover {
+ padding: 10px;
+}
+
+@media all and (max-device-width: 1024px) {
+
} \ No newline at end of file
diff --git a/client/modalImage/modalImage.container.js b/client/modalImage/modalImage.container.js
index a637deb6..d6271d61 100644
--- a/client/modalImage/modalImage.container.js
+++ b/client/modalImage/modalImage.container.js
@@ -10,7 +10,7 @@ import csv from 'parse-csv'
class ModalImage extends Component {
state = {
- visible: true,
+ visible: false,
images: [],
index: 0,
}
@@ -26,8 +26,11 @@ class ModalImage extends Component {
if (document.activeElement && document.activeElement !== document.body) {
return null
}
- // console.log(e.keyCode)
+ console.log(e.keyCode)
switch (e.keyCode) {
+ case 27: // esc
+ this.close()
+ break
case 37: // left
this.prev()
break
@@ -41,16 +44,21 @@ class ModalImage extends Component {
}
loadImage(index) {
+ const { images } = this.state
+ if (!images.length) return
+ if (index < 0 || index >= images.length) return
this.setState({ visible: true, index })
}
prev() {
const { index, images } = this.state
+ if (!images.length) return
this.setState({ index: (images.length + index - 1) % images.length })
}
next() {
const { index, images } = this.state
+ if (!images.length) return
this.setState({ index: (index + 1) % images.length })
}
@@ -75,9 +83,9 @@ class ModalImage extends Component {
{caption && <div class='caption'>{caption}</div>}
</div>
</div>
- <div onClick={() => this.prev()}className='prev'>{'<'}</div>
- <div onClick={() => this.next()} className='next'>{'>'}</div>
- <div onClick={() => this.close()} className='close'>{'x'}</div>
+ <div onClick={() => this.prev()} className='prev' aria-label='Previous image' alt='Previous image'><img src='/assets/img/arrow-left.png' /></div>
+ <div onClick={() => this.next()} className='next' aria-label='Next image' alt='Next image'><img src='/assets/img/arrow-right.png' /></div>
+ <div onClick={() => this.close()} className='close' aria-label='Close' alt='Close'><img src='/assets/img/close.png' /></div>
</div>
)
}