@cratis/scene.react 4.29.0 → 4.31.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/core/CoreToolbar.tsx +37 -6
- package/core/coreComponentMetadata.ts +1 -0
- package/core/coreComponents.ts +2 -0
- package/core/coreDescriptors.ts +13 -0
- package/core/corePackage.ts +1 -0
- package/dist/cjs/core/CoreToolbar.js +44 -4
- package/dist/cjs/core/CoreToolbar.js.map +1 -1
- package/dist/cjs/core/coreComponentMetadata.js +6 -0
- package/dist/cjs/core/coreComponentMetadata.js.map +1 -1
- package/dist/cjs/core/coreComponents.js +3 -1
- package/dist/cjs/core/coreComponents.js.map +1 -1
- package/dist/cjs/core/coreDescriptors.js +27 -0
- package/dist/cjs/core/coreDescriptors.js.map +1 -1
- package/dist/cjs/core/corePackage.js +2 -1
- package/dist/cjs/core/corePackage.js.map +1 -1
- package/dist/cjs/index.js +20 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/navigation/SceneNavigationContext.js.map +1 -1
- package/dist/cjs/navigation/SceneNavigationHost.js +10 -5
- package/dist/cjs/navigation/SceneNavigationHost.js.map +1 -1
- package/dist/cjs/navigation/useSceneHistoryNavigation.js +3 -1
- package/dist/cjs/navigation/useSceneHistoryNavigation.js.map +1 -1
- package/dist/cjs/slices/CoreSliceDialog.js +21 -0
- package/dist/cjs/slices/CoreSliceDialog.js.map +1 -0
- package/dist/cjs/slices/SliceCommandFieldsContext.js +22 -0
- package/dist/cjs/slices/SliceCommandFieldsContext.js.map +1 -0
- package/dist/cjs/slices/SliceDialogView.js +262 -0
- package/dist/cjs/slices/SliceDialogView.js.map +1 -0
- package/dist/cjs/slices/SliceInvokerContext.js +40 -0
- package/dist/cjs/slices/SliceInvokerContext.js.map +1 -0
- package/dist/cjs/slices/createAnnouncingInvoker.js +27 -0
- package/dist/cjs/slices/createAnnouncingInvoker.js.map +1 -0
- package/dist/cjs/slices/createDryRunInvoker.js +38 -0
- package/dist/cjs/slices/createDryRunInvoker.js.map +1 -0
- package/dist/cjs/slices/sliceDialogDestination.js +41 -0
- package/dist/cjs/slices/sliceDialogDestination.js.map +1 -0
- package/dist/esm/core/CoreToolbar.d.ts.map +1 -1
- package/dist/esm/core/CoreToolbar.js +47 -7
- package/dist/esm/core/CoreToolbar.js.map +1 -1
- package/dist/esm/core/coreComponentMetadata.d.ts.map +1 -1
- package/dist/esm/core/coreComponentMetadata.js +6 -0
- package/dist/esm/core/coreComponentMetadata.js.map +1 -1
- package/dist/esm/core/coreComponents.d.ts.map +1 -1
- package/dist/esm/core/coreComponents.js +3 -1
- package/dist/esm/core/coreComponents.js.map +1 -1
- package/dist/esm/core/coreDescriptors.d.ts.map +1 -1
- package/dist/esm/core/coreDescriptors.js +27 -0
- package/dist/esm/core/coreDescriptors.js.map +1 -1
- package/dist/esm/core/corePackage.d.ts.map +1 -1
- package/dist/esm/core/corePackage.js +2 -1
- package/dist/esm/core/corePackage.js.map +1 -1
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +7 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/navigation/SceneNavigationContext.d.ts +1 -0
- package/dist/esm/navigation/SceneNavigationContext.d.ts.map +1 -1
- package/dist/esm/navigation/SceneNavigationContext.js.map +1 -1
- package/dist/esm/navigation/SceneNavigationHost.d.ts.map +1 -1
- package/dist/esm/navigation/SceneNavigationHost.js +10 -5
- package/dist/esm/navigation/SceneNavigationHost.js.map +1 -1
- package/dist/esm/navigation/SceneNavigationState.d.ts +1 -0
- package/dist/esm/navigation/SceneNavigationState.d.ts.map +1 -1
- package/dist/esm/navigation/useSceneHistoryNavigation.d.ts.map +1 -1
- package/dist/esm/navigation/useSceneHistoryNavigation.js +3 -1
- package/dist/esm/navigation/useSceneHistoryNavigation.js.map +1 -1
- package/dist/esm/slices/CoreSliceDialog.d.ts +3 -0
- package/dist/esm/slices/CoreSliceDialog.d.ts.map +1 -0
- package/dist/esm/slices/CoreSliceDialog.js +19 -0
- package/dist/esm/slices/CoreSliceDialog.js.map +1 -0
- package/dist/esm/slices/InvocationResult.d.ts +10 -0
- package/dist/esm/slices/InvocationResult.d.ts.map +1 -0
- package/dist/esm/slices/InvocationResult.js +2 -0
- package/dist/esm/slices/InvocationResult.js.map +1 -0
- package/dist/esm/slices/InvocationValidationError.d.ts +5 -0
- package/dist/esm/slices/InvocationValidationError.d.ts.map +1 -0
- package/dist/esm/slices/InvocationValidationError.js +2 -0
- package/dist/esm/slices/InvocationValidationError.js.map +1 -0
- package/dist/esm/slices/SliceCommandField.d.ts +8 -0
- package/dist/esm/slices/SliceCommandField.d.ts.map +1 -0
- package/dist/esm/slices/SliceCommandField.js +2 -0
- package/dist/esm/slices/SliceCommandField.js.map +1 -0
- package/dist/esm/slices/SliceCommandFieldsContext.d.ts +10 -0
- package/dist/esm/slices/SliceCommandFieldsContext.d.ts.map +1 -0
- package/dist/esm/slices/SliceCommandFieldsContext.js +19 -0
- package/dist/esm/slices/SliceCommandFieldsContext.js.map +1 -0
- package/dist/esm/slices/SliceDialogView.d.ts +12 -0
- package/dist/esm/slices/SliceDialogView.d.ts.map +1 -0
- package/dist/esm/slices/SliceDialogView.js +258 -0
- package/dist/esm/slices/SliceDialogView.js.map +1 -0
- package/dist/esm/slices/SliceInvoker.d.ts +5 -0
- package/dist/esm/slices/SliceInvoker.d.ts.map +1 -0
- package/dist/esm/slices/SliceInvoker.js +2 -0
- package/dist/esm/slices/SliceInvoker.js.map +1 -0
- package/dist/esm/slices/SliceInvokerContext.d.ts +11 -0
- package/dist/esm/slices/SliceInvokerContext.d.ts.map +1 -0
- package/dist/esm/slices/SliceInvokerContext.js +36 -0
- package/dist/esm/slices/SliceInvokerContext.js.map +1 -0
- package/dist/esm/slices/createAnnouncingInvoker.d.ts +3 -0
- package/dist/esm/slices/createAnnouncingInvoker.d.ts.map +1 -0
- package/dist/esm/slices/createAnnouncingInvoker.js +25 -0
- package/dist/esm/slices/createAnnouncingInvoker.js.map +1 -0
- package/dist/esm/slices/createDryRunInvoker.d.ts +15 -0
- package/dist/esm/slices/createDryRunInvoker.d.ts.map +1 -0
- package/dist/esm/slices/createDryRunInvoker.js +36 -0
- package/dist/esm/slices/createDryRunInvoker.js.map +1 -0
- package/dist/esm/slices/index.d.ts +12 -0
- package/dist/esm/slices/index.d.ts.map +1 -0
- package/dist/esm/slices/index.js +12 -0
- package/dist/esm/slices/index.js.map +1 -0
- package/dist/esm/slices/sliceDialogDestination.d.ts +10 -0
- package/dist/esm/slices/sliceDialogDestination.d.ts.map +1 -0
- package/dist/esm/slices/sliceDialogDestination.js +38 -0
- package/dist/esm/slices/sliceDialogDestination.js.map +1 -0
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/index.ts +1 -0
- package/navigation/SceneNavigationContext.tsx +3 -0
- package/navigation/SceneNavigationHost.tsx +8 -3
- package/navigation/SceneNavigationState.ts +3 -0
- package/navigation/useSceneHistoryNavigation.ts +2 -1
- package/package.json +5 -5
- package/slices/CoreSliceDialog.tsx +14 -0
- package/slices/InvocationResult.ts +27 -0
- package/slices/InvocationValidationError.ts +13 -0
- package/slices/SliceCommandField.ts +22 -0
- package/slices/SliceCommandFieldsContext.tsx +28 -0
- package/slices/SliceDialogView.tsx +187 -0
- package/slices/SliceInvoker.ts +19 -0
- package/slices/SliceInvokerContext.tsx +47 -0
- package/slices/createAnnouncingInvoker.ts +17 -0
- package/slices/createDryRunInvoker.ts +43 -0
- package/slices/index.ts +14 -0
- package/slices/sliceDialogDestination.ts +40 -0
package/core/CoreToolbar.tsx
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
// Copyright (c) Cratis. All rights reserved.
|
|
2
2
|
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
3
3
|
|
|
4
|
-
import { useContext } from 'react';
|
|
5
|
-
import { BindingScope, resolveBindingExpression } from '@cratis/scene.engine';
|
|
6
|
-
import { BindingExpression, BindingSourceKind, DestinationKind, DestinationReference } from '@cratis/scene.model';
|
|
4
|
+
import { useContext, useMemo } from 'react';
|
|
5
|
+
import { ApplicationStructureIndex, BindingScope, resolveBindingExpression, resolveToolbarButton, toolbarButtonFromItem } from '@cratis/scene.engine';
|
|
6
|
+
import { BindingExpression, BindingSourceKind, DestinationKind, DestinationReference, ToolbarEmphasis } from '@cratis/scene.model';
|
|
7
7
|
import { RegisteredComponentProps, useRenderBindingScope } from '../renderer';
|
|
8
8
|
import { SceneNavigationContextInternal } from '../navigation/SceneNavigationContext';
|
|
9
|
+
import { useSceneNavigationModel } from '../navigation/region/SceneNavigationModelContext';
|
|
10
|
+
import { sliceDialogDestination } from '../slices/sliceDialogDestination';
|
|
11
|
+
import { useWarnEmptySlices } from '../slices/SliceInvokerContext';
|
|
9
12
|
|
|
10
13
|
/** How a toolbar item shows its icon and label - the `mode` an item's presentation hint can name. */
|
|
11
14
|
export type ToolbarItemMode = 'icon' | 'text' | 'both';
|
|
@@ -54,6 +57,12 @@ function withResolvedParameters(destination: DestinationReference, scope: Bindin
|
|
|
54
57
|
};
|
|
55
58
|
}
|
|
56
59
|
|
|
60
|
+
/** How prominent the item is: its authored emphasis, else `secondary`. */
|
|
61
|
+
function emphasisOf(properties: Record<string, unknown>): ToolbarEmphasis {
|
|
62
|
+
const emphasis = textProperty(properties, 'emphasis')?.toLowerCase();
|
|
63
|
+
return emphasis === ToolbarEmphasis.Primary || emphasis === ToolbarEmphasis.Quiet ? emphasis : ToolbarEmphasis.Secondary;
|
|
64
|
+
}
|
|
65
|
+
|
|
57
66
|
/** The mode the item's authored presentation asks for; anything it does not name shows both. */
|
|
58
67
|
export function toolbarItemMode(presentation: Record<string, unknown>): ToolbarItemMode {
|
|
59
68
|
const mode = presentation.mode;
|
|
@@ -111,14 +120,30 @@ export function CoreToolbarItem({ element }: RegisteredComponentProps) {
|
|
|
111
120
|
const presentation = recordProperty(element.properties, 'presentation');
|
|
112
121
|
const mode = toolbarItemMode(presentation);
|
|
113
122
|
const destination = toolbarItemDestination(element.properties);
|
|
123
|
+
const model = useSceneNavigationModel();
|
|
124
|
+
const warnEmptySlices = useWarnEmptySlices();
|
|
125
|
+
const button = useMemo(() => toolbarButtonFromItem(element.id, element.properties), [element.id, element.properties]);
|
|
126
|
+
const resolved = useMemo(() => {
|
|
127
|
+
if (!button || !model) return undefined;
|
|
128
|
+
const index = model.structure instanceof ApplicationStructureIndex ? model.structure : new ApplicationStructureIndex(model.structure);
|
|
129
|
+
return resolveToolbarButton(index, button);
|
|
130
|
+
}, [button, model]);
|
|
131
|
+
const dialog = resolved ? sliceDialogDestination(resolved) : undefined;
|
|
132
|
+
const emphasis = resolved?.emphasis ?? button?.emphasis ?? emphasisOf(element.properties);
|
|
133
|
+
const empty = button !== undefined && button.slice === undefined && button.target === undefined;
|
|
114
134
|
const attributes = Object.fromEntries(Object.entries(presentation)
|
|
115
135
|
.filter(([key]) => /^[A-Za-z][A-Za-z0-9-]*$/.test(key))
|
|
116
136
|
.map(([key, value]) => [`data-scene-presentation-${key.toLowerCase()}`, String(value)]));
|
|
117
137
|
|
|
118
138
|
const activate = () => {
|
|
119
|
-
if (
|
|
139
|
+
if (dialog && navigation) {
|
|
140
|
+
navigation.navigate(dialog);
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
if (kind === 'action' || button !== undefined) {
|
|
120
145
|
const args = resolveParameters(recordProperty(element.properties, 'parameters'), scope);
|
|
121
|
-
globalThis.dispatchEvent(new CustomEvent('cratis.scene.command', { detail: { command: target, element, arguments: args } }));
|
|
146
|
+
globalThis.dispatchEvent(new CustomEvent('cratis.scene.command', { detail: { command: target || button?.slice || '', element, arguments: args } }));
|
|
122
147
|
return;
|
|
123
148
|
}
|
|
124
149
|
|
|
@@ -142,12 +167,18 @@ export function CoreToolbarItem({ element }: RegisteredComponentProps) {
|
|
|
142
167
|
data-scene-mode={mode}
|
|
143
168
|
aria-label={mode === 'icon' ? label : undefined}
|
|
144
169
|
title={mode === 'icon' ? label : undefined}
|
|
145
|
-
disabled={kind !== 'action' && !destination}
|
|
170
|
+
disabled={kind !== 'action' && button === undefined && !destination}
|
|
171
|
+
aria-haspopup={dialog ? 'dialog' : undefined}
|
|
172
|
+
data-scene-emphasis={emphasis}
|
|
173
|
+
data-scene-slice={resolved?.slice ?? button?.slice}
|
|
174
|
+
data-scene-warning={warnEmptySlices && empty ? 'emptySlice' : undefined}
|
|
175
|
+
className={`scene-toolbar-button scene-toolbar-button-${emphasis}`}
|
|
146
176
|
onClick={activate}
|
|
147
177
|
{...attributes}
|
|
148
178
|
>
|
|
149
179
|
{mode !== 'text' && icon && <span aria-hidden='true' data-scene-icon-name={icon} />}
|
|
150
180
|
{mode !== 'icon' && label}
|
|
181
|
+
{warnEmptySlices && empty && <span role='img' aria-label='No slice is linked to this button' title='No slice is linked to this button' data-scene-badge='warning'>!</span>}
|
|
151
182
|
</button>
|
|
152
183
|
);
|
|
153
184
|
}
|
|
@@ -23,5 +23,6 @@ export const coreComponentMetadata: Record<string, ComponentMetadata> = {
|
|
|
23
23
|
navigationBar: m('Navigation bar', ComponentCategory.Navigation, 'navigation', ['menu', 'nav', 'links'], undefined, navigationDesignMode({ itemsPath: 'items' })),
|
|
24
24
|
outlet: m('Outlet', ComponentCategory.Layout, 'panel-right', ['region', 'slot', 'side panel']),
|
|
25
25
|
toolbar: m('Toolbar', ComponentCategory.Actions, 'wrench', ['actions', 'buttons', 'command bar'], 'Tl', toolbarDesignMode()),
|
|
26
|
+
sliceDialog: m('Slice dialog', ComponentCategory.Overlay, 'square-pen', ['task dialog', 'state change', 'form', 'command'], undefined),
|
|
26
27
|
toolbarItem: m('Toolbar item', ComponentCategory.Actions, 'mouse-pointer-click', ['button', 'action']),
|
|
27
28
|
};
|
package/core/coreComponents.ts
CHANGED
|
@@ -9,6 +9,7 @@ import { CoreCard } from './CoreCard';
|
|
|
9
9
|
import { CoreNavigationBar } from './CoreNavigationBar';
|
|
10
10
|
import { CoreToolbar, CoreToolbarItem } from './CoreToolbar';
|
|
11
11
|
import { CoreOutlet } from '../navigation/CoreOutlet';
|
|
12
|
+
import { CoreSliceDialog } from '../slices/CoreSliceDialog';
|
|
12
13
|
import {
|
|
13
14
|
CoreAction,
|
|
14
15
|
CoreCode,
|
|
@@ -46,4 +47,5 @@ export const coreComponents: ComponentRegistry = {
|
|
|
46
47
|
[componentRegistryKey('core', 'outlet')]: CoreOutlet,
|
|
47
48
|
[componentRegistryKey('core', 'toolbar')]: CoreToolbar,
|
|
48
49
|
[componentRegistryKey('core', 'toolbarItem')]: CoreToolbarItem,
|
|
50
|
+
[componentRegistryKey('core', 'sliceDialog')]: CoreSliceDialog,
|
|
49
51
|
};
|
package/core/coreDescriptors.ts
CHANGED
|
@@ -73,6 +73,19 @@ const describedCore: ComponentDescriptor[] = [
|
|
|
73
73
|
},
|
|
74
74
|
],
|
|
75
75
|
},
|
|
76
|
+
{
|
|
77
|
+
component: key('sliceDialog'),
|
|
78
|
+
displayName: 'Slice dialog',
|
|
79
|
+
description: 'The task dialog of a state change slice: the form of its command with Cancel and a submit button. Opened from a toolbar button it takes the slice, command and title from the button; set them to fix the dialog to one slice.',
|
|
80
|
+
properties: [
|
|
81
|
+
{
|
|
82
|
+
path: 'slice', label: 'Slice', group: 'Behavior', valueType: PropertyValueType.String,
|
|
83
|
+
editorKind: PropertyEditorKind.Slice, editorOptions: { kinds: ['StateChange'] },
|
|
84
|
+
description: 'The State Change slice the dialog submits; empty to take it from the toolbar button that opens the dialog.',
|
|
85
|
+
},
|
|
86
|
+
{ path: 'title', label: 'Title', group: 'Content', valueType: PropertyValueType.String, description: 'The dialog title and submit label; empty to take the toolbar button title.' },
|
|
87
|
+
],
|
|
88
|
+
},
|
|
76
89
|
{
|
|
77
90
|
component: key('column'),
|
|
78
91
|
displayName: 'Table column',
|
package/core/corePackage.ts
CHANGED
|
@@ -8,6 +8,9 @@ var RenderBindingScopeContext = require('../renderer/RenderBindingScopeContext.j
|
|
|
8
8
|
require('../interactions/useInteractions.js');
|
|
9
9
|
require('../interactions/NotificationHost.js');
|
|
10
10
|
var SceneNavigationContext = require('../navigation/SceneNavigationContext.js');
|
|
11
|
+
var SceneNavigationModelContext = require('../navigation/region/SceneNavigationModelContext.js');
|
|
12
|
+
var sliceDialogDestination = require('../slices/sliceDialogDestination.js');
|
|
13
|
+
var SliceInvokerContext = require('../slices/SliceInvokerContext.js');
|
|
11
14
|
|
|
12
15
|
function textProperty(properties, name) {
|
|
13
16
|
return typeof properties[name] === 'string' ? properties[name] : undefined;
|
|
@@ -59,6 +62,10 @@ function resolveParameters(parameters, scope) {
|
|
|
59
62
|
]))
|
|
60
63
|
};
|
|
61
64
|
}
|
|
65
|
+
/** How prominent the item is: its authored emphasis, else `secondary`. */ function emphasisOf(properties) {
|
|
66
|
+
const emphasis = textProperty(properties, 'emphasis')?.toLowerCase();
|
|
67
|
+
return emphasis === scene_model.ToolbarEmphasis.Primary || emphasis === scene_model.ToolbarEmphasis.Quiet ? emphasis : scene_model.ToolbarEmphasis.Secondary;
|
|
68
|
+
}
|
|
62
69
|
/** The mode the item's authored presentation asks for; anything it does not name shows both. */ function toolbarItemMode(presentation) {
|
|
63
70
|
const mode = presentation.mode;
|
|
64
71
|
return mode === 'icon' || mode === 'text' ? mode : 'both';
|
|
@@ -124,16 +131,37 @@ function resolveParameters(parameters, scope) {
|
|
|
124
131
|
const presentation = recordProperty(element.properties, 'presentation');
|
|
125
132
|
const mode = toolbarItemMode(presentation);
|
|
126
133
|
const destination = toolbarItemDestination(element.properties);
|
|
134
|
+
const model = SceneNavigationModelContext.useSceneNavigationModel();
|
|
135
|
+
const warnEmptySlices = SliceInvokerContext.useWarnEmptySlices();
|
|
136
|
+
const button = react.useMemo(()=>scene_engine.toolbarButtonFromItem(element.id, element.properties), [
|
|
137
|
+
element.id,
|
|
138
|
+
element.properties
|
|
139
|
+
]);
|
|
140
|
+
const resolved = react.useMemo(()=>{
|
|
141
|
+
if (!button || !model) return undefined;
|
|
142
|
+
const index = model.structure instanceof scene_engine.ApplicationStructureIndex ? model.structure : new scene_engine.ApplicationStructureIndex(model.structure);
|
|
143
|
+
return scene_engine.resolveToolbarButton(index, button);
|
|
144
|
+
}, [
|
|
145
|
+
button,
|
|
146
|
+
model
|
|
147
|
+
]);
|
|
148
|
+
const dialog = resolved ? sliceDialogDestination.sliceDialogDestination(resolved) : undefined;
|
|
149
|
+
const emphasis = resolved?.emphasis ?? button?.emphasis ?? emphasisOf(element.properties);
|
|
150
|
+
const empty = button !== undefined && button.slice === undefined && button.target === undefined;
|
|
127
151
|
const attributes = Object.fromEntries(Object.entries(presentation).filter(([key])=>/^[A-Za-z][A-Za-z0-9-]*$/.test(key)).map(([key, value])=>[
|
|
128
152
|
`data-scene-presentation-${key.toLowerCase()}`,
|
|
129
153
|
String(value)
|
|
130
154
|
]));
|
|
131
155
|
const activate = ()=>{
|
|
132
|
-
if (
|
|
156
|
+
if (dialog && navigation) {
|
|
157
|
+
navigation.navigate(dialog);
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
if (kind === 'action' || button !== undefined) {
|
|
133
161
|
const args = resolveParameters(recordProperty(element.properties, 'parameters'), scope);
|
|
134
162
|
globalThis.dispatchEvent(new CustomEvent('cratis.scene.command', {
|
|
135
163
|
detail: {
|
|
136
|
-
command: target,
|
|
164
|
+
command: target || button?.slice || '',
|
|
137
165
|
element,
|
|
138
166
|
arguments: args
|
|
139
167
|
}
|
|
@@ -163,7 +191,12 @@ function resolveParameters(parameters, scope) {
|
|
|
163
191
|
"data-scene-mode": mode,
|
|
164
192
|
"aria-label": mode === 'icon' ? label : undefined,
|
|
165
193
|
title: mode === 'icon' ? label : undefined,
|
|
166
|
-
disabled: kind !== 'action' && !destination,
|
|
194
|
+
disabled: kind !== 'action' && button === undefined && !destination,
|
|
195
|
+
"aria-haspopup": dialog ? 'dialog' : undefined,
|
|
196
|
+
"data-scene-emphasis": emphasis,
|
|
197
|
+
"data-scene-slice": resolved?.slice ?? button?.slice,
|
|
198
|
+
"data-scene-warning": warnEmptySlices && empty ? 'emptySlice' : undefined,
|
|
199
|
+
className: `scene-toolbar-button scene-toolbar-button-${emphasis}`,
|
|
167
200
|
onClick: activate,
|
|
168
201
|
...attributes,
|
|
169
202
|
children: [
|
|
@@ -171,7 +204,14 @@ function resolveParameters(parameters, scope) {
|
|
|
171
204
|
"aria-hidden": "true",
|
|
172
205
|
"data-scene-icon-name": icon
|
|
173
206
|
}),
|
|
174
|
-
mode !== 'icon' && label
|
|
207
|
+
mode !== 'icon' && label,
|
|
208
|
+
warnEmptySlices && empty && /*#__PURE__*/ jsxRuntime.jsx("span", {
|
|
209
|
+
role: "img",
|
|
210
|
+
"aria-label": "No slice is linked to this button",
|
|
211
|
+
title: "No slice is linked to this button",
|
|
212
|
+
"data-scene-badge": "warning",
|
|
213
|
+
children: "!"
|
|
214
|
+
})
|
|
175
215
|
]
|
|
176
216
|
});
|
|
177
217
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CoreToolbar.js","sources":["../../../core/CoreToolbar.tsx"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { useContext } from 'react';\nimport { BindingScope, resolveBindingExpression } from '@cratis/scene.engine';\nimport { BindingExpression, BindingSourceKind, DestinationKind, DestinationReference } from '@cratis/scene.model';\nimport { RegisteredComponentProps, useRenderBindingScope } from '../renderer';\nimport { SceneNavigationContextInternal } from '../navigation/SceneNavigationContext';\n\n/** How a toolbar item shows its icon and label - the `mode` an item's presentation hint can name. */\nexport type ToolbarItemMode = 'icon' | 'text' | 'both';\n\nfunction textProperty(properties: Record<string, unknown>, name: string): string | undefined {\n return typeof properties[name] === 'string' ? properties[name] : undefined;\n}\n\nfunction recordProperty(properties: Record<string, unknown>, name: string): Record<string, unknown> {\n const value = properties[name];\n return value !== null && typeof value === 'object' && !Array.isArray(value) ? value as Record<string, unknown> : {};\n}\n\nfunction isDestination(value: unknown): value is DestinationReference {\n if (value === null || typeof value !== 'object' || Array.isArray(value)) return false;\n return ['screen', 'module', 'route', 'dialog', 'outlet'].some(key => typeof (value as Record<string, unknown>)[key] === 'string');\n}\n\nfunction isBinding(value: unknown): value is BindingExpression {\n return value !== null && typeof value === 'object' && typeof (value as BindingExpression).path === 'string';\n}\n\nfunction literal(value: unknown): BindingExpression {\n return { kind: BindingSourceKind.Literal, path: '', value } as BindingExpression;\n}\n\nfunction resolveParameters(parameters: Record<string, unknown>, scope: BindingScope): Record<string, unknown> {\n return Object.fromEntries(Object.entries(parameters).map(([name, binding]) =>\n [name, isBinding(binding) ? resolveBindingExpression(binding, scope) : binding]));\n}\n\n/**\n * An authored destination with its route parameters read now, against the scope the item renders in.\n *\n * A navigation host resolves a destination against its own scope, which cannot see what the screen's components\n * publish - a table's selected row, an input's value - so the item resolves them where it is, and hands the host\n * literals. (The renderer leaves a destination's bindings alone, unlike the rest of an element's properties.)\n */\nfunction withResolvedParameters(destination: DestinationReference, scope: BindingScope): DestinationReference {\n const bindings = destination.routeParameterBindings;\n if (!bindings) return destination;\n return {\n ...destination,\n routeParameterBindings: Object.fromEntries(Object.entries(bindings).map(([name, binding]) =>\n [name, literal(resolveBindingExpression(binding, scope))])),\n };\n}\n\n/** The mode the item's authored presentation asks for; anything it does not name shows both. */\nexport function toolbarItemMode(presentation: Record<string, unknown>): ToolbarItemMode {\n const mode = presentation.mode;\n return mode === 'icon' || mode === 'text' ? mode : 'both';\n}\n\n/**\n * Where activating a toolbar item goes.\n *\n * The destination the document authored wins. Without one, a `Navigate` item opens its target screen - its\n * parameters become route parameter bindings - and a `Dialog` item opens its target dialog template.\n */\nexport function toolbarItemDestination(properties: Record<string, unknown>): DestinationReference | undefined {\n if (isDestination(properties.destination)) return properties.destination;\n const kind = textProperty(properties, 'kind')?.toLowerCase();\n const target = textProperty(properties, 'target');\n if (!target) return undefined;\n // The renderer has already read each parameter's binding by the time the item sees it, so a parameter is a value.\n const routeParameterBindings = Object.fromEntries(Object.entries(recordProperty(properties, 'parameters'))\n .map(([name, value]) => [name, literal(value)])) as Record<string, BindingExpression>;\n if (kind === 'navigate') return { screen: target, routeParameterBindings };\n if (kind === 'dialog') return { kind: DestinationKind.Dialog, dialog: target, routeParameterBindings };\n return undefined;\n}\n\n/**\n * The `core:toolbar` component: the items a screen's toolbar groups, in the order they were authored.\n * The items are `core:toolbarItem` elements in its `items` slot.\n */\nexport function CoreToolbar({ element, slots }: RegisteredComponentProps) {\n const name = textProperty(element.properties, 'name');\n return <div data-scene-id={element.id} data-scene-toolbar={name} role='toolbar' aria-label={name}>{slots.items}</div>;\n}\n\n/**\n * The `core:toolbarItem` component: one toolbar entry with a label, an icon, presentation hints and what it does.\n *\n * - An `Action` item announces the command it targets with the host-neutral `cratis.scene.command` event, carrying its\n * parameters resolved against the binding scope.\n * - A `Navigate` or `Dialog` item executes its destination through the enclosing navigation host - a screen in an\n * outlet, a dialog - and, outside one, announces it with the host-neutral `cratis.scene.navigate` event.\n *\n * Presentation: `mode` is `icon`, `text` or `both` (the default); an icon-only item keeps its label as its accessible name.\n * Every presentation hint - `placement`, `density` or whatever a package reads - is also carried on the node as a\n * `data-scene-presentation-<name>` attribute so a theme can style by it.\n */\nexport function CoreToolbarItem({ element }: RegisteredComponentProps) {\n const navigation = useContext(SceneNavigationContextInternal);\n const scope = useRenderBindingScope();\n const name = textProperty(element.properties, 'name') ?? element.id;\n const kind = textProperty(element.properties, 'kind')?.toLowerCase();\n const target = textProperty(element.properties, 'target') ?? '';\n const label = textProperty(element.properties, 'label') ?? name;\n const icon = textProperty(element.properties, 'icon');\n const presentation = recordProperty(element.properties, 'presentation');\n const mode = toolbarItemMode(presentation);\n const destination = toolbarItemDestination(element.properties);\n const attributes = Object.fromEntries(Object.entries(presentation)\n .filter(([key]) => /^[A-Za-z][A-Za-z0-9-]*$/.test(key))\n .map(([key, value]) => [`data-scene-presentation-${key.toLowerCase()}`, String(value)]));\n\n const activate = () => {\n if (kind === 'action') {\n const args = resolveParameters(recordProperty(element.properties, 'parameters'), scope);\n globalThis.dispatchEvent(new CustomEvent('cratis.scene.command', { detail: { command: target, element, arguments: args } }));\n return;\n }\n\n if (!destination) return;\n const resolved = withResolvedParameters(destination, scope);\n if (navigation) {\n navigation.navigate(resolved);\n } else {\n globalThis.dispatchEvent(new CustomEvent('cratis.scene.navigate', {\n detail: { targetScreen: destination.screen ?? '', dialog: destination.dialog, destination: resolved, element },\n }));\n }\n };\n\n return (\n <button\n type='button'\n data-scene-id={element.id}\n data-scene-toolbar-item={name}\n data-scene-icon={icon}\n data-scene-mode={mode}\n aria-label={mode === 'icon' ? label : undefined}\n title={mode === 'icon' ? label : undefined}\n disabled={kind !== 'action' && !destination}\n onClick={activate}\n {...attributes}\n >\n {mode !== 'text' && icon && <span aria-hidden='true' data-scene-icon-name={icon} />}\n {mode !== 'icon' && label}\n </button>\n );\n}\n"],"names":["textProperty","properties","name","undefined","recordProperty","value","Array","isArray","isDestination","some","key","isBinding","path","literal","kind","BindingSourceKind","Literal","resolveParameters","parameters","scope","Object","fromEntries","entries","map","binding","resolveBindingExpression","withResolvedParameters","destination","bindings","routeParameterBindings","toolbarItemMode","presentation","mode","toolbarItemDestination","toLowerCase","target","screen","DestinationKind","Dialog","dialog","CoreToolbar","element","slots","_jsx","div","data-scene-id","id","data-scene-toolbar","role","aria-label","items","CoreToolbarItem","navigation","useContext","SceneNavigationContextInternal","useRenderBindingScope","label","icon","attributes","filter","test","String","activate","args","globalThis","dispatchEvent","CustomEvent","detail","command","arguments","resolved","navigate","targetScreen","_jsxs","button","type","data-scene-toolbar-item","data-scene-icon","data-scene-mode","title","disabled","onClick","span","aria-hidden","data-scene-icon-name"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CoreToolbar.js","sources":["../../../core/CoreToolbar.tsx"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { useContext, useMemo } from 'react';\nimport { ApplicationStructureIndex, BindingScope, resolveBindingExpression, resolveToolbarButton, toolbarButtonFromItem } from '@cratis/scene.engine';\nimport { BindingExpression, BindingSourceKind, DestinationKind, DestinationReference, ToolbarEmphasis } from '@cratis/scene.model';\nimport { RegisteredComponentProps, useRenderBindingScope } from '../renderer';\nimport { SceneNavigationContextInternal } from '../navigation/SceneNavigationContext';\nimport { useSceneNavigationModel } from '../navigation/region/SceneNavigationModelContext';\nimport { sliceDialogDestination } from '../slices/sliceDialogDestination';\nimport { useWarnEmptySlices } from '../slices/SliceInvokerContext';\n\n/** How a toolbar item shows its icon and label - the `mode` an item's presentation hint can name. */\nexport type ToolbarItemMode = 'icon' | 'text' | 'both';\n\nfunction textProperty(properties: Record<string, unknown>, name: string): string | undefined {\n return typeof properties[name] === 'string' ? properties[name] : undefined;\n}\n\nfunction recordProperty(properties: Record<string, unknown>, name: string): Record<string, unknown> {\n const value = properties[name];\n return value !== null && typeof value === 'object' && !Array.isArray(value) ? value as Record<string, unknown> : {};\n}\n\nfunction isDestination(value: unknown): value is DestinationReference {\n if (value === null || typeof value !== 'object' || Array.isArray(value)) return false;\n return ['screen', 'module', 'route', 'dialog', 'outlet'].some(key => typeof (value as Record<string, unknown>)[key] === 'string');\n}\n\nfunction isBinding(value: unknown): value is BindingExpression {\n return value !== null && typeof value === 'object' && typeof (value as BindingExpression).path === 'string';\n}\n\nfunction literal(value: unknown): BindingExpression {\n return { kind: BindingSourceKind.Literal, path: '', value } as BindingExpression;\n}\n\nfunction resolveParameters(parameters: Record<string, unknown>, scope: BindingScope): Record<string, unknown> {\n return Object.fromEntries(Object.entries(parameters).map(([name, binding]) =>\n [name, isBinding(binding) ? resolveBindingExpression(binding, scope) : binding]));\n}\n\n/**\n * An authored destination with its route parameters read now, against the scope the item renders in.\n *\n * A navigation host resolves a destination against its own scope, which cannot see what the screen's components\n * publish - a table's selected row, an input's value - so the item resolves them where it is, and hands the host\n * literals. (The renderer leaves a destination's bindings alone, unlike the rest of an element's properties.)\n */\nfunction withResolvedParameters(destination: DestinationReference, scope: BindingScope): DestinationReference {\n const bindings = destination.routeParameterBindings;\n if (!bindings) return destination;\n return {\n ...destination,\n routeParameterBindings: Object.fromEntries(Object.entries(bindings).map(([name, binding]) =>\n [name, literal(resolveBindingExpression(binding, scope))])),\n };\n}\n\n/** How prominent the item is: its authored emphasis, else `secondary`. */\nfunction emphasisOf(properties: Record<string, unknown>): ToolbarEmphasis {\n const emphasis = textProperty(properties, 'emphasis')?.toLowerCase();\n return emphasis === ToolbarEmphasis.Primary || emphasis === ToolbarEmphasis.Quiet ? emphasis : ToolbarEmphasis.Secondary;\n}\n\n/** The mode the item's authored presentation asks for; anything it does not name shows both. */\nexport function toolbarItemMode(presentation: Record<string, unknown>): ToolbarItemMode {\n const mode = presentation.mode;\n return mode === 'icon' || mode === 'text' ? mode : 'both';\n}\n\n/**\n * Where activating a toolbar item goes.\n *\n * The destination the document authored wins. Without one, a `Navigate` item opens its target screen - its\n * parameters become route parameter bindings - and a `Dialog` item opens its target dialog template.\n */\nexport function toolbarItemDestination(properties: Record<string, unknown>): DestinationReference | undefined {\n if (isDestination(properties.destination)) return properties.destination;\n const kind = textProperty(properties, 'kind')?.toLowerCase();\n const target = textProperty(properties, 'target');\n if (!target) return undefined;\n // The renderer has already read each parameter's binding by the time the item sees it, so a parameter is a value.\n const routeParameterBindings = Object.fromEntries(Object.entries(recordProperty(properties, 'parameters'))\n .map(([name, value]) => [name, literal(value)])) as Record<string, BindingExpression>;\n if (kind === 'navigate') return { screen: target, routeParameterBindings };\n if (kind === 'dialog') return { kind: DestinationKind.Dialog, dialog: target, routeParameterBindings };\n return undefined;\n}\n\n/**\n * The `core:toolbar` component: the items a screen's toolbar groups, in the order they were authored.\n * The items are `core:toolbarItem` elements in its `items` slot.\n */\nexport function CoreToolbar({ element, slots }: RegisteredComponentProps) {\n const name = textProperty(element.properties, 'name');\n return <div data-scene-id={element.id} data-scene-toolbar={name} role='toolbar' aria-label={name}>{slots.items}</div>;\n}\n\n/**\n * The `core:toolbarItem` component: one toolbar entry with a label, an icon, presentation hints and what it does.\n *\n * - An `Action` item announces the command it targets with the host-neutral `cratis.scene.command` event, carrying its\n * parameters resolved against the binding scope.\n * - A `Navigate` or `Dialog` item executes its destination through the enclosing navigation host - a screen in an\n * outlet, a dialog - and, outside one, announces it with the host-neutral `cratis.scene.navigate` event.\n *\n * Presentation: `mode` is `icon`, `text` or `both` (the default); an icon-only item keeps its label as its accessible name.\n * Every presentation hint - `placement`, `density` or whatever a package reads - is also carried on the node as a\n * `data-scene-presentation-<name>` attribute so a theme can style by it.\n */\nexport function CoreToolbarItem({ element }: RegisteredComponentProps) {\n const navigation = useContext(SceneNavigationContextInternal);\n const scope = useRenderBindingScope();\n const name = textProperty(element.properties, 'name') ?? element.id;\n const kind = textProperty(element.properties, 'kind')?.toLowerCase();\n const target = textProperty(element.properties, 'target') ?? '';\n const label = textProperty(element.properties, 'label') ?? name;\n const icon = textProperty(element.properties, 'icon');\n const presentation = recordProperty(element.properties, 'presentation');\n const mode = toolbarItemMode(presentation);\n const destination = toolbarItemDestination(element.properties);\n const model = useSceneNavigationModel();\n const warnEmptySlices = useWarnEmptySlices();\n const button = useMemo(() => toolbarButtonFromItem(element.id, element.properties), [element.id, element.properties]);\n const resolved = useMemo(() => {\n if (!button || !model) return undefined;\n const index = model.structure instanceof ApplicationStructureIndex ? model.structure : new ApplicationStructureIndex(model.structure);\n return resolveToolbarButton(index, button);\n }, [button, model]);\n const dialog = resolved ? sliceDialogDestination(resolved) : undefined;\n const emphasis = resolved?.emphasis ?? button?.emphasis ?? emphasisOf(element.properties);\n const empty = button !== undefined && button.slice === undefined && button.target === undefined;\n const attributes = Object.fromEntries(Object.entries(presentation)\n .filter(([key]) => /^[A-Za-z][A-Za-z0-9-]*$/.test(key))\n .map(([key, value]) => [`data-scene-presentation-${key.toLowerCase()}`, String(value)]));\n\n const activate = () => {\n if (dialog && navigation) {\n navigation.navigate(dialog);\n return;\n }\n\n if (kind === 'action' || button !== undefined) {\n const args = resolveParameters(recordProperty(element.properties, 'parameters'), scope);\n globalThis.dispatchEvent(new CustomEvent('cratis.scene.command', { detail: { command: target || button?.slice || '', element, arguments: args } }));\n return;\n }\n\n if (!destination) return;\n const resolved = withResolvedParameters(destination, scope);\n if (navigation) {\n navigation.navigate(resolved);\n } else {\n globalThis.dispatchEvent(new CustomEvent('cratis.scene.navigate', {\n detail: { targetScreen: destination.screen ?? '', dialog: destination.dialog, destination: resolved, element },\n }));\n }\n };\n\n return (\n <button\n type='button'\n data-scene-id={element.id}\n data-scene-toolbar-item={name}\n data-scene-icon={icon}\n data-scene-mode={mode}\n aria-label={mode === 'icon' ? label : undefined}\n title={mode === 'icon' ? label : undefined}\n disabled={kind !== 'action' && button === undefined && !destination}\n aria-haspopup={dialog ? 'dialog' : undefined}\n data-scene-emphasis={emphasis}\n data-scene-slice={resolved?.slice ?? button?.slice}\n data-scene-warning={warnEmptySlices && empty ? 'emptySlice' : undefined}\n className={`scene-toolbar-button scene-toolbar-button-${emphasis}`}\n onClick={activate}\n {...attributes}\n >\n {mode !== 'text' && icon && <span aria-hidden='true' data-scene-icon-name={icon} />}\n {mode !== 'icon' && label}\n {warnEmptySlices && empty && <span role='img' aria-label='No slice is linked to this button' title='No slice is linked to this button' data-scene-badge='warning'>!</span>}\n </button>\n );\n}\n"],"names":["textProperty","properties","name","undefined","recordProperty","value","Array","isArray","isDestination","some","key","isBinding","path","literal","kind","BindingSourceKind","Literal","resolveParameters","parameters","scope","Object","fromEntries","entries","map","binding","resolveBindingExpression","withResolvedParameters","destination","bindings","routeParameterBindings","emphasisOf","emphasis","toLowerCase","ToolbarEmphasis","Primary","Quiet","Secondary","toolbarItemMode","presentation","mode","toolbarItemDestination","target","screen","DestinationKind","Dialog","dialog","CoreToolbar","element","slots","_jsx","div","data-scene-id","id","data-scene-toolbar","role","aria-label","items","CoreToolbarItem","navigation","useContext","SceneNavigationContextInternal","useRenderBindingScope","label","icon","model","useSceneNavigationModel","warnEmptySlices","useWarnEmptySlices","button","useMemo","toolbarButtonFromItem","resolved","index","structure","ApplicationStructureIndex","resolveToolbarButton","sliceDialogDestination","empty","slice","attributes","filter","test","String","activate","navigate","args","globalThis","dispatchEvent","CustomEvent","detail","command","arguments","targetScreen","_jsxs","type","data-scene-toolbar-item","data-scene-icon","data-scene-mode","title","disabled","aria-haspopup","data-scene-emphasis","data-scene-slice","data-scene-warning","className","onClick","span","aria-hidden","data-scene-icon-name","data-scene-badge"],"mappings":"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"}
|
|
@@ -99,6 +99,12 @@ var designModes = require('../packages/designModes.js');
|
|
|
99
99
|
'buttons',
|
|
100
100
|
'command bar'
|
|
101
101
|
], 'Tl', designModes.toolbarDesignMode()),
|
|
102
|
+
sliceDialog: describeComponents.componentMetadata('Slice dialog', scene_model.ComponentCategory.Overlay, 'square-pen', [
|
|
103
|
+
'task dialog',
|
|
104
|
+
'state change',
|
|
105
|
+
'form',
|
|
106
|
+
'command'
|
|
107
|
+
], undefined),
|
|
102
108
|
toolbarItem: describeComponents.componentMetadata('Toolbar item', scene_model.ComponentCategory.Actions, 'mouse-pointer-click', [
|
|
103
109
|
'button',
|
|
104
110
|
'action'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coreComponentMetadata.js","sources":["../../../core/coreComponentMetadata.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { ComponentCategory } from '@cratis/scene.model';\nimport { ComponentMetadata, componentMetadata as m, navigationDesignMode, toolbarDesignMode } from '../packages';\n\n/** The category, icon, keywords and picker badge of every component of the package (CMP1), keyed by bare component name. */\nexport const coreComponentMetadata: Record<string, ComponentMetadata> = {\n text: m('Text', ComponentCategory.DataDisplay, 'type', ['label', 'paragraph', 'copy']),\n button: m('Button', ComponentCategory.Actions, 'mouse-pointer-click', ['click', 'submit', 'action'], 'Bt'),\n card: m('Card', ComponentCategory.Layout, 'square', ['panel', 'box', 'container']),\n data: m('Data', ComponentCategory.DataDisplay, 'database', ['read model', 'query', 'source']),\n action: m('Command action', ComponentCategory.Actions, 'zap', ['command', 'invoke', 'submit']),\n section: m('Section', ComponentCategory.Layout, 'layout-panel-top', ['group', 'area', 'block']),\n navigate: m('Navigate', ComponentCategory.Navigation, 'corner-down-right', ['link', 'go to', 'route']),\n title: m('Title', ComponentCategory.DataDisplay, 'heading', ['heading', 'header', 'caption']),\n table: m('Table', ComponentCategory.DataDisplay, 'table', ['grid', 'rows', 'list'], 'Tb'),\n column: m('Table column', ComponentCategory.DataDisplay, 'columns-3', ['heading', 'field']),\n summary: m('Summary', ComponentCategory.DataDisplay, 'list', ['details', 'overview', 'facts']),\n field: m('Summary field', ComponentCategory.DataDisplay, 'tag', ['label', 'value', 'pair']),\n code: m('Code', ComponentCategory.DataDisplay, 'code', ['snippet', 'source', 'monospace']),\n file: m('File reference', ComponentCategory.DataDisplay, 'file', ['include', 'import', 'screen file']),\n navigationBar: m('Navigation bar', ComponentCategory.Navigation, 'navigation', ['menu', 'nav', 'links'], undefined, navigationDesignMode({ itemsPath: 'items' })),\n outlet: m('Outlet', ComponentCategory.Layout, 'panel-right', ['region', 'slot', 'side panel']),\n toolbar: m('Toolbar', ComponentCategory.Actions, 'wrench', ['actions', 'buttons', 'command bar'], 'Tl', toolbarDesignMode()),\n toolbarItem: m('Toolbar item', ComponentCategory.Actions, 'mouse-pointer-click', ['button', 'action']),\n};\n"],"names":["coreComponentMetadata","text","m","ComponentCategory","DataDisplay","button","Actions","card","Layout","data","action","section","navigate","Navigation","title","table","column","summary","field","code","file","navigationBar","undefined","navigationDesignMode","itemsPath","outlet","toolbar","toolbarDesignMode","toolbarItem"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"coreComponentMetadata.js","sources":["../../../core/coreComponentMetadata.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { ComponentCategory } from '@cratis/scene.model';\nimport { ComponentMetadata, componentMetadata as m, navigationDesignMode, toolbarDesignMode } from '../packages';\n\n/** The category, icon, keywords and picker badge of every component of the package (CMP1), keyed by bare component name. */\nexport const coreComponentMetadata: Record<string, ComponentMetadata> = {\n text: m('Text', ComponentCategory.DataDisplay, 'type', ['label', 'paragraph', 'copy']),\n button: m('Button', ComponentCategory.Actions, 'mouse-pointer-click', ['click', 'submit', 'action'], 'Bt'),\n card: m('Card', ComponentCategory.Layout, 'square', ['panel', 'box', 'container']),\n data: m('Data', ComponentCategory.DataDisplay, 'database', ['read model', 'query', 'source']),\n action: m('Command action', ComponentCategory.Actions, 'zap', ['command', 'invoke', 'submit']),\n section: m('Section', ComponentCategory.Layout, 'layout-panel-top', ['group', 'area', 'block']),\n navigate: m('Navigate', ComponentCategory.Navigation, 'corner-down-right', ['link', 'go to', 'route']),\n title: m('Title', ComponentCategory.DataDisplay, 'heading', ['heading', 'header', 'caption']),\n table: m('Table', ComponentCategory.DataDisplay, 'table', ['grid', 'rows', 'list'], 'Tb'),\n column: m('Table column', ComponentCategory.DataDisplay, 'columns-3', ['heading', 'field']),\n summary: m('Summary', ComponentCategory.DataDisplay, 'list', ['details', 'overview', 'facts']),\n field: m('Summary field', ComponentCategory.DataDisplay, 'tag', ['label', 'value', 'pair']),\n code: m('Code', ComponentCategory.DataDisplay, 'code', ['snippet', 'source', 'monospace']),\n file: m('File reference', ComponentCategory.DataDisplay, 'file', ['include', 'import', 'screen file']),\n navigationBar: m('Navigation bar', ComponentCategory.Navigation, 'navigation', ['menu', 'nav', 'links'], undefined, navigationDesignMode({ itemsPath: 'items' })),\n outlet: m('Outlet', ComponentCategory.Layout, 'panel-right', ['region', 'slot', 'side panel']),\n toolbar: m('Toolbar', ComponentCategory.Actions, 'wrench', ['actions', 'buttons', 'command bar'], 'Tl', toolbarDesignMode()),\n sliceDialog: m('Slice dialog', ComponentCategory.Overlay, 'square-pen', ['task dialog', 'state change', 'form', 'command'], undefined),\n toolbarItem: m('Toolbar item', ComponentCategory.Actions, 'mouse-pointer-click', ['button', 'action']),\n};\n"],"names":["coreComponentMetadata","text","m","ComponentCategory","DataDisplay","button","Actions","card","Layout","data","action","section","navigate","Navigation","title","table","column","summary","field","code","file","navigationBar","undefined","navigationDesignMode","itemsPath","outlet","toolbar","toolbarDesignMode","sliceDialog","Overlay","toolbarItem"],"mappings":"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"}
|
|
@@ -14,6 +14,7 @@ var CoreButton = require('./CoreButton.js');
|
|
|
14
14
|
var CoreCard = require('./CoreCard.js');
|
|
15
15
|
var CoreNavigationBar = require('./CoreNavigationBar.js');
|
|
16
16
|
var CoreToolbar = require('./CoreToolbar.js');
|
|
17
|
+
var CoreSliceDialog = require('../slices/CoreSliceDialog.js');
|
|
17
18
|
var ScreenplayCoreComponents = require('./ScreenplayCoreComponents.js');
|
|
18
19
|
|
|
19
20
|
// Copyright (c) Cratis. All rights reserved.
|
|
@@ -39,7 +40,8 @@ var ScreenplayCoreComponents = require('./ScreenplayCoreComponents.js');
|
|
|
39
40
|
[ScenePackageBundle.componentRegistryKey('core', 'navigationBar')]: CoreNavigationBar.CoreNavigationBar,
|
|
40
41
|
[ScenePackageBundle.componentRegistryKey('core', 'outlet')]: CoreOutlet.CoreOutlet,
|
|
41
42
|
[ScenePackageBundle.componentRegistryKey('core', 'toolbar')]: CoreToolbar.CoreToolbar,
|
|
42
|
-
[ScenePackageBundle.componentRegistryKey('core', 'toolbarItem')]: CoreToolbar.CoreToolbarItem
|
|
43
|
+
[ScenePackageBundle.componentRegistryKey('core', 'toolbarItem')]: CoreToolbar.CoreToolbarItem,
|
|
44
|
+
[ScenePackageBundle.componentRegistryKey('core', 'sliceDialog')]: CoreSliceDialog.CoreSliceDialog
|
|
43
45
|
};
|
|
44
46
|
|
|
45
47
|
exports.coreComponents = coreComponents;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coreComponents.js","sources":["../../../core/coreComponents.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { ComponentRegistry } from '../renderer';\nimport { componentRegistryKey } from '../packages';\nimport { CoreText } from './CoreText';\nimport { CoreButton } from './CoreButton';\nimport { CoreCard } from './CoreCard';\nimport { CoreNavigationBar } from './CoreNavigationBar';\nimport { CoreToolbar, CoreToolbarItem } from './CoreToolbar';\nimport { CoreOutlet } from '../navigation/CoreOutlet';\nimport {\n CoreAction,\n CoreCode,\n CoreColumn,\n CoreData,\n CoreField,\n CoreFile,\n CoreNavigate,\n CoreSection,\n CoreSummary,\n CoreTable,\n CoreTitle,\n} from './ScreenplayCoreComponents';\n\n/**\n * The `core` package's component registry - the final fallback every `ui profile` resolves against\n * regardless of which other packages it lists (Scene#3).\n */\nexport const coreComponents: ComponentRegistry = {\n [componentRegistryKey('core', 'text')]: CoreText,\n [componentRegistryKey('core', 'button')]: CoreButton,\n [componentRegistryKey('core', 'card')]: CoreCard,\n [componentRegistryKey('core', 'data')]: CoreData,\n [componentRegistryKey('core', 'action')]: CoreAction,\n [componentRegistryKey('core', 'section')]: CoreSection,\n [componentRegistryKey('core', 'navigate')]: CoreNavigate,\n [componentRegistryKey('core', 'title')]: CoreTitle,\n [componentRegistryKey('core', 'table')]: CoreTable,\n [componentRegistryKey('core', 'column')]: CoreColumn,\n [componentRegistryKey('core', 'summary')]: CoreSummary,\n [componentRegistryKey('core', 'field')]: CoreField,\n [componentRegistryKey('core', 'code')]: CoreCode,\n [componentRegistryKey('core', 'file')]: CoreFile,\n [componentRegistryKey('core', 'navigationBar')]: CoreNavigationBar,\n [componentRegistryKey('core', 'outlet')]: CoreOutlet,\n [componentRegistryKey('core', 'toolbar')]: CoreToolbar,\n [componentRegistryKey('core', 'toolbarItem')]: CoreToolbarItem,\n};\n"],"names":["coreComponents","componentRegistryKey","CoreText","CoreButton","CoreCard","CoreData","CoreAction","CoreSection","CoreNavigate","CoreTitle","CoreTable","CoreColumn","CoreSummary","CoreField","CoreCode","CoreFile","CoreNavigationBar","CoreOutlet","CoreToolbar","CoreToolbarItem"],"mappings":"
|
|
1
|
+
{"version":3,"file":"coreComponents.js","sources":["../../../core/coreComponents.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { ComponentRegistry } from '../renderer';\nimport { componentRegistryKey } from '../packages';\nimport { CoreText } from './CoreText';\nimport { CoreButton } from './CoreButton';\nimport { CoreCard } from './CoreCard';\nimport { CoreNavigationBar } from './CoreNavigationBar';\nimport { CoreToolbar, CoreToolbarItem } from './CoreToolbar';\nimport { CoreOutlet } from '../navigation/CoreOutlet';\nimport { CoreSliceDialog } from '../slices/CoreSliceDialog';\nimport {\n CoreAction,\n CoreCode,\n CoreColumn,\n CoreData,\n CoreField,\n CoreFile,\n CoreNavigate,\n CoreSection,\n CoreSummary,\n CoreTable,\n CoreTitle,\n} from './ScreenplayCoreComponents';\n\n/**\n * The `core` package's component registry - the final fallback every `ui profile` resolves against\n * regardless of which other packages it lists (Scene#3).\n */\nexport const coreComponents: ComponentRegistry = {\n [componentRegistryKey('core', 'text')]: CoreText,\n [componentRegistryKey('core', 'button')]: CoreButton,\n [componentRegistryKey('core', 'card')]: CoreCard,\n [componentRegistryKey('core', 'data')]: CoreData,\n [componentRegistryKey('core', 'action')]: CoreAction,\n [componentRegistryKey('core', 'section')]: CoreSection,\n [componentRegistryKey('core', 'navigate')]: CoreNavigate,\n [componentRegistryKey('core', 'title')]: CoreTitle,\n [componentRegistryKey('core', 'table')]: CoreTable,\n [componentRegistryKey('core', 'column')]: CoreColumn,\n [componentRegistryKey('core', 'summary')]: CoreSummary,\n [componentRegistryKey('core', 'field')]: CoreField,\n [componentRegistryKey('core', 'code')]: CoreCode,\n [componentRegistryKey('core', 'file')]: CoreFile,\n [componentRegistryKey('core', 'navigationBar')]: CoreNavigationBar,\n [componentRegistryKey('core', 'outlet')]: CoreOutlet,\n [componentRegistryKey('core', 'toolbar')]: CoreToolbar,\n [componentRegistryKey('core', 'toolbarItem')]: CoreToolbarItem,\n [componentRegistryKey('core', 'sliceDialog')]: CoreSliceDialog,\n};\n"],"names":["coreComponents","componentRegistryKey","CoreText","CoreButton","CoreCard","CoreData","CoreAction","CoreSection","CoreNavigate","CoreTitle","CoreTable","CoreColumn","CoreSummary","CoreField","CoreCode","CoreFile","CoreNavigationBar","CoreOutlet","CoreToolbar","CoreToolbarItem","CoreSliceDialog"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AACA;AAyBA;;;UAIaA,cAAAA,GAAoC;IAC7C,CAACC,uCAAAA,CAAqB,MAAA,EAAQ,MAAA,CAAA,GAAUC,iBAAAA;IACxC,CAACD,uCAAAA,CAAqB,MAAA,EAAQ,QAAA,CAAA,GAAYE,qBAAAA;IAC1C,CAACF,uCAAAA,CAAqB,MAAA,EAAQ,MAAA,CAAA,GAAUG,iBAAAA;IACxC,CAACH,uCAAAA,CAAqB,MAAA,EAAQ,MAAA,CAAA,GAAUI,iCAAAA;IACxC,CAACJ,uCAAAA,CAAqB,MAAA,EAAQ,QAAA,CAAA,GAAYK,mCAAAA;IAC1C,CAACL,uCAAAA,CAAqB,MAAA,EAAQ,SAAA,CAAA,GAAaM,oCAAAA;IAC3C,CAACN,uCAAAA,CAAqB,MAAA,EAAQ,UAAA,CAAA,GAAcO,qCAAAA;IAC5C,CAACP,uCAAAA,CAAqB,MAAA,EAAQ,OAAA,CAAA,GAAWQ,kCAAAA;IACzC,CAACR,uCAAAA,CAAqB,MAAA,EAAQ,OAAA,CAAA,GAAWS,kCAAAA;IACzC,CAACT,uCAAAA,CAAqB,MAAA,EAAQ,QAAA,CAAA,GAAYU,mCAAAA;IAC1C,CAACV,uCAAAA,CAAqB,MAAA,EAAQ,SAAA,CAAA,GAAaW,oCAAAA;IAC3C,CAACX,uCAAAA,CAAqB,MAAA,EAAQ,OAAA,CAAA,GAAWY,kCAAAA;IACzC,CAACZ,uCAAAA,CAAqB,MAAA,EAAQ,MAAA,CAAA,GAAUa,iCAAAA;IACxC,CAACb,uCAAAA,CAAqB,MAAA,EAAQ,MAAA,CAAA,GAAUc,iCAAAA;IACxC,CAACd,uCAAAA,CAAqB,MAAA,EAAQ,eAAA,CAAA,GAAmBe,mCAAAA;IACjD,CAACf,uCAAAA,CAAqB,MAAA,EAAQ,QAAA,CAAA,GAAYgB,qBAAAA;IAC1C,CAAChB,uCAAAA,CAAqB,MAAA,EAAQ,SAAA,CAAA,GAAaiB,uBAAAA;IAC3C,CAACjB,uCAAAA,CAAqB,MAAA,EAAQ,aAAA,CAAA,GAAiBkB,2BAAAA;IAC/C,CAAClB,uCAAAA,CAAqB,MAAA,EAAQ,aAAA,CAAA,GAAiBmB;AACnD;;"}
|
|
@@ -153,6 +153,33 @@ const key = (name)=>ScenePackageBundle.componentRegistryKey('core', name);
|
|
|
153
153
|
}
|
|
154
154
|
]
|
|
155
155
|
},
|
|
156
|
+
{
|
|
157
|
+
component: key('sliceDialog'),
|
|
158
|
+
displayName: 'Slice dialog',
|
|
159
|
+
description: 'The task dialog of a state change slice: the form of its command with Cancel and a submit button. Opened from a toolbar button it takes the slice, command and title from the button; set them to fix the dialog to one slice.',
|
|
160
|
+
properties: [
|
|
161
|
+
{
|
|
162
|
+
path: 'slice',
|
|
163
|
+
label: 'Slice',
|
|
164
|
+
group: 'Behavior',
|
|
165
|
+
valueType: scene_model.PropertyValueType.String,
|
|
166
|
+
editorKind: scene_model.PropertyEditorKind.Slice,
|
|
167
|
+
editorOptions: {
|
|
168
|
+
kinds: [
|
|
169
|
+
'StateChange'
|
|
170
|
+
]
|
|
171
|
+
},
|
|
172
|
+
description: 'The State Change slice the dialog submits; empty to take it from the toolbar button that opens the dialog.'
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
path: 'title',
|
|
176
|
+
label: 'Title',
|
|
177
|
+
group: 'Content',
|
|
178
|
+
valueType: scene_model.PropertyValueType.String,
|
|
179
|
+
description: 'The dialog title and submit label; empty to take the toolbar button title.'
|
|
180
|
+
}
|
|
181
|
+
]
|
|
182
|
+
},
|
|
156
183
|
{
|
|
157
184
|
component: key('column'),
|
|
158
185
|
displayName: 'Table column',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coreDescriptors.js","sources":["../../../core/coreDescriptors.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { ComponentDescriptor, PropertyEditorKind, PropertyValueType, ToolbarEmphasis } from '@cratis/scene.model';\nimport { componentRegistryKey, describeComponents } from '../packages';\nimport { coreComponentMetadata } from './coreComponentMetadata';\n\nconst key = (name: string) => componentRegistryKey('core', name);\n\n/**\n * What can be edited on the `core` package's components.\n *\n * Only the components an author configures by hand are described: a button's label, an action's command and its\n * argument mapping, a column's heading, and the navigation bar. The Screenplay structural components - `data`,\n * `section`, `summary` - have nothing to edit that is not already a node in the tree.\n */\nconst describedCore: ComponentDescriptor[] = [\n {\n component: key('button'),\n displayName: 'Button',\n properties: [\n { path: 'label', label: 'Label', group: 'Content', valueType: PropertyValueType.String, default: '' },\n ],\n },\n {\n component: key('action'),\n displayName: 'Command action',\n description: 'Invokes a modeled command. The command and its argument mapping are stored on the element; the host that handles the command event reads them.',\n properties: [\n { path: 'label', label: 'Label', group: 'Content', valueType: PropertyValueType.String },\n {\n path: 'command', label: 'Command', group: 'Behavior', valueType: PropertyValueType.String,\n editorKind: 'stateChangeReference', constraints: { required: true },\n description: 'The state change this action submits.',\n },\n {\n path: 'arguments', label: 'Argument mapping', group: 'Behavior', valueType: PropertyValueType.Collection,\n description: 'Where each command argument comes from.',\n item: {\n label: 'Argument',\n properties: [\n { path: 'name', label: 'Argument', group: 'Behavior', valueType: PropertyValueType.String, constraints: { required: true } },\n { path: 'source', label: 'Source', group: 'Behavior', valueType: PropertyValueType.String, editorKind: 'bindingPath', constraints: { required: true } },\n ],\n },\n },\n ],\n },\n {\n component: key('toolbarItem'),\n displayName: 'Toolbar button',\n description: 'One toolbar button. An Action button invokes a state change slice and opens it as a task dialog over the page; a button with no slice is allowed while designing and is flagged.',\n properties: [\n { path: 'label', label: 'Title', group: 'Content', valueType: PropertyValueType.String, default: 'Button' },\n {\n path: 'slice', label: 'Slice to invoke', group: 'Behavior', valueType: PropertyValueType.String,\n editorKind: PropertyEditorKind.Slice, editorOptions: { kinds: ['StateChange'] },\n description: 'Only State Change slices can be picked. State Views and Automations never take user input, so they are listed as unavailable.',\n },\n {\n path: 'emphasis', label: 'Emphasis', group: 'Appearance', valueType: PropertyValueType.Enum, default: ToolbarEmphasis.Secondary,\n editorKind: PropertyEditorKind.Enum,\n choices: [\n { value: ToolbarEmphasis.Primary, label: 'Primary' },\n { value: ToolbarEmphasis.Secondary, label: 'Secondary' },\n { value: ToolbarEmphasis.Quiet, label: 'Quiet' },\n ],\n },\n { path: 'icon', label: 'Icon', group: 'Appearance', valueType: PropertyValueType.Icon, editorKind: 'iconPicker' },\n {\n path: 'target', label: 'Command (legacy)', group: 'Behavior', valueType: PropertyValueType.String, editorKind: 'stateChangeReference',\n description: 'A hand-typed command for a button that has no slice. It is converted to the slice that accepts the command when exactly one does; prefer a slice.',\n },\n ],\n },\n {\n component: key('column'),\n displayName: 'Table column',\n properties: [\n { path: 'property', label: 'Result field', group: 'Data', valueType: PropertyValueType.String, editorKind: 'resultField', constraints: { required: true } },\n { path: 'label', label: 'Heading', group: 'Content', valueType: PropertyValueType.String },\n ],\n },\n {\n component: key('outlet'),\n displayName: 'Outlet',\n description: 'A named region another screen opens into. Placing a screen here keeps this screen on the page, and the placed screen may declare outlets of its own.',\n properties: [{ path: 'name', label: 'Name', group: 'Navigation', valueType: PropertyValueType.String, constraints: { required: true } }],\n },\n {\n component: key('navigationBar'),\n displayName: 'Navigation bar',\n description: 'A list of navigation items. A template author fixes the first item (Home) and can expose the list so that screens add their own.',\n properties: [\n { path: 'title', label: 'Title', group: 'Content', valueType: PropertyValueType.String, default: 'Navigation' },\n {\n path: 'items', label: 'Items', group: 'Content', valueType: PropertyValueType.Collection, default: [],\n item: {\n label: 'Navigation item',\n properties: [\n { path: 'label', label: 'Label', group: 'Content', valueType: PropertyValueType.String, constraints: { required: true, minimumLength: 1 } },\n { path: 'icon', label: 'Icon', group: 'Content', valueType: PropertyValueType.Icon, editorKind: 'iconPicker' },\n { path: 'destination', label: 'Destination', group: 'Content', valueType: PropertyValueType.Destination, editorKind: 'screenPicker', constraints: { required: true } },\n ],\n },\n },\n ],\n },\n];\n\n/** The `core` package's descriptors: the hand-written ones above with every component's category, icon, keywords and design mode (CMP1). */\nexport const coreDescriptors: ComponentDescriptor[] = describeComponents('core', describedCore, coreComponentMetadata);"],"names":["key","name","componentRegistryKey","describedCore","component","displayName","properties","path","label","group","valueType","PropertyValueType","String","default","description","editorKind","constraints","required","Collection","item","PropertyEditorKind","Slice","editorOptions","kinds","Enum","ToolbarEmphasis","Secondary","choices","value","Primary","Quiet","Icon","minimumLength","Destination","coreDescriptors","describeComponents","coreComponentMetadata"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"coreDescriptors.js","sources":["../../../core/coreDescriptors.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { ComponentDescriptor, PropertyEditorKind, PropertyValueType, ToolbarEmphasis } from '@cratis/scene.model';\nimport { componentRegistryKey, describeComponents } from '../packages';\nimport { coreComponentMetadata } from './coreComponentMetadata';\n\nconst key = (name: string) => componentRegistryKey('core', name);\n\n/**\n * What can be edited on the `core` package's components.\n *\n * Only the components an author configures by hand are described: a button's label, an action's command and its\n * argument mapping, a column's heading, and the navigation bar. The Screenplay structural components - `data`,\n * `section`, `summary` - have nothing to edit that is not already a node in the tree.\n */\nconst describedCore: ComponentDescriptor[] = [\n {\n component: key('button'),\n displayName: 'Button',\n properties: [\n { path: 'label', label: 'Label', group: 'Content', valueType: PropertyValueType.String, default: '' },\n ],\n },\n {\n component: key('action'),\n displayName: 'Command action',\n description: 'Invokes a modeled command. The command and its argument mapping are stored on the element; the host that handles the command event reads them.',\n properties: [\n { path: 'label', label: 'Label', group: 'Content', valueType: PropertyValueType.String },\n {\n path: 'command', label: 'Command', group: 'Behavior', valueType: PropertyValueType.String,\n editorKind: 'stateChangeReference', constraints: { required: true },\n description: 'The state change this action submits.',\n },\n {\n path: 'arguments', label: 'Argument mapping', group: 'Behavior', valueType: PropertyValueType.Collection,\n description: 'Where each command argument comes from.',\n item: {\n label: 'Argument',\n properties: [\n { path: 'name', label: 'Argument', group: 'Behavior', valueType: PropertyValueType.String, constraints: { required: true } },\n { path: 'source', label: 'Source', group: 'Behavior', valueType: PropertyValueType.String, editorKind: 'bindingPath', constraints: { required: true } },\n ],\n },\n },\n ],\n },\n {\n component: key('toolbarItem'),\n displayName: 'Toolbar button',\n description: 'One toolbar button. An Action button invokes a state change slice and opens it as a task dialog over the page; a button with no slice is allowed while designing and is flagged.',\n properties: [\n { path: 'label', label: 'Title', group: 'Content', valueType: PropertyValueType.String, default: 'Button' },\n {\n path: 'slice', label: 'Slice to invoke', group: 'Behavior', valueType: PropertyValueType.String,\n editorKind: PropertyEditorKind.Slice, editorOptions: { kinds: ['StateChange'] },\n description: 'Only State Change slices can be picked. State Views and Automations never take user input, so they are listed as unavailable.',\n },\n {\n path: 'emphasis', label: 'Emphasis', group: 'Appearance', valueType: PropertyValueType.Enum, default: ToolbarEmphasis.Secondary,\n editorKind: PropertyEditorKind.Enum,\n choices: [\n { value: ToolbarEmphasis.Primary, label: 'Primary' },\n { value: ToolbarEmphasis.Secondary, label: 'Secondary' },\n { value: ToolbarEmphasis.Quiet, label: 'Quiet' },\n ],\n },\n { path: 'icon', label: 'Icon', group: 'Appearance', valueType: PropertyValueType.Icon, editorKind: 'iconPicker' },\n {\n path: 'target', label: 'Command (legacy)', group: 'Behavior', valueType: PropertyValueType.String, editorKind: 'stateChangeReference',\n description: 'A hand-typed command for a button that has no slice. It is converted to the slice that accepts the command when exactly one does; prefer a slice.',\n },\n ],\n },\n {\n component: key('sliceDialog'),\n displayName: 'Slice dialog',\n description: 'The task dialog of a state change slice: the form of its command with Cancel and a submit button. Opened from a toolbar button it takes the slice, command and title from the button; set them to fix the dialog to one slice.',\n properties: [\n {\n path: 'slice', label: 'Slice', group: 'Behavior', valueType: PropertyValueType.String,\n editorKind: PropertyEditorKind.Slice, editorOptions: { kinds: ['StateChange'] },\n description: 'The State Change slice the dialog submits; empty to take it from the toolbar button that opens the dialog.',\n },\n { path: 'title', label: 'Title', group: 'Content', valueType: PropertyValueType.String, description: 'The dialog title and submit label; empty to take the toolbar button title.' },\n ],\n },\n {\n component: key('column'),\n displayName: 'Table column',\n properties: [\n { path: 'property', label: 'Result field', group: 'Data', valueType: PropertyValueType.String, editorKind: 'resultField', constraints: { required: true } },\n { path: 'label', label: 'Heading', group: 'Content', valueType: PropertyValueType.String },\n ],\n },\n {\n component: key('outlet'),\n displayName: 'Outlet',\n description: 'A named region another screen opens into. Placing a screen here keeps this screen on the page, and the placed screen may declare outlets of its own.',\n properties: [{ path: 'name', label: 'Name', group: 'Navigation', valueType: PropertyValueType.String, constraints: { required: true } }],\n },\n {\n component: key('navigationBar'),\n displayName: 'Navigation bar',\n description: 'A list of navigation items. A template author fixes the first item (Home) and can expose the list so that screens add their own.',\n properties: [\n { path: 'title', label: 'Title', group: 'Content', valueType: PropertyValueType.String, default: 'Navigation' },\n {\n path: 'items', label: 'Items', group: 'Content', valueType: PropertyValueType.Collection, default: [],\n item: {\n label: 'Navigation item',\n properties: [\n { path: 'label', label: 'Label', group: 'Content', valueType: PropertyValueType.String, constraints: { required: true, minimumLength: 1 } },\n { path: 'icon', label: 'Icon', group: 'Content', valueType: PropertyValueType.Icon, editorKind: 'iconPicker' },\n { path: 'destination', label: 'Destination', group: 'Content', valueType: PropertyValueType.Destination, editorKind: 'screenPicker', constraints: { required: true } },\n ],\n },\n },\n ],\n },\n];\n\n/** The `core` package's descriptors: the hand-written ones above with every component's category, icon, keywords and design mode (CMP1). */\nexport const coreDescriptors: ComponentDescriptor[] = describeComponents('core', describedCore, coreComponentMetadata);"],"names":["key","name","componentRegistryKey","describedCore","component","displayName","properties","path","label","group","valueType","PropertyValueType","String","default","description","editorKind","constraints","required","Collection","item","PropertyEditorKind","Slice","editorOptions","kinds","Enum","ToolbarEmphasis","Secondary","choices","value","Primary","Quiet","Icon","minimumLength","Destination","coreDescriptors","describeComponents","coreComponentMetadata"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"corePackage.js","sources":["../../../core/corePackage.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { PackageKind, ScenePackage } from '@cratis/scene.model';\nimport { ScenePackageBundle } from '../packages';\nimport { coreComponents } from './coreComponents';\nimport { coreDescriptors } from './coreDescriptors';\n\n/**\n * The `core` package's declaration. Every other package is loaded by a host that reads its manifest;\n * `core` ships inside the renderer itself, because Scene#3 guarantees a bare name always has somewhere to\n * resolve regardless of which packages a profile lists. It is still declared the same way as any other -\n * a package picker should be able to show it, and the dependency resolver should be able to reason about\n * it, without a special case.\n */\nexport const corePackageManifest: ScenePackage = {\n name: 'core',\n version: '1.0.0',\n kind: PackageKind.ComponentLibrary,\n dependencies: [],\n components: [\n 'text',\n 'button',\n 'card',\n 'data',\n 'action',\n 'section',\n 'navigate',\n 'title',\n 'table',\n 'column',\n 'summary',\n 'field',\n 'code',\n 'file',\n 'navigationBar',\n 'outlet',\n 'toolbar',\n 'toolbarItem',\n ],\n layouts: [],\n screenTemplates: [],\n dialogTemplates: [],\n themes: [],\n displayName: 'Core',\n description: 'The built-in fallback vocabulary every ui profile resolves against.',\n module: '@cratis/scene.react',\n license: 'MIT',\n licenseUrl: 'https://github.com/Cratis/Scene/blob/main/LICENSE',\n};\n\n/**\n * The `core` package as a loadable bundle.\n */\nexport const corePackage: ScenePackageBundle = {\n manifest: corePackageManifest,\n components: coreComponents,\n descriptors: coreDescriptors,\n};\n"],"names":["corePackageManifest","name","version","kind","PackageKind","ComponentLibrary","dependencies","components","layouts","screenTemplates","dialogTemplates","themes","displayName","description","module","license","licenseUrl","corePackage","manifest","coreComponents","descriptors","coreDescriptors"],"mappings":";;;;;;AAAA;AACA;AAOA;;;;;;UAOaA,mBAAAA,GAAoC;IAC7CC,IAAAA,EAAM,MAAA;IACNC,OAAAA,EAAS,OAAA;AACTC,IAAAA,IAAAA,EAAMC,wBAAYC,gBAAgB;AAClCC,IAAAA,YAAAA,EAAc,EAAE;IAChBC,UAAAA,EAAY;AACR,QAAA,MAAA;AACA,QAAA,QAAA;AACA,QAAA,MAAA;AACA,QAAA,MAAA;AACA,QAAA,QAAA;AACA,QAAA,SAAA;AACA,QAAA,UAAA;AACA,QAAA,OAAA;AACA,QAAA,OAAA;AACA,QAAA,QAAA;AACA,QAAA,SAAA;AACA,QAAA,OAAA;AACA,QAAA,MAAA;AACA,QAAA,MAAA;AACA,QAAA,eAAA;AACA,QAAA,QAAA;AACA,QAAA,SAAA;AACA,QAAA;AACH,KAAA;AACDC,IAAAA,OAAAA,EAAS,EAAE;AACXC,IAAAA,eAAAA,EAAiB,EAAE;AACnBC,IAAAA,eAAAA,EAAiB,EAAE;AACnBC,IAAAA,MAAAA,EAAQ,EAAE;IACVC,WAAAA,EAAa,MAAA;IACbC,WAAAA,EAAa,qEAAA;IACbC,MAAAA,EAAQ,qBAAA;IACRC,OAAAA,EAAS,KAAA;IACTC,UAAAA,EAAY;AAChB;AAEA;;UAGaC,WAAAA,GAAkC;IAC3CC,QAAAA,EAAUlB,mBAAAA;IACVO,UAAAA,EAAYY,6BAAAA;IACZC,WAAAA,EAAaC;AACjB;;;"}
|
|
1
|
+
{"version":3,"file":"corePackage.js","sources":["../../../core/corePackage.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { PackageKind, ScenePackage } from '@cratis/scene.model';\nimport { ScenePackageBundle } from '../packages';\nimport { coreComponents } from './coreComponents';\nimport { coreDescriptors } from './coreDescriptors';\n\n/**\n * The `core` package's declaration. Every other package is loaded by a host that reads its manifest;\n * `core` ships inside the renderer itself, because Scene#3 guarantees a bare name always has somewhere to\n * resolve regardless of which packages a profile lists. It is still declared the same way as any other -\n * a package picker should be able to show it, and the dependency resolver should be able to reason about\n * it, without a special case.\n */\nexport const corePackageManifest: ScenePackage = {\n name: 'core',\n version: '1.0.0',\n kind: PackageKind.ComponentLibrary,\n dependencies: [],\n components: [\n 'text',\n 'button',\n 'card',\n 'data',\n 'action',\n 'section',\n 'navigate',\n 'title',\n 'table',\n 'column',\n 'summary',\n 'field',\n 'code',\n 'file',\n 'navigationBar',\n 'outlet',\n 'toolbar',\n 'toolbarItem',\n 'sliceDialog',\n ],\n layouts: [],\n screenTemplates: [],\n dialogTemplates: [],\n themes: [],\n displayName: 'Core',\n description: 'The built-in fallback vocabulary every ui profile resolves against.',\n module: '@cratis/scene.react',\n license: 'MIT',\n licenseUrl: 'https://github.com/Cratis/Scene/blob/main/LICENSE',\n};\n\n/**\n * The `core` package as a loadable bundle.\n */\nexport const corePackage: ScenePackageBundle = {\n manifest: corePackageManifest,\n components: coreComponents,\n descriptors: coreDescriptors,\n};\n"],"names":["corePackageManifest","name","version","kind","PackageKind","ComponentLibrary","dependencies","components","layouts","screenTemplates","dialogTemplates","themes","displayName","description","module","license","licenseUrl","corePackage","manifest","coreComponents","descriptors","coreDescriptors"],"mappings":";;;;;;AAAA;AACA;AAOA;;;;;;UAOaA,mBAAAA,GAAoC;IAC7CC,IAAAA,EAAM,MAAA;IACNC,OAAAA,EAAS,OAAA;AACTC,IAAAA,IAAAA,EAAMC,wBAAYC,gBAAgB;AAClCC,IAAAA,YAAAA,EAAc,EAAE;IAChBC,UAAAA,EAAY;AACR,QAAA,MAAA;AACA,QAAA,QAAA;AACA,QAAA,MAAA;AACA,QAAA,MAAA;AACA,QAAA,QAAA;AACA,QAAA,SAAA;AACA,QAAA,UAAA;AACA,QAAA,OAAA;AACA,QAAA,OAAA;AACA,QAAA,QAAA;AACA,QAAA,SAAA;AACA,QAAA,OAAA;AACA,QAAA,MAAA;AACA,QAAA,MAAA;AACA,QAAA,eAAA;AACA,QAAA,QAAA;AACA,QAAA,SAAA;AACA,QAAA,aAAA;AACA,QAAA;AACH,KAAA;AACDC,IAAAA,OAAAA,EAAS,EAAE;AACXC,IAAAA,eAAAA,EAAiB,EAAE;AACnBC,IAAAA,eAAAA,EAAiB,EAAE;AACnBC,IAAAA,MAAAA,EAAQ,EAAE;IACVC,WAAAA,EAAa,MAAA;IACbC,WAAAA,EAAa,qEAAA;IACbC,MAAAA,EAAQ,qBAAA;IACRC,OAAAA,EAAS,KAAA;IACTC,UAAAA,EAAY;AAChB;AAEA;;UAGaC,WAAAA,GAAkC;IAC3CC,QAAAA,EAAUlB,mBAAAA;IACVO,UAAAA,EAAYY,6BAAAA;IACZC,WAAAA,EAAaC;AACjB;;;"}
|
package/dist/cjs/index.js
CHANGED
|
@@ -44,6 +44,13 @@ var currentModuleOf = require('./navigation/region/currentModuleOf.js');
|
|
|
44
44
|
var navigationItemActive = require('./navigation/region/navigationItemActive.js');
|
|
45
45
|
var navigationItemDestination = require('./navigation/region/navigationItemDestination.js');
|
|
46
46
|
var navigationDestinations = require('./navigation/region/navigationDestinations.js');
|
|
47
|
+
var createAnnouncingInvoker = require('./slices/createAnnouncingInvoker.js');
|
|
48
|
+
var createDryRunInvoker = require('./slices/createDryRunInvoker.js');
|
|
49
|
+
var SliceInvokerContext = require('./slices/SliceInvokerContext.js');
|
|
50
|
+
var SliceCommandFieldsContext = require('./slices/SliceCommandFieldsContext.js');
|
|
51
|
+
var sliceDialogDestination = require('./slices/sliceDialogDestination.js');
|
|
52
|
+
var SliceDialogView = require('./slices/SliceDialogView.js');
|
|
53
|
+
var CoreSliceDialog = require('./slices/CoreSliceDialog.js');
|
|
47
54
|
var IconAdapterRegistry = require('./icons/IconAdapterRegistry.js');
|
|
48
55
|
var IconAdapterContext = require('./icons/IconAdapterContext.js');
|
|
49
56
|
var useIconGlyph = require('./icons/useIconGlyph.js');
|
|
@@ -150,6 +157,19 @@ exports.navigationItemActive = navigationItemActive.navigationItemActive;
|
|
|
150
157
|
exports.defaultScreenFor = navigationItemDestination.defaultScreenFor;
|
|
151
158
|
exports.navigationItemDestination = navigationItemDestination.navigationItemDestination;
|
|
152
159
|
exports.navigationDestinations = navigationDestinations.navigationDestinations;
|
|
160
|
+
exports.createAnnouncingInvoker = createAnnouncingInvoker.createAnnouncingInvoker;
|
|
161
|
+
exports.createDryRunInvoker = createDryRunInvoker.createDryRunInvoker;
|
|
162
|
+
exports.SliceInvokerProvider = SliceInvokerContext.SliceInvokerProvider;
|
|
163
|
+
exports.useSliceInvoker = SliceInvokerContext.useSliceInvoker;
|
|
164
|
+
exports.useWarnEmptySlices = SliceInvokerContext.useWarnEmptySlices;
|
|
165
|
+
exports.SliceCommandFieldsProvider = SliceCommandFieldsContext.SliceCommandFieldsProvider;
|
|
166
|
+
exports.useSliceCommandFields = SliceCommandFieldsContext.useSliceCommandFields;
|
|
167
|
+
exports.sliceDialogDestination = sliceDialogDestination.sliceDialogDestination;
|
|
168
|
+
exports.sliceDialogParameters = sliceDialogDestination.sliceDialogParameters;
|
|
169
|
+
exports.SliceDialogView = SliceDialogView.SliceDialogView;
|
|
170
|
+
exports.sliceFieldLabel = SliceDialogView.sliceFieldLabel;
|
|
171
|
+
exports.slicePayload = SliceDialogView.slicePayload;
|
|
172
|
+
exports.CoreSliceDialog = CoreSliceDialog.CoreSliceDialog;
|
|
153
173
|
exports.IconAdapterRegistry = IconAdapterRegistry.IconAdapterRegistry;
|
|
154
174
|
exports.createIconAdapterRegistry = IconAdapterRegistry.createIconAdapterRegistry;
|
|
155
175
|
exports.IconAdapterProvider = IconAdapterContext.IconAdapterProvider;
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SceneNavigationContext.js","sources":["../../../navigation/SceneNavigationContext.tsx"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { ReactNode, createContext, useContext } from 'react';\nimport { BindingScope } from '@cratis/scene.engine';\nimport { DestinationReference } from '@cratis/scene.model';\nimport { DestinationResolution } from './DestinationResolution';\nimport { DialogResult } from './DialogResult';\n\nexport interface SceneNavigationContextValue {\n /** The screen the last navigation opened. */\n currentScreen: string;\n\n /** The screen in the primary region. */\n primaryScreen: string;\n\n /** Which screen each nested outlet shows, by outlet name. */\n outlets: Record<string, string>;\n currentUrl?: string;\n currentOutlet?: string;\n currentDialog?: string;\n\n /** The route parameters of the current entry - from the destination that opened it, or the deep link. */\n currentParameters: Record<string, string>;\n\n /** What the last dialog returned when it closed. */\n dialogResult?: DialogResult;\n\n /** A deep link that matched no route; the host fell back to its initial screen. */\n unresolvedUrl?: string;\n bindingScope: BindingScope;\n navigate(destination: DestinationReference): DestinationResolution;\n\n /** Closes the open dialog, returning to the entry that opened it, and records its result. */\n closeDialog(result?: unknown): void;\n\n /** Goes back one history entry. */\n back(): void;\n}\n\nconst Context = createContext<SceneNavigationContextValue | undefined>(undefined);\n\n/** The navigation context itself, for components that render outside a host as well as inside one. */\nexport const SceneNavigationContextInternal = Context;\n\nexport interface SceneNavigationProviderProps {\n value: SceneNavigationContextValue;\n children: ReactNode;\n}\n\nexport function SceneNavigationProvider({ value, children }: SceneNavigationProviderProps) {\n return <Context.Provider value={value}>{children}</Context.Provider>;\n}\n\nexport function useSceneNavigation(): SceneNavigationContextValue {\n const context = useContext(Context);\n if (!context) throw new Error('No Scene navigation context is available.');\n return context;\n}\n"],"names":["Context","createContext","undefined","SceneNavigationContextInternal","SceneNavigationProvider","value","children","_jsx","Provider","useSceneNavigation","context","useContext","Error"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"SceneNavigationContext.js","sources":["../../../navigation/SceneNavigationContext.tsx"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { ReactNode, createContext, useContext } from 'react';\nimport { BindingScope } from '@cratis/scene.engine';\nimport { DestinationReference } from '@cratis/scene.model';\nimport { DestinationResolution } from './DestinationResolution';\nimport { DialogResult } from './DialogResult';\n\nexport interface SceneNavigationContextValue {\n /** The screen the last navigation opened. */\n currentScreen: string;\n\n /** The screen in the primary region. */\n primaryScreen: string;\n\n /** Which screen each nested outlet shows, by outlet name. */\n outlets: Record<string, string>;\n currentUrl?: string;\n currentOutlet?: string;\n currentDialog?: string;\n\n /** The parameters the open dialog was opened with - a slice dialog carries its slice, command and title. */\n currentDialogParameters?: Record<string, string>;\n\n /** The route parameters of the current entry - from the destination that opened it, or the deep link. */\n currentParameters: Record<string, string>;\n\n /** What the last dialog returned when it closed. */\n dialogResult?: DialogResult;\n\n /** A deep link that matched no route; the host fell back to its initial screen. */\n unresolvedUrl?: string;\n bindingScope: BindingScope;\n navigate(destination: DestinationReference): DestinationResolution;\n\n /** Closes the open dialog, returning to the entry that opened it, and records its result. */\n closeDialog(result?: unknown): void;\n\n /** Goes back one history entry. */\n back(): void;\n}\n\nconst Context = createContext<SceneNavigationContextValue | undefined>(undefined);\n\n/** The navigation context itself, for components that render outside a host as well as inside one. */\nexport const SceneNavigationContextInternal = Context;\n\nexport interface SceneNavigationProviderProps {\n value: SceneNavigationContextValue;\n children: ReactNode;\n}\n\nexport function SceneNavigationProvider({ value, children }: SceneNavigationProviderProps) {\n return <Context.Provider value={value}>{children}</Context.Provider>;\n}\n\nexport function useSceneNavigation(): SceneNavigationContextValue {\n const context = useContext(Context);\n if (!context) throw new Error('No Scene navigation context is available.');\n return context;\n}\n"],"names":["Context","createContext","undefined","SceneNavigationContextInternal","SceneNavigationProvider","value","children","_jsx","Provider","useSceneNavigation","context","useContext","Error"],"mappings":";;;;;AA2CA,MAAMA,wBAAUC,mBAAAA,CAAuDC,SAAAA,CAAAA;AAEvE,uGACO,MAAMC,8BAAAA,GAAiCH;AAOvC,SAASI,uBAAAA,CAAwB,EAAEC,KAAK,EAAEC,QAAQ,EAAgC,EAAA;IACrF,qBAAOC,cAAA,CAACP,QAAQQ,QAAQ,EAAA;QAACH,KAAAA,EAAOA,KAAAA;AAAQC,QAAAA,QAAAA,EAAAA;;AAC5C;AAEO,SAASG,kBAAAA,GAAAA;AACZ,IAAA,MAAMC,UAAUC,gBAAAA,CAAWX,OAAAA,CAAAA;AAC3B,IAAA,IAAI,CAACU,OAAAA,EAAS,MAAM,IAAIE,KAAAA,CAAM,2CAAA,CAAA;IAC9B,OAAOF,OAAAA;AACX;;;;"}
|