@cosmicdrift/kumiko-headless 0.356.0 → 0.357.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/apex/index.js
CHANGED
|
@@ -268,6 +268,8 @@ export function renderApexPage(page) {
|
|
|
268
268
|
// Brand-CSS ist app-authored (Trust-Boundary siehe Datei-Header), kein Tenant-Input.
|
|
269
269
|
const cssHtml = (brand.fontFaceCss ?? "") + brand.tokensCss + APEX_STRUCTURAL_CSS;
|
|
270
270
|
const sectionsHtml = page.sections.map(renderSection).join("\n\n ");
|
|
271
|
+
// interactive-widget is ignored by iOS Safari; apex pages have no fixed bottom bars, so
|
|
272
|
+
// the key only matters for Chromium/Android and needs no visualViewport fallback here.
|
|
271
273
|
return `<!doctype html>
|
|
272
274
|
<html lang="${escapeHtml(head.lang)}">
|
|
273
275
|
<head>
|
package/dist/view-model/edit.js
CHANGED
|
@@ -98,6 +98,13 @@ function deriveSelectOptionsQuery(fieldDef) {
|
|
|
98
98
|
: {};
|
|
99
99
|
}
|
|
100
100
|
function deriveSelectOptionsAvailabilityQuery(fieldDef) {
|
|
101
|
+
if (fieldDef.type === "multiSelect") {
|
|
102
|
+
return fieldDef.optionsAvailabilityQuery !== undefined
|
|
103
|
+
? {
|
|
104
|
+
selectOptionsAvailabilityQuery: { query: fieldDef.optionsAvailabilityQuery, payload: {} },
|
|
105
|
+
}
|
|
106
|
+
: {};
|
|
107
|
+
}
|
|
101
108
|
return fieldDef.type === "select" && fieldDef.optionsAvailabilityQuery !== undefined
|
|
102
109
|
? {
|
|
103
110
|
selectOptionsAvailabilityQuery: {
|
|
@@ -145,8 +152,10 @@ function deriveTextFieldHints(fieldDef) {
|
|
|
145
152
|
const multiline = fieldDef.type === "text" || fieldDef.type === "longText" ? fieldDef.multiline : undefined;
|
|
146
153
|
const format = fieldDef.type === "text" ? fieldDef.format : undefined;
|
|
147
154
|
const writeOnly = fieldDef.type === "text" && fieldDef.writeOnly === true;
|
|
155
|
+
const autoComplete = fieldDef.type === "text" ? fieldDef.autoComplete : undefined;
|
|
148
156
|
return {
|
|
149
157
|
...(multiline !== undefined && { multiline }),
|
|
158
|
+
...(autoComplete !== undefined && { autoComplete }),
|
|
150
159
|
...(format !== undefined && { format }),
|
|
151
160
|
...(writeOnly && { writeOnly: true }),
|
|
152
161
|
...("sensitive" in fieldDef && fieldDef.sensitive === true && { sensitive: true }),
|
package/dist/view-model/list.js
CHANGED
|
@@ -37,6 +37,7 @@ export function computeListViewModel(input) {
|
|
|
37
37
|
refFeature: refTarget.featureName,
|
|
38
38
|
refLabelField: normalized.refLabelField ?? "id",
|
|
39
39
|
...(normalized.renderer !== undefined && { renderer: normalized.renderer }),
|
|
40
|
+
...(normalized.hideOnNarrow === true && { hideOnNarrow: true }),
|
|
40
41
|
});
|
|
41
42
|
continue;
|
|
42
43
|
}
|
|
@@ -64,6 +65,7 @@ export function computeListViewModel(input) {
|
|
|
64
65
|
// ORDER BY would sort by GUID while the cell shows the name.
|
|
65
66
|
sortable: rowMetaRef === undefined,
|
|
66
67
|
...(normalized.renderer !== undefined && { renderer: normalized.renderer }),
|
|
68
|
+
...(normalized.hideOnNarrow === true && { hideOnNarrow: true }),
|
|
67
69
|
...(rowMetaRef !== undefined && {
|
|
68
70
|
refEntity: rowMetaRef.refEntity,
|
|
69
71
|
refFeature: rowMetaRef.refFeature,
|
|
@@ -86,6 +88,7 @@ export function computeListViewModel(input) {
|
|
|
86
88
|
type: "text",
|
|
87
89
|
sortable: false,
|
|
88
90
|
renderer: normalized.renderer,
|
|
91
|
+
...(normalized.hideOnNarrow === true && { hideOnNarrow: true }),
|
|
89
92
|
});
|
|
90
93
|
continue;
|
|
91
94
|
}
|
|
@@ -99,6 +102,7 @@ export function computeListViewModel(input) {
|
|
|
99
102
|
// no column to sort by (see DerivedFieldDef). Never offer the affordance.
|
|
100
103
|
sortable: false,
|
|
101
104
|
...(normalized.renderer !== undefined && { renderer: normalized.renderer }),
|
|
105
|
+
...(normalized.hideOnNarrow === true && { hideOnNarrow: true }),
|
|
102
106
|
});
|
|
103
107
|
continue;
|
|
104
108
|
}
|
|
@@ -93,9 +93,10 @@ export type EditFieldViewModel = {
|
|
|
93
93
|
readonly query: string;
|
|
94
94
|
readonly payload: OptionsQueryPayload;
|
|
95
95
|
};
|
|
96
|
-
/** Set for `type: "select"` when
|
|
96
|
+
/** Set for `type: "select"` / `"multiSelect"` when optionsAvailabilityQuery is set:
|
|
97
97
|
* the renderer loads `{ rows: { value, disabled?, hint? }[] }` from this query and
|
|
98
|
-
* merges it onto `options`. `payload` is optionsQueryPayload, `{}` when absent
|
|
98
|
+
* merges it onto `options`. `payload` is optionsQueryPayload, `{}` when absent
|
|
99
|
+
* (always `{}` for multiSelect). */
|
|
99
100
|
readonly selectOptionsAvailabilityQuery?: {
|
|
100
101
|
readonly query: string;
|
|
101
102
|
readonly payload: OptionsQueryPayload;
|
|
@@ -124,6 +125,8 @@ export type EditFieldViewModel = {
|
|
|
124
125
|
};
|
|
125
126
|
/** From TextFieldDef.format — `password` makes the renderer mask the input. */
|
|
126
127
|
readonly format?: "email" | "url" | "phone" | "password";
|
|
128
|
+
/** From TextFieldDef.autoComplete — HTML autocomplete token for the text input. */
|
|
129
|
+
readonly autoComplete?: string;
|
|
127
130
|
/** From TextFieldDef.writeOnly — value is `true` (set) / `null` (empty), never plaintext. */
|
|
128
131
|
readonly writeOnly?: true;
|
|
129
132
|
/** From the field's `sensitive: true` — the value must not leave the form (drafts, URL prefill). */
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cosmicdrift/kumiko-headless",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.357.0",
|
|
4
4
|
"description": "Headless UI logic for Kumiko — Dispatcher contract, Form-Controller, View-Model, Nav-Resolver. Plattform- und React-frei; jeder Renderer (renderer, renderer-web, renderer-native, …) komponiert darauf.",
|
|
5
5
|
"license": "BUSL-1.1",
|
|
6
6
|
"author": "Marc Frost <marc@cosmicdriftgamestudio.com>",
|
|
@@ -36,8 +36,8 @@
|
|
|
36
36
|
}
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
|
-
"@cosmicdrift/kumiko-framework": "0.
|
|
40
|
-
"@cosmicdrift/kumiko-types": "0.
|
|
39
|
+
"@cosmicdrift/kumiko-framework": "0.357.0",
|
|
40
|
+
"@cosmicdrift/kumiko-types": "0.357.0",
|
|
41
41
|
"temporal-polyfill": "^0.3.2",
|
|
42
42
|
"zod": "^4.4.3"
|
|
43
43
|
},
|