@cosmicdrift/kumiko-types 0.330.2 → 0.331.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/dist/config.d.ts CHANGED
@@ -44,6 +44,13 @@ export type ConfigKeyDefinition<T extends ConfigKeyType = ConfigKeyType> = {
44
44
  * `encrypted` (kumiko-platform#231/#459). */
45
45
  readonly piiEncrypted?: boolean;
46
46
  readonly options?: readonly string[];
47
+ /** Only on `type: "select"`: loads the options from this query (QN), contract
48
+ * `{ rows: { value, label }[] }`, labels shown verbatim. Mutually exclusive with
49
+ * `options` and `allowPerRequest`. The write side does not check the value against
50
+ * the query result; the consuming feature validates it where it uses it. */
51
+ readonly optionsQuery?: string;
52
+ /** Static payload sent with every `optionsQuery` call. Requires `optionsQuery`. */
53
+ readonly optionsQueryPayload?: Readonly<Record<string, string | number | boolean>>;
47
54
  readonly bounds?: ConfigBounds;
48
55
  readonly pattern?: {
49
56
  readonly regex: string;
package/dist/fields.d.ts CHANGED
@@ -180,6 +180,13 @@ export type SelectFieldDef<TOptions extends readonly string[] = readonly string[
180
180
  readonly optionTones?: {
181
181
  readonly [K in TOptions[number]]?: SelectOptionTone;
182
182
  };
183
+ /** Loads the options from this query (QN). Contract: `{ rows: { value, label }[] }`,
184
+ * labels are shown verbatim (not translated). `options` must be empty when set.
185
+ * Only valid on configEdit/actionForm screen fields and config keys, not on entity
186
+ * fields: the stored value would not be checked against the query result. */
187
+ readonly optionsQuery?: string;
188
+ /** Static payload sent with every `optionsQuery` call. */
189
+ readonly optionsQueryPayload?: Readonly<Record<string, string | number | boolean>>;
183
190
  } & ResolvedPiiFlags;
184
191
  export type MultiSelectFieldDef<TOptions extends readonly string[] = readonly string[]> = {
185
192
  readonly type: "multiSelect";
package/dist/screen.d.ts CHANGED
@@ -314,6 +314,11 @@ export type RelatedListToolbarAction = (Extract<ToolbarAction, {
314
314
  }> & {
315
315
  readonly visible?: FieldCondition;
316
316
  });
317
+ /** Expandable area of an `entityList` row: a relatedList of the row's record.
318
+ * `id` (tab id) and `countField` (tab badge) have no meaning outside a tabs
319
+ * layout and are therefore omitted. `kind` stays the discriminator so further
320
+ * expansion kinds can be added without a breaking change. */
321
+ export type EntityListExpandableRow = Omit<EditRelatedListSection, "id" | "countField">;
317
322
  export type EntityListScreenDefinition = {
318
323
  readonly id: string;
319
324
  readonly type: "entityList";
@@ -343,6 +348,11 @@ export type EntityListScreenDefinition = {
343
348
  * etc. — neben "+ Neu" wenn vorhanden. Reihenfolge im Array = UI-
344
349
  * Reihenfolge, primary-style links. */
345
350
  readonly toolbarActions?: readonly ToolbarAction[];
351
+ /** Expandable area under each row: a relatedList of the row's record
352
+ * (parentId = the row's `id`). Rows get a toggle button; several rows can
353
+ * be open at once. Its own row actions run against the sub-list rows, and
354
+ * a successful write also reloads this list. */
355
+ readonly expandableRow?: EntityListExpandableRow;
346
356
  /** Server-side Filter, fest am Screen — drei Buckets derselben
347
357
  * Entity ohne Custom-Pages (z.B. "Upcoming" / "Active" / "Past"
348
358
  * Maintenance). User-side q-Search läuft AUF dem gefilterten Set
@@ -822,6 +832,13 @@ export type EditRelatedListSection = {
822
832
  readonly field: string;
823
833
  };
824
834
  readonly columns: readonly ListColumnSpec[];
835
+ /** Entity the query's rows belong to: an entity name (same feature) or
836
+ * `feature:entity`. Columns that name one of its fields render like an
837
+ * entityList column of that field (select as a status badge with the
838
+ * translated option label, dates locale-formatted, default header from the
839
+ * field's label key). The column's own `sortable` still decides the
840
+ * header sort. Without it every column renders as plain text. */
841
+ readonly entity?: string;
825
842
  /** i18n key for the one-line hint at the left of the tab toolbar. */
826
843
  readonly description?: string;
827
844
  /** i18n key holding plural forms for the footer count ("1 Position",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cosmicdrift/kumiko-types",
3
- "version": "0.330.2",
3
+ "version": "0.331.0",
4
4
  "description": "Framework-Type-Definitions für Kumiko — FeatureDefinition, BootCheck-Types und die reinen Engine-Types. Erlaubt Downstream-Konsumenten, gegen die Type-Contracts zu bauen, ohne das ganze Framework-Package zu importieren. Enthaelt keine identitaets-sensitiven Runtime-Werte mehr (Error-Klassen leben seit #1629 in kumiko-framework, Brand-Symbole nutzen Symbol.for) und ist deshalb eine plain dependency, keine peerDependency.",
5
5
  "license": "BUSL-1.1",
6
6
  "author": "Marc Frost <marc@cosmicdriftgamestudio.com>",