@cratis/scene.blueprint.default 4.39.0 → 4.41.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/ComponentName.ts +27 -0
- package/defaultBlueprint.ts +1 -0
- package/defaultBlueprintComponents.ts +10 -1
- package/dist/cjs/ComponentName.js +9 -0
- package/dist/cjs/ComponentName.js.map +1 -1
- package/dist/cjs/defaultBlueprint.js +18 -1
- package/dist/cjs/defaultBlueprint.js.map +1 -1
- package/dist/cjs/defaultBlueprintComponentMetadata.js +9 -0
- package/dist/cjs/defaultBlueprintComponentMetadata.js.map +1 -1
- package/dist/cjs/defaultBlueprintComponents.js +28 -1
- package/dist/cjs/defaultBlueprintComponents.js.map +1 -1
- package/dist/cjs/foundation/BulkBar.js +62 -0
- package/dist/cjs/foundation/BulkBar.js.map +1 -0
- package/dist/cjs/foundation/DataList.js +436 -0
- package/dist/cjs/foundation/DataList.js.map +1 -0
- package/dist/cjs/foundation/FormScreenBody.js +447 -0
- package/dist/cjs/foundation/FormScreenBody.js.map +1 -0
- package/dist/cjs/foundation/FoundationStates.js +2 -1
- package/dist/cjs/foundation/FoundationStates.js.map +1 -1
- package/dist/cjs/foundation/GlobalSearch.js +54 -0
- package/dist/cjs/foundation/GlobalSearch.js.map +1 -0
- package/dist/cjs/foundation/KanbanBoard.js +222 -0
- package/dist/cjs/foundation/KanbanBoard.js.map +1 -0
- package/dist/cjs/foundation/NotificationsButton.js +45 -0
- package/dist/cjs/foundation/NotificationsButton.js.map +1 -0
- package/dist/cjs/foundation/SubNavigation.js +72 -0
- package/dist/cjs/foundation/SubNavigation.js.map +1 -0
- package/dist/cjs/foundation/TabSet.js +101 -0
- package/dist/cjs/foundation/TabSet.js.map +1 -0
- package/dist/cjs/foundation/WizardProgress.js +185 -0
- package/dist/cjs/foundation/WizardProgress.js.map +1 -0
- package/dist/cjs/foundation/boardModel.js +67 -0
- package/dist/cjs/foundation/boardModel.js.map +1 -0
- package/dist/cjs/foundation/formModel.js +158 -0
- package/dist/cjs/foundation/formModel.js.map +1 -0
- package/dist/cjs/foundation/foundationComponentMetadata.js +54 -0
- package/dist/cjs/foundation/foundationComponentMetadata.js.map +1 -1
- package/dist/cjs/foundation/foundationDescriptors.js +400 -0
- package/dist/cjs/foundation/foundationDescriptors.js.map +1 -1
- package/dist/cjs/foundation/foundationSamples.js +303 -0
- package/dist/cjs/foundation/foundationSamples.js.map +1 -1
- package/dist/cjs/foundation/foundationStrings.js +72 -0
- package/dist/cjs/foundation/foundationStrings.js.map +1 -1
- package/dist/cjs/foundation/listModel.js +200 -0
- package/dist/cjs/foundation/listModel.js.map +1 -0
- package/dist/cjs/foundation/tabModel.js +41 -0
- package/dist/cjs/foundation/tabModel.js.map +1 -0
- package/dist/cjs/foundation/templates/boardScreenTemplate.js +76 -0
- package/dist/cjs/foundation/templates/boardScreenTemplate.js.map +1 -0
- package/dist/cjs/foundation/templates/dashboardScreenTemplate.js +128 -0
- package/dist/cjs/foundation/templates/dashboardScreenTemplate.js.map +1 -0
- package/dist/cjs/foundation/templates/formScreenTemplate.js +71 -0
- package/dist/cjs/foundation/templates/formScreenTemplate.js.map +1 -0
- package/dist/cjs/foundation/templates/index.js +39 -0
- package/dist/cjs/foundation/templates/index.js.map +1 -0
- package/dist/cjs/foundation/templates/listScreenTemplate.js +124 -0
- package/dist/cjs/foundation/templates/listScreenTemplate.js.map +1 -0
- package/dist/cjs/foundation/templates/masterDetailScreenTemplate.js +79 -0
- package/dist/cjs/foundation/templates/masterDetailScreenTemplate.js.map +1 -0
- package/dist/cjs/foundation/templates/recordPageTemplate.js +137 -0
- package/dist/cjs/foundation/templates/recordPageTemplate.js.map +1 -0
- package/dist/cjs/foundation/templates/templateParts.js +38 -0
- package/dist/cjs/foundation/templates/templateParts.js.map +1 -0
- package/dist/cjs/foundation/templates/wizardScreenTemplate.js +95 -0
- package/dist/cjs/foundation/templates/wizardScreenTemplate.js.map +1 -0
- package/dist/cjs/foundation/templates/workspaceScreenTemplate.js +62 -0
- package/dist/cjs/foundation/templates/workspaceScreenTemplate.js.map +1 -0
- package/dist/cjs/foundation/urlState.js +57 -0
- package/dist/cjs/foundation/urlState.js.map +1 -0
- package/dist/cjs/foundation/useCompactWidth.js +23 -0
- package/dist/cjs/foundation/useCompactWidth.js.map +1 -0
- package/dist/cjs/foundation/wizardModel.js +50 -0
- package/dist/cjs/foundation/wizardModel.js.map +1 -0
- package/dist/cjs/gallery/GalleryScreenPreview.js +76 -4
- package/dist/cjs/gallery/GalleryScreenPreview.js.map +1 -1
- package/dist/cjs/gallery/applicationChrome.js +18 -1
- package/dist/cjs/gallery/applicationChrome.js.map +1 -1
- package/dist/cjs/gallery/composeScreen.js +5 -3
- package/dist/cjs/gallery/composeScreen.js.map +1 -1
- package/dist/cjs/gallery/screens.js +83 -2
- package/dist/cjs/gallery/screens.js.map +1 -1
- package/dist/cjs/index.js +96 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/ComponentName.d.ts +10 -1
- package/dist/esm/ComponentName.d.ts.map +1 -1
- package/dist/esm/ComponentName.js +9 -0
- package/dist/esm/ComponentName.js.map +1 -1
- package/dist/esm/defaultBlueprint.d.ts.map +1 -1
- package/dist/esm/defaultBlueprint.js +18 -1
- package/dist/esm/defaultBlueprint.js.map +1 -1
- package/dist/esm/defaultBlueprintComponentMetadata.js +9 -0
- package/dist/esm/defaultBlueprintComponentMetadata.js.map +1 -1
- package/dist/esm/defaultBlueprintComponents.d.ts.map +1 -1
- package/dist/esm/defaultBlueprintComponents.js +28 -1
- package/dist/esm/defaultBlueprintComponents.js.map +1 -1
- package/dist/esm/foundation/BulkBar.d.ts +4 -0
- package/dist/esm/foundation/BulkBar.d.ts.map +1 -0
- package/dist/esm/foundation/BulkBar.js +59 -0
- package/dist/esm/foundation/BulkBar.js.map +1 -0
- package/dist/esm/foundation/DataList.d.ts +3 -0
- package/dist/esm/foundation/DataList.d.ts.map +1 -0
- package/dist/esm/foundation/DataList.js +434 -0
- package/dist/esm/foundation/DataList.js.map +1 -0
- package/dist/esm/foundation/FormScreenBody.d.ts +3 -0
- package/dist/esm/foundation/FormScreenBody.d.ts.map +1 -0
- package/dist/esm/foundation/FormScreenBody.js +445 -0
- package/dist/esm/foundation/FormScreenBody.js.map +1 -0
- package/dist/esm/foundation/FoundationStates.js +2 -1
- package/dist/esm/foundation/FoundationStates.js.map +1 -1
- package/dist/esm/foundation/GlobalSearch.d.ts +3 -0
- package/dist/esm/foundation/GlobalSearch.d.ts.map +1 -0
- package/dist/esm/foundation/GlobalSearch.js +52 -0
- package/dist/esm/foundation/GlobalSearch.js.map +1 -0
- package/dist/esm/foundation/KanbanBoard.d.ts +3 -0
- package/dist/esm/foundation/KanbanBoard.d.ts.map +1 -0
- package/dist/esm/foundation/KanbanBoard.js +220 -0
- package/dist/esm/foundation/KanbanBoard.js.map +1 -0
- package/dist/esm/foundation/NotificationsButton.d.ts +3 -0
- package/dist/esm/foundation/NotificationsButton.d.ts.map +1 -0
- package/dist/esm/foundation/NotificationsButton.js +43 -0
- package/dist/esm/foundation/NotificationsButton.js.map +1 -0
- package/dist/esm/foundation/SubNavigation.d.ts +3 -0
- package/dist/esm/foundation/SubNavigation.d.ts.map +1 -0
- package/dist/esm/foundation/SubNavigation.js +70 -0
- package/dist/esm/foundation/SubNavigation.js.map +1 -0
- package/dist/esm/foundation/TabSet.d.ts +3 -0
- package/dist/esm/foundation/TabSet.d.ts.map +1 -0
- package/dist/esm/foundation/TabSet.js +99 -0
- package/dist/esm/foundation/TabSet.js.map +1 -0
- package/dist/esm/foundation/WizardProgress.d.ts +3 -0
- package/dist/esm/foundation/WizardProgress.d.ts.map +1 -0
- package/dist/esm/foundation/WizardProgress.js +183 -0
- package/dist/esm/foundation/WizardProgress.js.map +1 -0
- package/dist/esm/foundation/boardModel.d.ts +22 -0
- package/dist/esm/foundation/boardModel.d.ts.map +1 -0
- package/dist/esm/foundation/boardModel.js +61 -0
- package/dist/esm/foundation/boardModel.js.map +1 -0
- package/dist/esm/foundation/formModel.d.ts +48 -0
- package/dist/esm/foundation/formModel.d.ts.map +1 -0
- package/dist/esm/foundation/formModel.js +147 -0
- package/dist/esm/foundation/formModel.js.map +1 -0
- package/dist/esm/foundation/foundationComponentMetadata.d.ts.map +1 -1
- package/dist/esm/foundation/foundationComponentMetadata.js +54 -0
- package/dist/esm/foundation/foundationComponentMetadata.js.map +1 -1
- package/dist/esm/foundation/foundationDescriptors.d.ts.map +1 -1
- package/dist/esm/foundation/foundationDescriptors.js +400 -0
- package/dist/esm/foundation/foundationDescriptors.js.map +1 -1
- package/dist/esm/foundation/foundationSamples.d.ts.map +1 -1
- package/dist/esm/foundation/foundationSamples.js +303 -0
- package/dist/esm/foundation/foundationSamples.js.map +1 -1
- package/dist/esm/foundation/foundationStrings.d.ts +72 -0
- package/dist/esm/foundation/foundationStrings.d.ts.map +1 -1
- package/dist/esm/foundation/foundationStrings.js +72 -0
- package/dist/esm/foundation/foundationStrings.js.map +1 -1
- package/dist/esm/foundation/index.d.ts +17 -0
- package/dist/esm/foundation/index.d.ts.map +1 -1
- package/dist/esm/foundation/index.js +17 -0
- package/dist/esm/foundation/index.js.map +1 -1
- package/dist/esm/foundation/listModel.d.ts +49 -0
- package/dist/esm/foundation/listModel.d.ts.map +1 -0
- package/dist/esm/foundation/listModel.js +183 -0
- package/dist/esm/foundation/listModel.js.map +1 -0
- package/dist/esm/foundation/tabModel.d.ts +10 -0
- package/dist/esm/foundation/tabModel.d.ts.map +1 -0
- package/dist/esm/foundation/tabModel.js +37 -0
- package/dist/esm/foundation/tabModel.js.map +1 -0
- package/dist/esm/foundation/templates/boardScreenTemplate.d.ts +3 -0
- package/dist/esm/foundation/templates/boardScreenTemplate.d.ts.map +1 -0
- package/dist/esm/foundation/templates/boardScreenTemplate.js +74 -0
- package/dist/esm/foundation/templates/boardScreenTemplate.js.map +1 -0
- package/dist/esm/foundation/templates/dashboardScreenTemplate.d.ts +3 -0
- package/dist/esm/foundation/templates/dashboardScreenTemplate.d.ts.map +1 -0
- package/dist/esm/foundation/templates/dashboardScreenTemplate.js +126 -0
- package/dist/esm/foundation/templates/dashboardScreenTemplate.js.map +1 -0
- package/dist/esm/foundation/templates/formScreenTemplate.d.ts +3 -0
- package/dist/esm/foundation/templates/formScreenTemplate.d.ts.map +1 -0
- package/dist/esm/foundation/templates/formScreenTemplate.js +69 -0
- package/dist/esm/foundation/templates/formScreenTemplate.js.map +1 -0
- package/dist/esm/foundation/templates/index.d.ts +11 -0
- package/dist/esm/foundation/templates/index.d.ts.map +1 -0
- package/dist/esm/foundation/templates/index.js +25 -0
- package/dist/esm/foundation/templates/index.js.map +1 -0
- package/dist/esm/foundation/templates/listScreenTemplate.d.ts +3 -0
- package/dist/esm/foundation/templates/listScreenTemplate.d.ts.map +1 -0
- package/dist/esm/foundation/templates/listScreenTemplate.js +122 -0
- package/dist/esm/foundation/templates/listScreenTemplate.js.map +1 -0
- package/dist/esm/foundation/templates/masterDetailScreenTemplate.d.ts +3 -0
- package/dist/esm/foundation/templates/masterDetailScreenTemplate.d.ts.map +1 -0
- package/dist/esm/foundation/templates/masterDetailScreenTemplate.js +77 -0
- package/dist/esm/foundation/templates/masterDetailScreenTemplate.js.map +1 -0
- package/dist/esm/foundation/templates/recordPageTemplate.d.ts +3 -0
- package/dist/esm/foundation/templates/recordPageTemplate.d.ts.map +1 -0
- package/dist/esm/foundation/templates/recordPageTemplate.js +135 -0
- package/dist/esm/foundation/templates/recordPageTemplate.js.map +1 -0
- package/dist/esm/foundation/templates/templateParts.d.ts +6 -0
- package/dist/esm/foundation/templates/templateParts.d.ts.map +1 -0
- package/dist/esm/foundation/templates/templateParts.js +33 -0
- package/dist/esm/foundation/templates/templateParts.js.map +1 -0
- package/dist/esm/foundation/templates/wizardScreenTemplate.d.ts +3 -0
- package/dist/esm/foundation/templates/wizardScreenTemplate.d.ts.map +1 -0
- package/dist/esm/foundation/templates/wizardScreenTemplate.js +93 -0
- package/dist/esm/foundation/templates/wizardScreenTemplate.js.map +1 -0
- package/dist/esm/foundation/templates/workspaceScreenTemplate.d.ts +3 -0
- package/dist/esm/foundation/templates/workspaceScreenTemplate.d.ts.map +1 -0
- package/dist/esm/foundation/templates/workspaceScreenTemplate.js +60 -0
- package/dist/esm/foundation/templates/workspaceScreenTemplate.js.map +1 -0
- package/dist/esm/foundation/urlState.d.ts +4 -0
- package/dist/esm/foundation/urlState.d.ts.map +1 -0
- package/dist/esm/foundation/urlState.js +53 -0
- package/dist/esm/foundation/urlState.js.map +1 -0
- package/dist/esm/foundation/useCompactWidth.d.ts +3 -0
- package/dist/esm/foundation/useCompactWidth.d.ts.map +1 -0
- package/dist/esm/foundation/useCompactWidth.js +20 -0
- package/dist/esm/foundation/useCompactWidth.js.map +1 -0
- package/dist/esm/foundation/wizardModel.d.ts +16 -0
- package/dist/esm/foundation/wizardModel.d.ts.map +1 -0
- package/dist/esm/foundation/wizardModel.js +43 -0
- package/dist/esm/foundation/wizardModel.js.map +1 -0
- package/dist/esm/gallery/GalleryScreenPreview.d.ts +13 -2
- package/dist/esm/gallery/GalleryScreenPreview.d.ts.map +1 -1
- package/dist/esm/gallery/GalleryScreenPreview.js +75 -5
- package/dist/esm/gallery/GalleryScreenPreview.js.map +1 -1
- package/dist/esm/gallery/applicationChrome.d.ts.map +1 -1
- package/dist/esm/gallery/applicationChrome.js +18 -1
- package/dist/esm/gallery/applicationChrome.js.map +1 -1
- package/dist/esm/gallery/composeScreen.d.ts.map +1 -1
- package/dist/esm/gallery/composeScreen.js +5 -3
- package/dist/esm/gallery/composeScreen.js.map +1 -1
- package/dist/esm/gallery/screens.d.ts.map +1 -1
- package/dist/esm/gallery/screens.js +83 -2
- package/dist/esm/gallery/screens.js.map +1 -1
- package/dist/esm/index.js +27 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/foundation/BulkBar.tsx +38 -0
- package/foundation/DataList.tsx +208 -0
- package/foundation/FormScreenBody.tsx +196 -0
- package/foundation/FoundationStates.tsx +1 -1
- package/foundation/GlobalSearch.tsx +33 -0
- package/foundation/KanbanBoard.tsx +97 -0
- package/foundation/NotificationsButton.tsx +28 -0
- package/foundation/SubNavigation.tsx +49 -0
- package/foundation/TabSet.tsx +65 -0
- package/foundation/WizardProgress.tsx +109 -0
- package/foundation/boardModel.ts +64 -0
- package/foundation/formModel.ts +146 -0
- package/foundation/foundationComponentMetadata.ts +9 -0
- package/foundation/foundationDescriptors.ts +195 -0
- package/foundation/foundationSamples.ts +56 -0
- package/foundation/foundationStrings.ts +72 -0
- package/foundation/index.ts +17 -0
- package/foundation/listModel.ts +190 -0
- package/foundation/tabModel.ts +41 -0
- package/foundation/templates/boardScreenTemplate.ts +28 -0
- package/foundation/templates/dashboardScreenTemplate.ts +37 -0
- package/foundation/templates/formScreenTemplate.ts +28 -0
- package/foundation/templates/index.ts +26 -0
- package/foundation/templates/listScreenTemplate.ts +37 -0
- package/foundation/templates/masterDetailScreenTemplate.ts +28 -0
- package/foundation/templates/recordPageTemplate.ts +36 -0
- package/foundation/templates/templateParts.ts +30 -0
- package/foundation/templates/wizardScreenTemplate.ts +33 -0
- package/foundation/templates/workspaceScreenTemplate.ts +27 -0
- package/foundation/urlState.ts +52 -0
- package/foundation/useCompactWidth.ts +23 -0
- package/foundation/wizardModel.ts +54 -0
- package/gallery/GalleryScreenPreview.tsx +64 -5
- package/gallery/applicationChrome.ts +6 -1
- package/gallery/composeScreen.ts +4 -2
- package/gallery/screens.ts +16 -1
- package/package.json +10 -8
- package/sampleData/foundation-en.json +512 -0
- package/shell/layout.css +513 -0
- package/thumbnails/BoardScreen.svg +15 -0
- package/thumbnails/DashboardScreen.svg +18 -0
- package/thumbnails/FormScreen.svg +14 -0
- package/thumbnails/ListScreen.svg +16 -0
- package/thumbnails/MasterDetailScreen.svg +22 -0
- package/thumbnails/RecordPage.svg +17 -0
- package/thumbnails/WizardScreen.svg +16 -0
- package/thumbnails/WorkspaceScreen.svg +12 -0
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var scene_model = require('@cratis/scene.model');
|
|
4
|
+
var flowBuilders = require('../../layouts/flowBuilders.js');
|
|
5
|
+
var templateParts = require('./templateParts.js');
|
|
6
|
+
|
|
7
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
8
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
9
|
+
/**
|
|
10
|
+
* The board: columns mapped to a status or stage, cards that move between them - by dragging or by each card's own Move-to menu, so the board is as
|
|
11
|
+
* usable from a keyboard and a screen reader as with a pointer.
|
|
12
|
+
*/ const boardScreenTemplate = {
|
|
13
|
+
name: 'BoardScreen',
|
|
14
|
+
fitsSlot: 'content',
|
|
15
|
+
slots: [
|
|
16
|
+
{
|
|
17
|
+
name: 'header'
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
name: 'toolbar'
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
name: 'board'
|
|
24
|
+
}
|
|
25
|
+
],
|
|
26
|
+
arrangement: {
|
|
27
|
+
root: flowBuilders.column([
|
|
28
|
+
flowBuilders.slotLeaf('header'),
|
|
29
|
+
flowBuilders.row([
|
|
30
|
+
flowBuilders.slotLeaf('toolbar')
|
|
31
|
+
], 8),
|
|
32
|
+
flowBuilders.slotLeaf('board')
|
|
33
|
+
], 12),
|
|
34
|
+
overrides: [
|
|
35
|
+
{
|
|
36
|
+
width: scene_model.WidthSizeClass.Compact,
|
|
37
|
+
root: flowBuilders.column([
|
|
38
|
+
flowBuilders.slotLeaf('header'),
|
|
39
|
+
flowBuilders.slotLeaf('toolbar'),
|
|
40
|
+
flowBuilders.slotLeaf('board')
|
|
41
|
+
], 16)
|
|
42
|
+
}
|
|
43
|
+
]
|
|
44
|
+
},
|
|
45
|
+
content: {
|
|
46
|
+
header: [
|
|
47
|
+
templateParts.component('board-header', 'pageHeader', {
|
|
48
|
+
title: 'Pipeline',
|
|
49
|
+
subtitle: 'Drag a deal to a new stage'
|
|
50
|
+
})
|
|
51
|
+
],
|
|
52
|
+
toolbar: [
|
|
53
|
+
templateParts.component('board-search', 'globalSearch', {
|
|
54
|
+
placeholder: 'Search the pipeline',
|
|
55
|
+
label: 'Search the pipeline'
|
|
56
|
+
})
|
|
57
|
+
],
|
|
58
|
+
board: [
|
|
59
|
+
templateParts.component('board-columns', 'kanbanBoard', {
|
|
60
|
+
columns: templateParts.fromQuery('PipelineColumns'),
|
|
61
|
+
cards: templateParts.fromQuery('PipelineCards')
|
|
62
|
+
})
|
|
63
|
+
]
|
|
64
|
+
},
|
|
65
|
+
displayName: 'Board',
|
|
66
|
+
description: 'Columns mapped to a stage with cards that move by dragging or by menu.',
|
|
67
|
+
metadata: {
|
|
68
|
+
...templateParts.foundationTemplateProvenance,
|
|
69
|
+
type: 'Board',
|
|
70
|
+
category: 'Foundation / Board',
|
|
71
|
+
thumbnail: templateParts.thumbnailOf('BoardScreen')
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
exports.boardScreenTemplate = boardScreenTemplate;
|
|
76
|
+
//# sourceMappingURL=boardScreenTemplate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boardScreenTemplate.js","sources":["../../../../foundation/templates/boardScreenTemplate.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 { ScreenTemplate, WidthSizeClass } from '@cratis/scene.model';\nimport { column, grid, row, slotLeaf } from '../../layouts/flowBuilders';\nimport { component, foundationTemplateProvenance, fromQuery, thumbnailOf } from './templateParts';\n\n/**\n * The board: columns mapped to a status or stage, cards that move between them - by dragging or by each card's own Move-to menu, so the board is as\n * usable from a keyboard and a screen reader as with a pointer.\n */\nexport const boardScreenTemplate: ScreenTemplate = {\n name: 'BoardScreen',\n fitsSlot: 'content',\n slots: [{ name: 'header' }, { name: 'toolbar' }, { name: 'board' }],\n arrangement: {\n root: column([slotLeaf('header'), row([slotLeaf('toolbar')], 8), slotLeaf('board')], 12),\n overrides: [{ width: WidthSizeClass.Compact, root: column([slotLeaf('header'), slotLeaf('toolbar'), slotLeaf('board')], 16) }],\n },\n content: {\n header: [component('board-header', 'pageHeader', { title: 'Pipeline', subtitle: 'Drag a deal to a new stage' })],\n toolbar: [component('board-search', 'globalSearch', { placeholder: 'Search the pipeline', label: 'Search the pipeline' })],\n board: [component('board-columns', 'kanbanBoard', { columns: fromQuery('PipelineColumns'), cards: fromQuery('PipelineCards') })],\n },\n displayName: 'Board',\n description: 'Columns mapped to a stage with cards that move by dragging or by menu.',\n metadata: { ...foundationTemplateProvenance, type: 'Board', category: 'Foundation / Board', thumbnail: thumbnailOf('BoardScreen') },\n};\n"],"names":["boardScreenTemplate","name","fitsSlot","slots","arrangement","root","column","slotLeaf","row","overrides","width","WidthSizeClass","Compact","content","header","component","title","subtitle","toolbar","placeholder","label","board","columns","fromQuery","cards","displayName","description","metadata","foundationTemplateProvenance","type","category","thumbnail","thumbnailOf"],"mappings":";;;;;;AAAA;AACA;AAMA;;;UAIaA,mBAAAA,GAAsC;IAC/CC,IAAAA,EAAM,aAAA;IACNC,QAAAA,EAAU,SAAA;IACVC,KAAAA,EAAO;AAAC,QAAA;YAAEF,IAAAA,EAAM;AAAS,SAAA;AAAG,QAAA;YAAEA,IAAAA,EAAM;AAAU,SAAA;AAAG,QAAA;YAAEA,IAAAA,EAAM;AAAQ;AAAE,KAAA;IACnEG,WAAAA,EAAa;AACTC,QAAAA,IAAAA,EAAMC,mBAAAA,CAAO;YAACC,qBAAAA,CAAS,QAAA,CAAA;YAAWC,gBAAAA,CAAI;gBAACD,qBAAAA,CAAS,SAAA;aAAW,EAAE,CAAA,CAAA;YAAIA,qBAAAA,CAAS,OAAA;SAAS,EAAE,EAAA,CAAA;QACrFE,SAAAA,EAAW;AAAC,YAAA;AAAEC,gBAAAA,KAAAA,EAAOC,2BAAeC,OAAO;AAAEP,gBAAAA,IAAAA,EAAMC,mBAAAA,CAAO;oBAACC,qBAAAA,CAAS,QAAA,CAAA;oBAAWA,qBAAAA,CAAS,SAAA,CAAA;oBAAYA,qBAAAA,CAAS,OAAA;iBAAS,EAAE,EAAA;AAAI;AAAE;AAClI,KAAA;IACAM,OAAAA,EAAS;QACLC,MAAAA,EAAQ;AAACC,YAAAA,uBAAAA,CAAU,gBAAgB,YAAA,EAAc;gBAAEC,KAAAA,EAAO,UAAA;gBAAYC,QAAAA,EAAU;AAA6B,aAAA;AAAG,SAAA;QAChHC,OAAAA,EAAS;AAACH,YAAAA,uBAAAA,CAAU,gBAAgB,cAAA,EAAgB;gBAAEI,WAAAA,EAAa,qBAAA;gBAAuBC,KAAAA,EAAO;AAAsB,aAAA;AAAG,SAAA;QAC1HC,KAAAA,EAAO;AAACN,YAAAA,uBAAAA,CAAU,iBAAiB,aAAA,EAAe;AAAEO,gBAAAA,OAAAA,EAASC,uBAAAA,CAAU,iBAAA,CAAA;AAAoBC,gBAAAA,KAAAA,EAAOD,uBAAAA,CAAU,eAAA;AAAiB,aAAA;AAAG;AACpI,KAAA;IACAE,WAAAA,EAAa,OAAA;IACbC,WAAAA,EAAa,wEAAA;IACbC,QAAAA,EAAU;AAAE,QAAA,GAAGC,0CAA4B;QAAEC,IAAAA,EAAM,OAAA;QAASC,QAAAA,EAAU,oBAAA;AAAsBC,QAAAA,SAAAA,EAAWC,yBAAAA,CAAY,aAAA;AAAe;AACtI;;"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var scene_model = require('@cratis/scene.model');
|
|
4
|
+
var flowBuilders = require('../../layouts/flowBuilders.js');
|
|
5
|
+
var templateParts = require('./templateParts.js');
|
|
6
|
+
|
|
7
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
8
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
9
|
+
/**
|
|
10
|
+
* The dashboard: key figures across the top, charts and tables below, an aside for what needs attention. Every region is its own component with its
|
|
11
|
+
* own five states, so one failed query shows the other regions - the page never fails as a whole.
|
|
12
|
+
*/ const dashboardScreenTemplate = {
|
|
13
|
+
name: 'DashboardScreen',
|
|
14
|
+
fitsSlot: 'content',
|
|
15
|
+
slots: [
|
|
16
|
+
{
|
|
17
|
+
name: 'header'
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
name: 'kpis'
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
name: 'charts'
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
name: 'tables'
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
name: 'aside'
|
|
30
|
+
}
|
|
31
|
+
],
|
|
32
|
+
arrangement: {
|
|
33
|
+
root: flowBuilders.column([
|
|
34
|
+
flowBuilders.slotLeaf('header'),
|
|
35
|
+
flowBuilders.slotLeaf('kpis'),
|
|
36
|
+
flowBuilders.grid([
|
|
37
|
+
flowBuilders.slotLeaf('charts', {
|
|
38
|
+
span: 2
|
|
39
|
+
}),
|
|
40
|
+
flowBuilders.slotLeaf('aside')
|
|
41
|
+
], 3, 16),
|
|
42
|
+
flowBuilders.slotLeaf('tables')
|
|
43
|
+
], 16),
|
|
44
|
+
overrides: [
|
|
45
|
+
{
|
|
46
|
+
width: scene_model.WidthSizeClass.Compact,
|
|
47
|
+
root: flowBuilders.column([
|
|
48
|
+
flowBuilders.slotLeaf('header'),
|
|
49
|
+
flowBuilders.slotLeaf('kpis'),
|
|
50
|
+
flowBuilders.slotLeaf('charts'),
|
|
51
|
+
flowBuilders.slotLeaf('tables'),
|
|
52
|
+
flowBuilders.slotLeaf('aside')
|
|
53
|
+
], 16)
|
|
54
|
+
}
|
|
55
|
+
]
|
|
56
|
+
},
|
|
57
|
+
content: {
|
|
58
|
+
header: [
|
|
59
|
+
templateParts.component('dashboard-header', 'pageHeader', {
|
|
60
|
+
title: 'Sales overview',
|
|
61
|
+
subtitle: 'This quarter compared to last'
|
|
62
|
+
})
|
|
63
|
+
],
|
|
64
|
+
kpis: [
|
|
65
|
+
templateParts.component('kpi-pipeline', 'statCard', {
|
|
66
|
+
label: 'Open pipeline',
|
|
67
|
+
value: templateParts.fromQuery('Kpis', '0.value'),
|
|
68
|
+
change: templateParts.fromQuery('Kpis', '0.change'),
|
|
69
|
+
format: 'currency',
|
|
70
|
+
currency: 'USD',
|
|
71
|
+
comparison: 'last quarter'
|
|
72
|
+
}),
|
|
73
|
+
templateParts.component('kpi-won', 'statCard', {
|
|
74
|
+
label: 'Deals won',
|
|
75
|
+
value: templateParts.fromQuery('Kpis', '1.value'),
|
|
76
|
+
change: templateParts.fromQuery('Kpis', '1.change'),
|
|
77
|
+
comparison: 'last quarter'
|
|
78
|
+
}),
|
|
79
|
+
templateParts.component('kpi-response', 'statCard', {
|
|
80
|
+
label: 'Response time (hours)',
|
|
81
|
+
value: templateParts.fromQuery('Kpis', '2.value'),
|
|
82
|
+
change: templateParts.fromQuery('Kpis', '2.change'),
|
|
83
|
+
goodDirection: 'down',
|
|
84
|
+
comparison: 'last quarter'
|
|
85
|
+
})
|
|
86
|
+
],
|
|
87
|
+
charts: [
|
|
88
|
+
templateParts.component('chart-revenue', 'chartWrapper', {
|
|
89
|
+
title: 'Revenue by quarter',
|
|
90
|
+
kind: 'line',
|
|
91
|
+
categories: templateParts.fromQuery('RevenueChart', '0.categories'),
|
|
92
|
+
series: templateParts.fromQuery('RevenueChart', '0.series')
|
|
93
|
+
}),
|
|
94
|
+
templateParts.component('chart-stages', 'chartWrapper', {
|
|
95
|
+
title: 'Deals by stage',
|
|
96
|
+
kind: 'funnel',
|
|
97
|
+
categories: templateParts.fromQuery('StageChart', '0.categories'),
|
|
98
|
+
series: templateParts.fromQuery('StageChart', '0.series')
|
|
99
|
+
})
|
|
100
|
+
],
|
|
101
|
+
tables: [
|
|
102
|
+
templateParts.component('dashboard-deals', 'dataList', {
|
|
103
|
+
label: 'Closing soon',
|
|
104
|
+
rows: templateParts.fromQuery('Deals'),
|
|
105
|
+
columns: templateParts.fromQuery('DealColumns'),
|
|
106
|
+
titleField: 'name',
|
|
107
|
+
pageSize: 5
|
|
108
|
+
})
|
|
109
|
+
],
|
|
110
|
+
aside: [
|
|
111
|
+
templateParts.component('dashboard-activity', 'activityFeed', {
|
|
112
|
+
label: 'Recent activity',
|
|
113
|
+
entries: templateParts.fromQuery('Activity')
|
|
114
|
+
})
|
|
115
|
+
]
|
|
116
|
+
},
|
|
117
|
+
displayName: 'Dashboard',
|
|
118
|
+
description: 'Key figures, charts and tables, each region with its own loading, empty and error states.',
|
|
119
|
+
metadata: {
|
|
120
|
+
...templateParts.foundationTemplateProvenance,
|
|
121
|
+
type: 'Dashboard',
|
|
122
|
+
category: 'Foundation / Dashboard',
|
|
123
|
+
thumbnail: templateParts.thumbnailOf('DashboardScreen')
|
|
124
|
+
}
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
exports.dashboardScreenTemplate = dashboardScreenTemplate;
|
|
128
|
+
//# sourceMappingURL=dashboardScreenTemplate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboardScreenTemplate.js","sources":["../../../../foundation/templates/dashboardScreenTemplate.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 { ScreenTemplate, WidthSizeClass } from '@cratis/scene.model';\nimport { column, grid, row, slotLeaf } from '../../layouts/flowBuilders';\nimport { component, foundationTemplateProvenance, fromQuery, thumbnailOf } from './templateParts';\n\n/**\n * The dashboard: key figures across the top, charts and tables below, an aside for what needs attention. Every region is its own component with its\n * own five states, so one failed query shows the other regions - the page never fails as a whole.\n */\nexport const dashboardScreenTemplate: ScreenTemplate = {\n name: 'DashboardScreen',\n fitsSlot: 'content',\n slots: [{ name: 'header' }, { name: 'kpis' }, { name: 'charts' }, { name: 'tables' }, { name: 'aside' }],\n arrangement: {\n root: column([slotLeaf('header'), slotLeaf('kpis'), grid([slotLeaf('charts', { span: 2 }), slotLeaf('aside')], 3, 16), slotLeaf('tables')], 16),\n overrides: [{ width: WidthSizeClass.Compact, root: column([slotLeaf('header'), slotLeaf('kpis'), slotLeaf('charts'), slotLeaf('tables'), slotLeaf('aside')], 16) }],\n },\n content: {\n header: [component('dashboard-header', 'pageHeader', { title: 'Sales overview', subtitle: 'This quarter compared to last' })],\n kpis: [\n component('kpi-pipeline', 'statCard', { label: 'Open pipeline', value: fromQuery('Kpis', '0.value'), change: fromQuery('Kpis', '0.change'), format: 'currency', currency: 'USD', comparison: 'last quarter' }),\n component('kpi-won', 'statCard', { label: 'Deals won', value: fromQuery('Kpis', '1.value'), change: fromQuery('Kpis', '1.change'), comparison: 'last quarter' }),\n component('kpi-response', 'statCard', { label: 'Response time (hours)', value: fromQuery('Kpis', '2.value'), change: fromQuery('Kpis', '2.change'), goodDirection: 'down', comparison: 'last quarter' }),\n ],\n charts: [\n component('chart-revenue', 'chartWrapper', { title: 'Revenue by quarter', kind: 'line', categories: fromQuery('RevenueChart', '0.categories'), series: fromQuery('RevenueChart', '0.series') }),\n component('chart-stages', 'chartWrapper', { title: 'Deals by stage', kind: 'funnel', categories: fromQuery('StageChart', '0.categories'), series: fromQuery('StageChart', '0.series') }),\n ],\n tables: [component('dashboard-deals', 'dataList', { label: 'Closing soon', rows: fromQuery('Deals'), columns: fromQuery('DealColumns'), titleField: 'name', pageSize: 5 })],\n aside: [component('dashboard-activity', 'activityFeed', { label: 'Recent activity', entries: fromQuery('Activity') })],\n },\n displayName: 'Dashboard',\n description: 'Key figures, charts and tables, each region with its own loading, empty and error states.',\n metadata: { ...foundationTemplateProvenance, type: 'Dashboard', category: 'Foundation / Dashboard', thumbnail: thumbnailOf('DashboardScreen') },\n};\n"],"names":["dashboardScreenTemplate","name","fitsSlot","slots","arrangement","root","column","slotLeaf","grid","span","overrides","width","WidthSizeClass","Compact","content","header","component","title","subtitle","kpis","label","value","fromQuery","change","format","currency","comparison","goodDirection","charts","kind","categories","series","tables","rows","columns","titleField","pageSize","aside","entries","displayName","description","metadata","foundationTemplateProvenance","type","category","thumbnail","thumbnailOf"],"mappings":"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"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var scene_model = require('@cratis/scene.model');
|
|
4
|
+
var flowBuilders = require('../../layouts/flowBuilders.js');
|
|
5
|
+
var templateParts = require('./templateParts.js');
|
|
6
|
+
|
|
7
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
8
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
9
|
+
/**
|
|
10
|
+
* The form: titled sections of fields in a one-to-three column grid, validated, with Save, Save and new and Cancel. One template serves create, edit, read-only
|
|
11
|
+
* and settings (a save for each section) by its mode, and warns before unsaved changes are lost.
|
|
12
|
+
*/ const formScreenTemplate = {
|
|
13
|
+
name: 'FormScreen',
|
|
14
|
+
fitsSlot: 'content',
|
|
15
|
+
slots: [
|
|
16
|
+
{
|
|
17
|
+
name: 'header'
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
name: 'body'
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
name: 'actions'
|
|
24
|
+
}
|
|
25
|
+
],
|
|
26
|
+
arrangement: {
|
|
27
|
+
root: flowBuilders.column([
|
|
28
|
+
flowBuilders.slotLeaf('header'),
|
|
29
|
+
flowBuilders.slotLeaf('body'),
|
|
30
|
+
flowBuilders.slotLeaf('actions')
|
|
31
|
+
], 16),
|
|
32
|
+
overrides: [
|
|
33
|
+
{
|
|
34
|
+
width: scene_model.WidthSizeClass.Compact,
|
|
35
|
+
root: flowBuilders.column([
|
|
36
|
+
flowBuilders.slotLeaf('header'),
|
|
37
|
+
flowBuilders.slotLeaf('body'),
|
|
38
|
+
flowBuilders.slotLeaf('actions')
|
|
39
|
+
], 16)
|
|
40
|
+
}
|
|
41
|
+
]
|
|
42
|
+
},
|
|
43
|
+
content: {
|
|
44
|
+
header: [
|
|
45
|
+
templateParts.component('form-header', 'pageHeader', {
|
|
46
|
+
title: 'New account',
|
|
47
|
+
subtitle: 'Fields marked * are required'
|
|
48
|
+
})
|
|
49
|
+
],
|
|
50
|
+
body: [
|
|
51
|
+
templateParts.component('form-body', 'formScreenBody', {
|
|
52
|
+
mode: 'create',
|
|
53
|
+
sections: templateParts.fromQuery('RecordSections'),
|
|
54
|
+
values: templateParts.fromQuery('RecordValues', '0'),
|
|
55
|
+
errors: templateParts.fromQuery('FormErrors', '0')
|
|
56
|
+
})
|
|
57
|
+
],
|
|
58
|
+
actions: []
|
|
59
|
+
},
|
|
60
|
+
displayName: 'Form',
|
|
61
|
+
description: 'Sections of validated fields with Save, Save and new, Cancel and an unsaved-changes guard.',
|
|
62
|
+
metadata: {
|
|
63
|
+
...templateParts.foundationTemplateProvenance,
|
|
64
|
+
type: 'Form',
|
|
65
|
+
category: 'Foundation / Form',
|
|
66
|
+
thumbnail: templateParts.thumbnailOf('FormScreen')
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
exports.formScreenTemplate = formScreenTemplate;
|
|
71
|
+
//# sourceMappingURL=formScreenTemplate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formScreenTemplate.js","sources":["../../../../foundation/templates/formScreenTemplate.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 { ScreenTemplate, WidthSizeClass } from '@cratis/scene.model';\nimport { column, grid, row, slotLeaf } from '../../layouts/flowBuilders';\nimport { component, foundationTemplateProvenance, fromQuery, thumbnailOf } from './templateParts';\n\n/**\n * The form: titled sections of fields in a one-to-three column grid, validated, with Save, Save and new and Cancel. One template serves create, edit, read-only\n * and settings (a save for each section) by its mode, and warns before unsaved changes are lost.\n */\nexport const formScreenTemplate: ScreenTemplate = {\n name: 'FormScreen',\n fitsSlot: 'content',\n slots: [{ name: 'header' }, { name: 'body' }, { name: 'actions' }],\n arrangement: {\n root: column([slotLeaf('header'), slotLeaf('body'), slotLeaf('actions')], 16),\n overrides: [{ width: WidthSizeClass.Compact, root: column([slotLeaf('header'), slotLeaf('body'), slotLeaf('actions')], 16) }],\n },\n content: {\n header: [component('form-header', 'pageHeader', { title: 'New account', subtitle: 'Fields marked * are required' })],\n body: [component('form-body', 'formScreenBody', { mode: 'create', sections: fromQuery('RecordSections'), values: fromQuery('RecordValues', '0'), errors: fromQuery('FormErrors', '0') })],\n actions: [],\n },\n displayName: 'Form',\n description: 'Sections of validated fields with Save, Save and new, Cancel and an unsaved-changes guard.',\n metadata: { ...foundationTemplateProvenance, type: 'Form', category: 'Foundation / Form', thumbnail: thumbnailOf('FormScreen') },\n};\n"],"names":["formScreenTemplate","name","fitsSlot","slots","arrangement","root","column","slotLeaf","overrides","width","WidthSizeClass","Compact","content","header","component","title","subtitle","body","mode","sections","fromQuery","values","errors","actions","displayName","description","metadata","foundationTemplateProvenance","type","category","thumbnail","thumbnailOf"],"mappings":";;;;;;AAAA;AACA;AAMA;;;UAIaA,kBAAAA,GAAqC;IAC9CC,IAAAA,EAAM,YAAA;IACNC,QAAAA,EAAU,SAAA;IACVC,KAAAA,EAAO;AAAC,QAAA;YAAEF,IAAAA,EAAM;AAAS,SAAA;AAAG,QAAA;YAAEA,IAAAA,EAAM;AAAO,SAAA;AAAG,QAAA;YAAEA,IAAAA,EAAM;AAAU;AAAE,KAAA;IAClEG,WAAAA,EAAa;AACTC,QAAAA,IAAAA,EAAMC,mBAAAA,CAAO;YAACC,qBAAAA,CAAS,QAAA,CAAA;YAAWA,qBAAAA,CAAS,MAAA,CAAA;YAASA,qBAAAA,CAAS,SAAA;SAAW,EAAE,EAAA,CAAA;QAC1EC,SAAAA,EAAW;AAAC,YAAA;AAAEC,gBAAAA,KAAAA,EAAOC,2BAAeC,OAAO;AAAEN,gBAAAA,IAAAA,EAAMC,mBAAAA,CAAO;oBAACC,qBAAAA,CAAS,QAAA,CAAA;oBAAWA,qBAAAA,CAAS,MAAA,CAAA;oBAASA,qBAAAA,CAAS,SAAA;iBAAW,EAAE,EAAA;AAAI;AAAE;AACjI,KAAA;IACAK,OAAAA,EAAS;QACLC,MAAAA,EAAQ;AAACC,YAAAA,uBAAAA,CAAU,eAAe,YAAA,EAAc;gBAAEC,KAAAA,EAAO,aAAA;gBAAeC,QAAAA,EAAU;AAA+B,aAAA;AAAG,SAAA;QACpHC,IAAAA,EAAM;AAACH,YAAAA,uBAAAA,CAAU,aAAa,gBAAA,EAAkB;gBAAEI,IAAAA,EAAM,QAAA;AAAUC,gBAAAA,QAAAA,EAAUC,uBAAAA,CAAU,gBAAA,CAAA;AAAmBC,gBAAAA,MAAAA,EAAQD,wBAAU,cAAA,EAAgB,GAAA,CAAA;AAAME,gBAAAA,MAAAA,EAAQF,wBAAU,YAAA,EAAc,GAAA;AAAK,aAAA;AAAG,SAAA;AACzLG,QAAAA,OAAAA,EAAS;AACb,KAAA;IACAC,WAAAA,EAAa,MAAA;IACbC,WAAAA,EAAa,4FAAA;IACbC,QAAAA,EAAU;AAAE,QAAA,GAAGC,0CAA4B;QAAEC,IAAAA,EAAM,MAAA;QAAQC,QAAAA,EAAU,mBAAA;AAAqBC,QAAAA,SAAAA,EAAWC,yBAAAA,CAAY,YAAA;AAAc;AACnI;;"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var boardScreenTemplate = require('./boardScreenTemplate.js');
|
|
4
|
+
var dashboardScreenTemplate = require('./dashboardScreenTemplate.js');
|
|
5
|
+
var formScreenTemplate = require('./formScreenTemplate.js');
|
|
6
|
+
var listScreenTemplate = require('./listScreenTemplate.js');
|
|
7
|
+
var masterDetailScreenTemplate = require('./masterDetailScreenTemplate.js');
|
|
8
|
+
var recordPageTemplate = require('./recordPageTemplate.js');
|
|
9
|
+
var wizardScreenTemplate = require('./wizardScreenTemplate.js');
|
|
10
|
+
var workspaceScreenTemplate = require('./workspaceScreenTemplate.js');
|
|
11
|
+
var templateParts = require('./templateParts.js');
|
|
12
|
+
|
|
13
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
14
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
15
|
+
/** The foundation screen templates, in the order the manifest lists them. The workspace comes first: it is the container the master/detail nests in. */ const foundationScreenTemplates = [
|
|
16
|
+
workspaceScreenTemplate.workspaceScreenTemplate,
|
|
17
|
+
dashboardScreenTemplate.dashboardScreenTemplate,
|
|
18
|
+
listScreenTemplate.listScreenTemplate,
|
|
19
|
+
boardScreenTemplate.boardScreenTemplate,
|
|
20
|
+
masterDetailScreenTemplate.masterDetailScreenTemplate,
|
|
21
|
+
recordPageTemplate.recordPageTemplate,
|
|
22
|
+
formScreenTemplate.formScreenTemplate,
|
|
23
|
+
wizardScreenTemplate.wizardScreenTemplate
|
|
24
|
+
];
|
|
25
|
+
|
|
26
|
+
exports.boardScreenTemplate = boardScreenTemplate.boardScreenTemplate;
|
|
27
|
+
exports.dashboardScreenTemplate = dashboardScreenTemplate.dashboardScreenTemplate;
|
|
28
|
+
exports.formScreenTemplate = formScreenTemplate.formScreenTemplate;
|
|
29
|
+
exports.listScreenTemplate = listScreenTemplate.listScreenTemplate;
|
|
30
|
+
exports.masterDetailScreenTemplate = masterDetailScreenTemplate.masterDetailScreenTemplate;
|
|
31
|
+
exports.recordPageTemplate = recordPageTemplate.recordPageTemplate;
|
|
32
|
+
exports.wizardScreenTemplate = wizardScreenTemplate.wizardScreenTemplate;
|
|
33
|
+
exports.workspaceScreenTemplate = workspaceScreenTemplate.workspaceScreenTemplate;
|
|
34
|
+
exports.component = templateParts.component;
|
|
35
|
+
exports.foundationTemplateProvenance = templateParts.foundationTemplateProvenance;
|
|
36
|
+
exports.fromQuery = templateParts.fromQuery;
|
|
37
|
+
exports.thumbnailOf = templateParts.thumbnailOf;
|
|
38
|
+
exports.foundationScreenTemplates = foundationScreenTemplates;
|
|
39
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../foundation/templates/index.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 { boardScreenTemplate } from './boardScreenTemplate';\nimport { dashboardScreenTemplate } from './dashboardScreenTemplate';\nimport { formScreenTemplate } from './formScreenTemplate';\nimport { listScreenTemplate } from './listScreenTemplate';\nimport { masterDetailScreenTemplate } from './masterDetailScreenTemplate';\nimport { recordPageTemplate } from './recordPageTemplate';\nimport { wizardScreenTemplate } from './wizardScreenTemplate';\nimport { workspaceScreenTemplate } from './workspaceScreenTemplate';\n\nexport * from './templateParts';\nexport * from './boardScreenTemplate';\nexport * from './dashboardScreenTemplate';\nexport * from './formScreenTemplate';\nexport * from './listScreenTemplate';\nexport * from './masterDetailScreenTemplate';\nexport * from './recordPageTemplate';\nexport * from './wizardScreenTemplate';\nexport * from './workspaceScreenTemplate';\n\n/** The foundation screen templates, in the order the manifest lists them. The workspace comes first: it is the container the master/detail nests in. */\nexport const foundationScreenTemplates = [\n workspaceScreenTemplate, dashboardScreenTemplate, listScreenTemplate, boardScreenTemplate, masterDetailScreenTemplate, recordPageTemplate, formScreenTemplate, wizardScreenTemplate,\n];\n"],"names":["foundationScreenTemplates","workspaceScreenTemplate","dashboardScreenTemplate","listScreenTemplate","boardScreenTemplate","masterDetailScreenTemplate","recordPageTemplate","formScreenTemplate","wizardScreenTemplate"],"mappings":";;;;;;;;;;;;AAAA;AACA;AAqBA,yJACO,MAAMA,yBAAAA,GAA4B;AACrCC,IAAAA,+CAAAA;AAAyBC,IAAAA,+CAAAA;AAAyBC,IAAAA,qCAAAA;AAAoBC,IAAAA,uCAAAA;AAAqBC,IAAAA,qDAAAA;AAA4BC,IAAAA,qCAAAA;AAAoBC,IAAAA,qCAAAA;AAAoBC,IAAAA;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var scene_model = require('@cratis/scene.model');
|
|
4
|
+
var flowBuilders = require('../../layouts/flowBuilders.js');
|
|
5
|
+
var templateParts = require('./templateParts.js');
|
|
6
|
+
|
|
7
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
8
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
9
|
+
/**
|
|
10
|
+
* The collection screen: search, filters, a list that is a table, grouped, or cards, a bar that appears when rows are selected, and a footer for paging.
|
|
11
|
+
* Search, sort, page and selection live in the address, so a link shares the list as it is. On a phone the table becomes cards.
|
|
12
|
+
*/ const listScreenTemplate = {
|
|
13
|
+
name: 'ListScreen',
|
|
14
|
+
fitsSlot: 'content',
|
|
15
|
+
slots: [
|
|
16
|
+
{
|
|
17
|
+
name: 'header'
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
name: 'toolbar'
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
name: 'filters'
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
name: 'list'
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
name: 'bulkBar'
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
name: 'footer'
|
|
33
|
+
}
|
|
34
|
+
],
|
|
35
|
+
arrangement: {
|
|
36
|
+
root: flowBuilders.column([
|
|
37
|
+
flowBuilders.slotLeaf('header'),
|
|
38
|
+
flowBuilders.row([
|
|
39
|
+
flowBuilders.slotLeaf('toolbar')
|
|
40
|
+
], 8),
|
|
41
|
+
flowBuilders.slotLeaf('filters'),
|
|
42
|
+
flowBuilders.slotLeaf('bulkBar'),
|
|
43
|
+
flowBuilders.slotLeaf('list'),
|
|
44
|
+
flowBuilders.slotLeaf('footer')
|
|
45
|
+
], 12),
|
|
46
|
+
overrides: [
|
|
47
|
+
{
|
|
48
|
+
width: scene_model.WidthSizeClass.Compact,
|
|
49
|
+
root: flowBuilders.column([
|
|
50
|
+
flowBuilders.slotLeaf('header'),
|
|
51
|
+
flowBuilders.slotLeaf('toolbar'),
|
|
52
|
+
flowBuilders.slotLeaf('filters'),
|
|
53
|
+
flowBuilders.slotLeaf('bulkBar'),
|
|
54
|
+
flowBuilders.slotLeaf('list'),
|
|
55
|
+
flowBuilders.slotLeaf('footer')
|
|
56
|
+
], 16)
|
|
57
|
+
}
|
|
58
|
+
]
|
|
59
|
+
},
|
|
60
|
+
content: {
|
|
61
|
+
header: [
|
|
62
|
+
templateParts.component('list-header', 'pageHeader', {
|
|
63
|
+
title: 'Deals',
|
|
64
|
+
subtitle: 'Every open and closed deal'
|
|
65
|
+
})
|
|
66
|
+
],
|
|
67
|
+
toolbar: [
|
|
68
|
+
templateParts.component('list-search', 'globalSearch', {
|
|
69
|
+
placeholder: 'Search deals',
|
|
70
|
+
label: 'Search deals',
|
|
71
|
+
urlKey: 'dealsq'
|
|
72
|
+
}),
|
|
73
|
+
templateParts.component('list-views', 'savedViewsMenu', {
|
|
74
|
+
views: templateParts.fromQuery('DealViews'),
|
|
75
|
+
savePermission: 'enabled',
|
|
76
|
+
managePermission: 'enabled'
|
|
77
|
+
}),
|
|
78
|
+
templateParts.component('list-columns', 'columnChooser', {
|
|
79
|
+
columns: templateParts.fromQuery('DealColumnChoices')
|
|
80
|
+
})
|
|
81
|
+
],
|
|
82
|
+
filters: [
|
|
83
|
+
templateParts.component('list-filter', 'filterBuilder', {
|
|
84
|
+
fields: templateParts.fromQuery('DealFilterFields')
|
|
85
|
+
})
|
|
86
|
+
],
|
|
87
|
+
list: [
|
|
88
|
+
templateParts.component('list-records', 'dataList', {
|
|
89
|
+
label: 'Deals',
|
|
90
|
+
rows: templateParts.fromQuery('Deals'),
|
|
91
|
+
columns: templateParts.fromQuery('DealColumns'),
|
|
92
|
+
titleField: 'name',
|
|
93
|
+
selectionMode: 'multiple',
|
|
94
|
+
pageSize: 10,
|
|
95
|
+
rowActions: [
|
|
96
|
+
'Open',
|
|
97
|
+
'Archive'
|
|
98
|
+
],
|
|
99
|
+
urlKey: 'deals'
|
|
100
|
+
})
|
|
101
|
+
],
|
|
102
|
+
bulkBar: [
|
|
103
|
+
templateParts.component('list-bulk', 'bulkBar', {
|
|
104
|
+
selection: templateParts.fromQuery('DealSelection'),
|
|
105
|
+
actions: [
|
|
106
|
+
'Assign',
|
|
107
|
+
'Archive'
|
|
108
|
+
]
|
|
109
|
+
})
|
|
110
|
+
],
|
|
111
|
+
footer: []
|
|
112
|
+
},
|
|
113
|
+
displayName: 'List',
|
|
114
|
+
description: 'A searchable, filterable collection that is a table, grouped or cards, with a bulk bar for selected rows.',
|
|
115
|
+
metadata: {
|
|
116
|
+
...templateParts.foundationTemplateProvenance,
|
|
117
|
+
type: 'List',
|
|
118
|
+
category: 'Foundation / List',
|
|
119
|
+
thumbnail: templateParts.thumbnailOf('ListScreen')
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
exports.listScreenTemplate = listScreenTemplate;
|
|
124
|
+
//# sourceMappingURL=listScreenTemplate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listScreenTemplate.js","sources":["../../../../foundation/templates/listScreenTemplate.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 { ScreenTemplate, WidthSizeClass } from '@cratis/scene.model';\nimport { column, grid, row, slotLeaf } from '../../layouts/flowBuilders';\nimport { component, foundationTemplateProvenance, fromQuery, thumbnailOf } from './templateParts';\n\n/**\n * The collection screen: search, filters, a list that is a table, grouped, or cards, a bar that appears when rows are selected, and a footer for paging.\n * Search, sort, page and selection live in the address, so a link shares the list as it is. On a phone the table becomes cards.\n */\nexport const listScreenTemplate: ScreenTemplate = {\n name: 'ListScreen',\n fitsSlot: 'content',\n slots: [{ name: 'header' }, { name: 'toolbar' }, { name: 'filters' }, { name: 'list' }, { name: 'bulkBar' }, { name: 'footer' }],\n arrangement: {\n root: column([slotLeaf('header'), row([slotLeaf('toolbar')], 8), slotLeaf('filters'), slotLeaf('bulkBar'), slotLeaf('list'), slotLeaf('footer')], 12),\n overrides: [{ width: WidthSizeClass.Compact, root: column([slotLeaf('header'), slotLeaf('toolbar'), slotLeaf('filters'), slotLeaf('bulkBar'), slotLeaf('list'), slotLeaf('footer')], 16) }],\n },\n content: {\n header: [component('list-header', 'pageHeader', { title: 'Deals', subtitle: 'Every open and closed deal' })],\n toolbar: [\n component('list-search', 'globalSearch', { placeholder: 'Search deals', label: 'Search deals', urlKey: 'dealsq' }),\n component('list-views', 'savedViewsMenu', { views: fromQuery('DealViews'), savePermission: 'enabled', managePermission: 'enabled' }),\n component('list-columns', 'columnChooser', { columns: fromQuery('DealColumnChoices') }),\n ],\n filters: [component('list-filter', 'filterBuilder', { fields: fromQuery('DealFilterFields') })],\n list: [component('list-records', 'dataList', {\n label: 'Deals', rows: fromQuery('Deals'), columns: fromQuery('DealColumns'), titleField: 'name', selectionMode: 'multiple', pageSize: 10, rowActions: ['Open', 'Archive'], urlKey: 'deals',\n })],\n bulkBar: [component('list-bulk', 'bulkBar', { selection: fromQuery('DealSelection'), actions: ['Assign', 'Archive'] })],\n footer: [],\n },\n displayName: 'List',\n description: 'A searchable, filterable collection that is a table, grouped or cards, with a bulk bar for selected rows.',\n metadata: { ...foundationTemplateProvenance, type: 'List', category: 'Foundation / List', thumbnail: thumbnailOf('ListScreen') },\n};\n"],"names":["listScreenTemplate","name","fitsSlot","slots","arrangement","root","column","slotLeaf","row","overrides","width","WidthSizeClass","Compact","content","header","component","title","subtitle","toolbar","placeholder","label","urlKey","views","fromQuery","savePermission","managePermission","columns","filters","fields","list","rows","titleField","selectionMode","pageSize","rowActions","bulkBar","selection","actions","footer","displayName","description","metadata","foundationTemplateProvenance","type","category","thumbnail","thumbnailOf"],"mappings":"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"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var scene_model = require('@cratis/scene.model');
|
|
4
|
+
var flowBuilders = require('../../layouts/flowBuilders.js');
|
|
5
|
+
var templateParts = require('./templateParts.js');
|
|
6
|
+
|
|
7
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
8
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
9
|
+
/**
|
|
10
|
+
* The master/detail: a list beside the selected record. The selection lives in the address, so a link opens a record and the back button returns to the
|
|
11
|
+
* list; on a phone the two become a navigation stack - the list, then the record with a way back. It lives in a module workspace's `moduleContent`.
|
|
12
|
+
*/ const masterDetailScreenTemplate = {
|
|
13
|
+
name: 'MasterDetailScreen',
|
|
14
|
+
fitsSlot: 'WorkspaceScreen.moduleContent',
|
|
15
|
+
slots: [
|
|
16
|
+
{
|
|
17
|
+
name: 'list'
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
name: 'details'
|
|
21
|
+
}
|
|
22
|
+
],
|
|
23
|
+
arrangement: {
|
|
24
|
+
root: flowBuilders.grid([
|
|
25
|
+
flowBuilders.slotLeaf('list'),
|
|
26
|
+
flowBuilders.slotLeaf('details', {
|
|
27
|
+
span: 2
|
|
28
|
+
})
|
|
29
|
+
], 3, 16),
|
|
30
|
+
overrides: [
|
|
31
|
+
{
|
|
32
|
+
width: scene_model.WidthSizeClass.Compact,
|
|
33
|
+
root: flowBuilders.column([
|
|
34
|
+
flowBuilders.slotLeaf('list'),
|
|
35
|
+
flowBuilders.slotLeaf('details')
|
|
36
|
+
], 16)
|
|
37
|
+
}
|
|
38
|
+
]
|
|
39
|
+
},
|
|
40
|
+
content: {
|
|
41
|
+
list: [
|
|
42
|
+
templateParts.component('md-list', 'dataList', {
|
|
43
|
+
label: 'Accounts',
|
|
44
|
+
rows: templateParts.fromQuery('Deals'),
|
|
45
|
+
columns: templateParts.fromQuery('DealColumns'),
|
|
46
|
+
titleField: 'name',
|
|
47
|
+
selectionMode: 'single',
|
|
48
|
+
urlKey: 'md'
|
|
49
|
+
})
|
|
50
|
+
],
|
|
51
|
+
details: [
|
|
52
|
+
templateParts.component('md-detail', 'tabSet', {
|
|
53
|
+
tabs: templateParts.fromQuery('RecordTabs'),
|
|
54
|
+
urlKey: 'mdtab',
|
|
55
|
+
label: 'Account'
|
|
56
|
+
})
|
|
57
|
+
]
|
|
58
|
+
},
|
|
59
|
+
displayName: 'Master/detail with address selection',
|
|
60
|
+
description: 'A list beside the selected record that stacks into a navigation stack on a phone.',
|
|
61
|
+
outlets: [
|
|
62
|
+
{
|
|
63
|
+
name: 'master-detail.detail',
|
|
64
|
+
description: 'The selected record.',
|
|
65
|
+
accepts: [
|
|
66
|
+
'Detail'
|
|
67
|
+
]
|
|
68
|
+
}
|
|
69
|
+
],
|
|
70
|
+
metadata: {
|
|
71
|
+
...templateParts.foundationTemplateProvenance,
|
|
72
|
+
type: 'Workspace',
|
|
73
|
+
category: 'Foundation / Workspace',
|
|
74
|
+
thumbnail: templateParts.thumbnailOf('MasterDetailScreen')
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
exports.masterDetailScreenTemplate = masterDetailScreenTemplate;
|
|
79
|
+
//# sourceMappingURL=masterDetailScreenTemplate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"masterDetailScreenTemplate.js","sources":["../../../../foundation/templates/masterDetailScreenTemplate.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 { ScreenTemplate, WidthSizeClass } from '@cratis/scene.model';\nimport { column, grid, row, slotLeaf } from '../../layouts/flowBuilders';\nimport { component, foundationTemplateProvenance, fromQuery, thumbnailOf } from './templateParts';\n\n/**\n * The master/detail: a list beside the selected record. The selection lives in the address, so a link opens a record and the back button returns to the\n * list; on a phone the two become a navigation stack - the list, then the record with a way back. It lives in a module workspace's `moduleContent`.\n */\nexport const masterDetailScreenTemplate: ScreenTemplate = {\n name: 'MasterDetailScreen',\n fitsSlot: 'WorkspaceScreen.moduleContent',\n slots: [{ name: 'list' }, { name: 'details' }],\n arrangement: {\n root: grid([slotLeaf('list'), slotLeaf('details', { span: 2 })], 3, 16),\n overrides: [{ width: WidthSizeClass.Compact, root: column([slotLeaf('list'), slotLeaf('details')], 16) }],\n },\n content: {\n list: [component('md-list', 'dataList', { label: 'Accounts', rows: fromQuery('Deals'), columns: fromQuery('DealColumns'), titleField: 'name', selectionMode: 'single', urlKey: 'md' })],\n details: [component('md-detail', 'tabSet', { tabs: fromQuery('RecordTabs'), urlKey: 'mdtab', label: 'Account' })],\n },\n displayName: 'Master/detail with address selection',\n description: 'A list beside the selected record that stacks into a navigation stack on a phone.',\n outlets: [{ name: 'master-detail.detail', description: 'The selected record.', accepts: ['Detail'] }],\n metadata: { ...foundationTemplateProvenance, type: 'Workspace', category: 'Foundation / Workspace', thumbnail: thumbnailOf('MasterDetailScreen') },\n};\n"],"names":["masterDetailScreenTemplate","name","fitsSlot","slots","arrangement","root","grid","slotLeaf","span","overrides","width","WidthSizeClass","Compact","column","content","list","component","label","rows","fromQuery","columns","titleField","selectionMode","urlKey","details","tabs","displayName","description","outlets","accepts","metadata","foundationTemplateProvenance","type","category","thumbnail","thumbnailOf"],"mappings":";;;;;;AAAA;AACA;AAMA;;;UAIaA,0BAAAA,GAA6C;IACtDC,IAAAA,EAAM,oBAAA;IACNC,QAAAA,EAAU,+BAAA;IACVC,KAAAA,EAAO;AAAC,QAAA;YAAEF,IAAAA,EAAM;AAAO,SAAA;AAAG,QAAA;YAAEA,IAAAA,EAAM;AAAU;AAAE,KAAA;IAC9CG,WAAAA,EAAa;AACTC,QAAAA,IAAAA,EAAMC,iBAAAA,CAAK;YAACC,qBAAAA,CAAS,MAAA,CAAA;AAASA,YAAAA,qBAAAA,CAAS,SAAA,EAAW;gBAAEC,IAAAA,EAAM;AAAE,aAAA;AAAG,SAAA,EAAE,CAAA,EAAG,EAAA,CAAA;QACpEC,SAAAA,EAAW;AAAC,YAAA;AAAEC,gBAAAA,KAAAA,EAAOC,2BAAeC,OAAO;AAAEP,gBAAAA,IAAAA,EAAMQ,mBAAAA,CAAO;oBAACN,qBAAAA,CAAS,MAAA,CAAA;oBAASA,qBAAAA,CAAS,SAAA;iBAAW,EAAE,EAAA;AAAI;AAAE;AAC7G,KAAA;IACAO,OAAAA,EAAS;QACLC,IAAAA,EAAM;AAACC,YAAAA,uBAAAA,CAAU,WAAW,UAAA,EAAY;gBAAEC,KAAAA,EAAO,UAAA;AAAYC,gBAAAA,IAAAA,EAAMC,uBAAAA,CAAU,OAAA,CAAA;AAAUC,gBAAAA,OAAAA,EAASD,uBAAAA,CAAU,aAAA,CAAA;gBAAgBE,UAAAA,EAAY,MAAA;gBAAQC,aAAAA,EAAe,QAAA;gBAAUC,MAAAA,EAAQ;AAAK,aAAA;AAAG,SAAA;QACvLC,OAAAA,EAAS;AAACR,YAAAA,uBAAAA,CAAU,aAAa,QAAA,EAAU;AAAES,gBAAAA,IAAAA,EAAMN,uBAAAA,CAAU,YAAA,CAAA;gBAAeI,MAAAA,EAAQ,OAAA;gBAASN,KAAAA,EAAO;AAAU,aAAA;AAAG;AACrH,KAAA;IACAS,WAAAA,EAAa,sCAAA;IACbC,WAAAA,EAAa,mFAAA;IACbC,OAAAA,EAAS;AAAC,QAAA;YAAE3B,IAAAA,EAAM,sBAAA;YAAwB0B,WAAAA,EAAa,sBAAA;YAAwBE,OAAAA,EAAS;AAAC,gBAAA;AAAS;AAAC;AAAE,KAAA;IACrGC,QAAAA,EAAU;AAAE,QAAA,GAAGC,0CAA4B;QAAEC,IAAAA,EAAM,WAAA;QAAaC,QAAAA,EAAU,wBAAA;AAA0BC,QAAAA,SAAAA,EAAWC,yBAAAA,CAAY,oBAAA;AAAsB;AACrJ;;"}
|