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
- class="flex h-[21px] items-center rounded-md bg-black/90 px-2 text-[11px] font-semibold leading-none text-white dark:bg-white dark:text-black"
 
 
 
 
 
 
 
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>