@cratis/scene.react 4.2.0 → 4.3.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/SceneElementView.tsx +13 -4
- package/core/CoreNavigationBar.tsx +53 -0
- package/core/coreComponents.ts +2 -0
- package/core/coreDescriptors.ts +75 -0
- package/core/corePackage.ts +3 -0
- package/core/index.ts +2 -0
- package/dist/cjs/SceneElementView.js +6 -2
- package/dist/cjs/SceneElementView.js.map +1 -1
- package/dist/cjs/core/CoreNavigationBar.js +49 -0
- package/dist/cjs/core/CoreNavigationBar.js.map +1 -0
- package/dist/cjs/core/coreComponents.js +3 -1
- package/dist/cjs/core/coreComponents.js.map +1 -1
- package/dist/cjs/core/coreDescriptors.js +162 -0
- package/dist/cjs/core/coreDescriptors.js.map +1 -0
- package/dist/cjs/core/corePackage.js +5 -2
- package/dist/cjs/core/corePackage.js.map +1 -1
- package/dist/cjs/index.js +4 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/packages/ScenePackageBundle.js +33 -1
- package/dist/cjs/packages/ScenePackageBundle.js.map +1 -1
- package/dist/esm/SceneElementView.d.ts +3 -2
- package/dist/esm/SceneElementView.d.ts.map +1 -1
- package/dist/esm/SceneElementView.js +7 -3
- package/dist/esm/SceneElementView.js.map +1 -1
- package/dist/esm/core/CoreNavigationBar.d.ts +3 -0
- package/dist/esm/core/CoreNavigationBar.d.ts.map +1 -0
- package/dist/esm/core/CoreNavigationBar.js +47 -0
- package/dist/esm/core/CoreNavigationBar.js.map +1 -0
- 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 +3 -0
- package/dist/esm/core/coreDescriptors.d.ts.map +1 -0
- package/dist/esm/core/coreDescriptors.js +160 -0
- package/dist/esm/core/coreDescriptors.js.map +1 -0
- package/dist/esm/core/corePackage.d.ts.map +1 -1
- package/dist/esm/core/corePackage.js +5 -2
- package/dist/esm/core/corePackage.js.map +1 -1
- package/dist/esm/core/index.d.ts +2 -0
- package/dist/esm/core/index.d.ts.map +1 -1
- package/dist/esm/core/index.js +2 -0
- package/dist/esm/core/index.js.map +1 -1
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/packages/ScenePackageBundle.d.ts +2 -1
- package/dist/esm/packages/ScenePackageBundle.d.ts.map +1 -1
- package/dist/esm/packages/ScenePackageBundle.js +33 -1
- package/dist/esm/packages/ScenePackageBundle.js.map +1 -1
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/package.json +11 -10
- package/packages/ScenePackageBundle.ts +49 -2
- package/NavBar/for_NavBar/when_rendering_navigation_contributions.tsx +0 -62
- package/NavBar/for_extractNavigationItem/when_extracting_from_a_navigation_contribution.ts +0 -53
- package/dist/esm/NavBar/for_NavBar/when_rendering_navigation_contributions.d.ts +0 -2
- package/dist/esm/NavBar/for_NavBar/when_rendering_navigation_contributions.d.ts.map +0 -1
- package/dist/esm/NavBar/for_NavBar/when_rendering_navigation_contributions.js +0 -53
- package/dist/esm/NavBar/for_NavBar/when_rendering_navigation_contributions.js.map +0 -1
- package/dist/esm/NavBar/for_extractNavigationItem/when_extracting_from_a_navigation_contribution.d.ts +0 -2
- package/dist/esm/NavBar/for_extractNavigationItem/when_extracting_from_a_navigation_contribution.d.ts.map +0 -1
- package/dist/esm/NavBar/for_extractNavigationItem/when_extracting_from_a_navigation_contribution.js +0 -45
- package/dist/esm/NavBar/for_extractNavigationItem/when_extracting_from_a_navigation_contribution.js.map +0 -1
- package/dist/esm/for_SceneElementView/when_rendering_a_tree.d.ts +0 -2
- package/dist/esm/for_SceneElementView/when_rendering_a_tree.d.ts.map +0 -1
- package/dist/esm/for_SceneElementView/when_rendering_a_tree.js +0 -44
- package/dist/esm/for_SceneElementView/when_rendering_a_tree.js.map +0 -1
- package/dist/esm/for_ScreenplayCoreComponents/when_rendering_a_translated_screen.d.ts +0 -2
- package/dist/esm/for_ScreenplayCoreComponents/when_rendering_a_translated_screen.d.ts.map +0 -1
- package/dist/esm/for_ScreenplayCoreComponents/when_rendering_a_translated_screen.js +0 -46
- package/dist/esm/for_ScreenplayCoreComponents/when_rendering_a_translated_screen.js.map +0 -1
- package/dist/esm/for_applyThemeTokens/when_switching_themes.d.ts +0 -2
- package/dist/esm/for_applyThemeTokens/when_switching_themes.d.ts.map +0 -1
- package/dist/esm/for_applyThemeTokens/when_switching_themes.js +0 -59
- package/dist/esm/for_applyThemeTokens/when_switching_themes.js.map +0 -1
- package/dist/esm/for_panelLayout/when_arranging_a_panel.d.ts +0 -2
- package/dist/esm/for_panelLayout/when_arranging_a_panel.d.ts.map +0 -1
- package/dist/esm/for_panelLayout/when_arranging_a_panel.js +0 -110
- package/dist/esm/for_panelLayout/when_arranging_a_panel.js.map +0 -1
- package/dist/esm/for_themeTokens/when_converting_a_token_name.d.ts +0 -2
- package/dist/esm/for_themeTokens/when_converting_a_token_name.d.ts.map +0 -1
- package/dist/esm/for_themeTokens/when_converting_a_token_name.js +0 -16
- package/dist/esm/for_themeTokens/when_converting_a_token_name.js.map +0 -1
- package/dist/esm/for_useInteractionHosts/when_a_document_asks_the_user_something.d.ts +0 -2
- package/dist/esm/for_useInteractionHosts/when_a_document_asks_the_user_something.d.ts.map +0 -1
- package/dist/esm/for_useInteractionHosts/when_a_document_asks_the_user_something.js +0 -73
- package/dist/esm/for_useInteractionHosts/when_a_document_asks_the_user_something.js.map +0 -1
- package/dist/esm/for_useInteractionHosts/when_the_host_cannot_do_what_was_asked.d.ts +0 -2
- package/dist/esm/for_useInteractionHosts/when_the_host_cannot_do_what_was_asked.d.ts.map +0 -1
- package/dist/esm/for_useInteractionHosts/when_the_host_cannot_do_what_was_asked.js +0 -43
- package/dist/esm/for_useInteractionHosts/when_the_host_cannot_do_what_was_asked.js.map +0 -1
- package/dist/esm/for_useInteractions/when_clicking_an_element_that_executes_a_command.d.ts +0 -2
- package/dist/esm/for_useInteractions/when_clicking_an_element_that_executes_a_command.d.ts.map +0 -1
- package/dist/esm/for_useInteractions/when_clicking_an_element_that_executes_a_command.js +0 -94
- package/dist/esm/for_useInteractions/when_clicking_an_element_that_executes_a_command.js.map +0 -1
- package/dist/esm/for_validatePackageBundle/when_the_bundle_and_manifest_disagree.d.ts +0 -2
- package/dist/esm/for_validatePackageBundle/when_the_bundle_and_manifest_disagree.d.ts.map +0 -1
- package/dist/esm/for_validatePackageBundle/when_the_bundle_and_manifest_disagree.js +0 -59
- package/dist/esm/for_validatePackageBundle/when_the_bundle_and_manifest_disagree.js.map +0 -1
- package/dist/esm/for_validatePackageBundle/when_the_bundle_matches_its_manifest.d.ts +0 -2
- package/dist/esm/for_validatePackageBundle/when_the_bundle_matches_its_manifest.d.ts.map +0 -1
- package/dist/esm/for_validatePackageBundle/when_the_bundle_matches_its_manifest.js +0 -8
- package/dist/esm/for_validatePackageBundle/when_the_bundle_matches_its_manifest.js.map +0 -1
- package/for_SceneElementView/when_rendering_a_tree.tsx +0 -53
- package/for_ScreenplayCoreComponents/when_rendering_a_translated_screen.tsx +0 -60
- package/for_applyThemeTokens/when_switching_themes.ts +0 -74
- package/for_panelLayout/when_arranging_a_panel.ts +0 -135
- package/for_themeTokens/when_converting_a_token_name.ts +0 -22
- package/for_useInteractionHosts/when_a_document_asks_the_user_something.tsx +0 -106
- package/for_useInteractionHosts/when_the_host_cannot_do_what_was_asked.tsx +0 -66
- package/for_useInteractions/when_clicking_an_element_that_executes_a_command.tsx +0 -141
- package/for_validatePackageBundle/when_the_bundle_and_manifest_disagree.ts +0 -72
- package/for_validatePackageBundle/when_the_bundle_matches_its_manifest.ts +0 -12
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
import { Dock, GridUnitType, HorizontalAlignment, Orientation, VerticalAlignment, Visibility } from '@cratis/scene.model';
|
|
2
|
-
import { childStyle, panelStyle } from '../renderer/panelLayout';
|
|
3
|
-
const base = {
|
|
4
|
-
id: 'panel',
|
|
5
|
-
properties: {},
|
|
6
|
-
visibility: Visibility.Visible,
|
|
7
|
-
isEnabled: true,
|
|
8
|
-
opacity: 1,
|
|
9
|
-
zIndex: 0,
|
|
10
|
-
size: {},
|
|
11
|
-
name: 'panel',
|
|
12
|
-
minimumSize: {},
|
|
13
|
-
maximumSize: {},
|
|
14
|
-
margin: { left: 0, top: 0, right: 0, bottom: 0 },
|
|
15
|
-
horizontalAlignment: HorizontalAlignment.Stretch,
|
|
16
|
-
verticalAlignment: VerticalAlignment.Stretch,
|
|
17
|
-
children: [],
|
|
18
|
-
};
|
|
19
|
-
const child = (properties = {}) => ({ id: 'child', properties });
|
|
20
|
-
const star = (value) => ({ value, unitType: GridUnitType.Star });
|
|
21
|
-
const row = (over = {}) => ({ height: star(1), minimumHeight: 0, maximumHeight: Number.POSITIVE_INFINITY, ...over });
|
|
22
|
-
const column = (over = {}) => ({ width: star(1), minimumWidth: 0, maximumWidth: Number.POSITIVE_INFINITY, ...over });
|
|
23
|
-
describe('when arranging a panel', () => {
|
|
24
|
-
it('should make a canvas the coordinate space its children are placed against', () => {
|
|
25
|
-
const panel = { ...base, extent: {} };
|
|
26
|
-
panelStyle(panel).position.should.equal('relative');
|
|
27
|
-
});
|
|
28
|
-
it('should size a canvas to its extent', () => {
|
|
29
|
-
const panel = { ...base, extent: { width: 1280, height: 800 } };
|
|
30
|
-
const style = panelStyle(panel);
|
|
31
|
-
[style.width, style.height].should.have.members([1280, 800]);
|
|
32
|
-
});
|
|
33
|
-
it('should place a canvas child at the edges it names', () => {
|
|
34
|
-
const panel = { ...base, extent: {} };
|
|
35
|
-
const style = childStyle(panel, child({ 'Canvas.Left': 40, 'Canvas.Top': 24 }), 0);
|
|
36
|
-
style.position.should.equal('absolute');
|
|
37
|
-
[style.left, style.top].should.have.members([40, 24]);
|
|
38
|
-
});
|
|
39
|
-
it('should leave a canvas child that names no edge in flow', () => {
|
|
40
|
-
const panel = { ...base, extent: {} };
|
|
41
|
-
(childStyle(panel, child(), 0) === undefined).should.be.true;
|
|
42
|
-
});
|
|
43
|
-
it('should lay a stack panel out along its orientation', () => {
|
|
44
|
-
const panel = { ...base, orientation: Orientation.Horizontal, spacing: 8 };
|
|
45
|
-
panelStyle(panel).flexDirection.should.equal('row');
|
|
46
|
-
});
|
|
47
|
-
it('should space a stack panel by its spacing', () => {
|
|
48
|
-
const panel = { ...base, orientation: Orientation.Vertical, spacing: 12 };
|
|
49
|
-
panelStyle(panel).gap.should.equal('12px');
|
|
50
|
-
});
|
|
51
|
-
it('should wrap a wrap panel', () => {
|
|
52
|
-
const panel = { ...base, orientation: Orientation.Horizontal };
|
|
53
|
-
panelStyle(panel).flexWrap.should.equal('wrap');
|
|
54
|
-
});
|
|
55
|
-
it('should turn star tracks into fractions', () => {
|
|
56
|
-
const panel = { ...base, rows: [row(), row({ height: star(2) })], columns: [] };
|
|
57
|
-
panelStyle(panel).gridTemplateRows.should.equal('1fr 2fr');
|
|
58
|
-
});
|
|
59
|
-
it('should turn an absolute track into pixels', () => {
|
|
60
|
-
const panel = { ...base, rows: [], columns: [column({ width: { value: 240, unitType: GridUnitType.Absolute } })] };
|
|
61
|
-
panelStyle(panel).gridTemplateColumns.should.equal('240px');
|
|
62
|
-
});
|
|
63
|
-
it('should turn a content-sized track into auto', () => {
|
|
64
|
-
const panel = { ...base, rows: [], columns: [column({ width: { value: 0, unitType: GridUnitType.Auto } })] };
|
|
65
|
-
panelStyle(panel).gridTemplateColumns.should.equal('auto');
|
|
66
|
-
});
|
|
67
|
-
it('should bound a track that states a minimum', () => {
|
|
68
|
-
const panel = { ...base, rows: [row({ minimumHeight: 40 })], columns: [] };
|
|
69
|
-
panelStyle(panel).gridTemplateRows.should.equal('minmax(40px, 1fr)');
|
|
70
|
-
});
|
|
71
|
-
it('should leave a plain panel unstyled', () => (panelStyle({ ...base }) === undefined).should.be.true);
|
|
72
|
-
});
|
|
73
|
-
describe('when placing a child in a panel', () => {
|
|
74
|
-
it('should place a grid child in the cell it names, one-based for CSS', () => {
|
|
75
|
-
const panel = { ...base, rows: [row()], columns: [column()] };
|
|
76
|
-
childStyle(panel, child({ 'Grid.Row': 1, 'Grid.Column': 2 }), 0).gridRow.should.equal('2 / span 1');
|
|
77
|
-
});
|
|
78
|
-
it('should span a grid child that asks for it', () => {
|
|
79
|
-
const panel = { ...base, rows: [row()], columns: [column()] };
|
|
80
|
-
childStyle(panel, child({ 'Grid.Column': 0, 'Grid.ColumnSpan': 3 }), 0).gridColumn.should.equal('1 / span 3');
|
|
81
|
-
});
|
|
82
|
-
it('should leave a grid child that names no cell to the implicit flow', () => {
|
|
83
|
-
const panel = { ...base, rows: [row()], columns: [column()] };
|
|
84
|
-
(childStyle(panel, child(), 0) === undefined).should.be.true;
|
|
85
|
-
});
|
|
86
|
-
it('should let a dock panel last child fill what is left', () => {
|
|
87
|
-
const kid = child();
|
|
88
|
-
const panel = { ...base, lastChildFill: true, children: [kid] };
|
|
89
|
-
childStyle(panel, kid, 0).flex.should.equal('1 1 auto');
|
|
90
|
-
});
|
|
91
|
-
it('should keep a docked child at its natural size', () => {
|
|
92
|
-
const first = child({ Dock: Dock.Top });
|
|
93
|
-
const panel = { ...base, lastChildFill: true, children: [first, child()] };
|
|
94
|
-
childStyle(panel, first, 0).flex.should.equal('0 0 auto');
|
|
95
|
-
});
|
|
96
|
-
it('should not let the last child fill when the panel says not to', () => {
|
|
97
|
-
const kid = child();
|
|
98
|
-
const panel = { ...base, lastChildFill: false, children: [kid] };
|
|
99
|
-
childStyle(panel, kid, 0).flex.should.equal('0 0 auto');
|
|
100
|
-
});
|
|
101
|
-
it('should size wrap panel children when the panel sizes them', () => {
|
|
102
|
-
const panel = { ...base, orientation: Orientation.Horizontal, itemWidth: 120 };
|
|
103
|
-
childStyle(panel, child(), 0).width.should.equal(120);
|
|
104
|
-
});
|
|
105
|
-
it('should leave wrap panel children their own size when the panel sizes neither axis', () => {
|
|
106
|
-
const panel = { ...base, orientation: Orientation.Horizontal };
|
|
107
|
-
(childStyle(panel, child(), 0) === undefined).should.be.true;
|
|
108
|
-
});
|
|
109
|
-
});
|
|
110
|
-
//# sourceMappingURL=when_arranging_a_panel.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"when_arranging_a_panel.js","sourceRoot":"","sources":["../../../for_panelLayout/when_arranging_a_panel.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"when_converting_a_token_name.d.ts","sourceRoot":"","sources":["../../../for_themeTokens/when_converting_a_token_name.ts"],"names":[],"mappings":""}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { themeTokenProperty } from '../index';
|
|
2
|
-
describe('when converting a token name', () => {
|
|
3
|
-
it('should prefix a single-segment name', () => {
|
|
4
|
-
themeTokenProperty('primary').should.equal('--scene-primary');
|
|
5
|
-
});
|
|
6
|
-
it('should join dotted segments with dashes', () => {
|
|
7
|
-
themeTokenProperty('primary.color').should.equal('--scene-primary-color');
|
|
8
|
-
});
|
|
9
|
-
it('should split camelCase within a segment', () => {
|
|
10
|
-
themeTokenProperty('surface.borderColor').should.equal('--scene-surface-border-color');
|
|
11
|
-
});
|
|
12
|
-
it('should handle a segment with a digit boundary', () => {
|
|
13
|
-
themeTokenProperty('surface.level2Background').should.equal('--scene-surface-level2-background');
|
|
14
|
-
});
|
|
15
|
-
});
|
|
16
|
-
//# sourceMappingURL=when_converting_a_token_name.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"when_converting_a_token_name.js","sourceRoot":"","sources":["../../../for_themeTokens/when_converting_a_token_name.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAE9C,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC1C,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC3C,kBAAkB,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QAC/C,kBAAkB,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QAC/C,kBAAkB,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAC3F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACrD,kBAAkB,CAAC,0BAA0B,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACrG,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"when_a_document_asks_the_user_something.d.ts","sourceRoot":"","sources":["../../../for_useInteractionHosts/when_a_document_asks_the_user_something.tsx"],"names":[],"mappings":""}
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { render, screen, within } from '@testing-library/react';
|
|
3
|
-
import userEvent from '@testing-library/user-event';
|
|
4
|
-
import { useMemo } from 'react';
|
|
5
|
-
import { InteractionActionKind, InteractionTriggerKind, NotificationLevel } from '@cratis/scene.model';
|
|
6
|
-
import { InteractionScope, createBrowserDispatcher, useInteractionHosts, useInteractions } from '../interactions';
|
|
7
|
-
const executed = [];
|
|
8
|
-
const confirmThenExecute = {
|
|
9
|
-
name: 'CancelInvoice',
|
|
10
|
-
bindings: [
|
|
11
|
-
{
|
|
12
|
-
trigger: { kind: InteractionTriggerKind.Click },
|
|
13
|
-
actions: [
|
|
14
|
-
{ kind: InteractionActionKind.Confirm, message: { text: 'Cancel this invoice?' } },
|
|
15
|
-
{ kind: InteractionActionKind.ExecuteCommand, command: 'CancelInvoice' },
|
|
16
|
-
{ kind: InteractionActionKind.Notify, level: NotificationLevel.Info, message: { text: 'Invoice cancelled' } },
|
|
17
|
-
],
|
|
18
|
-
},
|
|
19
|
-
],
|
|
20
|
-
};
|
|
21
|
-
function Button({ behaviors }) {
|
|
22
|
-
const handlers = useInteractions('element', behaviors);
|
|
23
|
-
return _jsx("button", { type: "button", ...handlers, children: "Cancel" });
|
|
24
|
-
}
|
|
25
|
-
function Application({ behaviors }) {
|
|
26
|
-
const { host, surfaces } = useInteractionHosts();
|
|
27
|
-
const dispatcher = useMemo(() => createBrowserDispatcher({
|
|
28
|
-
...host,
|
|
29
|
-
executeCommand: async (command) => {
|
|
30
|
-
executed.push(command);
|
|
31
|
-
return { isSuccess: true };
|
|
32
|
-
},
|
|
33
|
-
}), [host]);
|
|
34
|
-
return (_jsxs(InteractionScope, { dispatcher: dispatcher, attachments: [], children: [_jsx(Button, { behaviors: behaviors }), surfaces] }));
|
|
35
|
-
}
|
|
36
|
-
describe('when a document asks the user something', () => {
|
|
37
|
-
beforeEach(() => { executed.length = 0; });
|
|
38
|
-
it('should ask in the page rather than in a browser prompt', async () => {
|
|
39
|
-
render(_jsx(Application, { behaviors: [confirmThenExecute] }));
|
|
40
|
-
await userEvent.click(screen.getByRole('button', { name: 'Cancel' }));
|
|
41
|
-
screen.getByRole('alertdialog').getAttribute('aria-label').should.equal('Cancel this invoice?');
|
|
42
|
-
});
|
|
43
|
-
it('should not run what follows until the question is answered', async () => {
|
|
44
|
-
render(_jsx(Application, { behaviors: [confirmThenExecute] }));
|
|
45
|
-
await userEvent.click(screen.getByRole('button', { name: 'Cancel' }));
|
|
46
|
-
executed.should.have.lengthOf(0);
|
|
47
|
-
});
|
|
48
|
-
it('should run what follows when the answer is yes', async () => {
|
|
49
|
-
render(_jsx(Application, { behaviors: [confirmThenExecute] }));
|
|
50
|
-
await userEvent.click(screen.getByRole('button', { name: 'Cancel' }));
|
|
51
|
-
await userEvent.click(screen.getByRole('button', { name: 'OK' }));
|
|
52
|
-
executed.should.eql(['CancelInvoice']);
|
|
53
|
-
});
|
|
54
|
-
it('should abandon the sequence when the answer is no', async () => {
|
|
55
|
-
render(_jsx(Application, { behaviors: [confirmThenExecute] }));
|
|
56
|
-
await userEvent.click(screen.getByRole('button', { name: 'Cancel' }));
|
|
57
|
-
await userEvent.click(within(screen.getByRole('alertdialog')).getByRole('button', { name: 'Cancel' }));
|
|
58
|
-
executed.should.have.lengthOf(0);
|
|
59
|
-
});
|
|
60
|
-
it('should take the question down once it is answered', async () => {
|
|
61
|
-
render(_jsx(Application, { behaviors: [confirmThenExecute] }));
|
|
62
|
-
await userEvent.click(screen.getByRole('button', { name: 'Cancel' }));
|
|
63
|
-
await userEvent.click(screen.getByRole('button', { name: 'OK' }));
|
|
64
|
-
(screen.queryByRole('alertdialog') === null).should.equal(true);
|
|
65
|
-
});
|
|
66
|
-
it('should show what the document said after the command ran', async () => {
|
|
67
|
-
render(_jsx(Application, { behaviors: [confirmThenExecute] }));
|
|
68
|
-
await userEvent.click(screen.getByRole('button', { name: 'Cancel' }));
|
|
69
|
-
await userEvent.click(screen.getByRole('button', { name: 'OK' }));
|
|
70
|
-
screen.getByText('Invoice cancelled').textContent.should.equal('Invoice cancelled');
|
|
71
|
-
});
|
|
72
|
-
});
|
|
73
|
-
//# sourceMappingURL=when_a_document_asks_the_user_something.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"when_a_document_asks_the_user_something.js","sourceRoot":"","sources":["../../../for_useInteractionHosts/when_a_document_asks_the_user_something.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"when_the_host_cannot_do_what_was_asked.d.ts","sourceRoot":"","sources":["../../../for_useInteractionHosts/when_the_host_cannot_do_what_was_asked.tsx"],"names":[],"mappings":""}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { render, screen } from '@testing-library/react';
|
|
3
|
-
import userEvent from '@testing-library/user-event';
|
|
4
|
-
import { useMemo } from 'react';
|
|
5
|
-
import { InteractionActionKind, InteractionTriggerKind } from '@cratis/scene.model';
|
|
6
|
-
import { InteractionScope, createBrowserDispatcher, useInteractionHosts, useInteractions } from '../interactions';
|
|
7
|
-
const navigateSomewhere = {
|
|
8
|
-
name: 'GoToInvoice',
|
|
9
|
-
bindings: [
|
|
10
|
-
{
|
|
11
|
-
trigger: { kind: InteractionTriggerKind.Click },
|
|
12
|
-
actions: [{ kind: InteractionActionKind.Navigate, screen: 'InvoiceDetails' }],
|
|
13
|
-
},
|
|
14
|
-
],
|
|
15
|
-
};
|
|
16
|
-
function Button() {
|
|
17
|
-
const handlers = useInteractions('element', [navigateSomewhere]);
|
|
18
|
-
return _jsx("button", { type: "button", ...handlers, children: "Open" });
|
|
19
|
-
}
|
|
20
|
-
function Application() {
|
|
21
|
-
const { host, surfaces } = useInteractionHosts();
|
|
22
|
-
const dispatcher = useMemo(() => createBrowserDispatcher(host), [host]);
|
|
23
|
-
return (_jsxs(InteractionScope, { dispatcher: dispatcher, attachments: [], children: [_jsx(Button, {}), surfaces] }));
|
|
24
|
-
}
|
|
25
|
-
describe('when the host cannot do what was asked', () => {
|
|
26
|
-
it('should say so on the screen rather than do nothing', async () => {
|
|
27
|
-
render(_jsx(Application, {}));
|
|
28
|
-
await userEvent.click(screen.getByRole('button', { name: 'Open' }));
|
|
29
|
-
screen.getByText('navigate to InvoiceDetails').textContent.should.equal('navigate to InvoiceDetails');
|
|
30
|
-
});
|
|
31
|
-
it('should report the same action once however often it is asked for', async () => {
|
|
32
|
-
render(_jsx(Application, {}));
|
|
33
|
-
await userEvent.click(screen.getByRole('button', { name: 'Open' }));
|
|
34
|
-
await userEvent.click(screen.getByRole('button', { name: 'Open' }));
|
|
35
|
-
await userEvent.click(screen.getByRole('button', { name: 'Open' }));
|
|
36
|
-
screen.getAllByText('navigate to InvoiceDetails').should.have.lengthOf(1);
|
|
37
|
-
});
|
|
38
|
-
it('should say nothing when nothing has failed', () => {
|
|
39
|
-
render(_jsx(Application, {}));
|
|
40
|
-
(screen.queryByText(/cannot do what the document asked/) === null).should.equal(true);
|
|
41
|
-
});
|
|
42
|
-
});
|
|
43
|
-
//# sourceMappingURL=when_the_host_cannot_do_what_was_asked.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"when_the_host_cannot_do_what_was_asked.js","sourceRoot":"","sources":["../../../for_useInteractionHosts/when_the_host_cannot_do_what_was_asked.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,SAAS,MAAM,6BAA6B,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAY,MAAM,qBAAqB,CAAC;AAC9F,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElH,MAAM,iBAAiB,GAAa;IAChC,IAAI,EAAE,aAAa;IACnB,QAAQ,EAAE;QACN;YACI,OAAO,EAAE,EAAE,IAAI,EAAE,sBAAsB,CAAC,KAAK,EAAW;YACxD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAW,CAAC;SACzF;KACJ;CACJ,CAAC;AAEF,SAAS,MAAM;IACX,MAAM,QAAQ,GAAG,eAAe,CAAC,SAAS,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACjE,OAAO,iBAAQ,IAAI,EAAC,QAAQ,KAAK,QAAQ,qBAAe,CAAC;AAC7D,CAAC;AAKD,SAAS,WAAW;IAChB,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,mBAAmB,EAAE,CAAC;IACjD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAExE,OAAO,CACH,MAAC,gBAAgB,IAAC,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,EAAE,aACrD,KAAC,MAAM,KAAG,EACT,QAAQ,IACM,CACtB,CAAC;AACN,CAAC;AAED,QAAQ,CAAC,wCAAwC,EAAE,GAAG,EAAE;IACpD,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QAChE,MAAM,CAAC,KAAC,WAAW,KAAG,CAAC,CAAC;QAExB,MAAM,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QAEpE,MAAM,CAAC,SAAS,CAAC,4BAA4B,CAAC,CAAC,WAAY,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAC3G,CAAC,CAAC,CAAC;IAIH,EAAE,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;QAC9E,MAAM,CAAC,KAAC,WAAW,KAAG,CAAC,CAAC;QAExB,MAAM,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QACpE,MAAM,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QACpE,MAAM,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QAEpE,MAAM,CAAC,YAAY,CAAC,4BAA4B,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QAClD,MAAM,CAAC,KAAC,WAAW,KAAG,CAAC,CAAC;QAExB,CAAC,MAAM,CAAC,WAAW,CAAC,mCAAmC,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1F,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
package/dist/esm/for_useInteractions/when_clicking_an_element_that_executes_a_command.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"when_clicking_an_element_that_executes_a_command.d.ts","sourceRoot":"","sources":["../../../for_useInteractions/when_clicking_an_element_that_executes_a_command.tsx"],"names":[],"mappings":""}
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { render, screen } from '@testing-library/react';
|
|
3
|
-
import userEvent from '@testing-library/user-event';
|
|
4
|
-
import { InteractionActionKind, InteractionTriggerKind, NotificationLevel } from '@cratis/scene.model';
|
|
5
|
-
import { InteractionScope, useInteractions } from '../interactions';
|
|
6
|
-
const calls = [];
|
|
7
|
-
const dispatcher = {
|
|
8
|
-
async executeCommand(command, args) {
|
|
9
|
-
calls.push(`executeCommand:${command}:${JSON.stringify(args)}`);
|
|
10
|
-
return { isSuccess: true };
|
|
11
|
-
},
|
|
12
|
-
navigate: (screenName) => { calls.push(`navigate:${screenName}`); },
|
|
13
|
-
navigateBack: () => { calls.push('navigateBack'); },
|
|
14
|
-
openDialog: async () => { calls.push('openDialog'); return { isConfirmed: true }; },
|
|
15
|
-
closeDialog: () => { calls.push('closeDialog'); },
|
|
16
|
-
refreshQuery: async (query) => { calls.push(`refreshQuery:${query}`); },
|
|
17
|
-
setState: (target) => { calls.push(`setState:${target}`); },
|
|
18
|
-
notify: (level, message) => { calls.push(`notify:${level}:${message}`); },
|
|
19
|
-
confirm: async () => { calls.push('confirm'); return true; },
|
|
20
|
-
raise: async (trigger) => { calls.push(`raise:${trigger}`); },
|
|
21
|
-
};
|
|
22
|
-
const context = { resolve: binding => `<${binding.path}>` };
|
|
23
|
-
const cancelOnClick = {
|
|
24
|
-
name: 'CancelInvoice',
|
|
25
|
-
bindings: [
|
|
26
|
-
{
|
|
27
|
-
trigger: { kind: InteractionTriggerKind.Click },
|
|
28
|
-
actions: [
|
|
29
|
-
{
|
|
30
|
-
kind: InteractionActionKind.ExecuteCommand,
|
|
31
|
-
command: 'CancelInvoice',
|
|
32
|
-
arguments: [{ name: 'invoiceId', value: { path: 'item.invoiceId' } }],
|
|
33
|
-
onSuccess: [{ kind: InteractionActionKind.RefreshQuery, query: 'Invoices' }],
|
|
34
|
-
},
|
|
35
|
-
],
|
|
36
|
-
},
|
|
37
|
-
],
|
|
38
|
-
};
|
|
39
|
-
function Button({ behaviors }) {
|
|
40
|
-
const handlers = useInteractions('element', behaviors);
|
|
41
|
-
return _jsx("button", { type: "button", ...handlers, children: "Cancel" });
|
|
42
|
-
}
|
|
43
|
-
function renderInScope(behaviors) {
|
|
44
|
-
return render(_jsx(InteractionScope, { dispatcher: dispatcher, context: context, attachments: [], children: _jsx(Button, { behaviors: behaviors }) }));
|
|
45
|
-
}
|
|
46
|
-
describe('when clicking an element that executes a command', () => {
|
|
47
|
-
beforeEach(() => { calls.length = 0; });
|
|
48
|
-
it('should execute the command the document declared', async () => {
|
|
49
|
-
renderInScope([cancelOnClick]);
|
|
50
|
-
await userEvent.click(screen.getByRole('button'));
|
|
51
|
-
calls.should.eql(['executeCommand:CancelInvoice:{"invoiceId":"<item.invoiceId>"}', 'refreshQuery:Invoices']);
|
|
52
|
-
});
|
|
53
|
-
it('should not make an element interactive when nothing is attached', async () => {
|
|
54
|
-
renderInScope();
|
|
55
|
-
await userEvent.click(screen.getByRole('button'));
|
|
56
|
-
calls.should.have.lengthOf(0);
|
|
57
|
-
});
|
|
58
|
-
it('should attach no handler for a trigger the document does not use', async () => {
|
|
59
|
-
renderInScope([cancelOnClick]);
|
|
60
|
-
await userEvent.dblClick(screen.getByRole('button'));
|
|
61
|
-
calls.filter(call => call.startsWith('executeCommand')).should.have.lengthOf(2);
|
|
62
|
-
});
|
|
63
|
-
it('should run a behavior attached further out as well as its own', async () => {
|
|
64
|
-
render(_jsx(InteractionScope, { dispatcher: dispatcher, context: context, attachments: [{
|
|
65
|
-
level: 'module',
|
|
66
|
-
behaviors: [{
|
|
67
|
-
name: 'ModuleWide',
|
|
68
|
-
bindings: [{
|
|
69
|
-
trigger: { kind: InteractionTriggerKind.Click },
|
|
70
|
-
actions: [{ kind: InteractionActionKind.Notify, level: NotificationLevel.Info, message: { text: 'from the module' } }],
|
|
71
|
-
}],
|
|
72
|
-
}],
|
|
73
|
-
}], children: _jsx(Button, { behaviors: [cancelOnClick] }) }));
|
|
74
|
-
await userEvent.click(screen.getByRole('button'));
|
|
75
|
-
calls.should.eql([
|
|
76
|
-
'notify:Info:from the module',
|
|
77
|
-
'executeCommand:CancelInvoice:{"invoiceId":"<item.invoiceId>"}',
|
|
78
|
-
'refreshQuery:Invoices',
|
|
79
|
-
]);
|
|
80
|
-
});
|
|
81
|
-
it('should not run a binding whose guard is false', async () => {
|
|
82
|
-
render(_jsx(InteractionScope, { dispatcher: dispatcher, context: { resolve: () => false }, attachments: [], children: _jsx(Button, { behaviors: [{
|
|
83
|
-
name: 'Guarded',
|
|
84
|
-
bindings: [{
|
|
85
|
-
trigger: { kind: InteractionTriggerKind.Click },
|
|
86
|
-
condition: { path: 'item.canCancel' },
|
|
87
|
-
actions: [{ kind: InteractionActionKind.ExecuteCommand, command: 'CancelInvoice' }],
|
|
88
|
-
}],
|
|
89
|
-
}] }) }));
|
|
90
|
-
await userEvent.click(screen.getByRole('button'));
|
|
91
|
-
calls.should.have.lengthOf(0);
|
|
92
|
-
});
|
|
93
|
-
});
|
|
94
|
-
//# sourceMappingURL=when_clicking_an_element_that_executes_a_command.js.map
|
package/dist/esm/for_useInteractions/when_clicking_an_element_that_executes_a_command.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"when_clicking_an_element_that_executes_a_command.js","sourceRoot":"","sources":["../../../for_useInteractions/when_clicking_an_element_that_executes_a_command.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"when_the_bundle_and_manifest_disagree.d.ts","sourceRoot":"","sources":["../../../for_validatePackageBundle/when_the_bundle_and_manifest_disagree.ts"],"names":[],"mappings":""}
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import { PackageKind } from '@cratis/scene.model';
|
|
2
|
-
import { componentRegistryKey, validatePackageBundle } from '../index';
|
|
3
|
-
import { CoreText } from '../core';
|
|
4
|
-
function manifestFor(components, layouts = [], themes = [], screenTemplates = []) {
|
|
5
|
-
return {
|
|
6
|
-
name: 'Test',
|
|
7
|
-
version: '1.0.0',
|
|
8
|
-
kind: PackageKind.ComponentLibrary,
|
|
9
|
-
dependencies: [],
|
|
10
|
-
components,
|
|
11
|
-
layouts,
|
|
12
|
-
screenTemplates,
|
|
13
|
-
dialogTemplates: [],
|
|
14
|
-
themes,
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
describe('when the bundle and manifest disagree', () => {
|
|
18
|
-
const declaredButNotRegistered = validatePackageBundle({
|
|
19
|
-
manifest: manifestFor(['text', 'missing']),
|
|
20
|
-
components: { [componentRegistryKey('Test', 'text')]: CoreText },
|
|
21
|
-
});
|
|
22
|
-
const registeredButNotDeclared = validatePackageBundle({
|
|
23
|
-
manifest: manifestFor([]),
|
|
24
|
-
components: { [componentRegistryKey('Test', 'text')]: CoreText },
|
|
25
|
-
});
|
|
26
|
-
const layoutDeclaredButNotProvided = validatePackageBundle({
|
|
27
|
-
manifest: manifestFor([], ['AppShell']),
|
|
28
|
-
components: {},
|
|
29
|
-
});
|
|
30
|
-
const screenTemplateDeclaredButNotProvided = validatePackageBundle({
|
|
31
|
-
manifest: manifestFor([], [], [], ['ModuleWorkspace']),
|
|
32
|
-
components: {},
|
|
33
|
-
});
|
|
34
|
-
const themeDeclaredButNotProvided = validatePackageBundle({
|
|
35
|
-
manifest: manifestFor([], [], ['Midnight']),
|
|
36
|
-
components: {},
|
|
37
|
-
});
|
|
38
|
-
it('should report a component the manifest declares without an implementation', () => {
|
|
39
|
-
declaredButNotRegistered.should.have.lengthOf(1);
|
|
40
|
-
declaredButNotRegistered[0].should.contain("'missing'");
|
|
41
|
-
});
|
|
42
|
-
it('should report a component registered without being declared', () => {
|
|
43
|
-
registeredButNotDeclared.should.have.lengthOf(1);
|
|
44
|
-
registeredButNotDeclared[0].should.contain('Test:text');
|
|
45
|
-
});
|
|
46
|
-
it('should report a layout the manifest declares without a definition', () => {
|
|
47
|
-
layoutDeclaredButNotProvided.should.have.lengthOf(1);
|
|
48
|
-
layoutDeclaredButNotProvided[0].should.contain("'AppShell'");
|
|
49
|
-
});
|
|
50
|
-
it('should report a screen template the manifest declares without a definition', () => {
|
|
51
|
-
screenTemplateDeclaredButNotProvided.should.have.lengthOf(1);
|
|
52
|
-
screenTemplateDeclaredButNotProvided[0].should.contain("'ModuleWorkspace'");
|
|
53
|
-
});
|
|
54
|
-
it('should report a theme the manifest declares without a definition', () => {
|
|
55
|
-
themeDeclaredButNotProvided.should.have.lengthOf(1);
|
|
56
|
-
themeDeclaredButNotProvided[0].should.contain("'Midnight'");
|
|
57
|
-
});
|
|
58
|
-
});
|
|
59
|
-
//# sourceMappingURL=when_the_bundle_and_manifest_disagree.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"when_the_bundle_and_manifest_disagree.js","sourceRoot":"","sources":["../../../for_validatePackageBundle/when_the_bundle_and_manifest_disagree.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"when_the_bundle_matches_its_manifest.d.ts","sourceRoot":"","sources":["../../../for_validatePackageBundle/when_the_bundle_matches_its_manifest.ts"],"names":[],"mappings":""}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { corePackage, validatePackageBundle } from '../index';
|
|
2
|
-
describe('when the bundle matches its manifest', () => {
|
|
3
|
-
const problems = validatePackageBundle(corePackage);
|
|
4
|
-
it('should report no problems', () => {
|
|
5
|
-
problems.should.be.empty;
|
|
6
|
-
});
|
|
7
|
-
});
|
|
8
|
-
//# sourceMappingURL=when_the_bundle_matches_its_manifest.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"when_the_bundle_matches_its_manifest.js","sourceRoot":"","sources":["../../../for_validatePackageBundle/when_the_bundle_matches_its_manifest.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAE9D,QAAQ,CAAC,sCAAsC,EAAE,GAAG,EAAE;IAClD,MAAM,QAAQ,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;IAEpD,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACjC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC;IAC7B,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
// Copyright (c) Cratis. All rights reserved.
|
|
2
|
-
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
3
|
-
|
|
4
|
-
import { expect } from 'chai';
|
|
5
|
-
import { render, screen } from '@testing-library/react';
|
|
6
|
-
import { Control, ExternalComponent, HorizontalAlignment, VerticalAlignment, Visibility } from '@cratis/scene.model';
|
|
7
|
-
import { SceneElementView } from '../SceneElementView';
|
|
8
|
-
import { coreComponents } from '../core';
|
|
9
|
-
|
|
10
|
-
function control(id: string): Control {
|
|
11
|
-
return {
|
|
12
|
-
id,
|
|
13
|
-
name: id,
|
|
14
|
-
properties: {},
|
|
15
|
-
visibility: Visibility.Visible,
|
|
16
|
-
isEnabled: true,
|
|
17
|
-
opacity: 1,
|
|
18
|
-
size: {},
|
|
19
|
-
zIndex: 0,
|
|
20
|
-
minimumSize: {},
|
|
21
|
-
maximumSize: {},
|
|
22
|
-
margin: { left: 0, top: 0, right: 0, bottom: 0 },
|
|
23
|
-
horizontalAlignment: HorizontalAlignment.Stretch,
|
|
24
|
-
verticalAlignment: VerticalAlignment.Stretch,
|
|
25
|
-
borderThickness: { left: 0, top: 0, right: 0, bottom: 0 },
|
|
26
|
-
padding: { left: 0, top: 0, right: 0, bottom: 0 },
|
|
27
|
-
tabIndex: 0,
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
describe('when rendering a tree', () => {
|
|
32
|
-
describe('and every component resolves', () => {
|
|
33
|
-
const text: ExternalComponent = { ...control('greeting'), componentName: 'core:text', properties: { text: 'Hello Scene' }, slots: {} };
|
|
34
|
-
const card: ExternalComponent = { ...control('card'), componentName: 'core:card', slots: { content: [text] } };
|
|
35
|
-
|
|
36
|
-
beforeEach(() => {
|
|
37
|
-
render(<SceneElementView element={card} registry={coreComponents} resolveBinding={() => undefined} />);
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
it('should render the nested core:text content', () => expect(screen.getByText('Hello Scene')).to.exist);
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
describe('and a component does not resolve', () => {
|
|
44
|
-
const missing: ExternalComponent = { ...control('missing'), componentName: 'vendor:fancy-widget', slots: {} };
|
|
45
|
-
|
|
46
|
-
beforeEach(() => {
|
|
47
|
-
render(<SceneElementView element={missing} registry={coreComponents} resolveBinding={() => undefined} />);
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
it('should render a visible unresolved-component placeholder', () =>
|
|
51
|
-
expect(screen.getByText('Unresolved component: vendor:fancy-widget')).to.exist);
|
|
52
|
-
});
|
|
53
|
-
});
|