EXAMPLE-PIOVAN-MOTAN

by velo_ninja

HTML

<script src="https://cdn.jsdelivr.net/npm/[email protected]/+esm"></script>
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8" />
  <title>Konva Grid with Modern Context Menu</title>
  <script src="https://cdn.jsdelivr.net/npm/[email protected]/konva.min.js"></script>
  <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css" rel="stylesheet">
  <style>
    body {
      margin: 0;
      font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
    }
    #container {
      width: 100vw;
      height: 100vh;
    }

    .context-menu {
      position: absolute;
      display: none;
      background-color: #fff;
      border: 1px solid #ccc;
      border-radius: 8px;
      box-shadow: 0 8px 16px rgba(0, 0, 0, 0.1);
      font-size: 13px;
      z-index: 1000;
      padding: 4px 0;
      min-width: 200px;
    }

    .context-menu ul {
      list-style: none;
      margin: 0;
      padding: 0;
    }

    .context-menu li {
      position: relative;
      padding: 6px 12px;
      padding-left: 28px;
      cursor: pointer;
      white-space: nowrap;
      transition: background 0.2s;
      font-weight: 400;
      color: #333;
    }

    .context-menu li:hover {
      background-color: #f0f2f5;
    }

    .context-menu li ul {
      display: none;
      position: absolute;
      top: 0;
      left: 100%;
      margin-left: -1px;
      background-color: #fff;
      border: 1px solid #ccc;
      border-radius: 8px;
      box-shadow: 0 8px 16px rgba(0, 0, 0, 0.1);
      z-index: 1001;
    }

    .context-menu li:hover > ul {
      display: block;
    }

    .context-menu li.has-submenu::after {
      content: "\f105";
      font-family: "Font Awesome 6 Free";
      font-weight: 900;
      position: absolute;
      right: 10px;
      font-size: 10px;
      color: #888;
    }

    .context-menu .icon {
      position: absolute;
      left: 8px;
      font-size:...

CSS

body {
  font-family: Arial, sans-serif;
}
#container {
  border: 1px solid #ccc;
  display: inline-block;
}
#tooltip {
  position: absolute;
  padding: 5px 8px;
  background: #333;
  color: #fff;
  border-radius: 4px;
  font-size: 12px;
  display: none;
  pointer-events: none;
  z-index: 999;
}
#konva-context-menu {
  position: absolute;
  background: #fff;
  border: 1px solid #ccc;
  box-shadow: 0 2px 5px rgba(0,0,0,0.2);
  padding: 4px 0;
  font-family: sans-serif;
  font-size: 14px;
  display: none;
  z-index: 1000;
  min-width: 150px;
}
#konva-context-menu .menu-item {
  padding: 6px 12px;
  cursor: pointer;
}
#konva-context-menu .menu-item:hover {
  background-color: #f0f0f0;
}