@happyvertical/smrt-content 0.43.6 → 0.43.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -1
- package/agents/content-list.md +37 -0
- package/dist/index.js +1 -1
- package/dist/manifest.json +1 -1
- package/dist/smrt-knowledge.json +5 -5
- package/dist/svelte/components/ContentList.svelte +374 -16
- package/dist/svelte/components/ContentList.svelte.d.ts +3 -0
- package/dist/svelte/components/ContentList.svelte.d.ts.map +1 -1
- package/dist/svelte/content-list-query.d.ts +15 -0
- package/dist/svelte/content-list-query.d.ts.map +1 -1
- package/dist/svelte/content-list-runtime.d.ts +66 -0
- package/dist/svelte/content-list-runtime.d.ts.map +1 -0
- package/dist/svelte/content-list-runtime.js +249 -0
- package/dist/svelte/i18n.contribution.d.ts +14 -0
- package/dist/svelte/i18n.contribution.d.ts.map +1 -1
- package/dist/svelte/i18n.contribution.js +14 -0
- package/dist/svelte/index.d.ts +1 -0
- package/dist/svelte/index.d.ts.map +1 -1
- package/dist/svelte/index.js +1 -0
- package/package.json +14 -14
|
@@ -84,10 +84,17 @@ import {
|
|
|
84
84
|
contentListQueryRowsToContents,
|
|
85
85
|
contentListQueryTotalValue,
|
|
86
86
|
CONTENT_LIST_QUERY_MAX_OFFSET,
|
|
87
|
+
contentListQueryRequestKey,
|
|
87
88
|
contentListViewStateToDataQueryRequest,
|
|
88
89
|
readContentListQueryNotices,
|
|
89
90
|
resolveContentListMaxPageSize,
|
|
90
91
|
} from '../content-list-query.js';
|
|
92
|
+
import {
|
|
93
|
+
contentListJobAffectsQuery,
|
|
94
|
+
type ContentListJob,
|
|
95
|
+
type ContentListJobBinding,
|
|
96
|
+
type ContentListJobSnapshot,
|
|
97
|
+
} from '../content-list-runtime.js';
|
|
91
98
|
import {
|
|
92
99
|
type ContentListSavedView,
|
|
93
100
|
type ContentListSavedViewStore,
|
|
@@ -144,6 +151,8 @@ interface Props {
|
|
|
144
151
|
urlState?: ContentListUrlStateBinding;
|
|
145
152
|
/** Opt-in saved views. `createContentListSavedViewStore()` is the default store. */
|
|
146
153
|
savedViews?: ContentListSavedViewStore;
|
|
154
|
+
/** Shared background-workflow state. The same binding guards submissions. */
|
|
155
|
+
jobs?: ContentListJobBinding;
|
|
147
156
|
}
|
|
148
157
|
|
|
149
158
|
let {
|
|
@@ -163,6 +172,7 @@ let {
|
|
|
163
172
|
query = undefined,
|
|
164
173
|
urlState = undefined,
|
|
165
174
|
savedViews = undefined,
|
|
175
|
+
jobs = undefined,
|
|
166
176
|
}: Props = $props();
|
|
167
177
|
|
|
168
178
|
const initialQuery = untrack(() => query);
|
|
@@ -329,6 +339,58 @@ let pendingDelete = $state<ContentListRow | null>(null);
|
|
|
329
339
|
let savedViewList = $state<ContentListSavedView[]>([]);
|
|
330
340
|
let selectedSavedViewId = $state('');
|
|
331
341
|
let savedViewName = $state('');
|
|
342
|
+
let offline = $state(false);
|
|
343
|
+
let jobSnapshot = $state<ContentListJobSnapshot>({
|
|
344
|
+
jobs: [],
|
|
345
|
+
pendingRowIds: new Set(),
|
|
346
|
+
pendingQueryKeys: new Set(),
|
|
347
|
+
});
|
|
348
|
+
const MAX_DEFERRED_JOB_COMPLETIONS = 50;
|
|
349
|
+
let completedJobs = $state<ContentListJob[]>([]);
|
|
350
|
+
let completedJobsOverflowed = $state(false);
|
|
351
|
+
let activeQueryKey = $state<string | undefined>(undefined);
|
|
352
|
+
|
|
353
|
+
// Job state is subscribed once so hosts can use a framework-free controller.
|
|
354
|
+
// Only transitions observed after the initial snapshot are completion events;
|
|
355
|
+
// old successful history must not refresh every newly-mounted list.
|
|
356
|
+
$effect(() => {
|
|
357
|
+
const binding = jobs;
|
|
358
|
+
completedJobs = [];
|
|
359
|
+
completedJobsOverflowed = false;
|
|
360
|
+
if (!binding) {
|
|
361
|
+
jobSnapshot = {
|
|
362
|
+
jobs: [],
|
|
363
|
+
pendingRowIds: new Set(),
|
|
364
|
+
pendingQueryKeys: new Set(),
|
|
365
|
+
};
|
|
366
|
+
return;
|
|
367
|
+
}
|
|
368
|
+
let initialized = false;
|
|
369
|
+
let statuses = new Map<string, ContentListJob['status']>();
|
|
370
|
+
return binding.subscribe((next) => {
|
|
371
|
+
const completions: ContentListJob[] = [];
|
|
372
|
+
const nextStatuses = new Map<string, ContentListJob['status']>();
|
|
373
|
+
for (const job of next.jobs) {
|
|
374
|
+
const previous = statuses.get(job.jobId);
|
|
375
|
+
if (
|
|
376
|
+
initialized &&
|
|
377
|
+
job.status === 'succeeded' &&
|
|
378
|
+
previous !== 'succeeded'
|
|
379
|
+
)
|
|
380
|
+
completions.push(job);
|
|
381
|
+
nextStatuses.set(job.jobId, job.status);
|
|
382
|
+
}
|
|
383
|
+
statuses = nextStatuses;
|
|
384
|
+
initialized = true;
|
|
385
|
+
jobSnapshot = next;
|
|
386
|
+
if (completions.length > 0) {
|
|
387
|
+
const combined = [...completedJobs, ...completions];
|
|
388
|
+
if (combined.length > MAX_DEFERRED_JOB_COMPLETIONS)
|
|
389
|
+
completedJobsOverflowed = true;
|
|
390
|
+
completedJobs = combined.slice(-MAX_DEFERRED_JOB_COMPLETIONS);
|
|
391
|
+
}
|
|
392
|
+
});
|
|
393
|
+
});
|
|
332
394
|
|
|
333
395
|
$effect(() =>
|
|
334
396
|
controller.subscribe((transition) => {
|
|
@@ -427,6 +489,9 @@ const sourceContents = $derived(
|
|
|
427
489
|
queryBinding ? contentListQueryRowsToContents(queryBinding.rows) : contents,
|
|
428
490
|
);
|
|
429
491
|
const rows = $derived(toContentListRows(sourceContents));
|
|
492
|
+
const visibleRowIds = $derived(
|
|
493
|
+
new Set(rows.filter((row) => row.identified).map((row) => String(row.id))),
|
|
494
|
+
);
|
|
430
495
|
// In server mode the returned rows ARE the answer: the server already applied
|
|
431
496
|
// the search, the filters, the sort, and the page. Running the local transform
|
|
432
497
|
// over them again would re-filter with subtly different semantics (untrimmed
|
|
@@ -552,6 +617,26 @@ const isLoading = $derived(loading || (queryBinding?.loading ?? false));
|
|
|
552
617
|
const refreshing = $derived(
|
|
553
618
|
(queryBinding?.refreshing ?? false) || (isLoading && pageRows.length > 0),
|
|
554
619
|
);
|
|
620
|
+
const stale = $derived((queryBinding?.stale ?? false) || offline);
|
|
621
|
+
const blockingError = $derived(
|
|
622
|
+
error ?? (pageRows.length === 0 ? queryErrorMessage : null),
|
|
623
|
+
);
|
|
624
|
+
const recoverableError = $derived(
|
|
625
|
+
error === null && pageRows.length > 0 ? queryErrorMessage : null,
|
|
626
|
+
);
|
|
627
|
+
const lastUpdated = $derived(queryBinding?.lastUpdated);
|
|
628
|
+
|
|
629
|
+
function refreshQuery(): void {
|
|
630
|
+
if (!queryBinding?.refresh || refreshing || isLoading) return;
|
|
631
|
+
const key = activeQueryKey;
|
|
632
|
+
void queryBinding
|
|
633
|
+
.refresh()
|
|
634
|
+
.then((result) => {
|
|
635
|
+
if (result !== undefined && activeQueryKey === key)
|
|
636
|
+
resultNotices = readContentListQueryNotices(result);
|
|
637
|
+
})
|
|
638
|
+
.catch(() => undefined);
|
|
639
|
+
}
|
|
555
640
|
/**
|
|
556
641
|
* A retry re-reads the same query, so its answer replaces the rendered rows —
|
|
557
642
|
* and therefore has to replace the completeness flags that describe them too.
|
|
@@ -641,6 +726,7 @@ $effect(() => {
|
|
|
641
726
|
// a failure in its error state, so a rejection here is not also an
|
|
642
727
|
// unhandled one. The resolved envelope carries the server's completeness
|
|
643
728
|
// flags, which the binding itself does not expose.
|
|
729
|
+
activeQueryKey = contentListQueryRequestKey(translated.request);
|
|
644
730
|
void queryBinding
|
|
645
731
|
.execute(translated.request)
|
|
646
732
|
.then((result) => {
|
|
@@ -674,6 +760,69 @@ $effect(() => {
|
|
|
674
760
|
});
|
|
675
761
|
});
|
|
676
762
|
|
|
763
|
+
// Query-scoped live updates are opt-in at the transport. Reconnect refreshes
|
|
764
|
+
// the exact active query before resubscribing; without a live transport, the
|
|
765
|
+
// same browser event falls back to an ordinary exact-query refresh.
|
|
766
|
+
$effect(() => {
|
|
767
|
+
const queryKey = activeQueryKey;
|
|
768
|
+
if (!queryBinding || queryKey === undefined || typeof window === 'undefined')
|
|
769
|
+
return;
|
|
770
|
+
offline = typeof navigator !== 'undefined' && navigator.onLine === false;
|
|
771
|
+
let live:
|
|
772
|
+
| { unsubscribe(): void; reconnect?: () => void }
|
|
773
|
+
| undefined;
|
|
774
|
+
try {
|
|
775
|
+
live = queryBinding.subscribeLive?.();
|
|
776
|
+
} catch {
|
|
777
|
+
live = undefined;
|
|
778
|
+
}
|
|
779
|
+
const handleOffline = () => {
|
|
780
|
+
offline = true;
|
|
781
|
+
};
|
|
782
|
+
const handleOnline = () => {
|
|
783
|
+
const wasOffline = offline;
|
|
784
|
+
offline = false;
|
|
785
|
+
if (!wasOffline) return;
|
|
786
|
+
if (live?.reconnect) live.reconnect();
|
|
787
|
+
else refreshQuery();
|
|
788
|
+
};
|
|
789
|
+
window.addEventListener('offline', handleOffline);
|
|
790
|
+
window.addEventListener('online', handleOnline);
|
|
791
|
+
return () => {
|
|
792
|
+
window.removeEventListener('offline', handleOffline);
|
|
793
|
+
window.removeEventListener('online', handleOnline);
|
|
794
|
+
live?.unsubscribe();
|
|
795
|
+
};
|
|
796
|
+
});
|
|
797
|
+
|
|
798
|
+
// A successful workflow refreshes only the page/query it can affect. Failures
|
|
799
|
+
// stay visible and never produce the refresh that a success would.
|
|
800
|
+
$effect(() => {
|
|
801
|
+
const completions = completedJobs;
|
|
802
|
+
const overflowed = completedJobsOverflowed;
|
|
803
|
+
if (completions.length === 0 && !overflowed) return;
|
|
804
|
+
if (!queryBinding?.refresh) {
|
|
805
|
+
// Local lists and structurally valid read-only bindings cannot consume a
|
|
806
|
+
// completion. Discard it rather than retaining unbounded job history.
|
|
807
|
+
completedJobs = [];
|
|
808
|
+
completedJobsOverflowed = false;
|
|
809
|
+
return;
|
|
810
|
+
}
|
|
811
|
+
// A success can arrive while an older query is still in flight. Keep the
|
|
812
|
+
// completion queued until that request settles so its pre-job answer cannot
|
|
813
|
+
// become the indefinitely visible final state.
|
|
814
|
+
if (refreshing || isLoading) return;
|
|
815
|
+
completedJobs = [];
|
|
816
|
+
completedJobsOverflowed = false;
|
|
817
|
+
if (
|
|
818
|
+
overflowed ||
|
|
819
|
+
completions.some((job) =>
|
|
820
|
+
contentListJobAffectsQuery(job, activeQueryKey, visibleRowIds),
|
|
821
|
+
)
|
|
822
|
+
)
|
|
823
|
+
refreshQuery();
|
|
824
|
+
});
|
|
825
|
+
|
|
677
826
|
const selectedRowKeys = $derived(
|
|
678
827
|
new Set(tableState.selectedRowIds.map((rowId) => String(rowId))),
|
|
679
828
|
);
|
|
@@ -681,7 +830,9 @@ const selectedRowKeys = $derived(
|
|
|
681
830
|
const identifiedRowKeys = $derived(
|
|
682
831
|
new Set(selectableContentListRowIds(rows).map((rowId) => String(rowId))),
|
|
683
832
|
);
|
|
684
|
-
const selectablePageRowIds = $derived(
|
|
833
|
+
const selectablePageRowIds = $derived(
|
|
834
|
+
selectableContentListRowIds(pageRows.filter((row) => !rowPending(row))),
|
|
835
|
+
);
|
|
685
836
|
const allPageSelected = $derived(
|
|
686
837
|
selectablePageRowIds.length > 0 &&
|
|
687
838
|
selectablePageRowIds.every((rowId) => selectedRowKeys.has(String(rowId))),
|
|
@@ -849,11 +1000,20 @@ const dropNotices = $derived<ContentListDropNotice[]>([
|
|
|
849
1000
|
* budget, and the next page is computed from `page * limit`, so those rows are
|
|
850
1001
|
* skipped on the following page too.
|
|
851
1002
|
*/
|
|
1003
|
+
const boundResultNotices = $derived(
|
|
1004
|
+
queryBinding?.result === undefined
|
|
1005
|
+
? undefined
|
|
1006
|
+
: readContentListQueryNotices(queryBinding.result),
|
|
1007
|
+
);
|
|
852
1008
|
const queryTruncated = $derived(
|
|
853
|
-
queryBinding?.truncated ??
|
|
1009
|
+
queryBinding?.truncated ??
|
|
1010
|
+
boundResultNotices?.truncated ??
|
|
1011
|
+
resultNotices.truncated,
|
|
854
1012
|
);
|
|
855
1013
|
const queryWarnings = $derived<ReadonlyArray<string>>(
|
|
856
|
-
queryBinding?.warnings ??
|
|
1014
|
+
queryBinding?.warnings ??
|
|
1015
|
+
boundResultNotices?.warnings ??
|
|
1016
|
+
resultNotices.warnings,
|
|
857
1017
|
);
|
|
858
1018
|
/** Identity of the current set of refusals, so a dismissal is not permanent. */
|
|
859
1019
|
const dropNoticeKey = $derived(
|
|
@@ -997,8 +1157,35 @@ function isSelected(row: ContentListRow): boolean {
|
|
|
997
1157
|
return selectedRowKeys.has(String(row.id));
|
|
998
1158
|
}
|
|
999
1159
|
|
|
1160
|
+
function rowPending(row: ContentListRow): boolean {
|
|
1161
|
+
return (
|
|
1162
|
+
jobSnapshot.pendingRowIds.has(String(row.id)) ||
|
|
1163
|
+
(activeQueryKey !== undefined &&
|
|
1164
|
+
jobSnapshot.pendingQueryKeys.has(activeQueryKey))
|
|
1165
|
+
);
|
|
1166
|
+
}
|
|
1167
|
+
|
|
1168
|
+
function retryJob(jobId: string): void {
|
|
1169
|
+
void jobs?.retry(jobId).catch(() => undefined);
|
|
1170
|
+
}
|
|
1171
|
+
|
|
1172
|
+
function jobStatusLabel(job: ContentListJob): string {
|
|
1173
|
+
if (job.status === 'queued') return t(M['content.content_list.job_queued']);
|
|
1174
|
+
if (job.status === 'running') return t(M['content.content_list.job_running']);
|
|
1175
|
+
if (job.status === 'succeeded')
|
|
1176
|
+
return t(M['content.content_list.job_succeeded']);
|
|
1177
|
+
return t(M['content.content_list.job_failed']);
|
|
1178
|
+
}
|
|
1179
|
+
|
|
1180
|
+
function formattedLastUpdated(value: number): string {
|
|
1181
|
+
return new Intl.DateTimeFormat(undefined, {
|
|
1182
|
+
dateStyle: 'medium',
|
|
1183
|
+
timeStyle: 'short',
|
|
1184
|
+
}).format(new Date(value));
|
|
1185
|
+
}
|
|
1186
|
+
|
|
1000
1187
|
function toggleRow(row: ContentListRow) {
|
|
1001
|
-
if (!row.identified) return;
|
|
1188
|
+
if (!row.identified || rowPending(row)) return;
|
|
1002
1189
|
controller.dispatch({ type: 'toggleRowSelection', rowId: row.id });
|
|
1003
1190
|
}
|
|
1004
1191
|
|
|
@@ -1048,13 +1235,14 @@ function selectRowLabel(row: ContentListRow): string {
|
|
|
1048
1235
|
}
|
|
1049
1236
|
|
|
1050
1237
|
function handleDeleteContent(row: ContentListRow) {
|
|
1238
|
+
if (rowPending(row)) return;
|
|
1051
1239
|
pendingDelete = row;
|
|
1052
1240
|
}
|
|
1053
1241
|
|
|
1054
1242
|
function confirmDelete() {
|
|
1055
1243
|
const target = pendingDelete;
|
|
1056
1244
|
pendingDelete = null;
|
|
1057
|
-
if (target) {
|
|
1245
|
+
if (target && !rowPending(target)) {
|
|
1058
1246
|
onDelete(target.content);
|
|
1059
1247
|
}
|
|
1060
1248
|
}
|
|
@@ -1123,10 +1311,12 @@ const tableColumns: DataTableColumn<ContentListRow>[] = $derived([
|
|
|
1123
1311
|
{#snippet selectCell({ row }: { row: ContentListRow })}
|
|
1124
1312
|
<Checkbox
|
|
1125
1313
|
checked={isSelected(row)}
|
|
1126
|
-
disabled={!row.identified}
|
|
1314
|
+
disabled={!row.identified || rowPending(row)}
|
|
1127
1315
|
aria-label={selectRowLabel(row)}
|
|
1128
1316
|
title={row.identified
|
|
1129
|
-
?
|
|
1317
|
+
? rowPending(row)
|
|
1318
|
+
? t(M['content.content_list.row_pending'])
|
|
1319
|
+
: undefined
|
|
1130
1320
|
: t(M['content.content_list.row_not_selectable'])}
|
|
1131
1321
|
onchange={() => toggleRow(row)}
|
|
1132
1322
|
/>
|
|
@@ -1179,6 +1369,7 @@ const tableColumns: DataTableColumn<ContentListRow>[] = $derived([
|
|
|
1179
1369
|
size="sm"
|
|
1180
1370
|
class="icon-btn"
|
|
1181
1371
|
type="button"
|
|
1372
|
+
disabled={rowPending(row)}
|
|
1182
1373
|
onclick={() => onEdit(row.content)}
|
|
1183
1374
|
title={t(M['content.content_list.edit'])}
|
|
1184
1375
|
aria-label={t(M['content.content_list.edit'])}
|
|
@@ -1192,6 +1383,7 @@ const tableColumns: DataTableColumn<ContentListRow>[] = $derived([
|
|
|
1192
1383
|
size="sm"
|
|
1193
1384
|
class="icon-btn delete-icon"
|
|
1194
1385
|
type="button"
|
|
1386
|
+
disabled={rowPending(row)}
|
|
1195
1387
|
onclick={() => handleDeleteContent(row)}
|
|
1196
1388
|
title={t(M['content.content_list.delete'])}
|
|
1197
1389
|
aria-label={t(M['content.content_list.delete'])}
|
|
@@ -1407,10 +1599,77 @@ const tableColumns: DataTableColumn<ContentListRow>[] = $derived([
|
|
|
1407
1599
|
</div>
|
|
1408
1600
|
{/if}
|
|
1409
1601
|
|
|
1410
|
-
{#if
|
|
1602
|
+
{#if serverBacked}
|
|
1603
|
+
<div class="content-freshness" aria-live="polite" aria-atomic="true">
|
|
1604
|
+
<span>
|
|
1605
|
+
{#if offline}
|
|
1606
|
+
{t(M['content.content_list.offline'])}
|
|
1607
|
+
{:else if stale}
|
|
1608
|
+
{t(M['content.content_list.stale'])}
|
|
1609
|
+
{:else if lastUpdated !== undefined}
|
|
1610
|
+
{t(M['content.content_list.last_updated'], {
|
|
1611
|
+
time: formattedLastUpdated(lastUpdated),
|
|
1612
|
+
})}
|
|
1613
|
+
{/if}
|
|
1614
|
+
</span>
|
|
1615
|
+
{#if queryBinding?.refresh}
|
|
1616
|
+
<Button
|
|
1617
|
+
variant="ghost"
|
|
1618
|
+
size="sm"
|
|
1619
|
+
type="button"
|
|
1620
|
+
class="refresh-button"
|
|
1621
|
+
disabled={refreshing || isLoading || offline}
|
|
1622
|
+
onclick={refreshQuery}
|
|
1623
|
+
>
|
|
1624
|
+
{t(M['content.content_list.refresh'])}
|
|
1625
|
+
</Button>
|
|
1626
|
+
{/if}
|
|
1627
|
+
</div>
|
|
1628
|
+
{/if}
|
|
1629
|
+
|
|
1630
|
+
{#if jobSnapshot.jobs.length > 0}
|
|
1631
|
+
<section class="content-jobs" aria-label={t(M['content.content_list.jobs'])}>
|
|
1632
|
+
<ul class="content-jobs__list" aria-live="polite" aria-atomic="false">
|
|
1633
|
+
{#each jobSnapshot.jobs as job (job.jobId)}
|
|
1634
|
+
<li class={`content-job content-job--${job.status}`} data-job-id={job.jobId}>
|
|
1635
|
+
<span class="content-job__identity">
|
|
1636
|
+
{t(M['content.content_list.job_identity'], { id: job.jobId })}
|
|
1637
|
+
</span>
|
|
1638
|
+
<span>{jobStatusLabel(job)}</span>
|
|
1639
|
+
{#if job.total !== undefined && job.total > 0}
|
|
1640
|
+
<progress
|
|
1641
|
+
value={Math.min(job.completed ?? 0, job.total)}
|
|
1642
|
+
max={job.total}
|
|
1643
|
+
aria-label={t(M['content.content_list.job_progress'], {
|
|
1644
|
+
completed: job.completed ?? 0,
|
|
1645
|
+
total: job.total,
|
|
1646
|
+
})}
|
|
1647
|
+
></progress>
|
|
1648
|
+
{/if}
|
|
1649
|
+
{#if job.message}<span>{job.message}</span>{/if}
|
|
1650
|
+
{#if job.status === 'failed'}
|
|
1651
|
+
{#if job.error}<span role="alert">{job.error}</span>{/if}
|
|
1652
|
+
{#if jobs?.canRetry?.(job.jobId) === true}
|
|
1653
|
+
<Button
|
|
1654
|
+
variant="ghost"
|
|
1655
|
+
size="sm"
|
|
1656
|
+
type="button"
|
|
1657
|
+
onclick={() => retryJob(job.jobId)}
|
|
1658
|
+
>
|
|
1659
|
+
{t(M['content.content_list.retry_job'])}
|
|
1660
|
+
</Button>
|
|
1661
|
+
{/if}
|
|
1662
|
+
{/if}
|
|
1663
|
+
</li>
|
|
1664
|
+
{/each}
|
|
1665
|
+
</ul>
|
|
1666
|
+
</section>
|
|
1667
|
+
{/if}
|
|
1668
|
+
|
|
1669
|
+
{#if blockingError}
|
|
1411
1670
|
<div class="state-panel state-panel--error" role="alert">
|
|
1412
1671
|
<p class="state-panel__title">{t(M['content.content_list.error_title'])}</p>
|
|
1413
|
-
<p class="state-panel__detail">{
|
|
1672
|
+
<p class="state-panel__detail">{blockingError}</p>
|
|
1414
1673
|
{#if retryHandler}
|
|
1415
1674
|
<Button variant="ghost" type="button" class="retry-button" onclick={() => retryHandler?.()}>
|
|
1416
1675
|
{t(M['content.content_list.retry'])}
|
|
@@ -1418,6 +1677,17 @@ const tableColumns: DataTableColumn<ContentListRow>[] = $derived([
|
|
|
1418
1677
|
{/if}
|
|
1419
1678
|
</div>
|
|
1420
1679
|
{:else}
|
|
1680
|
+
{#if recoverableError}
|
|
1681
|
+
<div class="state-panel state-panel--error state-panel--inline" role="alert">
|
|
1682
|
+
<p class="state-panel__title">{t(M['content.content_list.refresh_error_title'])}</p>
|
|
1683
|
+
<p class="state-panel__detail">{recoverableError}</p>
|
|
1684
|
+
{#if retryHandler}
|
|
1685
|
+
<Button variant="ghost" type="button" class="retry-button" onclick={() => retryHandler?.()}>
|
|
1686
|
+
{t(M['content.content_list.retry'])}
|
|
1687
|
+
</Button>
|
|
1688
|
+
{/if}
|
|
1689
|
+
</div>
|
|
1690
|
+
{/if}
|
|
1421
1691
|
{#if pageRows.length > 0 || selectedCount > 0}
|
|
1422
1692
|
<div class="content-selection">
|
|
1423
1693
|
{#if viewMode !== 'compact'}
|
|
@@ -1484,10 +1754,12 @@ const tableColumns: DataTableColumn<ContentListRow>[] = $derived([
|
|
|
1484
1754
|
<div class="content-row__select">
|
|
1485
1755
|
<Checkbox
|
|
1486
1756
|
checked={isSelected(row)}
|
|
1487
|
-
disabled={!row.identified}
|
|
1757
|
+
disabled={!row.identified || rowPending(row)}
|
|
1488
1758
|
aria-label={selectRowLabel(row)}
|
|
1489
1759
|
title={row.identified
|
|
1490
|
-
?
|
|
1760
|
+
? rowPending(row)
|
|
1761
|
+
? t(M['content.content_list.row_pending'])
|
|
1762
|
+
: undefined
|
|
1491
1763
|
: t(M['content.content_list.row_not_selectable'])}
|
|
1492
1764
|
onchange={() => toggleRow(row)}
|
|
1493
1765
|
/>
|
|
@@ -1533,7 +1805,13 @@ const tableColumns: DataTableColumn<ContentListRow>[] = $derived([
|
|
|
1533
1805
|
<a href={viewHref(row)} class="quiet-action">{t(M['content.content_list.view_article'])}</a>
|
|
1534
1806
|
{/if}
|
|
1535
1807
|
{#if actions.includes('edit')}
|
|
1536
|
-
<Button
|
|
1808
|
+
<Button
|
|
1809
|
+
variant="ghost"
|
|
1810
|
+
type="button"
|
|
1811
|
+
class="quiet-action"
|
|
1812
|
+
disabled={rowPending(row)}
|
|
1813
|
+
onclick={() => onEdit(content)}
|
|
1814
|
+
>
|
|
1537
1815
|
{t(M['content.content_list.edit'])}
|
|
1538
1816
|
</Button>
|
|
1539
1817
|
{/if}
|
|
@@ -1541,6 +1819,7 @@ const tableColumns: DataTableColumn<ContentListRow>[] = $derived([
|
|
|
1541
1819
|
<Button
|
|
1542
1820
|
variant="ghost"
|
|
1543
1821
|
type="button"
|
|
1822
|
+
disabled={rowPending(row)}
|
|
1544
1823
|
class="quiet-action quiet-action--danger"
|
|
1545
1824
|
onclick={() => handleDeleteContent(row)}
|
|
1546
1825
|
>
|
|
@@ -1569,10 +1848,12 @@ const tableColumns: DataTableColumn<ContentListRow>[] = $derived([
|
|
|
1569
1848
|
<div class="content-header__eyebrow">
|
|
1570
1849
|
<Checkbox
|
|
1571
1850
|
checked={isSelected(row)}
|
|
1572
|
-
disabled={!row.identified}
|
|
1851
|
+
disabled={!row.identified || rowPending(row)}
|
|
1573
1852
|
aria-label={selectRowLabel(row)}
|
|
1574
1853
|
title={row.identified
|
|
1575
|
-
?
|
|
1854
|
+
? rowPending(row)
|
|
1855
|
+
? t(M['content.content_list.row_pending'])
|
|
1856
|
+
: undefined
|
|
1576
1857
|
: t(M['content.content_list.row_not_selectable'])}
|
|
1577
1858
|
onchange={() => toggleRow(row)}
|
|
1578
1859
|
/>
|
|
@@ -1609,12 +1890,24 @@ const tableColumns: DataTableColumn<ContentListRow>[] = $derived([
|
|
|
1609
1890
|
<a href={viewHref(row)} class="view-btn">{t(M['content.content_list.view_article_button'])}</a>
|
|
1610
1891
|
{/if}
|
|
1611
1892
|
{#if actions.includes('edit')}
|
|
1612
|
-
<Button
|
|
1893
|
+
<Button
|
|
1894
|
+
variant="ghost"
|
|
1895
|
+
type="button"
|
|
1896
|
+
class="content-action-btn"
|
|
1897
|
+
disabled={rowPending(row)}
|
|
1898
|
+
onclick={() => onEdit(content)}
|
|
1899
|
+
>
|
|
1613
1900
|
{t(M['content.content_list.edit'])}
|
|
1614
1901
|
</Button>
|
|
1615
1902
|
{/if}
|
|
1616
1903
|
{#if actions.includes('delete')}
|
|
1617
|
-
<Button
|
|
1904
|
+
<Button
|
|
1905
|
+
variant="ghost"
|
|
1906
|
+
type="button"
|
|
1907
|
+
class="content-action-btn delete-btn"
|
|
1908
|
+
disabled={rowPending(row)}
|
|
1909
|
+
onclick={() => handleDeleteContent(row)}
|
|
1910
|
+
>
|
|
1618
1911
|
{t(M['content.content_list.delete'])}
|
|
1619
1912
|
</Button>
|
|
1620
1913
|
{/if}
|
|
@@ -2076,6 +2369,58 @@ const tableColumns: DataTableColumn<ContentListRow>[] = $derived([
|
|
|
2076
2369
|
font-size: var(--smrt-typography-body-medium-size, 0.875rem);
|
|
2077
2370
|
}
|
|
2078
2371
|
|
|
2372
|
+
.content-freshness {
|
|
2373
|
+
display: flex;
|
|
2374
|
+
align-items: center;
|
|
2375
|
+
justify-content: space-between;
|
|
2376
|
+
gap: 0.75rem;
|
|
2377
|
+
min-height: 2rem;
|
|
2378
|
+
margin-bottom: 0.75rem;
|
|
2379
|
+
color: var(--smrt-color-on-surface-variant);
|
|
2380
|
+
font-size: var(--smrt-typography-body-medium-size, 0.875rem);
|
|
2381
|
+
}
|
|
2382
|
+
|
|
2383
|
+
.content-freshness :global(.refresh-button) {
|
|
2384
|
+
transition: background 0.2s, color 0.2s;
|
|
2385
|
+
}
|
|
2386
|
+
|
|
2387
|
+
.content-jobs {
|
|
2388
|
+
margin-bottom: 1rem;
|
|
2389
|
+
}
|
|
2390
|
+
|
|
2391
|
+
.content-jobs__list {
|
|
2392
|
+
display: grid;
|
|
2393
|
+
gap: 0.5rem;
|
|
2394
|
+
margin: 0;
|
|
2395
|
+
padding: 0;
|
|
2396
|
+
list-style: none;
|
|
2397
|
+
}
|
|
2398
|
+
|
|
2399
|
+
.content-job {
|
|
2400
|
+
display: flex;
|
|
2401
|
+
align-items: center;
|
|
2402
|
+
gap: 0.75rem;
|
|
2403
|
+
padding: 0.65rem 0.75rem;
|
|
2404
|
+
border: 1px solid var(--smrt-color-outline-variant);
|
|
2405
|
+
border-radius: 0.5rem;
|
|
2406
|
+
background: var(--smrt-color-surface-container-low);
|
|
2407
|
+
color: var(--smrt-color-on-surface-variant);
|
|
2408
|
+
font-size: var(--smrt-typography-body-medium-size, 0.875rem);
|
|
2409
|
+
}
|
|
2410
|
+
|
|
2411
|
+
.content-job--failed {
|
|
2412
|
+
border-color: var(--smrt-color-error);
|
|
2413
|
+
}
|
|
2414
|
+
|
|
2415
|
+
.content-job__identity {
|
|
2416
|
+
color: var(--smrt-color-on-surface);
|
|
2417
|
+
font-weight: var(--smrt-typography-weight-semibold, 600);
|
|
2418
|
+
}
|
|
2419
|
+
|
|
2420
|
+
.content-job progress {
|
|
2421
|
+
min-width: 8rem;
|
|
2422
|
+
}
|
|
2423
|
+
|
|
2079
2424
|
.content-pagination {
|
|
2080
2425
|
display: flex;
|
|
2081
2426
|
justify-content: center;
|
|
@@ -2181,6 +2526,12 @@ const tableColumns: DataTableColumn<ContentListRow>[] = $derived([
|
|
|
2181
2526
|
color: var(--smrt-color-on-surface);
|
|
2182
2527
|
}
|
|
2183
2528
|
|
|
2529
|
+
.state-panel--inline {
|
|
2530
|
+
margin-bottom: 1rem;
|
|
2531
|
+
padding: 1rem;
|
|
2532
|
+
text-align: left;
|
|
2533
|
+
}
|
|
2534
|
+
|
|
2184
2535
|
.state-panel__title {
|
|
2185
2536
|
margin: 0 0 0.5rem;
|
|
2186
2537
|
font-weight: var(--smrt-typography-weight-semibold, 600);
|
|
@@ -2237,4 +2588,11 @@ const tableColumns: DataTableColumn<ContentListRow>[] = $derived([
|
|
|
2237
2588
|
grid-auto-flow: row;
|
|
2238
2589
|
}
|
|
2239
2590
|
}
|
|
2591
|
+
|
|
2592
|
+
@media (prefers-reduced-motion: reduce) {
|
|
2593
|
+
.content-freshness :global(.refresh-button),
|
|
2594
|
+
.actions-cell :global(.icon-btn) {
|
|
2595
|
+
transition: none;
|
|
2596
|
+
}
|
|
2597
|
+
}
|
|
2240
2598
|
</style>
|
|
@@ -27,6 +27,7 @@ import type { Snippet } from 'svelte';
|
|
|
27
27
|
import type { ContentData } from '../../mock-smrt-client.js';
|
|
28
28
|
import { type ContentListDataSurface, type ContentListViewMode } from '../content-list-controller.js';
|
|
29
29
|
import { type ContentListQuerySource } from '../content-list-query.js';
|
|
30
|
+
import { type ContentListJobBinding } from '../content-list-runtime.js';
|
|
30
31
|
import { type ContentListSavedViewStore } from '../content-list-saved-views.js';
|
|
31
32
|
interface Props {
|
|
32
33
|
apiBaseUrl?: string;
|
|
@@ -62,6 +63,8 @@ interface Props {
|
|
|
62
63
|
urlState?: ContentListUrlStateBinding;
|
|
63
64
|
/** Opt-in saved views. `createContentListSavedViewStore()` is the default store. */
|
|
64
65
|
savedViews?: ContentListSavedViewStore;
|
|
66
|
+
/** Shared background-workflow state. The same binding guards submissions. */
|
|
67
|
+
jobs?: ContentListJobBinding;
|
|
65
68
|
}
|
|
66
69
|
declare const ContentList: import("svelte").Component<Props, {}, "">;
|
|
67
70
|
type ContentList = ReturnType<typeof ContentList>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContentList.svelte.d.ts","sourceRoot":"","sources":["../../../src/svelte/components/ContentList.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,IAAI,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AACvG,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE/E;;;;;;;GAOG;AACH,MAAM,WAAW,0BAA0B;IACzC;;;OAGG;IACH,MAAM,CAAC,EAAE,eAAe,GAAG,MAAM,GAAG,IAAI,CAAC;IACzC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CACT,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,6BAA6B,KACjC,IAAI,CAAC;IACV,uEAAuE;IACvE,OAAO,CAAC,EAAE,0BAA0B,CAAC;CACtC;AAYD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EASL,KAAK,sBAAsB,EAE3B,KAAK,mBAAmB,EAiBzB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAML,KAAK,sBAAsB,
|
|
1
|
+
{"version":3,"file":"ContentList.svelte.d.ts","sourceRoot":"","sources":["../../../src/svelte/components/ContentList.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,IAAI,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AACvG,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE/E;;;;;;;GAOG;AACH,MAAM,WAAW,0BAA0B;IACzC;;;OAGG;IACH,MAAM,CAAC,EAAE,eAAe,GAAG,MAAM,GAAG,IAAI,CAAC;IACzC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CACT,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,6BAA6B,KACjC,IAAI,CAAC;IACV,uEAAuE;IACvE,OAAO,CAAC,EAAE,0BAA0B,CAAC;CACtC;AAYD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EASL,KAAK,sBAAsB,EAE3B,KAAK,mBAAmB,EAiBzB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAML,KAAK,sBAAsB,EAU5B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAGL,KAAK,qBAAqB,EAE3B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAEL,KAAK,yBAAyB,EAG/B,MAAM,gCAAgC,CAAC;AAgBxC,UAAU,KAAK;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,mBAAmB,CAAC;IACtC,MAAM,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;IACvC,QAAQ,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;IACzC,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,MAAM,GAAG,IAAI,CAAC;IACtD,mEAAmE;IACnE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,+CAA+C;IAC/C,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,4EAA4E;IAC5E,WAAW,CAAC,EAAE,sBAAsB,CAAC;IACrC;;;;;OAKG;IACH,KAAK,CAAC,EAAE,sBAAsB,CAAC;IAC/B,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,0BAA0B,CAAC;IACtC,oFAAoF;IACpF,UAAU,CAAC,EAAE,yBAAyB,CAAC;IACvC,6EAA6E;IAC7E,IAAI,CAAC,EAAE,qBAAqB,CAAC;CAC9B;AAwlDD,QAAA,MAAM,WAAW,2CAAwC,CAAC;AAC1D,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;AAClD,eAAe,WAAW,CAAC"}
|
|
@@ -450,6 +450,10 @@ export interface ContentListQueryBinding {
|
|
|
450
450
|
readonly stale: boolean;
|
|
451
451
|
/** The last failure, or a falsy value when the query is healthy. */
|
|
452
452
|
readonly error: unknown;
|
|
453
|
+
/** Epoch milliseconds of the last successful answer. */
|
|
454
|
+
readonly lastUpdated?: number;
|
|
455
|
+
/** Latest applied envelope, including query-scoped live replacements. */
|
|
456
|
+
readonly result?: unknown;
|
|
453
457
|
/**
|
|
454
458
|
* True when the server had to shorten the answer to fit its byte budget.
|
|
455
459
|
* Optional because `RemoteQueryBinding` does not surface it; when a binding
|
|
@@ -461,7 +465,18 @@ export interface ContentListQueryBinding {
|
|
|
461
465
|
execute(request: ContentListDataQueryRequest, options?: {
|
|
462
466
|
signal?: AbortSignal;
|
|
463
467
|
}): Promise<unknown>;
|
|
468
|
+
/** Revalidate the active query while retaining its usable rows. */
|
|
469
|
+
refresh?(options?: {
|
|
470
|
+
signal?: AbortSignal;
|
|
471
|
+
}): Promise<unknown>;
|
|
464
472
|
retry(): Promise<unknown>;
|
|
473
|
+
/** Subscribe to changes for the active query rather than the whole table. */
|
|
474
|
+
subscribeLive?(): {
|
|
475
|
+
unsubscribe(): void;
|
|
476
|
+
reconnect(): void;
|
|
477
|
+
} | {
|
|
478
|
+
unsubscribe(): void;
|
|
479
|
+
} | undefined;
|
|
465
480
|
}
|
|
466
481
|
/**
|
|
467
482
|
* What the server said about the completeness of an answer.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-list-query.d.ts","sourceRoot":"","sources":["../../src/svelte/content-list-query.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"content-list-query.d.ts","sourceRoot":"","sources":["../../src/svelte/content-list-query.ts"],"names":[],"mappings":"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"}
|