Emulate hovering for smartphones: require confirmation click
authorBenjamin Auder <benjamin.auder@somewhere>
Tue, 29 Dec 2020 16:51:24 +0000 (17:51 +0100)
committerBenjamin Auder <benjamin.auder@somewhere>
Tue, 29 Dec 2020 16:51:24 +0000 (17:51 +0100)
client/src/components/BaseGame.vue
client/src/styles/_board_squares_img.sass

index 5f825c9..ee8b1fc 100644 (file)
@@ -440,9 +440,25 @@ export default {
           else this.$refs["board"].choices = move_s;
         }
         if ("ontouchstart" in window) {
           else this.$refs["board"].choices = move_s;
         }
         if ("ontouchstart" in window) {
+          const squareId = "sq-" + square[0] + "-" + square[1];
+          const highlight = function(on, sq) {
+            let elt = document.getElementById(sq);
+            if (!!elt) {
+              if (on) elt.classList.add("touch-hover");
+              else elt.classList.remove("touch-hover");
+            }
+          }
           // Touch screen (smartphone): require confirmation
           // Touch screen (smartphone): require confirmation
-          if (this.touchLastClick == square) playMove();
-          this.touchLastClick = square;
+          const squareStr = square[0] + "_" + square[1]
+          if (this.touchLastClick == squareId) {
+            highlight(false, squareId);
+            playMove();
+          }
+          else {
+            highlight(true, squareId);
+            highlight(false, this.touchLastClick);
+          }
+          this.touchLastClick = squareId;
         }
         else playMove();
       }
         }
         else playMove();
       }
index cccce41..4075984 100644 (file)
@@ -63,6 +63,9 @@ img.circle-square
 .in-shadow
   filter: brightness(50%)
 
 .in-shadow
   filter: brightness(50%)
 
+.touch-hover
+  background-color: #C571E6 !important
+
 .monochrome
   border-bottom: 1px solid black
   border-right: 1px solid black
 .monochrome
   border-bottom: 1px solid black
   border-right: 1px solid black