@cohesivesystems/presentation-react-shadcn 0.1.0-alpha.1
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/LICENSE +55 -0
- package/dist/document-workspace-surface-slot-renderers.d.ts +58 -0
- package/dist/document-workspace-surface-slot-renderers.d.ts.map +1 -0
- package/dist/document-workspace-surface-slot-renderers.js +206 -0
- package/dist/document-workspace-surface-slot-renderers.js.map +1 -0
- package/dist/index.d.ts +53 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +53 -0
- package/dist/index.js.map +1 -0
- package/dist/navigation-shell-frame-renderer-registry.d.ts +8 -0
- package/dist/navigation-shell-frame-renderer-registry.d.ts.map +1 -0
- package/dist/navigation-shell-frame-renderer-registry.js +2 -0
- package/dist/navigation-shell-frame-renderer-registry.js.map +1 -0
- package/dist/navigation-shell-slot-renderer-registry.d.ts +9 -0
- package/dist/navigation-shell-slot-renderer-registry.d.ts.map +1 -0
- package/dist/navigation-shell-slot-renderer-registry.js +2 -0
- package/dist/navigation-shell-slot-renderer-registry.js.map +1 -0
- package/dist/page-host-unavailable-renderer.d.ts +10 -0
- package/dist/page-host-unavailable-renderer.d.ts.map +1 -0
- package/dist/page-host-unavailable-renderer.js +27 -0
- package/dist/page-host-unavailable-renderer.js.map +1 -0
- package/dist/presentation-action-group.d.ts +99 -0
- package/dist/presentation-action-group.d.ts.map +1 -0
- package/dist/presentation-action-group.js +214 -0
- package/dist/presentation-action-group.js.map +1 -0
- package/dist/presentation-badge-target-interpreter.d.ts +26 -0
- package/dist/presentation-badge-target-interpreter.d.ts.map +1 -0
- package/dist/presentation-badge-target-interpreter.js +17 -0
- package/dist/presentation-badge-target-interpreter.js.map +1 -0
- package/dist/presentation-component-groups.d.ts +968 -0
- package/dist/presentation-component-groups.d.ts.map +1 -0
- package/dist/presentation-component-groups.js +505 -0
- package/dist/presentation-component-groups.js.map +1 -0
- package/dist/presentation-component-system-diagnostics.d.ts +27 -0
- package/dist/presentation-component-system-diagnostics.d.ts.map +1 -0
- package/dist/presentation-component-system-diagnostics.js +399 -0
- package/dist/presentation-component-system-diagnostics.js.map +1 -0
- package/dist/presentation-component-system.d.ts +31 -0
- package/dist/presentation-component-system.d.ts.map +1 -0
- package/dist/presentation-component-system.js +61 -0
- package/dist/presentation-component-system.js.map +1 -0
- package/dist/presentation-icon-diagnostics.d.ts +12 -0
- package/dist/presentation-icon-diagnostics.d.ts.map +1 -0
- package/dist/presentation-icon-diagnostics.js +17 -0
- package/dist/presentation-icon-diagnostics.js.map +1 -0
- package/dist/presentation-icon-registry.d.ts +28 -0
- package/dist/presentation-icon-registry.d.ts.map +1 -0
- package/dist/presentation-icon-registry.js +80 -0
- package/dist/presentation-icon-registry.js.map +1 -0
- package/dist/presentation-projection-trace-panel.d.ts +10 -0
- package/dist/presentation-projection-trace-panel.d.ts.map +1 -0
- package/dist/presentation-projection-trace-panel.js +48 -0
- package/dist/presentation-projection-trace-panel.js.map +1 -0
- package/dist/presentation-routed-surface-host.d.ts +19 -0
- package/dist/presentation-routed-surface-host.d.ts.map +1 -0
- package/dist/presentation-routed-surface-host.js +12 -0
- package/dist/presentation-routed-surface-host.js.map +1 -0
- package/dist/presentation-shadcn-component-system.d.ts +22 -0
- package/dist/presentation-shadcn-component-system.d.ts.map +1 -0
- package/dist/presentation-shadcn-component-system.js +2 -0
- package/dist/presentation-shadcn-component-system.js.map +1 -0
- package/dist/presentation-standard-renderers.d.ts +168 -0
- package/dist/presentation-standard-renderers.d.ts.map +1 -0
- package/dist/presentation-standard-renderers.js +440 -0
- package/dist/presentation-standard-renderers.js.map +1 -0
- package/dist/presentation-surface-renderer.d.ts +23 -0
- package/dist/presentation-surface-renderer.d.ts.map +1 -0
- package/dist/presentation-surface-renderer.js +119 -0
- package/dist/presentation-surface-renderer.js.map +1 -0
- package/dist/presentation-value-renderers.d.ts +10 -0
- package/dist/presentation-value-renderers.d.ts.map +1 -0
- package/dist/presentation-value-renderers.js +14 -0
- package/dist/presentation-value-renderers.js.map +1 -0
- package/dist/process-task-icons.d.ts +49 -0
- package/dist/process-task-icons.d.ts.map +1 -0
- package/dist/process-task-icons.js +154 -0
- package/dist/process-task-icons.js.map +1 -0
- package/dist/projected-activity-state.d.ts +17 -0
- package/dist/projected-activity-state.d.ts.map +1 -0
- package/dist/projected-activity-state.js +22 -0
- package/dist/projected-activity-state.js.map +1 -0
- package/dist/projected-collection-action-runtime-diagnostics.d.ts +4 -0
- package/dist/projected-collection-action-runtime-diagnostics.d.ts.map +1 -0
- package/dist/projected-collection-action-runtime-diagnostics.js +9 -0
- package/dist/projected-collection-action-runtime-diagnostics.js.map +1 -0
- package/dist/projected-collection-view.d.ts +90 -0
- package/dist/projected-collection-view.d.ts.map +1 -0
- package/dist/projected-collection-view.js +532 -0
- package/dist/projected-collection-view.js.map +1 -0
- package/dist/projected-document-action-status-notices.d.ts +15 -0
- package/dist/projected-document-action-status-notices.d.ts.map +1 -0
- package/dist/projected-document-action-status-notices.js +33 -0
- package/dist/projected-document-action-status-notices.js.map +1 -0
- package/dist/projected-document-badges.d.ts +24 -0
- package/dist/projected-document-badges.d.ts.map +1 -0
- package/dist/projected-document-badges.js +53 -0
- package/dist/projected-document-badges.js.map +1 -0
- package/dist/projected-document-editor-surface.d.ts +46 -0
- package/dist/projected-document-editor-surface.d.ts.map +1 -0
- package/dist/projected-document-editor-surface.js +399 -0
- package/dist/projected-document-editor-surface.js.map +1 -0
- package/dist/projected-document-workspace-notices.d.ts +24 -0
- package/dist/projected-document-workspace-notices.d.ts.map +1 -0
- package/dist/projected-document-workspace-notices.js +14 -0
- package/dist/projected-document-workspace-notices.js.map +1 -0
- package/dist/projected-document-workspace-prompt-child-view-registry.d.ts +25 -0
- package/dist/projected-document-workspace-prompt-child-view-registry.d.ts.map +1 -0
- package/dist/projected-document-workspace-prompt-child-view-registry.js +41 -0
- package/dist/projected-document-workspace-prompt-child-view-registry.js.map +1 -0
- package/dist/projected-document-workspace-prompt-child-view-renderers.d.ts +32 -0
- package/dist/projected-document-workspace-prompt-child-view-renderers.d.ts.map +1 -0
- package/dist/projected-document-workspace-prompt-child-view-renderers.js +77 -0
- package/dist/projected-document-workspace-prompt-child-view-renderers.js.map +1 -0
- package/dist/projected-document-workspace-shell.d.ts +100 -0
- package/dist/projected-document-workspace-shell.d.ts.map +1 -0
- package/dist/projected-document-workspace-shell.js +153 -0
- package/dist/projected-document-workspace-shell.js.map +1 -0
- package/dist/projected-document-workspace.d.ts +39 -0
- package/dist/projected-document-workspace.d.ts.map +1 -0
- package/dist/projected-document-workspace.js +63 -0
- package/dist/projected-document-workspace.js.map +1 -0
- package/dist/projected-field-value-rendering.d.ts +94 -0
- package/dist/projected-field-value-rendering.d.ts.map +1 -0
- package/dist/projected-field-value-rendering.js +377 -0
- package/dist/projected-field-value-rendering.js.map +1 -0
- package/dist/projected-inline-list.d.ts +20 -0
- package/dist/projected-inline-list.d.ts.map +1 -0
- package/dist/projected-inline-list.js +149 -0
- package/dist/projected-inline-list.js.map +1 -0
- package/dist/projected-input-form.d.ts +143 -0
- package/dist/projected-input-form.d.ts.map +1 -0
- package/dist/projected-input-form.js +612 -0
- package/dist/projected-input-form.js.map +1 -0
- package/dist/projected-metric-dashboard.d.ts +26 -0
- package/dist/projected-metric-dashboard.d.ts.map +1 -0
- package/dist/projected-metric-dashboard.js +20 -0
- package/dist/projected-metric-dashboard.js.map +1 -0
- package/dist/projected-metric-strip.d.ts +20 -0
- package/dist/projected-metric-strip.d.ts.map +1 -0
- package/dist/projected-metric-strip.js +131 -0
- package/dist/projected-metric-strip.js.map +1 -0
- package/dist/projected-navigation-shell-view-host.d.ts +34 -0
- package/dist/projected-navigation-shell-view-host.d.ts.map +1 -0
- package/dist/projected-navigation-shell-view-host.js +75 -0
- package/dist/projected-navigation-shell-view-host.js.map +1 -0
- package/dist/projected-navigation-shell.d.ts +33 -0
- package/dist/projected-navigation-shell.d.ts.map +1 -0
- package/dist/projected-navigation-shell.js +112 -0
- package/dist/projected-navigation-shell.js.map +1 -0
- package/dist/projected-presentation-badges.d.ts +34 -0
- package/dist/projected-presentation-badges.d.ts.map +1 -0
- package/dist/projected-presentation-badges.js +22 -0
- package/dist/projected-presentation-badges.js.map +1 -0
- package/dist/projected-presentation-diagnostics.d.ts +10 -0
- package/dist/projected-presentation-diagnostics.d.ts.map +1 -0
- package/dist/projected-presentation-diagnostics.js +40 -0
- package/dist/projected-presentation-diagnostics.js.map +1 -0
- package/dist/projected-presentation-flow-layer.d.ts +33 -0
- package/dist/projected-presentation-flow-layer.d.ts.map +1 -0
- package/dist/projected-presentation-flow-layer.js +71 -0
- package/dist/projected-presentation-flow-layer.js.map +1 -0
- package/dist/projected-process-task-notices.d.ts +37 -0
- package/dist/projected-process-task-notices.d.ts.map +1 -0
- package/dist/projected-process-task-notices.js +225 -0
- package/dist/projected-process-task-notices.js.map +1 -0
- package/dist/projected-prompt-child-view-renderer.d.ts +101 -0
- package/dist/projected-prompt-child-view-renderer.d.ts.map +1 -0
- package/dist/projected-prompt-child-view-renderer.js +442 -0
- package/dist/projected-prompt-child-view-renderer.js.map +1 -0
- package/dist/projected-prompt-document-preview.d.ts +39 -0
- package/dist/projected-prompt-document-preview.d.ts.map +1 -0
- package/dist/projected-prompt-document-preview.js +50 -0
- package/dist/projected-prompt-document-preview.js.map +1 -0
- package/dist/projected-prompt-view.d.ts +35 -0
- package/dist/projected-prompt-view.d.ts.map +1 -0
- package/dist/projected-prompt-view.js +292 -0
- package/dist/projected-prompt-view.js.map +1 -0
- package/dist/projected-query-form.d.ts +56 -0
- package/dist/projected-query-form.d.ts.map +1 -0
- package/dist/projected-query-form.js +100 -0
- package/dist/projected-query-form.js.map +1 -0
- package/dist/projected-record-details.d.ts +20 -0
- package/dist/projected-record-details.d.ts.map +1 -0
- package/dist/projected-record-details.js +60 -0
- package/dist/projected-record-details.js.map +1 -0
- package/dist/projected-routed-surface-runtime.d.ts +86 -0
- package/dist/projected-routed-surface-runtime.d.ts.map +1 -0
- package/dist/projected-routed-surface-runtime.js +332 -0
- package/dist/projected-routed-surface-runtime.js.map +1 -0
- package/dist/projected-tabs-view.d.ts +21 -0
- package/dist/projected-tabs-view.d.ts.map +1 -0
- package/dist/projected-tabs-view.js +140 -0
- package/dist/projected-tabs-view.js.map +1 -0
- package/dist/projected-view-chrome.d.ts +15 -0
- package/dist/projected-view-chrome.d.ts.map +1 -0
- package/dist/projected-view-chrome.js +67 -0
- package/dist/projected-view-chrome.js.map +1 -0
- package/dist/projected-view-surface.d.ts +34 -0
- package/dist/projected-view-surface.d.ts.map +1 -0
- package/dist/projected-view-surface.js +40 -0
- package/dist/projected-view-surface.js.map +1 -0
- package/dist/standard-collection-chrome-slot-renderers.d.ts +26 -0
- package/dist/standard-collection-chrome-slot-renderers.d.ts.map +1 -0
- package/dist/standard-collection-chrome-slot-renderers.js +250 -0
- package/dist/standard-collection-chrome-slot-renderers.js.map +1 -0
- package/dist/standard-view-chrome-slot-renderers.d.ts +57 -0
- package/dist/standard-view-chrome-slot-renderers.d.ts.map +1 -0
- package/dist/standard-view-chrome-slot-renderers.js +614 -0
- package/dist/standard-view-chrome-slot-renderers.js.map +1 -0
- package/package.json +68 -0
- package/src/document-workspace-surface-slot-renderers.tsx +395 -0
- package/src/index.ts +53 -0
- package/src/navigation-shell-frame-renderer-registry.ts +29 -0
- package/src/navigation-shell-slot-renderer-registry.ts +46 -0
- package/src/page-host-unavailable-renderer.tsx +79 -0
- package/src/presentation-action-group.tsx +475 -0
- package/src/presentation-badge-target-interpreter.ts +54 -0
- package/src/presentation-component-groups.ts +2505 -0
- package/src/presentation-component-system-diagnostics.ts +848 -0
- package/src/presentation-component-system.ts +365 -0
- package/src/presentation-icon-diagnostics.ts +53 -0
- package/src/presentation-icon-registry.tsx +181 -0
- package/src/presentation-projection-trace-panel.tsx +140 -0
- package/src/presentation-routed-surface-host.tsx +48 -0
- package/src/presentation-shadcn-component-system.ts +102 -0
- package/src/presentation-standard-renderers.tsx +1290 -0
- package/src/presentation-surface-renderer.tsx +263 -0
- package/src/presentation-value-renderers.tsx +40 -0
- package/src/process-task-icons.tsx +258 -0
- package/src/projected-activity-state.tsx +63 -0
- package/src/projected-collection-action-runtime-diagnostics.ts +22 -0
- package/src/projected-collection-view.tsx +1273 -0
- package/src/projected-document-action-status-notices.tsx +66 -0
- package/src/projected-document-badges.tsx +134 -0
- package/src/projected-document-editor-surface.tsx +808 -0
- package/src/projected-document-workspace-notices.tsx +77 -0
- package/src/projected-document-workspace-prompt-child-view-registry.ts +99 -0
- package/src/projected-document-workspace-prompt-child-view-renderers.tsx +205 -0
- package/src/projected-document-workspace-shell.tsx +427 -0
- package/src/projected-document-workspace.tsx +216 -0
- package/src/projected-field-value-rendering.tsx +704 -0
- package/src/projected-inline-list.tsx +434 -0
- package/src/projected-input-form.tsx +1218 -0
- package/src/projected-metric-dashboard.tsx +106 -0
- package/src/projected-metric-strip.tsx +244 -0
- package/src/projected-navigation-shell-view-host.tsx +177 -0
- package/src/projected-navigation-shell.tsx +219 -0
- package/src/projected-presentation-badges.tsx +95 -0
- package/src/projected-presentation-diagnostics.tsx +120 -0
- package/src/projected-presentation-flow-layer.tsx +186 -0
- package/src/projected-process-task-notices.tsx +501 -0
- package/src/projected-prompt-child-view-renderer.tsx +698 -0
- package/src/projected-prompt-document-preview.tsx +197 -0
- package/src/projected-prompt-view.tsx +592 -0
- package/src/projected-query-form.tsx +286 -0
- package/src/projected-record-details.tsx +133 -0
- package/src/projected-routed-surface-runtime.tsx +713 -0
- package/src/projected-tabs-view.tsx +308 -0
- package/src/projected-view-chrome.tsx +148 -0
- package/src/projected-view-surface.tsx +131 -0
- package/src/standard-collection-chrome-slot-renderers.tsx +391 -0
- package/src/standard-view-chrome-slot-renderers.tsx +1064 -0
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useCallback, useMemo } from 'react';
|
|
3
|
+
import { defaultPresentationComponentSet, createProjectedCollectionRuntime, findPresentationView, isCollectionSelectionEnabled, projectPresentationActionRuntimeRegistry, projectProjectedCollectionActionRuntimeBindings, resolveProjectedCollectionSelectionMode, resolveProjectedCollectionSelectionStateId, } from '@cohesivesystems/presentation-core';
|
|
4
|
+
import { projectProjectedCollectionActionRuntimeDiagnostics, } from './projected-collection-action-runtime-diagnostics.js';
|
|
5
|
+
import { useCollectionSelectionState, usePresentationModule, usePresentationNavigationRuntime, useRegisterPresentationProjectionDiagnostics, } from '@cohesivesystems/presentation-react';
|
|
6
|
+
import { ProjectedCollectionRowActions, } from './projected-collection-view.js';
|
|
7
|
+
import { renderProjectedFieldValue, } from './projected-field-value-rendering.js';
|
|
8
|
+
import { collectionChromeSlotKinds, collectionChromeSlotPlacements, } from '@cohesivesystems/presentation-contracts';
|
|
9
|
+
export function ProjectedInlineList({ actionRuntimeBindings, componentSet = defaultPresentationComponentSet, componentSystem, createHref: createHrefOverride, data, emptyMessage, fieldRenderers, getRowLabel, navigateHref: navigateHrefOverride, renderActionIcon, title, viewId, }) {
|
|
10
|
+
const Badge = componentSystem.badges.Badge;
|
|
11
|
+
const module = usePresentationModule();
|
|
12
|
+
const navigation = usePresentationNavigationRuntime();
|
|
13
|
+
const view = findPresentationView(module, viewId);
|
|
14
|
+
const createHref = createHrefOverride ?? navigation.createHref;
|
|
15
|
+
const navigateHref = navigateHrefOverride ?? navigation.navigateHref;
|
|
16
|
+
const selectionMode = resolveProjectedCollectionSelectionMode(view?.Collection);
|
|
17
|
+
const selectionStateId = resolveProjectedCollectionSelectionStateId(view?.Collection);
|
|
18
|
+
const selectionState = useCollectionSelectionState(isCollectionSelectionEnabled(selectionMode)
|
|
19
|
+
? selectionStateId
|
|
20
|
+
: null);
|
|
21
|
+
const collectionRuntime = useMemo(() => createProjectedCollectionRuntime({
|
|
22
|
+
createHref,
|
|
23
|
+
data,
|
|
24
|
+
module,
|
|
25
|
+
selectionState,
|
|
26
|
+
view,
|
|
27
|
+
}), [createHref, data, module, selectionState, view]);
|
|
28
|
+
const actionIds = useMemo(() => [
|
|
29
|
+
...collectionRuntime.actions.rowActions.map(({ action }) => action.Id),
|
|
30
|
+
...collectionRuntime.actions.selectionActions.map(({ action }) => action.Id),
|
|
31
|
+
], [
|
|
32
|
+
collectionRuntime.actions.rowActions,
|
|
33
|
+
collectionRuntime.actions.selectionActions,
|
|
34
|
+
]);
|
|
35
|
+
const actionRuntimes = useMemo(() => projectPresentationActionRuntimeRegistry({
|
|
36
|
+
actionIds,
|
|
37
|
+
module,
|
|
38
|
+
projections: [
|
|
39
|
+
...(actionRuntimeBindings ?? []),
|
|
40
|
+
...projectProjectedCollectionActionRuntimeBindings({
|
|
41
|
+
navigateHref,
|
|
42
|
+
}),
|
|
43
|
+
],
|
|
44
|
+
}), [
|
|
45
|
+
actionIds,
|
|
46
|
+
actionRuntimeBindings,
|
|
47
|
+
module,
|
|
48
|
+
navigateHref,
|
|
49
|
+
]);
|
|
50
|
+
const actionRuntimeDiagnostics = useMemo(() => projectProjectedCollectionActionRuntimeDiagnostics({
|
|
51
|
+
actionRuntimes,
|
|
52
|
+
collectionRuntime,
|
|
53
|
+
module,
|
|
54
|
+
view,
|
|
55
|
+
}), [
|
|
56
|
+
actionRuntimes,
|
|
57
|
+
collectionRuntime,
|
|
58
|
+
module,
|
|
59
|
+
view,
|
|
60
|
+
]);
|
|
61
|
+
useRegisterPresentationProjectionDiagnostics(`projected-inline-list-action-runtime.${viewId}`, actionRuntimeDiagnostics);
|
|
62
|
+
const rowActionSlot = collectionRuntime.chrome.findSlots(collectionChromeSlotKinds.rowActions, collectionChromeSlotPlacements.inline)[0] ?? null;
|
|
63
|
+
const bodySlot = collectionRuntime.chrome.bodySlot;
|
|
64
|
+
const activatedRowAction = collectionRuntime.actions.activatedRowAction;
|
|
65
|
+
const canExecuteAction = useCallback((context) => collectionRuntime.actions.canInvokeAction(context, actionRuntimes), [actionRuntimes, collectionRuntime]);
|
|
66
|
+
const executeAction = useCallback((context) => collectionRuntime.actions.invokeAction(context, actionRuntimes), [actionRuntimes, collectionRuntime]);
|
|
67
|
+
const shouldSelectOnRowClick = Boolean(bodySlot?.SelectOnRowClick && collectionRuntime.selection.state);
|
|
68
|
+
const shouldActivateOnRowClick = Boolean(bodySlot?.ActivateOnRowClick && activatedRowAction);
|
|
69
|
+
const handleRowClick = useCallback((row, index) => {
|
|
70
|
+
if (shouldSelectOnRowClick) {
|
|
71
|
+
collectionRuntime.selection.activateRow(row, index);
|
|
72
|
+
}
|
|
73
|
+
if (!shouldActivateOnRowClick || !activatedRowAction) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
const actionContext = collectionRuntime.actions.createRowActionContext(activatedRowAction, row);
|
|
77
|
+
if (canExecuteAction(actionContext)) {
|
|
78
|
+
void executeAction(actionContext);
|
|
79
|
+
}
|
|
80
|
+
}, [
|
|
81
|
+
activatedRowAction,
|
|
82
|
+
canExecuteAction,
|
|
83
|
+
collectionRuntime,
|
|
84
|
+
executeAction,
|
|
85
|
+
shouldActivateOnRowClick,
|
|
86
|
+
shouldSelectOnRowClick,
|
|
87
|
+
]);
|
|
88
|
+
if (!module) {
|
|
89
|
+
return _jsx(ProjectedInlineListStatus, { label: "Presentation module is not available." });
|
|
90
|
+
}
|
|
91
|
+
if (!view) {
|
|
92
|
+
return _jsx(ProjectedInlineListStatus, { label: `Presentation view '${viewId}' is not available.` });
|
|
93
|
+
}
|
|
94
|
+
if (collectionRuntime.columns.length === 0) {
|
|
95
|
+
return _jsx(ProjectedInlineListStatus, { label: `Presentation view '${view.Name}' has no projected fields.` });
|
|
96
|
+
}
|
|
97
|
+
if (data.length === 0) {
|
|
98
|
+
const emptyMessageLabel = collectionRuntime.chrome.bodySlot?.EmptyMessage ?? emptyMessage;
|
|
99
|
+
return emptyMessageLabel ? (_jsx(ProjectedInlineListStatus, { label: emptyMessageLabel })) : null;
|
|
100
|
+
}
|
|
101
|
+
return (_jsxs("div", { className: "grid gap-2 rounded-lg border border-slate-950/8 bg-white/70 p-3", children: [_jsxs("div", { className: "flex flex-wrap items-center justify-between gap-2", children: [_jsx("p", { className: "text-sm font-semibold text-slate-950", children: title ?? view.Name }), _jsx(Badge, { className: "border-slate-950/10 bg-white text-slate-600", variant: "outline", children: data.length.toLocaleString() })] }), _jsx("div", { className: "grid gap-2", children: data.map((row, index) => (_jsx(ProjectedInlineListRow, { canExecuteAction: canExecuteAction, collectionRuntime: collectionRuntime, componentSet: componentSet, componentSystem: componentSystem, createHref: createHref, executeAction: executeAction, fieldRenderers: fieldRenderers, getRowLabel: getRowLabel, index: index, module: module, navigateHref: navigateHref, onRowClick: shouldSelectOnRowClick || shouldActivateOnRowClick
|
|
102
|
+
? handleRowClick
|
|
103
|
+
: undefined, renderActionIcon: renderActionIcon, row: row, rowActionSlot: rowActionSlot, viewId: viewId }, collectionRuntime.getRowId?.(row, index) ?? index))) })] }));
|
|
104
|
+
}
|
|
105
|
+
function ProjectedInlineListRow({ canExecuteAction, collectionRuntime, componentSet, componentSystem, createHref, executeAction, fieldRenderers, getRowLabel, index, module, navigateHref, onRowClick, renderActionIcon, row, rowActionSlot, viewId, }) {
|
|
106
|
+
const [primaryColumn, ...supportingColumns] = collectionRuntime.columns;
|
|
107
|
+
const rowLabel = getRowLabel?.(row) ?? collectionRuntime.readRowLabel(row);
|
|
108
|
+
return (_jsxs("div", { className: cn('grid gap-2 rounded-md border border-slate-950/8 bg-white/78 px-3 py-2', onRowClick ? 'cursor-pointer hover:border-slate-950/15 hover:bg-white' : null), onClick: onRowClick ? () => onRowClick(row, index) : undefined, children: [_jsxs("div", { className: "flex items-start justify-between gap-3", children: [_jsx("div", { className: "min-w-0", children: primaryColumn ? (_jsx("div", { className: "text-sm font-medium text-slate-950", children: renderInlineListField({
|
|
109
|
+
column: primaryColumn,
|
|
110
|
+
componentSystem,
|
|
111
|
+
createHref,
|
|
112
|
+
fieldRenderers,
|
|
113
|
+
module,
|
|
114
|
+
navigateHref,
|
|
115
|
+
row,
|
|
116
|
+
}) })) : (_jsx("p", { className: "text-sm font-medium text-slate-950", children: rowLabel ?? `Item ${index + 1}` })) }), rowActionSlot ? (_jsx(ProjectedCollectionRowActions, { canExecuteAction: canExecuteAction, collectionRuntime: collectionRuntime, componentSet: componentSet, componentSystem: componentSystem, executeAction: executeAction, module: module, renderActionIcon: renderActionIcon, row: row, rowLabel: rowLabel, slot: rowActionSlot, viewId: viewId })) : null] }), supportingColumns.length > 0 ? (_jsx("div", { className: "flex flex-wrap items-center gap-x-3 gap-y-1 text-xs text-slate-500", children: supportingColumns.map((column) => (_jsxs("span", { className: "inline-flex min-w-0 items-center gap-1.5", children: [_jsx("span", { className: "shrink-0 font-medium text-slate-400", children: column.header }), _jsx("span", { className: "min-w-0 break-all text-slate-600", children: renderInlineListField({
|
|
117
|
+
column,
|
|
118
|
+
componentSystem,
|
|
119
|
+
createHref,
|
|
120
|
+
fieldRenderers,
|
|
121
|
+
module,
|
|
122
|
+
navigateHref,
|
|
123
|
+
row,
|
|
124
|
+
}) })] }, column.id))) })) : null] }));
|
|
125
|
+
}
|
|
126
|
+
function renderInlineListField({ column, componentSystem, createHref, fieldRenderers, module, navigateHref, row, }) {
|
|
127
|
+
const field = column.field;
|
|
128
|
+
const value = column.readValue(row);
|
|
129
|
+
const renderer = fieldRenderers?.[field.Id] ?? fieldRenderers?.[field.Field];
|
|
130
|
+
return renderer
|
|
131
|
+
? renderer({ field, row, value })
|
|
132
|
+
: renderProjectedFieldValue({
|
|
133
|
+
componentSystem,
|
|
134
|
+
createHref,
|
|
135
|
+
emptyValueFallback: _jsx("span", { className: "text-slate-400", children: "none" }),
|
|
136
|
+
field,
|
|
137
|
+
module,
|
|
138
|
+
navigateHref,
|
|
139
|
+
resource: row,
|
|
140
|
+
value,
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
function ProjectedInlineListStatus({ label }) {
|
|
144
|
+
return (_jsx("div", { className: "rounded-md border border-slate-950/8 bg-white/65 px-4 py-3 text-sm text-slate-500", children: label }));
|
|
145
|
+
}
|
|
146
|
+
function cn(...values) {
|
|
147
|
+
return values.filter(Boolean).join(' ');
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=projected-inline-list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projected-inline-list.js","sourceRoot":"","sources":["../src/projected-inline-list.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAkB,MAAM,OAAO,CAAA;AAE5D,OAAO,EACL,+BAA+B,EAC/B,gCAAgC,EAChC,oBAAoB,EACpB,4BAA4B,EAC5B,wCAAwC,EACxC,+CAA+C,EAC/C,uCAAuC,EACvC,0CAA0C,GAS3C,MAAM,oCAAoC,CAAA;AAC3C,OAAO,EACL,kDAAkD,GACnD,MAAM,mDAAmD,CAAA;AAI1D,OAAO,EACL,2BAA2B,EAC3B,qBAAqB,EACrB,gCAAgC,EAChC,4CAA4C,GAC7C,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EACL,6BAA6B,GAG9B,MAAM,6BAA6B,CAAA;AACpC,OAAO,EACL,yBAAyB,GAC1B,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EACL,yBAAyB,EACzB,8BAA8B,GAC/B,MAAM,yCAAyC,CAAA;AA4BhD,MAAM,UAAU,mBAAmB,CAAuB,EACxD,qBAAqB,EACrB,YAAY,GAAG,+BAA+B,EAC9C,eAAe,EACf,UAAU,EAAE,kBAAkB,EAC9B,IAAI,EACJ,YAAY,EACZ,cAAc,EACd,WAAW,EACX,YAAY,EAAE,oBAAoB,EAClC,gBAAgB,EAChB,KAAK,EACL,MAAM,GAC0B;IAChC,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,CAAC,KAAK,CAAA;IAC1C,MAAM,MAAM,GAAG,qBAAqB,EAAE,CAAA;IACtC,MAAM,UAAU,GAAG,gCAAgC,EAAE,CAAA;IACrD,MAAM,IAAI,GAAG,oBAAoB,CAAiB,MAAM,EAAE,MAAM,CAAC,CAAA;IACjE,MAAM,UAAU,GAAG,kBAAkB,IAAI,UAAU,CAAC,UAAU,CAAA;IAC9D,MAAM,YAAY,GAAG,oBAAoB,IAAI,UAAU,CAAC,YAAY,CAAA;IACpE,MAAM,aAAa,GAAG,uCAAuC,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;IAC/E,MAAM,gBAAgB,GAAG,0CAA0C,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;IACrF,MAAM,cAAc,GAAG,2BAA2B,CAChD,4BAA4B,CAAC,aAAa,CAAC;QACzC,CAAC,CAAC,gBAAgB;QAClB,CAAC,CAAC,IAAI,CACT,CAAA;IACD,MAAM,iBAAiB,GAAG,OAAO,CAC/B,GAAG,EAAE,CAAC,gCAAgC,CAAC;QACrC,UAAU;QACV,IAAI;QACJ,MAAM;QACN,cAAc;QACd,IAAI;KACL,CAAC,EACF,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,CAAC,CACjD,CAAA;IACD,MAAM,SAAS,GAAG,OAAO,CACvB,GAAG,EAAE,CAAC;QACJ,GAAG,iBAAiB,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;QACtE,GAAG,iBAAiB,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;KAC7E,EACD;QACE,iBAAiB,CAAC,OAAO,CAAC,UAAU;QACpC,iBAAiB,CAAC,OAAO,CAAC,gBAAgB;KAC3C,CACF,CAAA;IACD,MAAM,cAAc,GAAG,OAAO,CAC5B,GAAG,EAAE,CACH,wCAAwC,CAGtC;QACA,SAAS;QACT,MAAM;QACN,WAAW,EAAE;YACX,GAAG,CAAC,qBAAqB,IAAI,EAAE,CAAC;YAChC,GAAG,+CAA+C,CAAmB;gBACnE,YAAY;aACb,CAAC;SACH;KACF,CAAoD,EACvD;QACE,SAAS;QACT,qBAAqB;QACrB,MAAM;QACN,YAAY;KACb,CACF,CAAA;IACD,MAAM,wBAAwB,GAAG,OAAO,CACtC,GAAG,EAAE,CACH,kDAAkD,CAAC;QACjD,cAAc;QACd,iBAAiB;QACjB,MAAM;QACN,IAAI;KACL,CAAC,EACJ;QACE,cAAc;QACd,iBAAiB;QACjB,MAAM;QACN,IAAI;KACL,CACF,CAAA;IACD,4CAA4C,CAC1C,wCAAwC,MAAM,EAAE,EAChD,wBAAwB,CACzB,CAAA;IACD,MAAM,aAAa,GAAG,iBAAiB,CAAC,MAAM,CAAC,SAAS,CACtD,yBAAyB,CAAC,UAAU,EACpC,8BAA8B,CAAC,MAAM,CACtC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAA;IACZ,MAAM,QAAQ,GAAG,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAA;IAClD,MAAM,kBAAkB,GAAG,iBAAiB,CAAC,OAAO,CAAC,kBAAkB,CAAA;IACvE,MAAM,gBAAgB,GAAG,WAAW,CAClC,CAAC,OAAyD,EAAE,EAAE,CAC5D,iBAAiB,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE,cAAc,CAAC,EACpE,CAAC,cAAc,EAAE,iBAAiB,CAAC,CACpC,CAAA;IACD,MAAM,aAAa,GAAG,WAAW,CAC/B,CAAC,OAAyD,EAAE,EAAE,CAC5D,iBAAiB,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,cAAc,CAAC,EACjE,CAAC,cAAc,EAAE,iBAAiB,CAAC,CACpC,CAAA;IACD,MAAM,sBAAsB,GAAG,OAAO,CACpC,QAAQ,EAAE,gBAAgB,IAAI,iBAAiB,CAAC,SAAS,CAAC,KAAK,CAChE,CAAA;IACD,MAAM,wBAAwB,GAAG,OAAO,CAAC,QAAQ,EAAE,kBAAkB,IAAI,kBAAkB,CAAC,CAAA;IAC5F,MAAM,cAAc,GAAG,WAAW,CAChC,CAAC,GAAU,EAAE,KAAa,EAAE,EAAE;QAC5B,IAAI,sBAAsB,EAAE,CAAC;YAC3B,iBAAiB,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QACrD,CAAC;QAED,IAAI,CAAC,wBAAwB,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACrD,OAAM;QACR,CAAC;QAED,MAAM,aAAa,GAAG,iBAAiB,CAAC,OAAO,CAAC,sBAAsB,CACpE,kBAAkB,EAClB,GAAG,CACJ,CAAA;QACD,IAAI,gBAAgB,CAAC,aAAa,CAAC,EAAE,CAAC;YACpC,KAAK,aAAa,CAAC,aAAa,CAAC,CAAA;QACnC,CAAC;IACH,CAAC,EACD;QACE,kBAAkB;QAClB,gBAAgB;QAChB,iBAAiB;QACjB,aAAa;QACb,wBAAwB;QACxB,sBAAsB;KACvB,CACF,CAAA;IAED,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,KAAC,yBAAyB,IAAC,KAAK,EAAC,uCAAuC,GAAG,CAAA;IACpF,CAAC;IAED,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,KAAC,yBAAyB,IAAC,KAAK,EAAE,sBAAsB,MAAM,qBAAqB,GAAI,CAAA;IAChG,CAAC;IAED,IAAI,iBAAiB,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3C,OAAO,KAAC,yBAAyB,IAAC,KAAK,EAAE,sBAAsB,IAAI,CAAC,IAAI,4BAA4B,GAAI,CAAA;IAC1G,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,MAAM,CAAC,QAAQ,EAAE,YAAY,IAAI,YAAY,CAAA;QACzF,OAAO,iBAAiB,CAAC,CAAC,CAAC,CACzB,KAAC,yBAAyB,IAAC,KAAK,EAAE,iBAAiB,GAAI,CACxD,CAAC,CAAC,CAAC,IAAI,CAAA;IACV,CAAC;IAED,OAAO,CACL,eAAK,SAAS,EAAC,iEAAiE,aAC9E,eAAK,SAAS,EAAC,mDAAmD,aAChE,YAAG,SAAS,EAAC,sCAAsC,YAAE,KAAK,IAAI,IAAI,CAAC,IAAI,GAAK,EAC5E,KAAC,KAAK,IAAC,SAAS,EAAC,6CAA6C,EAAC,OAAO,EAAC,SAAS,YAC7E,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,GACvB,IACJ,EACN,cAAK,SAAS,EAAC,YAAY,YACxB,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CACxB,KAAC,sBAAsB,IACrB,gBAAgB,EAAE,gBAAgB,EAClC,iBAAiB,EAAE,iBAAiB,EACpC,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE,eAAe,EAChC,UAAU,EAAE,UAAU,EACtB,aAAa,EAAE,aAAa,EAC5B,cAAc,EAAE,cAAc,EAC9B,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,KAAK,EAEZ,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY,EAC1B,UAAU,EACR,sBAAsB,IAAI,wBAAwB;wBAChD,CAAC,CAAC,cAAc;wBAChB,CAAC,CAAC,SAAS,EAEf,gBAAgB,EAAE,gBAAgB,EAClC,GAAG,EAAE,GAAG,EACR,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,MAAM,IAXT,iBAAiB,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,KAAK,CAYtD,CACH,CAAC,GACE,IACF,CACP,CAAA;AACH,CAAC;AAED,SAAS,sBAAsB,CAAuB,EACpD,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,UAAU,EACV,aAAa,EACb,cAAc,EACd,WAAW,EACX,KAAK,EACL,MAAM,EACN,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,GAAG,EACH,aAAa,EACb,MAAM,GA4BP;IACC,MAAM,CAAC,aAAa,EAAE,GAAG,iBAAiB,CAAC,GAAG,iBAAiB,CAAC,OAAO,CAAA;IACvE,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC,GAAG,CAAC,IAAI,iBAAiB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;IAE1E,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CACX,uEAAuE,EACvE,UAAU,CAAC,CAAC,CAAC,yDAAyD,CAAC,CAAC,CAAC,IAAI,CAC9E,EACD,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,aAE9D,eAAK,SAAS,EAAC,wCAAwC,aACrD,cAAK,SAAS,EAAC,SAAS,YACrB,aAAa,CAAC,CAAC,CAAC,CACf,cAAK,SAAS,EAAC,oCAAoC,YAChD,qBAAqB,CAAC;gCACrB,MAAM,EAAE,aAAa;gCACrB,eAAe;gCACf,UAAU;gCACV,cAAc;gCACd,MAAM;gCACN,YAAY;gCACZ,GAAG;6BACJ,CAAC,GACE,CACP,CAAC,CAAC,CAAC,CACF,YAAG,SAAS,EAAC,oCAAoC,YAAE,QAAQ,IAAI,QAAQ,KAAK,GAAG,CAAC,EAAE,GAAK,CACxF,GACG,EACL,aAAa,CAAC,CAAC,CAAC,CACf,KAAC,6BAA6B,IAC5B,gBAAgB,EAAE,gBAAgB,EAClC,iBAAiB,EAAE,iBAAiB,EACpC,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE,eAAe,EAChC,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,MAAM,EACd,gBAAgB,EAAE,gBAAgB,EAClC,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,MAAM,GACd,CACH,CAAC,CAAC,CAAC,IAAI,IACJ,EAEL,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAC9B,cAAK,SAAS,EAAC,oEAAoE,YAChF,iBAAiB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CACjC,gBAAM,SAAS,EAAC,0CAA0C,aACxD,eAAM,SAAS,EAAC,qCAAqC,YAAE,MAAM,CAAC,MAAM,GAAQ,EAC5E,eAAM,SAAS,EAAC,kCAAkC,YAC/C,qBAAqB,CAAC;gCACrB,MAAM;gCACN,eAAe;gCACf,UAAU;gCACV,cAAc;gCACd,MAAM;gCACN,YAAY;gCACZ,GAAG;6BACJ,CAAC,GACG,KAZuD,MAAM,CAAC,EAAE,CAalE,CACR,CAAC,GACE,CACP,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAA;AACH,CAAC;AAED,SAAS,qBAAqB,CAAuB,EACnD,MAAM,EACN,eAAe,EACf,UAAU,EACV,cAAc,EACd,MAAM,EACN,YAAY,EACZ,GAAG,GAkBJ;IACC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAA;IAC1B,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;IACnC,MAAM,QAAQ,GAAG,cAAc,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,cAAc,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAC5E,OAAO,QAAQ;QACb,CAAC,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;QACjC,CAAC,CAAC,yBAAyB,CAAC;YAC1B,eAAe;YACf,UAAU;YACV,kBAAkB,EAAE,eAAM,SAAS,EAAC,gBAAgB,qBAAY;YAChE,KAAK;YACL,MAAM;YACN,YAAY;YACZ,QAAQ,EAAE,GAAG;YACb,KAAK;SACN,CAAC,CAAA;AACN,CAAC;AAED,SAAS,yBAAyB,CAAC,EAAE,KAAK,EAAiC;IACzE,OAAO,CACL,cAAK,SAAS,EAAC,mFAAmF,YAC/F,KAAK,GACF,CACP,CAAA;AACH,CAAC;AAED,SAAS,EAAE,CAAC,GAAG,MAAsD;IACnE,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACzC,CAAC"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import { type DataSourceQueryFieldDefinition, type FieldPresentationDefinition, type InputFormDefinition, type InputFormFieldDefinition, type PresentationModuleDefinition, type PresentationDataSourceResolver, type ProjectedInputFormRuntime, type ProjectedInputFormTargetContext, type QueryFormDefinition, type ViewDefinition } from '@cohesivesystems/presentation-core';
|
|
3
|
+
import type { PresentationShadcnComponentSystem as PresentationComponentSystem } from './presentation-shadcn-component-system.js';
|
|
4
|
+
import type { PresentationDesignSystem } from '@cohesivesystems/presentation-tailwind';
|
|
5
|
+
import { type ProjectedViewSurfaceChromeSlotRenderer } from './projected-view-surface.js';
|
|
6
|
+
export type { ProjectedInputFormActionContext, ProjectedInputFormRuntime, ProjectedInputFormTargetContext, ProjectedInputFormValueChangeContext, } from '@cohesivesystems/presentation-core';
|
|
7
|
+
/**
|
|
8
|
+
* Context supplied to a domain-specific input-form field renderer.
|
|
9
|
+
*/
|
|
10
|
+
export interface ProjectedInputFormFieldRenderContext {
|
|
11
|
+
/** Optional resolver that maps a choice and tone to toggle styling. */
|
|
12
|
+
readonly choiceToggleClassName?: ProjectedInputFormChoiceClassNameResolver;
|
|
13
|
+
/** Optional resolver that normalizes domain choice metadata into a presentation tone. */
|
|
14
|
+
readonly choiceTone?: ProjectedInputFormChoiceToneResolver;
|
|
15
|
+
/** Choices resolved from the field's semantic choice source. */
|
|
16
|
+
readonly choices: readonly ProjectedInputFormChoice[];
|
|
17
|
+
/** Component implementation set used for projected form controls. */
|
|
18
|
+
readonly componentSystem: PresentationComponentSystem;
|
|
19
|
+
/** Design-system class and semantic resolvers used for projected form layout. */
|
|
20
|
+
readonly designSystem: PresentationDesignSystem;
|
|
21
|
+
/** Input-form field being rendered. */
|
|
22
|
+
readonly field: InputFormFieldDefinition;
|
|
23
|
+
/** Input form that owns the field. */
|
|
24
|
+
readonly inputForm: InputFormDefinition;
|
|
25
|
+
/** Presentation field metadata referenced by the input-form field, when available. */
|
|
26
|
+
readonly presentationField: FieldPresentationDefinition | null;
|
|
27
|
+
/** Data-source query field supplied when a relation-query target specializes the input form. */
|
|
28
|
+
readonly queryField: DataSourceQueryFieldDefinition | null;
|
|
29
|
+
/** Query-form binding supplied when a relation-query target specializes the input form. */
|
|
30
|
+
readonly queryForm: QueryFormDefinition | null;
|
|
31
|
+
/** Shared or target state id affected by the input form. */
|
|
32
|
+
readonly stateId: string;
|
|
33
|
+
/** Target interpretation attached to this form instance. */
|
|
34
|
+
readonly target: ProjectedInputFormTargetContext;
|
|
35
|
+
/** Updates the field value at its declared value path. */
|
|
36
|
+
readonly setFieldValue: (value: unknown) => void;
|
|
37
|
+
/** Current value read from the caller-owned form value at the field value path. */
|
|
38
|
+
readonly value: unknown;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Override renderer for an input-form field.
|
|
42
|
+
*/
|
|
43
|
+
export type ProjectedInputFormFieldRenderer = (context: ProjectedInputFormFieldRenderContext) => ReactNode;
|
|
44
|
+
/**
|
|
45
|
+
* Normalized choice projected from an input-form choice source.
|
|
46
|
+
*/
|
|
47
|
+
export interface ProjectedInputFormChoice {
|
|
48
|
+
/** User-facing choice label. */
|
|
49
|
+
readonly label: string;
|
|
50
|
+
/** Optional semantic tone supplied by the choice source or caller resolver. */
|
|
51
|
+
readonly tone?: string | null;
|
|
52
|
+
/** Stable choice value written into input-form state. */
|
|
53
|
+
readonly value: string;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Context supplied when resolving choice tone or styling.
|
|
57
|
+
*/
|
|
58
|
+
export interface ProjectedInputFormChoiceRenderContext {
|
|
59
|
+
/** Choice being rendered. */
|
|
60
|
+
readonly choice: ProjectedInputFormChoice;
|
|
61
|
+
/** Input-form field that owns the choice. */
|
|
62
|
+
readonly field: InputFormFieldDefinition;
|
|
63
|
+
/** Input form that owns the field. */
|
|
64
|
+
readonly inputForm: InputFormDefinition;
|
|
65
|
+
/** Presentation field metadata referenced by the input-form field, when available. */
|
|
66
|
+
readonly presentationField: FieldPresentationDefinition | null;
|
|
67
|
+
/** Data-source query field supplied when a relation-query target specializes the input form. */
|
|
68
|
+
readonly queryField: DataSourceQueryFieldDefinition | null;
|
|
69
|
+
/** Query-form binding supplied when a relation-query target specializes the input form. */
|
|
70
|
+
readonly queryForm: QueryFormDefinition | null;
|
|
71
|
+
/** Shared or target state id affected by the input form. */
|
|
72
|
+
readonly stateId: string;
|
|
73
|
+
/** Target interpretation attached to this form instance. */
|
|
74
|
+
readonly target: ProjectedInputFormTargetContext;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Choice styling context after tone resolution has completed.
|
|
78
|
+
*/
|
|
79
|
+
export interface ProjectedInputFormChoiceClassNameContext extends ProjectedInputFormChoiceRenderContext {
|
|
80
|
+
/** Resolved presentation tone for the choice, or null when no tone applies. */
|
|
81
|
+
readonly tone: string | null;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Resolves a semantic choice into a presentation tone understood by the local design system.
|
|
85
|
+
*/
|
|
86
|
+
export type ProjectedInputFormChoiceToneResolver = (context: ProjectedInputFormChoiceRenderContext) => string | null | undefined;
|
|
87
|
+
/**
|
|
88
|
+
* Resolves final toggle classes for a choice after tone resolution.
|
|
89
|
+
*/
|
|
90
|
+
export type ProjectedInputFormChoiceClassNameResolver = (context: ProjectedInputFormChoiceClassNameContext) => string | undefined;
|
|
91
|
+
/**
|
|
92
|
+
* Props required to project a backend-declared input form into React controls.
|
|
93
|
+
*
|
|
94
|
+
* @typeParam TValue - Shape of the caller-owned form state object.
|
|
95
|
+
*/
|
|
96
|
+
export interface ProjectedInputFormProps<TValue extends object = object> {
|
|
97
|
+
/** Optional resolver that maps a choice and tone to toggle styling. */
|
|
98
|
+
readonly choiceToggleClassName?: ProjectedInputFormChoiceClassNameResolver;
|
|
99
|
+
/** Optional resolver that normalizes domain choice metadata into a presentation tone. */
|
|
100
|
+
readonly choiceTone?: ProjectedInputFormChoiceToneResolver;
|
|
101
|
+
/** Class name applied to the projected view surface. */
|
|
102
|
+
readonly className?: string;
|
|
103
|
+
/** Class name applied to projected view chrome after the form body. */
|
|
104
|
+
readonly chromeAfterContentClassName?: string;
|
|
105
|
+
/** Class name applied to projected view chrome before the form body. */
|
|
106
|
+
readonly chromeBeforeContentClassName?: string;
|
|
107
|
+
/** Class name applied to projected view chrome in the surface footer. */
|
|
108
|
+
readonly chromeFooterClassName?: string;
|
|
109
|
+
/** Class name applied to projected view chrome in the surface header. */
|
|
110
|
+
readonly chromeHeaderClassName?: string;
|
|
111
|
+
/** Class name applied to the projected view surface content area. */
|
|
112
|
+
readonly contentClassName?: string;
|
|
113
|
+
/** Component implementation set used for projected form controls. */
|
|
114
|
+
readonly componentSystem: PresentationComponentSystem;
|
|
115
|
+
/** Presentation target component set used to resolve declared icons. */
|
|
116
|
+
readonly componentSet?: string;
|
|
117
|
+
/** Design-system class and semantic resolvers used for projected form layout. */
|
|
118
|
+
readonly designSystem: PresentationDesignSystem;
|
|
119
|
+
/** Resolver for data sources used by field choice sources. */
|
|
120
|
+
readonly dataSourceResolver: PresentationDataSourceResolver;
|
|
121
|
+
/** Field renderer overrides keyed by input-form field id or presentation field id. */
|
|
122
|
+
readonly fieldRenderers?: Readonly<Record<string, ProjectedInputFormFieldRenderer>>;
|
|
123
|
+
/** Input form to project; null renders a diagnostic status block. */
|
|
124
|
+
readonly inputForm: InputFormDefinition | null;
|
|
125
|
+
/** Presentation module that owns the input form, fields, and actions. */
|
|
126
|
+
readonly module: PresentationModuleDefinition;
|
|
127
|
+
/** Runtime state and action handlers; null renders a diagnostic status block. */
|
|
128
|
+
readonly runtime: ProjectedInputFormRuntime<TValue> | null;
|
|
129
|
+
/** Interprets non-form view chrome slots declared by the hosting view. */
|
|
130
|
+
readonly renderChromeSlot?: ProjectedViewSurfaceChromeSlotRenderer;
|
|
131
|
+
/** Optional target specialization attached to this input form instance. */
|
|
132
|
+
readonly target?: ProjectedInputFormTargetContext | null;
|
|
133
|
+
/** View that hosts the input form and supplies surface identity. */
|
|
134
|
+
readonly view: ViewDefinition;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Projects a semantic input-form definition into concrete React form controls.
|
|
138
|
+
*
|
|
139
|
+
* Generic input kinds are handled locally; domain-specific fields, choice tones,
|
|
140
|
+
* styling, and action behavior stay injectable through renderer props and runtime.
|
|
141
|
+
*/
|
|
142
|
+
export declare function ProjectedInputForm<TValue extends object = object>({ choiceToggleClassName, choiceTone, className, chromeAfterContentClassName, chromeBeforeContentClassName, chromeFooterClassName, chromeHeaderClassName, componentSet, componentSystem, contentClassName, dataSourceResolver, designSystem, fieldRenderers, inputForm, module, renderChromeSlot, runtime, target, view, }: ProjectedInputFormProps<TValue>): import("react/jsx-runtime").JSX.Element | null;
|
|
143
|
+
//# sourceMappingURL=projected-input-form.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projected-input-form.d.ts","sourceRoot":"","sources":["../src/projected-input-form.tsx"],"names":[],"mappings":"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"}
|