@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,292 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Fragment, useEffect, useMemo } from 'react';
|
|
3
|
+
import { findPresentationAction, getPresentationViewProjectedActionPlacements, isPresentationViewFetching, isViewChromeSlotKind, isViewChromeSlotPlacementValue, promptChromeIconIds, resolvePresentationViewDataSourceIds, } from '@cohesivesystems/presentation-core';
|
|
4
|
+
import { PresentationActionGroup, } from './presentation-action-group.js';
|
|
5
|
+
import { renderPresentationIcon, } from './presentation-icon-registry.js';
|
|
6
|
+
import { projectPresentationIconDiagnostics, } from './presentation-icon-diagnostics.js';
|
|
7
|
+
import { useRegisterPresentationProjectionDiagnostics, } from '@cohesivesystems/presentation-react';
|
|
8
|
+
import { ProjectedViewChrome, resolveViewChromeSlotPlacement, } from './projected-view-chrome.js';
|
|
9
|
+
import { viewChromeSlotKinds, viewChromeSlotPlacements, viewRegionKinds, } from '@cohesivesystems/presentation-contracts';
|
|
10
|
+
export function ProjectedPromptView({ actionGroupOptions, actionRegionId = 'footer', className, componentSystem, contentClassName, context, dataSourceResolver, designSystem, description, module, regionRenderers, renderChromeSlot, renderRegion, renderView, title, view, }) {
|
|
11
|
+
const titleId = `${toDomId(view.Id)}-title`;
|
|
12
|
+
const ActionButton = componentSystem.actions.ActionButton;
|
|
13
|
+
const layoutClasses = resolvePromptLayoutClasses(view, dataSourceResolver);
|
|
14
|
+
const bodyRegions = view.Regions.filter((region) => !isActionRegion(region, actionRegionId));
|
|
15
|
+
const actionView = {
|
|
16
|
+
...view,
|
|
17
|
+
Actions: getPresentationViewProjectedActionPlacements(view)
|
|
18
|
+
.filter((action) => action.Region === actionRegionId),
|
|
19
|
+
Chrome: null,
|
|
20
|
+
};
|
|
21
|
+
const hasFooterActionChrome = hasActionChromeSlotAtPlacement(view, viewChromeSlotPlacements.footer);
|
|
22
|
+
const hasDescriptionStatusChrome = Boolean(renderChromeSlot) &&
|
|
23
|
+
hasStatusChromeSlotAtPlacement(view, viewChromeSlotPlacements.beforeContent);
|
|
24
|
+
const dismissAction = resolvePromptDismissAction({
|
|
25
|
+
actionGroupOptions,
|
|
26
|
+
context,
|
|
27
|
+
dataSourceResolver,
|
|
28
|
+
module,
|
|
29
|
+
view,
|
|
30
|
+
});
|
|
31
|
+
const promptIconDiagnostics = useMemo(() => projectPresentationIconDiagnostics({
|
|
32
|
+
icons: view.PromptDismiss?.ShowCloseButton
|
|
33
|
+
? [{
|
|
34
|
+
icon: promptChromeIconIds.close,
|
|
35
|
+
id: `${view.Id}:close`,
|
|
36
|
+
kind: 'prompt-chrome-icon',
|
|
37
|
+
label: 'Close prompt',
|
|
38
|
+
}]
|
|
39
|
+
: [],
|
|
40
|
+
module,
|
|
41
|
+
source: `projected-prompt-icons:${view.Id}`,
|
|
42
|
+
surfaceId: view.Id,
|
|
43
|
+
surfaceName: view.Name,
|
|
44
|
+
}), [
|
|
45
|
+
module,
|
|
46
|
+
view.Id,
|
|
47
|
+
view.Name,
|
|
48
|
+
view.PromptDismiss?.ShowCloseButton,
|
|
49
|
+
]);
|
|
50
|
+
useRegisterPresentationProjectionDiagnostics(`projected-prompt-icons:${view.Id}`, promptIconDiagnostics);
|
|
51
|
+
useEffect(() => {
|
|
52
|
+
if (!view.PromptDismiss?.DismissOnEscape ||
|
|
53
|
+
!dismissAction ||
|
|
54
|
+
dismissAction.isHidden ||
|
|
55
|
+
!dismissAction.canDismiss) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
const executeDismiss = dismissAction.execute;
|
|
59
|
+
function handleKeyDown(event) {
|
|
60
|
+
if (event.key !== 'Escape') {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
event.preventDefault();
|
|
64
|
+
executeDismiss();
|
|
65
|
+
}
|
|
66
|
+
window.addEventListener('keydown', handleKeyDown);
|
|
67
|
+
return () => window.removeEventListener('keydown', handleKeyDown);
|
|
68
|
+
}, [dismissAction, view.PromptDismiss?.DismissOnEscape]);
|
|
69
|
+
function handleBackdropMouseDown(event) {
|
|
70
|
+
if (event.target !== event.currentTarget ||
|
|
71
|
+
!view.PromptDismiss?.DismissOnBackdrop ||
|
|
72
|
+
!dismissAction ||
|
|
73
|
+
dismissAction.isHidden ||
|
|
74
|
+
!dismissAction.canDismiss) {
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
event.preventDefault();
|
|
78
|
+
dismissAction.execute();
|
|
79
|
+
}
|
|
80
|
+
const renderPromptChromeSlot = (slot, chromeView) => {
|
|
81
|
+
if (isViewChromeSlotKind(slot, viewChromeSlotKinds.actions)) {
|
|
82
|
+
return renderPromptActionGroup({
|
|
83
|
+
actionGroupOptions,
|
|
84
|
+
actions: slot.Actions.length > 0 ? slot.Actions : actionView.Actions,
|
|
85
|
+
componentSystem,
|
|
86
|
+
context,
|
|
87
|
+
dataSourceResolver,
|
|
88
|
+
designSystem,
|
|
89
|
+
module,
|
|
90
|
+
view,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
return renderChromeSlot?.(slot, chromeView) ?? null;
|
|
94
|
+
};
|
|
95
|
+
const headerActions = componentSystem.prompts.PromptHeaderActions({
|
|
96
|
+
actions: (_jsx(ProjectedViewChrome, { componentSystem: componentSystem, placement: viewChromeSlotPlacements.header, renderSlot: (slot) => renderPromptChromeSlot(slot, view), view: view })),
|
|
97
|
+
closeButton: view.PromptDismiss?.ShowCloseButton && dismissAction && !dismissAction.isHidden ? (_jsx(ActionButton, { "aria-label": "Close", disabled: !dismissAction.canDismiss, onClick: dismissAction.execute, size: "icon-sm", type: "button", variant: "ghost", children: renderPresentationIcon({
|
|
98
|
+
className: 'size-4',
|
|
99
|
+
icon: promptChromeIconIds.close,
|
|
100
|
+
module,
|
|
101
|
+
}) })) : null,
|
|
102
|
+
viewId: view.Id,
|
|
103
|
+
});
|
|
104
|
+
const footer = componentSystem.prompts.PromptFooter({
|
|
105
|
+
children: hasFooterActionChrome ? (_jsx(ProjectedViewChrome, { componentSystem: componentSystem, placement: viewChromeSlotPlacements.footer, renderSlot: (slot) => renderPromptChromeSlot(slot, view), view: view })) : (renderPromptActionFooter({
|
|
106
|
+
actionGroupOptions,
|
|
107
|
+
componentSystem,
|
|
108
|
+
context,
|
|
109
|
+
dataSourceResolver,
|
|
110
|
+
designSystem,
|
|
111
|
+
module,
|
|
112
|
+
view: actionView,
|
|
113
|
+
})),
|
|
114
|
+
viewId: view.Id,
|
|
115
|
+
});
|
|
116
|
+
return componentSystem.prompts.PromptModal({
|
|
117
|
+
ariaLabelledBy: titleId,
|
|
118
|
+
className: cn(layoutClasses.containerClassName, className),
|
|
119
|
+
description: description && !hasDescriptionStatusChrome ? description : null,
|
|
120
|
+
footer,
|
|
121
|
+
headerActions,
|
|
122
|
+
onBackdropMouseDown: handleBackdropMouseDown,
|
|
123
|
+
role: view.Accessibility?.Role ?? 'dialog',
|
|
124
|
+
title: title ?? view.Name,
|
|
125
|
+
titleId,
|
|
126
|
+
children: (_jsxs(_Fragment, { children: [_jsx(ProjectedViewChrome, { componentSystem: componentSystem, placement: viewChromeSlotPlacements.beforeContent, renderSlot: (slot) => renderPromptChromeSlot(slot, view), view: view }), componentSystem.prompts.PromptContent({
|
|
127
|
+
className: cn(layoutClasses.contentClassName, contentClassName),
|
|
128
|
+
viewId: view.Id,
|
|
129
|
+
children: (_jsx(_Fragment, { children: bodyRegions.map((region) => renderPromptRegion({
|
|
130
|
+
componentSystem,
|
|
131
|
+
context,
|
|
132
|
+
dataSourceResolver,
|
|
133
|
+
module,
|
|
134
|
+
region,
|
|
135
|
+
regionRenderers,
|
|
136
|
+
renderRegion,
|
|
137
|
+
renderView,
|
|
138
|
+
view,
|
|
139
|
+
})) })),
|
|
140
|
+
}), _jsx(ProjectedViewChrome, { componentSystem: componentSystem, placement: viewChromeSlotPlacements.afterContent, renderSlot: (slot) => renderPromptChromeSlot(slot, view), view: view })] })),
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
function renderPromptActionFooter({ actionGroupOptions, componentSystem, context, dataSourceResolver, designSystem, module, view, }) {
|
|
144
|
+
if (view.Actions.length === 0 || !actionGroupOptions) {
|
|
145
|
+
return null;
|
|
146
|
+
}
|
|
147
|
+
return (_jsx(PresentationActionGroup, { context: context, dataSourceResolver: dataSourceResolver, module: module, options: {
|
|
148
|
+
...actionGroupOptions,
|
|
149
|
+
className: actionGroupOptions.className ?? 'flex flex-wrap items-center justify-end gap-2',
|
|
150
|
+
componentSystem,
|
|
151
|
+
designSystem,
|
|
152
|
+
}, view: view }));
|
|
153
|
+
}
|
|
154
|
+
function renderPromptActionGroup({ actionGroupOptions, actions, componentSystem, context, dataSourceResolver, designSystem, module, view, }) {
|
|
155
|
+
if (actions.length === 0 || !actionGroupOptions) {
|
|
156
|
+
return null;
|
|
157
|
+
}
|
|
158
|
+
return (_jsx(PresentationActionGroup, { context: context, dataSourceResolver: dataSourceResolver, module: module, options: {
|
|
159
|
+
...actionGroupOptions,
|
|
160
|
+
className: actionGroupOptions.className ?? 'flex flex-wrap items-center justify-end gap-2',
|
|
161
|
+
componentSystem,
|
|
162
|
+
designSystem,
|
|
163
|
+
}, view: {
|
|
164
|
+
...view,
|
|
165
|
+
Actions: [...actions],
|
|
166
|
+
Chrome: null,
|
|
167
|
+
} }));
|
|
168
|
+
}
|
|
169
|
+
function hasActionChromeSlotAtPlacement(view, placement) {
|
|
170
|
+
return view.Chrome?.Slots.some((slot) => isViewChromeSlotKind(slot, viewChromeSlotKinds.actions) &&
|
|
171
|
+
isViewChromeSlotPlacementValue(resolveViewChromeSlotPlacement(slot), placement)) ?? false;
|
|
172
|
+
}
|
|
173
|
+
function hasStatusChromeSlotAtPlacement(view, placement) {
|
|
174
|
+
return view.Chrome?.Slots.some((slot) => isViewChromeSlotKind(slot, viewChromeSlotKinds.status) &&
|
|
175
|
+
isViewChromeSlotPlacementValue(resolveViewChromeSlotPlacement(slot), placement)) ?? false;
|
|
176
|
+
}
|
|
177
|
+
function resolvePromptLayoutClasses(view, dataSourceResolver) {
|
|
178
|
+
if (view.Design?.Layout === 'expanded') {
|
|
179
|
+
return {
|
|
180
|
+
containerClassName: 'h-full max-w-6xl overflow-hidden',
|
|
181
|
+
contentClassName: 'min-h-0 flex-1 overflow-hidden',
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
if (view.Design?.Layout === 'active-content-expanded' && isPromptContentActive(view, dataSourceResolver)) {
|
|
185
|
+
return {
|
|
186
|
+
containerClassName: 'h-full max-w-6xl overflow-hidden',
|
|
187
|
+
contentClassName: 'min-h-0 flex-1 overflow-hidden',
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
return {};
|
|
191
|
+
}
|
|
192
|
+
function isPromptContentActive(view, dataSourceResolver) {
|
|
193
|
+
return resolvePresentationViewDataSourceIds(view).some((dataSourceId) => {
|
|
194
|
+
const state = dataSourceResolver.resolve(dataSourceId);
|
|
195
|
+
return Boolean(state?.isPending ||
|
|
196
|
+
state?.isFetching ||
|
|
197
|
+
state?.data !== null && state?.data !== undefined);
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
function renderPromptRegion({ componentSystem, context, dataSourceResolver, module, region, regionRenderers, renderRegion, renderView, view, }) {
|
|
201
|
+
const regionContext = {
|
|
202
|
+
context,
|
|
203
|
+
dataSourceResolver,
|
|
204
|
+
module,
|
|
205
|
+
region,
|
|
206
|
+
renderView,
|
|
207
|
+
view,
|
|
208
|
+
};
|
|
209
|
+
const rendered = regionRenderers?.[region.Id]?.(regionContext) ?? renderRegion?.(regionContext);
|
|
210
|
+
if (rendered !== undefined) {
|
|
211
|
+
return (_jsx(Fragment, { children: componentSystem.prompts.PromptRegion({
|
|
212
|
+
region,
|
|
213
|
+
viewId: view.Id,
|
|
214
|
+
children: rendered,
|
|
215
|
+
}) }, region.Id));
|
|
216
|
+
}
|
|
217
|
+
if (!renderView || region.ViewIds.length === 0) {
|
|
218
|
+
return null;
|
|
219
|
+
}
|
|
220
|
+
return (_jsx(Fragment, { children: componentSystem.prompts.PromptRegion({
|
|
221
|
+
region,
|
|
222
|
+
viewId: view.Id,
|
|
223
|
+
children: region.ViewIds.map((viewId) => (_jsx("div", { className: "h-full min-h-0", children: renderView(viewId) }, viewId))),
|
|
224
|
+
}) }, region.Id));
|
|
225
|
+
}
|
|
226
|
+
function isActionRegion(region, actionRegionId) {
|
|
227
|
+
return region.Id === actionRegionId || region.Kind === viewRegionKinds.footer;
|
|
228
|
+
}
|
|
229
|
+
function resolvePromptDismissAction({ actionGroupOptions, context, dataSourceResolver, module, view, }) {
|
|
230
|
+
const dismissPolicy = view.PromptDismiss;
|
|
231
|
+
if (!dismissPolicy || !actionGroupOptions?.executeAction) {
|
|
232
|
+
return null;
|
|
233
|
+
}
|
|
234
|
+
const placement = getPresentationViewProjectedActionPlacements(view)
|
|
235
|
+
.find((candidate) => candidate.ActionId === dismissPolicy.DismissActionId) ??
|
|
236
|
+
{
|
|
237
|
+
ActionId: dismissPolicy.DismissActionId,
|
|
238
|
+
Icon: 'x',
|
|
239
|
+
Label: 'Close',
|
|
240
|
+
Region: 'dismiss',
|
|
241
|
+
};
|
|
242
|
+
const action = findPresentationAction(module, placement.ActionId);
|
|
243
|
+
const invalidatedDataSourceIds = action?.Result?.InvalidateDataSourceIds ??
|
|
244
|
+
resolvePresentationViewDataSourceIds(view);
|
|
245
|
+
const isFetching = isPresentationViewFetching({
|
|
246
|
+
...view,
|
|
247
|
+
DataSourceIds: invalidatedDataSourceIds,
|
|
248
|
+
}, dataSourceResolver);
|
|
249
|
+
const baseContext = {
|
|
250
|
+
action,
|
|
251
|
+
context,
|
|
252
|
+
dataSourceResolver,
|
|
253
|
+
invalidatedDataSourceIds,
|
|
254
|
+
isFetching,
|
|
255
|
+
module,
|
|
256
|
+
placement,
|
|
257
|
+
view,
|
|
258
|
+
};
|
|
259
|
+
const resolvedInvalidatedDataSourceIds = actionGroupOptions.resolveInvalidatedDataSourceIds?.(baseContext) ??
|
|
260
|
+
invalidatedDataSourceIds;
|
|
261
|
+
const resolvedContext = {
|
|
262
|
+
...baseContext,
|
|
263
|
+
invalidatedDataSourceIds: resolvedInvalidatedDataSourceIds,
|
|
264
|
+
};
|
|
265
|
+
const actionState = actionGroupOptions.resolveActionState?.(resolvedContext) ?? {};
|
|
266
|
+
const isBlocked = resolvedInvalidatedDataSourceIds.some((dataSourceId) => dataSourceResolver.resolve(dataSourceId)?.isBlocked);
|
|
267
|
+
const canExecute = actionGroupOptions.canExecuteAction?.(resolvedContext) ?? true;
|
|
268
|
+
const isHidden = Boolean(actionState.isHidden);
|
|
269
|
+
const isPending = Boolean(actionState.isPending);
|
|
270
|
+
const canDismiss = Boolean(canExecute &&
|
|
271
|
+
!actionState.isDisabled &&
|
|
272
|
+
!isBlocked &&
|
|
273
|
+
!isFetching &&
|
|
274
|
+
(!dismissPolicy.DisableWhenActionPending || !isPending));
|
|
275
|
+
return {
|
|
276
|
+
canDismiss,
|
|
277
|
+
execute: () => {
|
|
278
|
+
if (isHidden || !canDismiss) {
|
|
279
|
+
return;
|
|
280
|
+
}
|
|
281
|
+
void actionGroupOptions.executeAction?.(resolvedContext);
|
|
282
|
+
},
|
|
283
|
+
isHidden,
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
function toDomId(value) {
|
|
287
|
+
return value.replace(/[^a-zA-Z0-9_-]+/g, '-');
|
|
288
|
+
}
|
|
289
|
+
function cn(...values) {
|
|
290
|
+
return values.filter(Boolean).join(' ');
|
|
291
|
+
}
|
|
292
|
+
//# sourceMappingURL=projected-prompt-view.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projected-prompt-view.js","sourceRoot":"","sources":["../src/projected-prompt-view.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { type PresentationModuleDefinition, type PresentationDataSourceResolver, type ProjectedQueryFormRuntime, type QueryFormDefinition, type ViewDefinition } from '@cohesivesystems/presentation-core';
|
|
2
|
+
import type { PresentationShadcnComponentSystem as PresentationComponentSystem } from './presentation-shadcn-component-system.js';
|
|
3
|
+
import type { PresentationDesignSystem } from '@cohesivesystems/presentation-tailwind';
|
|
4
|
+
import { type ProjectedInputFormChoice, type ProjectedInputFormChoiceClassNameContext, type ProjectedInputFormChoiceClassNameResolver, type ProjectedInputFormChoiceRenderContext, type ProjectedInputFormChoiceToneResolver, type ProjectedInputFormFieldRenderer, type ProjectedInputFormFieldRenderContext } from './projected-input-form.js';
|
|
5
|
+
import type { ProjectedViewSurfaceChromeSlotRenderer } from './projected-view-surface.js';
|
|
6
|
+
export type { ProjectedInputFormChoice as ProjectedQueryFormChoice, ProjectedInputFormChoiceClassNameContext as ProjectedQueryFormChoiceClassNameContext, ProjectedInputFormChoiceClassNameResolver as ProjectedQueryFormChoiceClassNameResolver, ProjectedInputFormChoiceRenderContext as ProjectedQueryFormChoiceRenderContext, ProjectedInputFormChoiceToneResolver as ProjectedQueryFormChoiceToneResolver, ProjectedInputFormFieldRenderer as ProjectedQueryFormFieldRenderer, ProjectedInputFormFieldRenderContext as ProjectedQueryFormFieldRenderContext, };
|
|
7
|
+
export type { ProjectedQueryFormActionContext, ProjectedQueryFormRuntime, ProjectedQueryFormValueChangeContext, } from '@cohesivesystems/presentation-core';
|
|
8
|
+
/**
|
|
9
|
+
* Props required to project a backend-declared query form into React controls.
|
|
10
|
+
*
|
|
11
|
+
* @typeParam TValue - Shape of the caller-owned query state object.
|
|
12
|
+
*/
|
|
13
|
+
export interface ProjectedQueryFormProps<TValue extends object = object> {
|
|
14
|
+
/** Optional resolver that maps a choice and tone to toggle styling. */
|
|
15
|
+
readonly choiceToggleClassName?: ProjectedInputFormChoiceClassNameResolver;
|
|
16
|
+
/** Optional resolver that normalizes domain choice metadata into a presentation tone. */
|
|
17
|
+
readonly choiceTone?: ProjectedInputFormChoiceToneResolver;
|
|
18
|
+
/** Class name applied to the projected view surface. */
|
|
19
|
+
readonly className?: string;
|
|
20
|
+
/** Class name applied to projected view chrome after the form body. */
|
|
21
|
+
readonly chromeAfterContentClassName?: string;
|
|
22
|
+
/** Class name applied to projected view chrome before the form body. */
|
|
23
|
+
readonly chromeBeforeContentClassName?: string;
|
|
24
|
+
/** Class name applied to projected view chrome in the surface footer. */
|
|
25
|
+
readonly chromeFooterClassName?: string;
|
|
26
|
+
/** Class name applied to projected view chrome in the surface header. */
|
|
27
|
+
readonly chromeHeaderClassName?: string;
|
|
28
|
+
/** Class name applied to the projected view surface content area. */
|
|
29
|
+
readonly contentClassName?: string;
|
|
30
|
+
/** Component implementation set used for projected form controls. */
|
|
31
|
+
readonly componentSystem: PresentationComponentSystem;
|
|
32
|
+
/** Presentation target component set used to resolve declared icons. */
|
|
33
|
+
readonly componentSet?: string;
|
|
34
|
+
/** Design-system class and semantic resolvers used for projected form layout. */
|
|
35
|
+
readonly designSystem: PresentationDesignSystem;
|
|
36
|
+
/** Resolver for data sources used by field choice sources. */
|
|
37
|
+
readonly dataSourceResolver: PresentationDataSourceResolver;
|
|
38
|
+
/** Field renderer overrides keyed by input-form field id or presentation field id. */
|
|
39
|
+
readonly fieldRenderers?: Readonly<Record<string, ProjectedInputFormFieldRenderer>>;
|
|
40
|
+
/** Presentation module that owns the query form, input form, fields, and actions. */
|
|
41
|
+
readonly module: PresentationModuleDefinition;
|
|
42
|
+
/** Query form to project; null renders a diagnostic status block. */
|
|
43
|
+
readonly queryForm: QueryFormDefinition | null;
|
|
44
|
+
/** Runtime state and action handlers; null renders a diagnostic status block. */
|
|
45
|
+
readonly runtime: ProjectedQueryFormRuntime<TValue> | null;
|
|
46
|
+
/** Interprets non-form view chrome slots declared by the hosting view. */
|
|
47
|
+
readonly renderChromeSlot?: ProjectedViewSurfaceChromeSlotRenderer;
|
|
48
|
+
/** View that hosts the query form and supplies surface identity. */
|
|
49
|
+
readonly view: ViewDefinition;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Projects a relation-query specialization by delegating the interaction surface
|
|
53
|
+
* to the generic input-form renderer.
|
|
54
|
+
*/
|
|
55
|
+
export declare function ProjectedQueryForm<TValue extends object = object>({ choiceToggleClassName, choiceTone, className, chromeAfterContentClassName, chromeBeforeContentClassName, chromeFooterClassName, chromeHeaderClassName, componentSet, componentSystem, contentClassName, dataSourceResolver, designSystem, fieldRenderers, module, queryForm, renderChromeSlot, runtime, view, }: ProjectedQueryFormProps<TValue>): import("react/jsx-runtime").JSX.Element | null;
|
|
56
|
+
//# sourceMappingURL=projected-query-form.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projected-query-form.d.ts","sourceRoot":"","sources":["../src/projected-query-form.tsx"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,4BAA4B,EACjC,KAAK,8BAA8B,EAInC,KAAK,yBAAyB,EAE9B,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACpB,MAAM,oCAAoC,CAAA;AAG3C,OAAO,KAAK,EACV,iCAAiC,IAAI,2BAA2B,EACjE,MAAM,wCAAwC,CAAA;AAC/C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAA;AACtF,OAAO,EAEL,KAAK,wBAAwB,EAC7B,KAAK,wCAAwC,EAC7C,KAAK,yCAAyC,EAC9C,KAAK,qCAAqC,EAC1C,KAAK,oCAAoC,EACzC,KAAK,+BAA+B,EACpC,KAAK,oCAAoC,EAC1C,MAAM,wBAAwB,CAAA;AAE/B,OAAO,KAAK,EACV,sCAAsC,EACvC,MAAM,0BAA0B,CAAA;AAEjC,YAAY,EACV,wBAAwB,IAAI,wBAAwB,EACpD,wCAAwC,IAAI,wCAAwC,EACpF,yCAAyC,IAAI,yCAAyC,EACtF,qCAAqC,IAAI,qCAAqC,EAC9E,oCAAoC,IAAI,oCAAoC,EAC5E,+BAA+B,IAAI,+BAA+B,EAClE,oCAAoC,IAAI,oCAAoC,GAC7E,CAAA;AAED,YAAY,EACV,+BAA+B,EAC/B,yBAAyB,EACzB,oCAAoC,GACrC,MAAM,oCAAoC,CAAA;AAE3C;;;;GAIG;AACH,MAAM,WAAW,uBAAuB,CAAC,MAAM,SAAS,MAAM,GAAG,MAAM;IACrE,uEAAuE;IACvE,QAAQ,CAAC,qBAAqB,CAAC,EAAE,yCAAyC,CAAA;IAE1E,yFAAyF;IACzF,QAAQ,CAAC,UAAU,CAAC,EAAE,oCAAoC,CAAA;IAE1D,wDAAwD;IACxD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAE3B,uEAAuE;IACvE,QAAQ,CAAC,2BAA2B,CAAC,EAAE,MAAM,CAAA;IAE7C,wEAAwE;IACxE,QAAQ,CAAC,4BAA4B,CAAC,EAAE,MAAM,CAAA;IAE9C,yEAAyE;IACzE,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAEvC,yEAAyE;IACzE,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAEvC,qEAAqE;IACrE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAElC,qEAAqE;IACrE,QAAQ,CAAC,eAAe,EAAE,2BAA2B,CAAA;IAErD,wEAAwE;IACxE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAE9B,iFAAiF;IACjF,QAAQ,CAAC,YAAY,EAAE,wBAAwB,CAAA;IAE/C,8DAA8D;IAC9D,QAAQ,CAAC,kBAAkB,EAAE,8BAA8B,CAAA;IAE3D,sFAAsF;IACtF,QAAQ,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,+BAA+B,CAAC,CAAC,CAAA;IAEnF,qFAAqF;IACrF,QAAQ,CAAC,MAAM,EAAE,4BAA4B,CAAA;IAE7C,qEAAqE;IACrE,QAAQ,CAAC,SAAS,EAAE,mBAAmB,GAAG,IAAI,CAAA;IAE9C,iFAAiF;IACjF,QAAQ,CAAC,OAAO,EAAE,yBAAyB,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;IAE1D,0EAA0E;IAC1E,QAAQ,CAAC,gBAAgB,CAAC,EAAE,sCAAsC,CAAA;IAElE,oEAAoE;IACpE,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAA;CAC9B;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,SAAS,MAAM,GAAG,MAAM,EAAE,EACjE,qBAAqB,EACrB,UAAU,EACV,SAAS,EACT,2BAA2B,EAC3B,4BAA4B,EAC5B,qBAAqB,EACrB,qBAAqB,EACrB,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACd,MAAM,EACN,SAAS,EACT,gBAAgB,EAChB,OAAO,EACP,IAAI,GACL,EAAE,uBAAuB,CAAC,MAAM,CAAC,kDA4DjC"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { createPresentationProjectionDiagnostic, createRelationQueryInputFormTarget, findPresentationInputForm, } from '@cohesivesystems/presentation-core';
|
|
3
|
+
import { useMemo } from 'react';
|
|
4
|
+
import { useRegisterPresentationProjectionDiagnostics } from '@cohesivesystems/presentation-react';
|
|
5
|
+
import { ProjectedInputForm, } from './projected-input-form.js';
|
|
6
|
+
import { ProjectedStatusBlock } from './projected-activity-state.js';
|
|
7
|
+
/**
|
|
8
|
+
* Projects a relation-query specialization by delegating the interaction surface
|
|
9
|
+
* to the generic input-form renderer.
|
|
10
|
+
*/
|
|
11
|
+
export function ProjectedQueryForm({ choiceToggleClassName, choiceTone, className, chromeAfterContentClassName, chromeBeforeContentClassName, chromeFooterClassName, chromeHeaderClassName, componentSet, componentSystem, contentClassName, dataSourceResolver, designSystem, fieldRenderers, module, queryForm, renderChromeSlot, runtime, view, }) {
|
|
12
|
+
const inputForm = queryForm
|
|
13
|
+
? findPresentationInputForm(module, queryForm.FormId)
|
|
14
|
+
: null;
|
|
15
|
+
const bindingDiagnosticsSource = `projected-query-form-binding:${view.Id}:${queryForm?.Id ?? 'missing'}`;
|
|
16
|
+
const bindingDiagnostics = useMemo(() => createQueryFormBindingDiagnostics({
|
|
17
|
+
inputForm,
|
|
18
|
+
queryForm,
|
|
19
|
+
source: bindingDiagnosticsSource,
|
|
20
|
+
view,
|
|
21
|
+
}), [bindingDiagnosticsSource, inputForm, queryForm, view]);
|
|
22
|
+
useRegisterPresentationProjectionDiagnostics(bindingDiagnosticsSource, bindingDiagnostics);
|
|
23
|
+
if (!queryForm) {
|
|
24
|
+
return _jsx(ProjectedStatusBlock, { label: `Presentation view '${view.Name}' has no query form binding.` });
|
|
25
|
+
}
|
|
26
|
+
if (!inputForm) {
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
if (!runtime) {
|
|
30
|
+
return _jsx(ProjectedStatusBlock, { label: `Query form '${inputForm.Name}' has no runtime binding.` });
|
|
31
|
+
}
|
|
32
|
+
return (_jsx(ProjectedInputForm, { choiceToggleClassName: choiceToggleClassName, choiceTone: choiceTone, className: className, chromeAfterContentClassName: chromeAfterContentClassName, chromeBeforeContentClassName: chromeBeforeContentClassName, chromeFooterClassName: chromeFooterClassName, chromeHeaderClassName: chromeHeaderClassName, componentSystem: componentSystem, componentSet: componentSet, contentClassName: contentClassName, dataSourceResolver: dataSourceResolver, designSystem: designSystem, fieldRenderers: fieldRenderers, inputForm: inputForm, module: module, renderChromeSlot: renderChromeSlot, runtime: createQueryInputFormRuntime(runtime, queryForm), target: createRelationQueryInputFormTarget({
|
|
33
|
+
dataSourceResolver,
|
|
34
|
+
inputForm,
|
|
35
|
+
queryForm,
|
|
36
|
+
view,
|
|
37
|
+
}), view: view }));
|
|
38
|
+
}
|
|
39
|
+
function createQueryFormBindingDiagnostics({ inputForm, queryForm, source, view, }) {
|
|
40
|
+
if (!queryForm || inputForm) {
|
|
41
|
+
return [];
|
|
42
|
+
}
|
|
43
|
+
return [
|
|
44
|
+
createPresentationProjectionDiagnostic({
|
|
45
|
+
category: 'missing-definition',
|
|
46
|
+
details: {
|
|
47
|
+
formId: queryForm.FormId,
|
|
48
|
+
queryFormId: queryForm.Id,
|
|
49
|
+
viewId: view.Id,
|
|
50
|
+
},
|
|
51
|
+
id: `query-form.${queryForm.Id}.input-form.${queryForm.FormId}.missing-definition`,
|
|
52
|
+
interpretation: {
|
|
53
|
+
status: 'unbound',
|
|
54
|
+
target: 'query-form-input-form-definition',
|
|
55
|
+
},
|
|
56
|
+
message: `Query form '${queryForm.Id}' has no input form '${queryForm.FormId}'.`,
|
|
57
|
+
severity: 'error',
|
|
58
|
+
source,
|
|
59
|
+
subject: {
|
|
60
|
+
id: queryForm.Id,
|
|
61
|
+
kind: 'query-form',
|
|
62
|
+
name: queryForm.Id,
|
|
63
|
+
},
|
|
64
|
+
suggestedNextStep: `Define input form '${queryForm.FormId}' or update query form '${queryForm.Id}' to reference an existing input form.`,
|
|
65
|
+
}),
|
|
66
|
+
];
|
|
67
|
+
}
|
|
68
|
+
function createQueryInputFormRuntime(runtime, queryForm) {
|
|
69
|
+
return {
|
|
70
|
+
invokeAction: ({ choiceValuesByFieldId, inputForm, placement, target, value }) => {
|
|
71
|
+
const queryContext = {
|
|
72
|
+
choiceValuesByFieldId,
|
|
73
|
+
inputForm,
|
|
74
|
+
queryForm,
|
|
75
|
+
stateId: target.stateId,
|
|
76
|
+
value,
|
|
77
|
+
};
|
|
78
|
+
if (isResetAction(placement.ActionId)) {
|
|
79
|
+
runtime.reset(queryContext);
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
runtime.apply(queryContext);
|
|
83
|
+
},
|
|
84
|
+
setValue: (update, context) => runtime.setValue(update, context ? createQueryFormValueChangeContext(queryForm, context) : undefined),
|
|
85
|
+
value: runtime.value,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
function createQueryFormValueChangeContext(queryForm, context) {
|
|
89
|
+
return {
|
|
90
|
+
choiceValuesByFieldId: context.choiceValuesByFieldId,
|
|
91
|
+
inputForm: context.inputForm,
|
|
92
|
+
queryForm,
|
|
93
|
+
stateId: context.target.stateId,
|
|
94
|
+
value: context.value,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
function isResetAction(actionId) {
|
|
98
|
+
return actionId.toLocaleLowerCase().includes('reset');
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=projected-query-form.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projected-query-form.js","sourceRoot":"","sources":["../src/projected-query-form.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import { type FieldPresentationDefinition, type PresentationHrefNavigator, type PresentationNavigationHrefFactory } from '@cohesivesystems/presentation-core';
|
|
3
|
+
import type { PresentationShadcnComponentSystem as PresentationComponentSystem } from './presentation-shadcn-component-system.js';
|
|
4
|
+
export interface ProjectedRecordFieldRenderContext<TData extends object> {
|
|
5
|
+
readonly field: FieldPresentationDefinition;
|
|
6
|
+
readonly record: TData;
|
|
7
|
+
readonly value: unknown;
|
|
8
|
+
}
|
|
9
|
+
export interface ProjectedRecordDetailsProps<TData extends object> {
|
|
10
|
+
readonly componentSystem: PresentationComponentSystem;
|
|
11
|
+
readonly createHref?: PresentationNavigationHrefFactory;
|
|
12
|
+
readonly data: TData;
|
|
13
|
+
readonly emptyMessage?: string;
|
|
14
|
+
readonly fieldRenderers?: Record<string, (context: ProjectedRecordFieldRenderContext<TData>) => ReactNode>;
|
|
15
|
+
readonly hiddenFieldLabels?: readonly string[];
|
|
16
|
+
readonly navigateHref?: PresentationHrefNavigator;
|
|
17
|
+
readonly viewId: string;
|
|
18
|
+
}
|
|
19
|
+
export declare function ProjectedRecordDetails<TData extends object>({ componentSystem, createHref: createHrefOverride, data, emptyMessage, fieldRenderers, hiddenFieldLabels, navigateHref: navigateHrefOverride, viewId, }: ProjectedRecordDetailsProps<TData>): import("react/jsx-runtime").JSX.Element;
|
|
20
|
+
//# sourceMappingURL=projected-record-details.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projected-record-details.d.ts","sourceRoot":"","sources":["../src/projected-record-details.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,OAAO,EAKL,KAAK,2BAA2B,EAChC,KAAK,yBAAyB,EAC9B,KAAK,iCAAiC,EAEvC,MAAM,oCAAoC,CAAA;AAK3C,OAAO,KAAK,EACV,iCAAiC,IAAI,2BAA2B,EACjE,MAAM,wCAAwC,CAAA;AAK/C,MAAM,WAAW,iCAAiC,CAAC,KAAK,SAAS,MAAM;IACrE,QAAQ,CAAC,KAAK,EAAE,2BAA2B,CAAA;IAC3C,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAA;IACtB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CACxB;AAED,MAAM,WAAW,2BAA2B,CAAC,KAAK,SAAS,MAAM;IAC/D,QAAQ,CAAC,eAAe,EAAE,2BAA2B,CAAA;IACrD,QAAQ,CAAC,UAAU,CAAC,EAAE,iCAAiC,CAAA;IACvD,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAA;IACpB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAC9B,MAAM,EACN,CAAC,OAAO,EAAE,iCAAiC,CAAC,KAAK,CAAC,KAAK,SAAS,CACjE,CAAA;IACD,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC9C,QAAQ,CAAC,YAAY,CAAC,EAAE,yBAAyB,CAAA;IACjD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB;AAED,wBAAgB,sBAAsB,CAAC,KAAK,SAAS,MAAM,EAAE,EAC3D,eAAe,EACf,UAAU,EAAE,kBAAkB,EAC9B,IAAI,EACJ,YAA0C,EAC1C,cAAc,EACd,iBAAsB,EACtB,YAAY,EAAE,oBAAoB,EAClC,MAAM,GACP,EAAE,2BAA2B,CAAC,KAAK,CAAC,2CAmDpC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import {} from 'react';
|
|
3
|
+
import { findPresentationField, findPresentationView, getPresentationViewProjectedFieldIds, readObjectPath, } from '@cohesivesystems/presentation-core';
|
|
4
|
+
import { usePresentationModule, usePresentationNavigationRuntime, } from '@cohesivesystems/presentation-react';
|
|
5
|
+
import { renderProjectedFieldValue, } from './projected-field-value-rendering.js';
|
|
6
|
+
export function ProjectedRecordDetails({ componentSystem, createHref: createHrefOverride, data, emptyMessage = 'No details are available.', fieldRenderers, hiddenFieldLabels = [], navigateHref: navigateHrefOverride, viewId, }) {
|
|
7
|
+
const module = usePresentationModule();
|
|
8
|
+
const navigation = usePresentationNavigationRuntime();
|
|
9
|
+
const createHref = createHrefOverride ?? navigation.createHref;
|
|
10
|
+
const navigateHref = navigateHrefOverride ?? navigation.navigateHref;
|
|
11
|
+
const view = findPresentationView(module, viewId);
|
|
12
|
+
const fields = (view ? getPresentationViewProjectedFieldIds(view) : []).flatMap((fieldId) => {
|
|
13
|
+
const field = findPresentationField(module, fieldId);
|
|
14
|
+
return field ? [field] : [];
|
|
15
|
+
});
|
|
16
|
+
const RecordDetailEmptyState = componentSystem.records.RecordDetailEmptyState;
|
|
17
|
+
const RecordDetailField = componentSystem.records.RecordDetailField;
|
|
18
|
+
const RecordDetails = componentSystem.records.RecordDetails;
|
|
19
|
+
if (!module || !view || fields.length === 0) {
|
|
20
|
+
return (_jsx(RecordDetailEmptyState, { label: emptyMessage, viewId: viewId }));
|
|
21
|
+
}
|
|
22
|
+
return (_jsx(RecordDetails, { viewId: viewId, children: fields.map((field) => {
|
|
23
|
+
const value = readProjectedValue(data, field.Field);
|
|
24
|
+
const renderer = fieldRenderers?.[field.Id] ?? fieldRenderers?.[field.Field];
|
|
25
|
+
const hideLabel = isFieldLabelHidden(field, hiddenFieldLabels);
|
|
26
|
+
const renderedValue = renderer
|
|
27
|
+
? renderer({ field, record: data, value })
|
|
28
|
+
: renderProjectedFieldValue({
|
|
29
|
+
componentSystem,
|
|
30
|
+
createHref,
|
|
31
|
+
emptyValueFallback: _jsx("span", { className: "text-slate-400", children: "n/a" }),
|
|
32
|
+
field,
|
|
33
|
+
module,
|
|
34
|
+
navigateHref,
|
|
35
|
+
resource: data,
|
|
36
|
+
value,
|
|
37
|
+
});
|
|
38
|
+
return (_jsx(RecordDetailField, { fieldId: field.Id, hideLabel: hideLabel, label: field.Label, value: renderedValue }, field.Id));
|
|
39
|
+
}) }));
|
|
40
|
+
}
|
|
41
|
+
function isFieldLabelHidden(field, hiddenFieldLabels) {
|
|
42
|
+
return hiddenFieldLabels.includes(field.Id) || hiddenFieldLabels.includes(field.Field);
|
|
43
|
+
}
|
|
44
|
+
function readProjectedValue(row, fieldPath) {
|
|
45
|
+
const exactValue = readObjectPath(row, fieldPath);
|
|
46
|
+
if (exactValue !== undefined) {
|
|
47
|
+
return exactValue;
|
|
48
|
+
}
|
|
49
|
+
const fieldName = fieldPath.split('.').at(-1) ?? fieldPath;
|
|
50
|
+
return readObjectProperty(row, fieldName);
|
|
51
|
+
}
|
|
52
|
+
function readObjectProperty(row, propertyName) {
|
|
53
|
+
const record = row;
|
|
54
|
+
if (Object.prototype.hasOwnProperty.call(record, propertyName)) {
|
|
55
|
+
return record[propertyName];
|
|
56
|
+
}
|
|
57
|
+
const match = Object.keys(record).find((candidate) => candidate.toLocaleLowerCase() === propertyName.toLocaleLowerCase());
|
|
58
|
+
return match ? record[match] : undefined;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=projected-record-details.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projected-record-details.js","sourceRoot":"","sources":["../src/projected-record-details.tsx"],"names":[],"mappings":"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"}
|