fix: restore mobile admin language select

This commit is contained in:
3252a8
2026-06-01 18:33:45 +03:00
parent 4fa18a1262
commit eadb86faf2
2 changed files with 18 additions and 5 deletions
+9 -5
View File
@@ -228,6 +228,7 @@
let adminLanguageClickGuardArmed = false; let adminLanguageClickGuardArmed = false;
let adminLanguageClickGuardTimer = null; let adminLanguageClickGuardTimer = null;
let adminLanguageClickGuardArmTimer = null; let adminLanguageClickGuardArmTimer = null;
$: adminLanguageGuardActive = isCompact && (adminLanguageMenuOpen || adminLanguageClickGuard);
function readReduceMotion() { function readReduceMotion() {
return ( return (
@@ -295,6 +296,8 @@
} }
function changeLanguage(value) { function changeLanguage(value) {
adminLanguageMenuOpen = false;
clearAdminLanguageClickGuard();
onLanguageChange(value, { section: "admin", adminSection: active }); onLanguageChange(value, { section: "admin", adminSection: active });
} }
@@ -472,8 +475,6 @@
function setAdminLanguageMenuOpen(open) { function setAdminLanguageMenuOpen(open) {
adminLanguageMenuOpen = Boolean(open); adminLanguageMenuOpen = Boolean(open);
clearAdminLanguageClickGuard(); clearAdminLanguageClickGuard();
// Desktop doesn't need the click-guard overlay and it can block
// option clicks in portaled select content.
if (!isCompact) return; if (!isCompact) return;
if (adminLanguageMenuOpen) { if (adminLanguageMenuOpen) {
adminLanguageClickGuard = true; adminLanguageClickGuard = true;
@@ -557,7 +558,11 @@
} }
</script> </script>
<div class="admin-screen-wrap" class:is-sidebar-open={sidebarOpen}> <div
class="admin-screen-wrap"
class:is-sidebar-open={sidebarOpen}
class:is-admin-language-open={adminLanguageGuardActive}
>
{#if sidebarOpen} {#if sidebarOpen}
<button <button
type="button" type="button"
@@ -568,7 +573,7 @@
on:click={() => (sidebarOpen = false)} on:click={() => (sidebarOpen = false)}
></button> ></button>
{/if} {/if}
{#if isCompact && (adminLanguageMenuOpen || adminLanguageClickGuard)} {#if adminLanguageGuardActive}
<button <button
class="language-select-guard" class="language-select-guard"
class:language-select-guard--armed={adminLanguageClickGuardArmed} class:language-select-guard--armed={adminLanguageClickGuardArmed}
@@ -578,7 +583,6 @@
on:click={closeAdminLanguageFromGuard} on:click={closeAdminLanguageFromGuard}
></button> ></button>
{/if} {/if}
<aside class="admin-sidebar" aria-label={at("sidebar_navigation", {}, "Навигация админки")}> <aside class="admin-sidebar" aria-label={at("sidebar_navigation", {}, "Навигация админки")}>
<div class="admin-sidebar-brand"> <div class="admin-sidebar-brand">
<BrandMark class="admin-brand-mark" {brand} /> <BrandMark class="admin-brand-mark" {brand} />
+9
View File
@@ -3605,6 +3605,15 @@
transform: translateX(0); transform: translateX(0);
} }
.admin-screen-wrap.is-admin-language-open .admin-sidebar {
z-index: 120;
pointer-events: none;
}
.admin-screen-wrap.is-admin-language-open .admin-language-switch {
pointer-events: auto;
}
.admin-sidebar-backdrop { .admin-sidebar-backdrop {
position: fixed; position: fixed;
inset: 0; inset: 0;