Spaces:
Sleeping
Sleeping
Andrew
commited on
Commit
·
ff03440
1
Parent(s):
44320ea
Hover to click-to-deactivate persona.
Browse files
src/routes/settings/(nav)/+layout.svelte
CHANGED
|
@@ -215,6 +215,32 @@ let firstNonArchivedPersonaId = $derived(() =>
|
|
| 215 |
settings.instantSet({ activePersonas: [...$settings.activePersonas, personaId] });
|
| 216 |
}
|
| 217 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 218 |
</script>
|
| 219 |
|
| 220 |
<div
|
|
@@ -432,9 +458,16 @@ let firstNonArchivedPersonaId = $derived(() =>
|
|
| 432 |
|
| 433 |
{#if $settings.activePersonas.includes(persona.id)}
|
| 434 |
<div
|
| 435 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 436 |
>
|
| 437 |
-
Active
|
| 438 |
</div>
|
| 439 |
{/if}
|
| 440 |
</button>
|
|
|
|
| 215 |
settings.instantSet({ activePersonas: [...$settings.activePersonas, personaId] });
|
| 216 |
}
|
| 217 |
}
|
| 218 |
+
|
| 219 |
+
function deactivatePersona(personaId: string, event: Event) {
|
| 220 |
+
event.stopPropagation();
|
| 221 |
+
if ($settings.activePersonas.length === 1) {
|
| 222 |
+
alert("At least one persona must be active.");
|
| 223 |
+
return;
|
| 224 |
+
}
|
| 225 |
+
settings.instantSet({ activePersonas: $settings.activePersonas.filter(id => id !== personaId) });
|
| 226 |
+
}
|
| 227 |
+
|
| 228 |
+
let hoveredActiveTag: string | null = $state(null);
|
| 229 |
+
let hoverTimeout: number | undefined = $state();
|
| 230 |
+
|
| 231 |
+
function handleActiveTagMouseEnter(personaId: string) {
|
| 232 |
+
hoverTimeout = window.setTimeout(() => {
|
| 233 |
+
hoveredActiveTag = personaId;
|
| 234 |
+
}, 50);
|
| 235 |
+
}
|
| 236 |
+
|
| 237 |
+
function handleActiveTagMouseLeave() {
|
| 238 |
+
if (hoverTimeout) {
|
| 239 |
+
clearTimeout(hoverTimeout);
|
| 240 |
+
hoverTimeout = undefined;
|
| 241 |
+
}
|
| 242 |
+
hoveredActiveTag = null;
|
| 243 |
+
}
|
| 244 |
</script>
|
| 245 |
|
| 246 |
<div
|
|
|
|
| 458 |
|
| 459 |
{#if $settings.activePersonas.includes(persona.id)}
|
| 460 |
<div
|
| 461 |
+
role="button"
|
| 462 |
+
tabindex="0"
|
| 463 |
+
class="flex h-[21px] cursor-pointer items-center rounded-md bg-black/90 px-2 text-[11px] font-semibold leading-none text-white dark:bg-white dark:text-black"
|
| 464 |
+
onclick={(e) => deactivatePersona(persona.id, e)}
|
| 465 |
+
onkeydown={(e) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); deactivatePersona(persona.id, e); }}}
|
| 466 |
+
onmouseenter={() => handleActiveTagMouseEnter(persona.id)}
|
| 467 |
+
onmouseleave={handleActiveTagMouseLeave}
|
| 468 |
+
title="Click to deactivate"
|
| 469 |
>
|
| 470 |
+
{hoveredActiveTag === persona.id ? 'Deactivate?' : 'Active'}
|
| 471 |
</div>
|
| 472 |
{/if}
|
| 473 |
</button>
|