Mobile-first i pixel-perfect: wspólne --cell-size, grid dla podpowiedzi, dynamiczny rozmiar komórki z uwzględnieniem paddingów i szerokości opisów; poprawa touch/pointer i double-tap na mobile; wyrównanie layoutu bez nachodzenia na desktopie

This commit is contained in:
2026-02-08 15:02:59 +01:00
parent ec1cf89ee5
commit 657dc9cc1f
5 changed files with 145 additions and 24 deletions

View File

@@ -21,10 +21,22 @@ const cellClass = computed(() => {
}
});
const handleMouseDown = (e) => {
// 0 = left, 2 = right
let lastTap = 0;
const handlePointerDown = (e) => {
if (e.pointerType === 'mouse') {
if (e.button === 0) emit('start-drag', props.r, props.c, false);
if (e.button === 2) emit('start-drag', props.r, props.c, true);
return;
}
const now = Date.now();
const isDoubleTap = now - lastTap < 300;
lastTap = now;
if (isDoubleTap) {
emit('start-drag', props.r, props.c, true);
} else {
emit('start-drag', props.r, props.c, false);
}
};
</script>
@@ -32,7 +44,9 @@ const handleMouseDown = (e) => {
<div
class="cell"
:class="cellClass"
@mousedown.prevent="handleMouseDown"
:data-r="props.r"
:data-c="props.c"
@pointerdown.prevent="handlePointerDown"
@mouseenter="emit('enter-cell', props.r, props.c)"
@contextmenu.prevent
>
@@ -52,6 +66,7 @@ const handleMouseDown = (e) => {
align-items: center;
transition: background-color 0.1s ease, box-shadow 0.1s ease;
user-select: none;
touch-action: none;
}
.cell:hover {