Files
mule-image/web/src/lib/components/layout/IndexerStatusPill.svelte
dtoro da63ad769a feat: bulk action progress — header pill + per-thumbnail states
- New bulkAction store: tracks active/label/detail state for the pill
  and a Map<uid, pending|done|error> for per-tile overlays
- Extract StatusPill.svelte from IndexerStatusPill (generic active/label/detail
  props); IndexerStatusPill becomes a one-line wrapper
- +layout.svelte: render a second StatusPill driven by bulkAction store,
  alongside the indexer pill in the AnimatedMule header
- BulkActionBar: extend withBusy with optional BulkConfig (ids/label/doneLabel);
  pending tiles dim + spinner on start, green checkmark flashes for 400ms before
  cache invalidation removes them; red overlay on error, auto-clears after 2s
- onApprove/batchEdit: wire onProgress callback to setDetail so the pill shows
  the filename currently being processed during fan-out keep operations
- batch.ts: add completedId as third arg to onProgress (backwards-compatible)
- PhotoTile: derive bulkState from store; pending/done/error overlays sit above
  the selection tint; hover-video guarded against pending tiles

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 09:43:12 +02:00

9 lines
372 B
Svelte

<!-- PhotoPrism indexer status pill. Driven by the indexer store, which
subscribes to PhotoPrism's WS channel. Delegates rendering to StatusPill. -->
<script lang="ts">
import { indexer } from '$lib/stores/indexer.svelte';
import StatusPill from './StatusPill.svelte';
</script>
<StatusPill active={indexer.active} label={indexer.label} detail={indexer.detail} />