UI: кнопка «Меню» надёжно открывается на мобильных (onClick вместо pointerup + touch-action)
Открытие бокового меню переведено на нативный onClick: на тач-устройствах pointerup часто не приходит из-за pointercancel, из-за чего меню не открывалось. Долгое удержание (10с → админка) оставлено на таймере и подавляет этот клик. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -31,9 +31,14 @@ export function BottomBar({ onMenu }: { onMenu: () => void }) {
|
||||
holdTimer.current = null;
|
||||
}
|
||||
};
|
||||
const endHold = () => {
|
||||
clearHold();
|
||||
if (!holdFired.current) onMenu(); // обычный тап
|
||||
// Открытие меню — на нативном onClick (надёжно на мобильных, в отличие от pointerup,
|
||||
// который не приходит при pointercancel). Долгий зажим подавляет этот клик.
|
||||
const onMenuClick = () => {
|
||||
if (holdFired.current) {
|
||||
holdFired.current = false;
|
||||
return;
|
||||
}
|
||||
onMenu();
|
||||
};
|
||||
|
||||
const onCreate = () => {
|
||||
@@ -57,8 +62,9 @@ export function BottomBar({ onMenu }: { onMenu: () => void }) {
|
||||
<button
|
||||
className="slot"
|
||||
aria-label="Меню"
|
||||
onClick={onMenuClick}
|
||||
onPointerDown={startHold}
|
||||
onPointerUp={endHold}
|
||||
onPointerUp={clearHold}
|
||||
onPointerLeave={clearHold}
|
||||
onPointerCancel={clearHold}
|
||||
>
|
||||
|
||||
Reference in New Issue
Block a user