feat(ui): close the friends kebab on an outside tap
CI / changes (pull_request) Successful in 3s
CI / unit (pull_request) Has been skipped
CI / integration (pull_request) Has been skipped
CI / ui (pull_request) Successful in 54s
CI / gate (pull_request) Successful in 0s
CI / deploy (pull_request) Successful in 1m30s
CI / changes (pull_request) Successful in 3s
CI / unit (pull_request) Has been skipped
CI / integration (pull_request) Has been skipped
CI / ui (pull_request) Successful in 54s
CI / gate (pull_request) Successful in 0s
CI / deploy (pull_request) Successful in 1m30s
A slid-open friend row now collapses when the user taps anywhere outside its action buttons (taps on a kebab are skipped so its own toggle still drives the open/close). Uses the same capture-phase window pointerdown idiom as Screen, active only while a row is revealed.
This commit is contained in:
@@ -80,6 +80,19 @@
|
|||||||
if (target) void remove(target.accountId);
|
if (target) void remove(target.accountId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// While a friend row is slid open, a tap anywhere outside its action buttons
|
||||||
|
// closes it again. Taps on a kebab are skipped so its own toggle stays in charge.
|
||||||
|
$effect(() => {
|
||||||
|
if (revealedId === null) return;
|
||||||
|
function onDown(e: PointerEvent) {
|
||||||
|
const el = e.target as Element | null;
|
||||||
|
if (el?.closest('.acts') || el?.closest('.kebab')) return;
|
||||||
|
revealedId = null;
|
||||||
|
}
|
||||||
|
window.addEventListener('pointerdown', onDown, true);
|
||||||
|
return () => window.removeEventListener('pointerdown', onDown, true);
|
||||||
|
});
|
||||||
|
|
||||||
async function getCode() {
|
async function getCode() {
|
||||||
try {
|
try {
|
||||||
code = await gateway.friendCodeIssue();
|
code = await gateway.friendCodeIssue();
|
||||||
|
|||||||
Reference in New Issue
Block a user