onopen(entry) : undefined}
- onkeydown={onopen ? (e) => e.key === 'Enter' && onopen(entry) : undefined}
- oncontextmenu={contextActions?.length ? (e) => openContext(e, entry) : undefined}
+ aria-label={onopen ? item.name : undefined}
+ data-testid={item.name}
+ title={showOwner ? ownerTitle(item) : undefined}
+ {draggable}
+ ondragstart={draggable && onitemdragstart ? (e) => onitemdragstart(e, item) : undefined}
+ ondragover={dropTarget && onitemdragover ? (e) => onitemdragover(e, item) : undefined}
+ ondragleave={dropTarget && onitemdragleave ? (e) => onitemdragleave(e, item) : undefined}
+ ondrop={dropTarget && onitemdrop ? (e) => onitemdrop(e, item) : undefined}
+ onclick={onopen
+ ? (e) => {
+ // Selection-first for shift/meta clicks; only "open" fires on a
+ // plain click when the click wasn't consumed by selection.
+ if (handleRowClick(e, item.id)) return;
+ if (!openOnDoubleClick) onopen(item);
+ }
+ : undefined}
+ ondblclick={onopen && openOnDoubleClick ? () => onopen(item) : undefined}
+ onkeydown={onopen ? (e) => e.key === 'Enter' && onopen(item) : undefined}
+ oncontextmenu={contextActions?.length ? (e) => openContext(e, item) : undefined}
>
{#if selectable}
e.stopPropagation()}>
toggleSelected(entry.id)}
+ data-testid={`resource-list-select-${item.id}-checkbox`}
+ checked={selected.has(item.id)}
+ onchange={() => toggleSelected(item.id)}
/>
{/if}
+
+ {#if enableThumbnails && kind === 'file' && mimeVal && canThumbnailClientSide( { id: item.id, name: item.name, mime_type: mimeVal } )}
+
{
+ const img = e.currentTarget as HTMLImageElement;
+ img.style.display = 'none';
+ if (mimeVal === 'application/pdf') preloadPdf();
+ void queueThumbnailGenerate(
+ { id: item.id, name: item.name, mime_type: mimeVal },
+ (dataUrl) => {
+ img.src = dataUrl;
+ img.style.display = '';
+ }
+ );
+ }}
+ />
+ {/if}
-
{entry.name}
+
{item.name}
{#if showOwner}
- {#if entry.ownerId}
-
+ {#if ownerId}
+
{:else}
- {entry.ownerName ?? '—'}
+ —
{/if}
{/if}
- {#if showPath}
{entry.path ?? ''}
{/if}
- {#if showType}
{entry.typeLabel ?? ''}
{/if}
+ {#if showPath}
{item.path ?? ''}
{/if}
+ {#if showType}
{item.category ?? ''}
{/if}
{#if showSize}
-
{entry.size != null ? formatBytes(entry.size) : '—'}
+
{sizeVal != null ? formatBytes(sizeVal) : '—'}
{/if}
{#if showDate}
- {#if dateCell}{@render dateCell(entry)}{:else}{formatDate(entry.date)}{/if}
+ {#if dateCell}{@render dateCell(item, ctx)}{:else}{formatDate(dateVal)}{/if}
{/if}
- {#if showDate && dateCell}{@render dateCell(entry)}{/if}
+ {#if showDate && dateCell}{@render dateCell(item, ctx)}{/if}
- {#if entry.size != null}{formatBytes(entry.size)}{/if}
- {#if entry.date != null}{formatDate(entry.date)}{/if}
+ {#if sizeVal != null}{formatBytes(sizeVal)}{/if}
+ {#if dateVal != null}{formatDate(dateVal)}{/if}
{#if onfavorite}
{/if}
{#if actions}
-
{@render actions(entry)}
+
{@render actions(item)}
{/if}
{/snippet}
@@ -435,7 +708,7 @@