From 300896dd1a12b861080076821bfde6907515c5ca Mon Sep 17 00:00:00 2001
From: Pierre Jarriges <pierre.jarriges@tutanota.com>
Date: Mon, 20 Jun 2022 09:56:33 +0200
Subject: [PATCH] images-courasel toggle fullscreen escape key

---
 website/package.json                           |  2 +-
 .../src/generic-components/image-carousel.js   | 18 +++++++++++++++---
 2 files changed, 16 insertions(+), 4 deletions(-)

diff --git a/website/package.json b/website/package.json
index 3dbeada..d40d842 100644
--- a/website/package.json
+++ b/website/package.json
@@ -1,6 +1,6 @@
 {
     "name": "kuadrado-website",
-    "version": "1.0.4",
+    "version": "1.1.0",
     "description": "Presentation website of Kuadrado Software",
     "main": "src/main.js",
     "scripts": {
diff --git a/website/src/generic-components/image-carousel.js b/website/src/generic-components/image-carousel.js
index cdb8c5f..c8c9d94 100644
--- a/website/src/generic-components/image-carousel.js
+++ b/website/src/generic-components/image-carousel.js
@@ -10,6 +10,7 @@ class ImageCarousel {
         };
         this.RUN_INTERVAL = 5000;
         this.props.images.length > 1 && this.run();
+        this.toggle_fullscreen = this.toggle_fullscreen.bind(this);
     }
 
     run() {
@@ -33,6 +34,19 @@ class ImageCarousel {
         this.refresh();
     }
 
+
+    toggle_fullscreen() {
+        this.state.fullscreen = !this.state.fullscreen;
+        document.getElementById(this.id).classList.toggle("fullscreen");
+        document.body.style.overflow = this.state.fullscreen ? "hidden" : "initial";
+
+        if (this.state.fullscreen) {
+            window.addEventListener("keydown", this.toggle_fullscreen);
+        } else {
+            window.removeEventListener("keydown", this.toggle_fullscreen);
+        }
+    }
+
     refresh() {
         obj2htm.subRender(this.render_image(), document.getElementById(this.id + "-img-element"), {
             mode: "replace",
@@ -79,9 +93,7 @@ class ImageCarousel {
             contents: this.state.fullscreen ? "â–¢" : "â›¶",
             onclick: e => {
                 e.stopImmediatePropagation();
-                this.state.fullscreen = !this.state.fullscreen;
-                document.getElementById(this.id).classList.toggle("fullscreen");
-                document.body.style.overflow = this.state.fullscreen ? "hidden" : "initial";
+                this.toggle_fullscreen();
                 this.refresh();
             },
         }
-- 
GitLab