diff --git a/src/lib/components/units/SummonUnit.svelte b/src/lib/components/units/SummonUnit.svelte
index 846d5700..884844c9 100644
--- a/src/lib/components/units/SummonUnit.svelte
+++ b/src/lib/components/units/SummonUnit.svelte
@@ -9,6 +9,7 @@
import { getSummonImage } from '$lib/features/database/detail/image'
import { openDetailsSidebar } from '$lib/features/details/openDetailsSidebar.svelte'
import { sidebar } from '$lib/stores/sidebar.svelte'
+ import { GridType } from '$lib/types/enums'
import * as m from '$lib/paraglide/messages'
interface Props {
@@ -23,6 +24,8 @@
updateParty: (p: Party) => void
canEdit: () => boolean
getEditKey: () => string | null
+ getSelectedSlot?: () => number
+ getActiveTab?: () => GridType
services: { gridService: any; partyService: any }
openPicker?: (opts: { type: 'weapon' | 'summon' | 'character'; position: number; item?: any }) => void
}
@@ -48,6 +51,13 @@
// Check if this item is currently active in the sidebar
let isActive = $derived(item?.id && sidebar.activeItemId === String(item.id))
+ // Check if this empty slot is currently selected for adding an item
+ let isEmptySelected = $derived(
+ !item &&
+ ctx?.getSelectedSlot?.() === position &&
+ ctx?.getActiveTab?.() === GridType.Summon
+ )
+
// Determine element class for focus ring
let elementClass = $derived.by(() => {
const element = item?.summon?.element
@@ -106,6 +116,7 @@
class:friend={item?.friend || position === 6}
class:cell={!((item?.main || position === -1) || (item?.friend || position === 6))}
class:editable={ctx?.canEdit()}
+ class:is-active={isActive}
onclick={() => viewDetails()}
>
ctx?.canEdit() && ctx?.openPicker && ctx.openPicker({ type: 'summon', position, item })}
>
void
canEdit: () => boolean
getEditKey: () => string | null
+ getSelectedSlot?: () => number
+ getActiveTab?: () => GridType
services: { gridService: any; partyService: any }
openPicker?: (opts: { type: 'weapon' | 'summon' | 'character'; position: number; item?: any }) => void
}
@@ -69,6 +72,13 @@
// Check if this item is currently active in the sidebar
let isActive = $derived(item?.id && sidebar.activeItemId === String(item.id))
+ // Check if this empty slot is currently selected for adding an item
+ let isEmptySelected = $derived(
+ !item &&
+ ctx?.getSelectedSlot?.() === position &&
+ ctx?.getActiveTab?.() === GridType.Weapon
+ )
+
// Determine element class for focus ring
let elementClass = $derived.by(() => {
// For weapons with null element that have an instance element, use it
@@ -148,6 +158,7 @@
class:cell={!(item?.mainhand || position === -1)}
class:extra={position >= 9}
class:editable={ctx?.canEdit()}
+ class:is-active={isActive}
onclick={() => viewDetails()}
>