From 5f978934afc9a5435eb435aa49f82d7418f8bbba Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Sun, 11 Jan 2026 09:18:21 +0000 Subject: [PATCH] feat: Add Shift+Click and Mobile Drag selection for SPA lists - Implements Shift+Click range selection for search results and course groups. - Implements mobile-friendly long-press + drag selection with auto-scrolling. - Adds sticky headers for better navigation. - Optimizes touch interactions with visual feedback (ripple animation). --- dist/index.html | 40 ++++- dist/static/js/app.js | 238 ++++++++++++++++++++++++++++- server.log | 38 ++--- verification/interaction_test.png | Bin 0 -> 53621 bytes verification/server.py | 43 ++++++ verification/verify_interaction.py | 98 ++++++++++++ 6 files changed, 426 insertions(+), 31 deletions(-) create mode 100644 verification/interaction_test.png create mode 100644 verification/server.py create mode 100644 verification/verify_interaction.py diff --git a/dist/index.html b/dist/index.html index eeca5fa..edb1a7e 100644 --- a/dist/index.html +++ b/dist/index.html @@ -59,6 +59,19 @@ .alt-card { background: white; padding: 20px; border-radius: 8px; max-width: 500px; width: 90%; max-height: 80vh; overflow-y: auto; } .alt-item { padding: 10px; border-bottom: 1px solid #eee; } .alt-item:last-child { border-bottom: none; } + + /* Mobile Drag Selection */ + .drag-selecting { animation: ripple 0.3s ease-out; background-color: rgba(99, 5, 96, 0.1); } + @keyframes ripple { + 0% { transform: scale(0.95); opacity: 0.5; } + 50% { transform: scale(1.02); opacity: 0.8; } + 100% { transform: scale(1); opacity: 1; } + } + .result-item { user-select: none; -webkit-user-select: none; } /* Disable text selection for drag */ + + /* Sticky Headers */ + header { position: sticky; top: 0; } + .nav-tabs { position: sticky; top: 55px; background: #f5f5f5; padding-top: 10px; margin-top: -10px; } /* Adjust top based on header height ~55px */
@@ -163,14 +176,20 @@