@cosmicdrift/kumiko-renderer 0.97.1 → 0.100.0
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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cosmicdrift/kumiko-renderer",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.100.0",
|
|
4
4
|
"description": "Platform-agnostic React renderer for Kumiko screens. Contains the shared logic — primitives-contract, hooks, KumikoScreen, navigation & SSE abstractions — that any platform-specific renderer (web, native) composes. No DOM, no EventSource, no react-dom.",
|
|
5
5
|
"license": "BUSL-1.1",
|
|
6
6
|
"author": "Marc Frost <marc@cosmicdriftgamestudio.com>",
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
}
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@cosmicdrift/kumiko-framework": "0.
|
|
19
|
-
"@cosmicdrift/kumiko-headless": "0.
|
|
18
|
+
"@cosmicdrift/kumiko-framework": "0.100.0",
|
|
19
|
+
"@cosmicdrift/kumiko-headless": "0.100.0",
|
|
20
20
|
"react": "^19.2.6"
|
|
21
21
|
},
|
|
22
22
|
"devDependencies": {
|
|
@@ -34,6 +34,11 @@ export type ExtensionSectionProps = {
|
|
|
34
34
|
* Host-Screen keine Werte liefert. Erlaubt der Section, den Bestand
|
|
35
35
|
* beim Edit anzuzeigen statt write-only zu sein. */
|
|
36
36
|
readonly initialValues?: Readonly<Record<string, unknown>>;
|
|
37
|
+
/** Nur im List-Header-Slot gesetzt (entityId ist dort null): die screen.id
|
|
38
|
+
* der Liste, damit ein Header-Control den per-Screen URL-Filter-State
|
|
39
|
+
* (useListUrlState) ansprechen kann — z.B. ein Tag-Filter der die Liste auf
|
|
40
|
+
* eine id-Menge narrowed. In entityEdit-Sections undefined. */
|
|
41
|
+
readonly screenId?: string;
|
|
37
42
|
};
|
|
38
43
|
|
|
39
44
|
export type ExtensionSectionComponent = ComponentType<ExtensionSectionProps>;
|
|
@@ -604,6 +604,13 @@ function EntityListBody({
|
|
|
604
604
|
const out: { field: string; op: "in"; value: unknown }[] = [];
|
|
605
605
|
for (const [field, values] of Object.entries(urlState.filters)) {
|
|
606
606
|
if (values.length === 0) continue;
|
|
607
|
+
// `id` is a base column (not in entity.fields), allowed as an id-set
|
|
608
|
+
// filter so a header-slot control — e.g. the tags TagFilter — can narrow
|
|
609
|
+
// ANY list to a resolved set of row ids without the host declaring a facet.
|
|
610
|
+
if (field === "id") {
|
|
611
|
+
out.push({ field, op: "in", value: values });
|
|
612
|
+
continue;
|
|
613
|
+
}
|
|
607
614
|
// entity.fields ist am Renderer-Layer schwach getypt (vom Schema
|
|
608
615
|
// deserialisiert) — Boundary-Cast wie buildInitialValues.
|
|
609
616
|
const def = entity.fields[field] as { type?: string } | undefined;
|
|
@@ -382,7 +382,9 @@ function ListHeaderSlotMount({
|
|
|
382
382
|
}
|
|
383
383
|
}, [name, Component, screen.id]);
|
|
384
384
|
if (Component === undefined) return null;
|
|
385
|
-
|
|
385
|
+
// screenId lets a header control drive this list's URL-filter state
|
|
386
|
+
// (useListUrlState) — e.g. a tag filter narrowing the list to an id-set.
|
|
387
|
+
return <Component entityName={screen.entity} entityId={null} screenId={screen.id} />;
|
|
386
388
|
}
|
|
387
389
|
|
|
388
390
|
// Tier 2.7e-4: Bridge-Component pro reference-Spalte. Mounted für jede
|