@cratis/scene.blueprint.default 4.40.0 → 4.42.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 +9 -0
- package/defaultBlueprint.ts +1 -0
- package/defaultBlueprintComponents.ts +4 -1
- package/dist/cjs/ComponentName.js +3 -0
- package/dist/cjs/ComponentName.js.map +1 -1
- package/dist/cjs/defaultBlueprint.js +20 -1
- package/dist/cjs/defaultBlueprint.js.map +1 -1
- package/dist/cjs/defaultBlueprintComponentMetadata.js +11 -0
- package/dist/cjs/defaultBlueprintComponentMetadata.js.map +1 -1
- package/dist/cjs/defaultBlueprintComponents.js +17 -0
- package/dist/cjs/defaultBlueprintComponents.js.map +1 -1
- package/dist/cjs/foundation/ActionButton.js.map +1 -1
- package/dist/cjs/foundation/ActionButtonControl.js +46 -0
- package/dist/cjs/foundation/ActionButtonControl.js.map +1 -0
- package/dist/cjs/foundation/DialogFrame.js +196 -0
- package/dist/cjs/foundation/DialogFrame.js.map +1 -0
- package/dist/cjs/foundation/FormScreenBody.js +13 -3
- package/dist/cjs/foundation/FormScreenBody.js.map +1 -1
- package/dist/cjs/foundation/Notice.js +51 -0
- package/dist/cjs/foundation/Notice.js.map +1 -0
- package/dist/cjs/foundation/formModel.js +1 -0
- package/dist/cjs/foundation/formModel.js.map +1 -1
- package/dist/cjs/foundation/foundationComponentMetadata.js +22 -0
- package/dist/cjs/foundation/foundationComponentMetadata.js.map +1 -1
- package/dist/cjs/foundation/foundationDescriptors.js +89 -0
- package/dist/cjs/foundation/foundationDescriptors.js.map +1 -1
- package/dist/cjs/foundation/foundationSamples.js +29 -0
- package/dist/cjs/foundation/foundationSamples.js.map +1 -1
- package/dist/cjs/foundation/foundationStrings.js +3 -1
- package/dist/cjs/foundation/foundationStrings.js.map +1 -1
- 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/dialogTemplates.js +254 -0
- package/dist/cjs/foundation/templates/dialogTemplates.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 +57 -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/stateScreenTemplates.js +252 -0
- package/dist/cjs/foundation/templates/stateScreenTemplates.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/gallery/GalleryDialogPreview.js +62 -0
- package/dist/cjs/gallery/GalleryDialogPreview.js.map +1 -0
- package/dist/cjs/gallery/GalleryScreenPreview.js +78 -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/dialogTemplates.js +41 -36
- package/dist/cjs/gallery/dialogTemplates.js.map +1 -1
- package/dist/cjs/gallery/screens.js +87 -3
- package/dist/cjs/gallery/screens.js.map +1 -1
- package/dist/cjs/index.js +61 -5
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/ComponentName.d.ts +3 -0
- package/dist/esm/ComponentName.d.ts.map +1 -1
- package/dist/esm/ComponentName.js +3 -0
- package/dist/esm/ComponentName.js.map +1 -1
- package/dist/esm/defaultBlueprint.d.ts.map +1 -1
- package/dist/esm/defaultBlueprint.js +20 -1
- package/dist/esm/defaultBlueprint.js.map +1 -1
- package/dist/esm/defaultBlueprintComponentMetadata.js +11 -0
- package/dist/esm/defaultBlueprintComponentMetadata.js.map +1 -1
- package/dist/esm/defaultBlueprintComponents.d.ts.map +1 -1
- package/dist/esm/defaultBlueprintComponents.js +17 -0
- package/dist/esm/defaultBlueprintComponents.js.map +1 -1
- package/dist/esm/foundation/ActionButton.d.ts +1 -1
- package/dist/esm/foundation/ActionButton.d.ts.map +1 -1
- package/dist/esm/foundation/ActionButton.js.map +1 -1
- package/dist/esm/foundation/ActionButtonControl.d.ts +3 -0
- package/dist/esm/foundation/ActionButtonControl.d.ts.map +1 -0
- package/dist/esm/foundation/ActionButtonControl.js +44 -0
- package/dist/esm/foundation/ActionButtonControl.js.map +1 -0
- package/dist/esm/foundation/DialogFrame.d.ts +14 -0
- package/dist/esm/foundation/DialogFrame.d.ts.map +1 -0
- package/dist/esm/foundation/DialogFrame.js +190 -0
- package/dist/esm/foundation/DialogFrame.js.map +1 -0
- package/dist/esm/foundation/FormScreenBody.d.ts.map +1 -1
- package/dist/esm/foundation/FormScreenBody.js +13 -3
- package/dist/esm/foundation/FormScreenBody.js.map +1 -1
- package/dist/esm/foundation/Notice.d.ts +3 -0
- package/dist/esm/foundation/Notice.d.ts.map +1 -0
- package/dist/esm/foundation/Notice.js +49 -0
- package/dist/esm/foundation/Notice.js.map +1 -0
- package/dist/esm/foundation/formModel.d.ts +2 -1
- package/dist/esm/foundation/formModel.d.ts.map +1 -1
- package/dist/esm/foundation/formModel.js +1 -0
- package/dist/esm/foundation/formModel.js.map +1 -1
- package/dist/esm/foundation/foundationComponentMetadata.d.ts.map +1 -1
- package/dist/esm/foundation/foundationComponentMetadata.js +22 -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 +89 -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 +29 -0
- package/dist/esm/foundation/foundationSamples.js.map +1 -1
- package/dist/esm/foundation/foundationStrings.d.ts +2 -0
- package/dist/esm/foundation/foundationStrings.d.ts.map +1 -1
- package/dist/esm/foundation/foundationStrings.js +3 -1
- package/dist/esm/foundation/foundationStrings.js.map +1 -1
- package/dist/esm/foundation/index.d.ts +4 -0
- package/dist/esm/foundation/index.d.ts.map +1 -1
- package/dist/esm/foundation/index.js +4 -0
- package/dist/esm/foundation/index.js.map +1 -1
- 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/dialogTemplates.d.ts +20 -0
- package/dist/esm/foundation/templates/dialogTemplates.d.ts.map +1 -0
- package/dist/esm/foundation/templates/dialogTemplates.js +243 -0
- package/dist/esm/foundation/templates/dialogTemplates.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 +13 -0
- package/dist/esm/foundation/templates/index.d.ts.map +1 -0
- package/dist/esm/foundation/templates/index.js +27 -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/stateScreenTemplates.d.ts +8 -0
- package/dist/esm/foundation/templates/stateScreenTemplates.d.ts.map +1 -0
- package/dist/esm/foundation/templates/stateScreenTemplates.js +245 -0
- package/dist/esm/foundation/templates/stateScreenTemplates.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/gallery/FoundationDialogs.stories.d.ts +35 -0
- package/dist/esm/gallery/FoundationDialogs.stories.d.ts.map +1 -0
- package/dist/esm/gallery/FoundationDialogs.stories.js +38 -0
- package/dist/esm/gallery/FoundationDialogs.stories.js.map +1 -0
- package/dist/esm/gallery/GalleryDialogPreview.d.ts +17 -0
- package/dist/esm/gallery/GalleryDialogPreview.d.ts.map +1 -0
- package/dist/esm/gallery/GalleryDialogPreview.js +59 -0
- package/dist/esm/gallery/GalleryDialogPreview.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 +77 -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/dialogTemplates.d.ts.map +1 -1
- package/dist/esm/gallery/dialogTemplates.js +42 -37
- package/dist/esm/gallery/dialogTemplates.js.map +1 -1
- package/dist/esm/gallery/index.d.ts +1 -0
- package/dist/esm/gallery/index.d.ts.map +1 -1
- package/dist/esm/gallery/index.js +1 -0
- package/dist/esm/gallery/index.js.map +1 -1
- package/dist/esm/gallery/screens.d.ts.map +1 -1
- package/dist/esm/gallery/screens.js +87 -3
- package/dist/esm/gallery/screens.js.map +1 -1
- package/dist/esm/index.js +17 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/foundation/ActionButton.tsx +1 -1
- package/foundation/ActionButtonControl.tsx +37 -0
- package/foundation/DialogFrame.tsx +138 -0
- package/foundation/FormScreenBody.tsx +6 -3
- package/foundation/Notice.tsx +33 -0
- package/foundation/formModel.ts +1 -0
- package/foundation/foundationComponentMetadata.ts +3 -0
- package/foundation/foundationDescriptors.ts +41 -0
- package/foundation/foundationSamples.ts +3 -0
- package/foundation/foundationStrings.ts +2 -0
- package/foundation/index.ts +4 -0
- package/foundation/templates/boardScreenTemplate.ts +28 -0
- package/foundation/templates/dashboardScreenTemplate.ts +37 -0
- package/foundation/templates/dialogTemplates.ts +114 -0
- package/foundation/templates/formScreenTemplate.ts +28 -0
- package/foundation/templates/index.ts +28 -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/stateScreenTemplates.ts +107 -0
- package/foundation/templates/templateParts.ts +30 -0
- package/foundation/templates/wizardScreenTemplate.ts +33 -0
- package/foundation/templates/workspaceScreenTemplate.ts +27 -0
- package/gallery/FoundationDialogs.stories.tsx +74 -0
- package/gallery/GalleryDialogPreview.tsx +68 -0
- package/gallery/GalleryScreenPreview.tsx +64 -5
- package/gallery/applicationChrome.ts +6 -1
- package/gallery/composeScreen.ts +4 -2
- package/gallery/dialogTemplates.ts +22 -17
- package/gallery/index.ts +1 -0
- package/gallery/screens.ts +18 -2
- package/package.json +10 -8
- package/sampleData/foundation-en.json +661 -0
- package/shell/layout.css +219 -0
- package/thumbnails/BoardScreen.svg +15 -0
- package/thumbnails/ConfirmDialog.svg +12 -0
- package/thumbnails/DashboardScreen.svg +18 -0
- package/thumbnails/DetailDialog.svg +11 -0
- package/thumbnails/ErrorScreen.svg +11 -0
- package/thumbnails/FilterDialog.svg +16 -0
- package/thumbnails/ForbiddenScreen.svg +10 -0
- package/thumbnails/FormDialog.svg +12 -0
- package/thumbnails/FormScreen.svg +14 -0
- package/thumbnails/ListScreen.svg +16 -0
- package/thumbnails/LoginScreen.svg +12 -0
- package/thumbnails/LookupDialog.svg +13 -0
- package/thumbnails/MasterDetailScreen.svg +22 -0
- package/thumbnails/NotFoundScreen.svg +9 -0
- package/thumbnails/QuickCreateDialog.svg +12 -0
- package/thumbnails/RecordPage.svg +17 -0
- package/thumbnails/SideSheet.svg +13 -0
- package/thumbnails/WizardScreen.svg +16 -0
- package/thumbnails/WorkspaceScreen.svg +12 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"foundationStrings.js","sources":["../../../foundation/foundationStrings.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 { ExternalComponent } from '@cratis/scene.model';\n\n/**\n * Every piece of text the foundation components say themselves, as opposed to text a screen author or a bound query\n * supplies. Nothing is hard-coded in a component (spec Part B 1.5): a component reads its text from here, merged with\n * the `strings` property of the element, so an application localizes by supplying a table - and a bound string\n * (a `{name}` placeholder is replaced by the values the component passes) arrives the same way any other property does.\n */\nexport const foundationStrings = {\n loading: 'Loading',\n emptyHeadline: 'Nothing here yet',\n emptyHint: 'There is nothing to show for now.',\n errorHeadline: 'This could not be loaded',\n errorHint: 'Something went wrong while loading. Try again in a moment.',\n retry: 'Try again',\n noPermissionHeadline: 'You do not have access',\n noPermissionHint: 'Ask an administrator to grant you access to {subject}.',\n noPermissionSubject: 'this content',\n partialHeadline: 'Some parts could not be loaded',\n partialHint: 'The unavailable parts are: {regions}.',\n disabledNoPermission: 'You do not have permission to do this',\n trendUp: 'up {value}',\n trendDown: 'down {value}',\n trendFlat: 'unchanged',\n trendComparison: 'compared to {period}',\n statusSuccess: 'Success',\n statusWarning: 'Warning',\n statusDanger: 'Problem',\n statusInfo: 'Information',\n statusNeutral: 'Status',\n chartNoData: 'No data to chart',\n chartDataTable: 'Chart data',\n chartSeries: 'Series',\n chartCategory: 'Category',\n filterAdd: 'Add condition',\n filterAddGroup: 'Add group',\n filterRemove: 'Remove condition',\n filterRemoveGroup: 'Remove group',\n filterMatchAll: 'Match all (AND)',\n filterMatchAny: 'Match any (OR)',\n filterField: 'Field',\n filterOperator: 'Operator',\n filterValue: 'Value',\n filterClear: 'Clear filters',\n filterCondition: 'Condition {n}',\n filterGroup: 'Group {n}',\n filterNoFields: 'There are no fields to filter on',\n opContains: 'contains',\n opEquals: 'equals',\n opNotEquals: 'does not equal',\n opStartsWith: 'starts with',\n opIsEmpty: 'is empty',\n opGreater: 'is greater than',\n opGreaterOrEqual: 'is at least',\n opLess: 'is less than',\n opLessOrEqual: 'is at most',\n opBefore: 'is before',\n opAfter: 'is after',\n opOn: 'is on',\n opIs: 'is',\n opIsNot: 'is not',\n opTrue: 'is yes',\n opFalse: 'is no',\n filterSummary: '{count} active filters',\n filterSummaryOne: '1 active filter',\n columnsChoose: 'Columns',\n columnsLocked: 'always shown',\n columnsReset: 'Show all columns',\n columnsMoveUp: 'Move {name} up',\n columnsMoveDown: 'Move {name} down',\n columnsShown: '{shown} of {total} shown',\n columnsNone: 'There are no columns to choose from',\n viewsLabel: 'Saved views',\n viewsDefault: 'All items',\n viewsSave: 'Save current view',\n viewsManage: 'Manage views',\n viewsNone: 'There are no saved views',\n checklistProgress: '{done} of {total} complete',\n checklistOwner: 'Owner',\n checklistOverdue: 'Overdue',\n checklistDone: 'Done',\n checklistOpen: 'Open',\n checklistItemProgress: 'Progress of {title}',\n checklistNone: 'This checklist has no tasks',\n checklistDue: 'Due',\n activityEmpty: 'No activity yet',\n activityComment: 'Comment',\n activityChange: 'Change',\n activityStatus: 'Status',\n activitySystem: 'System',\n activityBy: 'by {actor}',\n avatarOverflow: '{count} more',\n avatarPeople: '{count} people',\n uploadDrop: 'Drop files here or',\n uploadLimits: 'Up to {limit} each',\n uploadAccepts: 'Accepts {types}',\n uploadSelected: 'Selected files',\n uploadQueued: 'Ready to upload',\n uploadSingle: 'Only one file can be uploaded at a time',\n uploadBrowse: 'Browse files',\n uploadRemove: 'Remove {name}',\n uploadTooLarge: '{name} is larger than {limit}',\n uploadWrongType: '{name} is not an accepted file type',\n uploadUploading: 'Uploading',\n uploadDone: 'Uploaded',\n uploadFailed: 'Upload failed',\n approvalPending: 'Pending',\n approvalCurrent: 'Awaiting decision',\n approvalApproved: 'Approved',\n approvalRejected: 'Rejected',\n approvalSkipped: 'Skipped',\n approvalChain: 'Approval chain',\n approvalStep: 'Step {n} of {total}',\n approvalNotReached: 'Not reached',\n approvalOutcomeApproved: 'Approved by everyone',\n approvalOutcomeRejected: 'Rejected',\n approvalOutcomeInProgress: 'Waiting for a decision',\n approvalOutcomePending: 'Not started',\n orgExpand: 'Expand {name}',\n orgCollapse: 'Collapse {name}',\n orgReports: '{count} reports',\n orgTree: 'Organization',\n orgNone: 'There is nobody in the organization yet',\n listCount: '{count} items',\n listCountFiltered: '{shown} of {total} items',\n listSelectAll: 'Select all rows on this page',\n listSelectRow: 'Select {name}',\n listRowActions: 'Actions for {name}',\n listActions: 'Actions',\n listSortBy: 'Sort by {column}',\n listSortedAscending: 'sorted ascending',\n listSortedDescending: 'sorted descending',\n listPage: 'Page {page} of {pages}',\n listPrevious: 'Previous page',\n listNext: 'Next page',\n listNoMatches: 'Nothing matches your search or filters',\n listClearSearch: 'Clear search and filters',\n listGroupCollapse: 'Collapse {group}',\n listGroupExpand: 'Expand {group}',\n listGroupSubtotal: '{count} items, {total}',\n listCards: 'Items as cards',\n listTable: 'Items as a table',\n listBack: 'Back to the list',\n viewTable: 'Table',\n viewCards: 'Cards',\n viewGrouped: 'Grouped',\n densityComfortable: 'Comfortable',\n densityCompact: 'Compact',\n formRequired: 'required',\n formRequiredField: '{label} is required',\n formInvalidField: '{label} is not valid',\n formSummary: 'Fix {count} fields before saving',\n formSummaryOne: 'Fix 1 field before saving',\n formSave: 'Save',\n formSaveAndNew: 'Save and new',\n formCancel: 'Cancel',\n formEdit: 'Edit',\n formUnsaved: 'You have unsaved changes',\n formDiscard: 'Discard changes',\n formSaved: 'Saved',\n formSectionSave: 'Save {section}',\n formReadOnly: 'This form is read-only',\n formChoose: 'Choose…',\n summaryLabel: 'Key facts',\n tabsLabel: 'Sections',\n subNavLabel: 'Module sections',\n bulkSelected: '{count} selected',\n bulkClear: 'Clear selection',\n bulkActions: 'Actions for the selection',\n searchLabel: 'Search',\n searchPlaceholder: 'Search',\n searchClear: 'Clear search',\n notificationsLabel: 'Notifications',\n notificationsCount: '{count} unread',\n notificationsNone: 'No new notifications',\n boardMoveTo: 'Move to…',\n boardMoveCard: 'Move {title}',\n boardMoved: '{title} moved to {column}',\n boardColumn: '{column}, {count} cards',\n boardCollapse: 'Collapse {column}',\n boardExpand: 'Expand {column}',\n boardWip: 'Limit {limit}',\n boardWipExceeded: 'Over the limit of {limit}',\n boardNoCards: 'No cards',\n wizardStep: 'Step {n} of {total}',\n wizardBack: 'Back',\n wizardNext: 'Next',\n wizardFinish: 'Finish',\n wizardSaveDraft: 'Save draft',\n wizardDraftSaved: 'Draft saved',\n wizardReview: 'Review',\n wizardComplete: 'Completed',\n wizardCurrent: 'Current step',\n wizardUpcoming: 'Not started',\n wizardProgress: 'Wizard progress',\n matrixAllowed: 'Allowed',\n matrixDenied: 'Not allowed',\n matrixGrant: 'Grant {permission} to {role}',\n matrixReadOnly: 'Read-only',\n matrixPermission: 'Permission',\n matrixScroll: 'Permission matrix, scrolls sideways',\n matrixGroupAll: 'Other',\n} as const;\n\n/** The name of one of the foundation strings. */\nexport type FoundationStringName = keyof typeof foundationStrings;\n\n/** The text table a foundation component works with. */\nexport type FoundationStrings = Record<FoundationStringName, string>;\n\n/**\n * The foundation strings with the element's own `strings` property laid over them.\n *\n * Only string values of known names are taken, so a typo in an application's table falls back to the default text\n * rather than rendering nothing.\n */\nexport function readFoundationStrings(element: ExternalComponent): FoundationStrings {\n const supplied = element.properties.strings;\n const result: FoundationStrings = { ...foundationStrings };\n if (typeof supplied !== 'object' || supplied === null || Array.isArray(supplied)) return result;\n\n for (const [name, value] of Object.entries(supplied as Record<string, unknown>)) {\n if (name in foundationStrings && typeof value === 'string') result[name as FoundationStringName] = value;\n }\n\n return result;\n}\n\n/** Replaces each `{name}` in a string with the value of the same name, leaving an unknown placeholder visible rather than blank. */\nexport function formatText(text: string, values: Record<string, string | number> = {}): string {\n return text.replace(/\\{(\\w+)\\}/g, (placeholder, name: string) => (name in values ? String(values[name]) : placeholder));\n}\n"],"names":["foundationStrings","loading","emptyHeadline","emptyHint","errorHeadline","errorHint","retry","noPermissionHeadline","noPermissionHint","noPermissionSubject","partialHeadline","partialHint","disabledNoPermission","trendUp","trendDown","trendFlat","trendComparison","statusSuccess","statusWarning","statusDanger","statusInfo","statusNeutral","chartNoData","chartDataTable","chartSeries","chartCategory","filterAdd","filterAddGroup","filterRemove","filterRemoveGroup","filterMatchAll","filterMatchAny","filterField","filterOperator","filterValue","filterClear","filterCondition","filterGroup","filterNoFields","opContains","opEquals","opNotEquals","opStartsWith","opIsEmpty","opGreater","opGreaterOrEqual","opLess","opLessOrEqual","opBefore","opAfter","opOn","opIs","opIsNot","opTrue","opFalse","filterSummary","filterSummaryOne","columnsChoose","columnsLocked","columnsReset","columnsMoveUp","columnsMoveDown","columnsShown","columnsNone","viewsLabel","viewsDefault","viewsSave","viewsManage","viewsNone","checklistProgress","checklistOwner","checklistOverdue","checklistDone","checklistOpen","checklistItemProgress","checklistNone","checklistDue","activityEmpty","activityComment","activityChange","activityStatus","activitySystem","activityBy","avatarOverflow","avatarPeople","uploadDrop","uploadLimits","uploadAccepts","uploadSelected","uploadQueued","uploadSingle","uploadBrowse","uploadRemove","uploadTooLarge","uploadWrongType","uploadUploading","uploadDone","uploadFailed","approvalPending","approvalCurrent","approvalApproved","approvalRejected","approvalSkipped","approvalChain","approvalStep","approvalNotReached","approvalOutcomeApproved","approvalOutcomeRejected","approvalOutcomeInProgress","approvalOutcomePending","orgExpand","orgCollapse","orgReports","orgTree","orgNone","listCount","listCountFiltered","listSelectAll","listSelectRow","listRowActions","listActions","listSortBy","listSortedAscending","listSortedDescending","listPage","listPrevious","listNext","listNoMatches","listClearSearch","listGroupCollapse","listGroupExpand","listGroupSubtotal","listCards","listTable","listBack","viewTable","viewCards","viewGrouped","densityComfortable","densityCompact","formRequired","formRequiredField","formInvalidField","formSummary","formSummaryOne","formSave","formSaveAndNew","formCancel","formEdit","formUnsaved","formDiscard","formSaved","formSectionSave","formReadOnly","formChoose","summaryLabel","tabsLabel","subNavLabel","bulkSelected","bulkClear","bulkActions","searchLabel","searchPlaceholder","searchClear","notificationsLabel","notificationsCount","notificationsNone","boardMoveTo","boardMoveCard","boardMoved","boardColumn","boardCollapse","boardExpand","boardWip","boardWipExceeded","boardNoCards","wizardStep","wizardBack","wizardNext","wizardFinish","wizardSaveDraft","wizardDraftSaved","wizardReview","wizardComplete","wizardCurrent","wizardUpcoming","wizardProgress","matrixAllowed","matrixDenied","matrixGrant","matrixReadOnly","matrixPermission","matrixScroll","matrixGroupAll","readFoundationStrings","element","supplied","properties","strings","result","Array","isArray","name","value","Object","entries","formatText","text","values","replace","placeholder","String"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"foundationStrings.js","sources":["../../../foundation/foundationStrings.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 { ExternalComponent } from '@cratis/scene.model';\n\n/**\n * Every piece of text the foundation components say themselves, as opposed to text a screen author or a bound query\n * supplies. Nothing is hard-coded in a component (spec Part B 1.5): a component reads its text from here, merged with\n * the `strings` property of the element, so an application localizes by supplying a table - and a bound string\n * (a `{name}` placeholder is replaced by the values the component passes) arrives the same way any other property does.\n */\nexport const foundationStrings = {\n loading: 'Loading',\n emptyHeadline: 'Nothing here yet',\n emptyHint: 'There is nothing to show for now.',\n errorHeadline: 'This could not be loaded',\n errorHint: 'Something went wrong while loading. Try again in a moment.',\n retry: 'Try again',\n noPermissionHeadline: 'You do not have access',\n noPermissionHint: 'Ask an administrator to grant you access to {subject}.',\n noPermissionSubject: 'this content',\n partialHeadline: 'Some parts could not be loaded',\n partialHint: 'The unavailable parts are: {regions}.',\n disabledNoPermission: 'You do not have permission to do this',\n trendUp: 'up {value}',\n trendDown: 'down {value}',\n trendFlat: 'unchanged',\n trendComparison: 'compared to {period}',\n statusSuccess: 'Success',\n statusWarning: 'Warning',\n statusDanger: 'Problem',\n statusInfo: 'Information',\n statusNeutral: 'Status',\n chartNoData: 'No data to chart',\n chartDataTable: 'Chart data',\n chartSeries: 'Series',\n chartCategory: 'Category',\n filterAdd: 'Add condition',\n filterAddGroup: 'Add group',\n filterRemove: 'Remove condition',\n filterRemoveGroup: 'Remove group',\n filterMatchAll: 'Match all (AND)',\n filterMatchAny: 'Match any (OR)',\n filterField: 'Field',\n filterOperator: 'Operator',\n filterValue: 'Value',\n filterClear: 'Clear filters',\n filterCondition: 'Condition {n}',\n filterGroup: 'Group {n}',\n filterNoFields: 'There are no fields to filter on',\n opContains: 'contains',\n opEquals: 'equals',\n opNotEquals: 'does not equal',\n opStartsWith: 'starts with',\n opIsEmpty: 'is empty',\n opGreater: 'is greater than',\n opGreaterOrEqual: 'is at least',\n opLess: 'is less than',\n opLessOrEqual: 'is at most',\n opBefore: 'is before',\n opAfter: 'is after',\n opOn: 'is on',\n opIs: 'is',\n opIsNot: 'is not',\n opTrue: 'is yes',\n opFalse: 'is no',\n filterSummary: '{count} active filters',\n filterSummaryOne: '1 active filter',\n columnsChoose: 'Columns',\n columnsLocked: 'always shown',\n columnsReset: 'Show all columns',\n columnsMoveUp: 'Move {name} up',\n columnsMoveDown: 'Move {name} down',\n columnsShown: '{shown} of {total} shown',\n columnsNone: 'There are no columns to choose from',\n viewsLabel: 'Saved views',\n viewsDefault: 'All items',\n viewsSave: 'Save current view',\n viewsManage: 'Manage views',\n viewsNone: 'There are no saved views',\n checklistProgress: '{done} of {total} complete',\n checklistOwner: 'Owner',\n checklistOverdue: 'Overdue',\n checklistDone: 'Done',\n checklistOpen: 'Open',\n checklistItemProgress: 'Progress of {title}',\n checklistNone: 'This checklist has no tasks',\n checklistDue: 'Due',\n activityEmpty: 'No activity yet',\n activityComment: 'Comment',\n activityChange: 'Change',\n activityStatus: 'Status',\n activitySystem: 'System',\n activityBy: 'by {actor}',\n avatarOverflow: '{count} more',\n avatarPeople: '{count} people',\n uploadDrop: 'Drop files here or',\n uploadLimits: 'Up to {limit} each',\n uploadAccepts: 'Accepts {types}',\n uploadSelected: 'Selected files',\n uploadQueued: 'Ready to upload',\n uploadSingle: 'Only one file can be uploaded at a time',\n uploadBrowse: 'Browse files',\n uploadRemove: 'Remove {name}',\n uploadTooLarge: '{name} is larger than {limit}',\n uploadWrongType: '{name} is not an accepted file type',\n uploadUploading: 'Uploading',\n uploadDone: 'Uploaded',\n uploadFailed: 'Upload failed',\n approvalPending: 'Pending',\n approvalCurrent: 'Awaiting decision',\n approvalApproved: 'Approved',\n approvalRejected: 'Rejected',\n approvalSkipped: 'Skipped',\n approvalChain: 'Approval chain',\n approvalStep: 'Step {n} of {total}',\n approvalNotReached: 'Not reached',\n approvalOutcomeApproved: 'Approved by everyone',\n approvalOutcomeRejected: 'Rejected',\n approvalOutcomeInProgress: 'Waiting for a decision',\n approvalOutcomePending: 'Not started',\n orgExpand: 'Expand {name}',\n orgCollapse: 'Collapse {name}',\n orgReports: '{count} reports',\n orgTree: 'Organization',\n orgNone: 'There is nobody in the organization yet',\n listCount: '{count} items',\n listCountFiltered: '{shown} of {total} items',\n listSelectAll: 'Select all rows on this page',\n listSelectRow: 'Select {name}',\n listRowActions: 'Actions for {name}',\n listActions: 'Actions',\n listSortBy: 'Sort by {column}',\n listSortedAscending: 'sorted ascending',\n listSortedDescending: 'sorted descending',\n listPage: 'Page {page} of {pages}',\n listPrevious: 'Previous page',\n listNext: 'Next page',\n listNoMatches: 'Nothing matches your search or filters',\n listClearSearch: 'Clear search and filters',\n listGroupCollapse: 'Collapse {group}',\n listGroupExpand: 'Expand {group}',\n listGroupSubtotal: '{count} items, {total}',\n listCards: 'Items as cards',\n listTable: 'Items as a table',\n listBack: 'Back to the list',\n viewTable: 'Table',\n viewCards: 'Cards',\n viewGrouped: 'Grouped',\n densityComfortable: 'Comfortable',\n densityCompact: 'Compact',\n formRequired: 'required',\n formRequiredField: '{label} is required',\n formInvalidField: '{label} is not valid',\n formSummary: 'Fix {count} fields before saving',\n formSummaryOne: 'Fix 1 field before saving',\n formSave: 'Save',\n formSaveAndNew: 'Save and new',\n formCancel: 'Cancel',\n formEdit: 'Edit',\n formUnsaved: 'You have unsaved changes',\n formDiscard: 'Discard changes',\n formSaved: 'Saved',\n formSectionSave: 'Save {section}',\n formReadOnly: 'This form is read-only',\n formChoose: 'Choose…',\n summaryLabel: 'Key facts',\n tabsLabel: 'Sections',\n subNavLabel: 'Module sections',\n bulkSelected: '{count} selected',\n bulkClear: 'Clear selection',\n bulkActions: 'Actions for the selection',\n searchLabel: 'Search',\n searchPlaceholder: 'Search',\n searchClear: 'Clear search',\n notificationsLabel: 'Notifications',\n notificationsCount: '{count} unread',\n notificationsNone: 'No new notifications',\n boardMoveTo: 'Move to…',\n boardMoveCard: 'Move {title}',\n boardMoved: '{title} moved to {column}',\n boardColumn: '{column}, {count} cards',\n boardCollapse: 'Collapse {column}',\n boardExpand: 'Expand {column}',\n boardWip: 'Limit {limit}',\n boardWipExceeded: 'Over the limit of {limit}',\n boardNoCards: 'No cards',\n wizardStep: 'Step {n} of {total}',\n wizardBack: 'Back',\n wizardNext: 'Next',\n wizardFinish: 'Finish',\n wizardSaveDraft: 'Save draft',\n wizardDraftSaved: 'Draft saved',\n wizardReview: 'Review',\n wizardComplete: 'Completed',\n wizardCurrent: 'Current step',\n wizardUpcoming: 'Not started',\n wizardProgress: 'Wizard progress',\n matrixAllowed: 'Allowed',\n matrixDenied: 'Not allowed',\n matrixGrant: 'Grant {permission} to {role}',\n matrixReadOnly: 'Read-only',\n matrixPermission: 'Permission',\n matrixScroll: 'Permission matrix, scrolls sideways',\n matrixGroupAll: 'Other',\n dialogClose: 'Close {title}',\n dialogConsequences: 'What will happen',\n} as const;\n\n/** The name of one of the foundation strings. */\nexport type FoundationStringName = keyof typeof foundationStrings;\n\n/** The text table a foundation component works with. */\nexport type FoundationStrings = Record<FoundationStringName, string>;\n\n/**\n * The foundation strings with the element's own `strings` property laid over them.\n *\n * Only string values of known names are taken, so a typo in an application's table falls back to the default text\n * rather than rendering nothing.\n */\nexport function readFoundationStrings(element: ExternalComponent): FoundationStrings {\n const supplied = element.properties.strings;\n const result: FoundationStrings = { ...foundationStrings };\n if (typeof supplied !== 'object' || supplied === null || Array.isArray(supplied)) return result;\n\n for (const [name, value] of Object.entries(supplied as Record<string, unknown>)) {\n if (name in foundationStrings && typeof value === 'string') result[name as FoundationStringName] = value;\n }\n\n return result;\n}\n\n/** Replaces each `{name}` in a string with the value of the same name, leaving an unknown placeholder visible rather than blank. */\nexport function formatText(text: string, values: Record<string, string | number> = {}): string {\n return text.replace(/\\{(\\w+)\\}/g, (placeholder, name: string) => (name in values ? String(values[name]) : placeholder));\n}\n"],"names":["foundationStrings","loading","emptyHeadline","emptyHint","errorHeadline","errorHint","retry","noPermissionHeadline","noPermissionHint","noPermissionSubject","partialHeadline","partialHint","disabledNoPermission","trendUp","trendDown","trendFlat","trendComparison","statusSuccess","statusWarning","statusDanger","statusInfo","statusNeutral","chartNoData","chartDataTable","chartSeries","chartCategory","filterAdd","filterAddGroup","filterRemove","filterRemoveGroup","filterMatchAll","filterMatchAny","filterField","filterOperator","filterValue","filterClear","filterCondition","filterGroup","filterNoFields","opContains","opEquals","opNotEquals","opStartsWith","opIsEmpty","opGreater","opGreaterOrEqual","opLess","opLessOrEqual","opBefore","opAfter","opOn","opIs","opIsNot","opTrue","opFalse","filterSummary","filterSummaryOne","columnsChoose","columnsLocked","columnsReset","columnsMoveUp","columnsMoveDown","columnsShown","columnsNone","viewsLabel","viewsDefault","viewsSave","viewsManage","viewsNone","checklistProgress","checklistOwner","checklistOverdue","checklistDone","checklistOpen","checklistItemProgress","checklistNone","checklistDue","activityEmpty","activityComment","activityChange","activityStatus","activitySystem","activityBy","avatarOverflow","avatarPeople","uploadDrop","uploadLimits","uploadAccepts","uploadSelected","uploadQueued","uploadSingle","uploadBrowse","uploadRemove","uploadTooLarge","uploadWrongType","uploadUploading","uploadDone","uploadFailed","approvalPending","approvalCurrent","approvalApproved","approvalRejected","approvalSkipped","approvalChain","approvalStep","approvalNotReached","approvalOutcomeApproved","approvalOutcomeRejected","approvalOutcomeInProgress","approvalOutcomePending","orgExpand","orgCollapse","orgReports","orgTree","orgNone","listCount","listCountFiltered","listSelectAll","listSelectRow","listRowActions","listActions","listSortBy","listSortedAscending","listSortedDescending","listPage","listPrevious","listNext","listNoMatches","listClearSearch","listGroupCollapse","listGroupExpand","listGroupSubtotal","listCards","listTable","listBack","viewTable","viewCards","viewGrouped","densityComfortable","densityCompact","formRequired","formRequiredField","formInvalidField","formSummary","formSummaryOne","formSave","formSaveAndNew","formCancel","formEdit","formUnsaved","formDiscard","formSaved","formSectionSave","formReadOnly","formChoose","summaryLabel","tabsLabel","subNavLabel","bulkSelected","bulkClear","bulkActions","searchLabel","searchPlaceholder","searchClear","notificationsLabel","notificationsCount","notificationsNone","boardMoveTo","boardMoveCard","boardMoved","boardColumn","boardCollapse","boardExpand","boardWip","boardWipExceeded","boardNoCards","wizardStep","wizardBack","wizardNext","wizardFinish","wizardSaveDraft","wizardDraftSaved","wizardReview","wizardComplete","wizardCurrent","wizardUpcoming","wizardProgress","matrixAllowed","matrixDenied","matrixGrant","matrixReadOnly","matrixPermission","matrixScroll","matrixGroupAll","dialogClose","dialogConsequences","readFoundationStrings","element","supplied","properties","strings","result","Array","isArray","name","value","Object","entries","formatText","text","values","replace","placeholder","String"],"mappings":"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"}
|
|
@@ -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,254 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var scene_model = require('@cratis/scene.model');
|
|
4
|
+
var elements = require('../../gallery/elements.js');
|
|
5
|
+
var templateProvenance = require('../../templateProvenance.js');
|
|
6
|
+
var templateParts = require('./templateParts.js');
|
|
7
|
+
|
|
8
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
9
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
10
|
+
/** What a Cancel or Close control does: close the dialog the screen opened it from, in Scene, in Stage and in the preview alike. */ const closeDialogBehaviors = [
|
|
11
|
+
{
|
|
12
|
+
bindings: [
|
|
13
|
+
{
|
|
14
|
+
trigger: {
|
|
15
|
+
kind: scene_model.InteractionTriggerKind.Click
|
|
16
|
+
},
|
|
17
|
+
actions: [
|
|
18
|
+
{
|
|
19
|
+
kind: scene_model.InteractionActionKind.CloseDialog
|
|
20
|
+
}
|
|
21
|
+
]
|
|
22
|
+
}
|
|
23
|
+
]
|
|
24
|
+
}
|
|
25
|
+
];
|
|
26
|
+
/** An element that closes the dialog when it is clicked. */ const closingDialog = (element)=>({
|
|
27
|
+
...element,
|
|
28
|
+
behaviors: closeDialogBehaviors
|
|
29
|
+
});
|
|
30
|
+
/**
|
|
31
|
+
* The provenance, type and category every foundation dialog carries. A dialog built from the foundation and core components needs no component library; one that
|
|
32
|
+
* uses PrimeReact widgets (`needsPrimeReact`) declares the packages it requires.
|
|
33
|
+
*/ const dialogMetadata = (name, needsPrimeReact = false)=>({
|
|
34
|
+
...needsPrimeReact ? templateProvenance.defaultBlueprintTemplateProvenance : templateParts.foundationTemplateProvenance,
|
|
35
|
+
type: 'Dialog',
|
|
36
|
+
category: 'Foundation / Dialog',
|
|
37
|
+
thumbnail: templateParts.thumbnailOf(name)
|
|
38
|
+
});
|
|
39
|
+
/** One action of the foundation, by the id it is known by. */ const actionButton = (id, properties)=>templateParts.component(id, 'actionButton', properties);
|
|
40
|
+
/** The footer of a dialog: its buttons, the one that confirms last, so it is the one the eye ends on. */ const dialogActions = (id, buttons)=>elements.panel(`${id}-actions`, buttons);
|
|
41
|
+
/**
|
|
42
|
+
* The quick-create dialog: a short form - six fields at most - opened from a list's header or from a lookup, to make one record without leaving the page.
|
|
43
|
+
* Cancel closes it, Create validates and saves. `FormDialog` is the general form dialog this one is the focused form of: the same shape with the heading,
|
|
44
|
+
* focus handling and the form of the foundation, which is why it is offered as the alias a quick-create button chooses.
|
|
45
|
+
*/ const quickCreateDialogTemplate = {
|
|
46
|
+
name: 'QuickCreateDialog',
|
|
47
|
+
slots: [
|
|
48
|
+
{
|
|
49
|
+
name: 'header'
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
name: 'body'
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
name: 'actions'
|
|
56
|
+
}
|
|
57
|
+
],
|
|
58
|
+
content: {
|
|
59
|
+
header: [
|
|
60
|
+
templateParts.component('quick-create-frame', 'dialogFrame', {
|
|
61
|
+
title: 'New contact',
|
|
62
|
+
subtitle: 'Only what is needed to get started'
|
|
63
|
+
})
|
|
64
|
+
],
|
|
65
|
+
body: [
|
|
66
|
+
closingDialog(templateParts.component('quick-create-form', 'formScreenBody', {
|
|
67
|
+
mode: 'create',
|
|
68
|
+
saveAndNew: false,
|
|
69
|
+
strings: {
|
|
70
|
+
formSave: 'Create'
|
|
71
|
+
},
|
|
72
|
+
sections: templateParts.fromQuery('QuickCreateSections'),
|
|
73
|
+
values: templateParts.fromQuery('QuickCreateValues', '0'),
|
|
74
|
+
errors: templateParts.fromQuery('FormErrors', '0')
|
|
75
|
+
}))
|
|
76
|
+
],
|
|
77
|
+
actions: []
|
|
78
|
+
},
|
|
79
|
+
displayName: 'Quick create',
|
|
80
|
+
description: 'A short form of six fields at most with Cancel and Create, opened without leaving the page.',
|
|
81
|
+
metadata: dialogMetadata('QuickCreateDialog')
|
|
82
|
+
};
|
|
83
|
+
/**
|
|
84
|
+
* The lookup dialog: search, a table or list, and single or multiple selection, with Cancel and Select. Any lookup field opens it, so one dialog serves them all;
|
|
85
|
+
* `selectionMode` on the list is `single` (the default here) or `multiple`.
|
|
86
|
+
*/ const lookupDialogTemplate = {
|
|
87
|
+
name: 'LookupDialog',
|
|
88
|
+
slots: [
|
|
89
|
+
{
|
|
90
|
+
name: 'header'
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
name: 'body'
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
name: 'actions'
|
|
97
|
+
}
|
|
98
|
+
],
|
|
99
|
+
content: {
|
|
100
|
+
header: [
|
|
101
|
+
templateParts.component('lookup-frame', 'dialogFrame', {
|
|
102
|
+
title: 'Select an account',
|
|
103
|
+
subtitle: 'Search, then choose one'
|
|
104
|
+
})
|
|
105
|
+
],
|
|
106
|
+
body: [
|
|
107
|
+
templateParts.component('lookup-search', 'globalSearch', {
|
|
108
|
+
placeholder: 'Search accounts',
|
|
109
|
+
label: 'Search accounts'
|
|
110
|
+
}),
|
|
111
|
+
templateParts.component('lookup-list', 'dataList', {
|
|
112
|
+
label: 'Accounts',
|
|
113
|
+
rows: templateParts.fromQuery('LookupRows'),
|
|
114
|
+
columns: templateParts.fromQuery('LookupColumns'),
|
|
115
|
+
titleField: 'name',
|
|
116
|
+
selectionMode: 'single',
|
|
117
|
+
pageSize: 6
|
|
118
|
+
})
|
|
119
|
+
],
|
|
120
|
+
actions: [
|
|
121
|
+
dialogActions('lookup', [
|
|
122
|
+
closingDialog(actionButton('lookup-cancel', {
|
|
123
|
+
label: 'Cancel',
|
|
124
|
+
emphasis: 'secondary'
|
|
125
|
+
})),
|
|
126
|
+
closingDialog(actionButton('lookup-select', {
|
|
127
|
+
label: 'Select',
|
|
128
|
+
emphasis: 'primary'
|
|
129
|
+
}))
|
|
130
|
+
])
|
|
131
|
+
]
|
|
132
|
+
},
|
|
133
|
+
displayName: 'Lookup',
|
|
134
|
+
description: 'A search and a list to choose one or several records from, with Cancel and Select.',
|
|
135
|
+
metadata: dialogMetadata('LookupDialog')
|
|
136
|
+
};
|
|
137
|
+
/**
|
|
138
|
+
* The side sheet: a drawer from the inline end with a header, a scrollable body and footer actions. It hosts what a page hosts - a form, or a record's
|
|
139
|
+
* tabs and related records - so a record can be edited or read from beside the list it came from.
|
|
140
|
+
*/ const sideSheetTemplate = {
|
|
141
|
+
name: 'SideSheet',
|
|
142
|
+
slots: [
|
|
143
|
+
{
|
|
144
|
+
name: 'header'
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
name: 'body'
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
name: 'actions'
|
|
151
|
+
}
|
|
152
|
+
],
|
|
153
|
+
content: {
|
|
154
|
+
header: [
|
|
155
|
+
templateParts.component('sheet-frame', 'dialogFrame', {
|
|
156
|
+
title: 'Account details',
|
|
157
|
+
subtitle: 'Edit without leaving the list',
|
|
158
|
+
placement: 'side'
|
|
159
|
+
})
|
|
160
|
+
],
|
|
161
|
+
body: [
|
|
162
|
+
closingDialog(templateParts.component('sheet-form', 'formScreenBody', {
|
|
163
|
+
mode: 'edit',
|
|
164
|
+
sections: templateParts.fromQuery('RecordSections'),
|
|
165
|
+
values: templateParts.fromQuery('RecordValues', '0'),
|
|
166
|
+
errors: templateParts.fromQuery('FormErrors', '0')
|
|
167
|
+
}))
|
|
168
|
+
],
|
|
169
|
+
actions: [
|
|
170
|
+
dialogActions('sheet', [
|
|
171
|
+
closingDialog(actionButton('sheet-close', {
|
|
172
|
+
label: 'Close',
|
|
173
|
+
emphasis: 'secondary'
|
|
174
|
+
})),
|
|
175
|
+
actionButton('sheet-open', {
|
|
176
|
+
label: 'Open full page',
|
|
177
|
+
emphasis: 'primary',
|
|
178
|
+
targetScreen: 'RecordPage'
|
|
179
|
+
})
|
|
180
|
+
])
|
|
181
|
+
]
|
|
182
|
+
},
|
|
183
|
+
displayName: 'Side sheet',
|
|
184
|
+
description: 'A drawer from the side hosting a record or a form, with footer actions.',
|
|
185
|
+
metadata: dialogMetadata('SideSheet')
|
|
186
|
+
};
|
|
187
|
+
/**
|
|
188
|
+
* The filter dialog: the advanced filter builder in a dialog. On a phone it fills the page, which makes it the phone's alternative to the filter panel
|
|
189
|
+
* a list shows beside its table.
|
|
190
|
+
*/ const filterDialogTemplate = {
|
|
191
|
+
name: 'FilterDialog',
|
|
192
|
+
slots: [
|
|
193
|
+
{
|
|
194
|
+
name: 'header'
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
name: 'body'
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
name: 'actions'
|
|
201
|
+
}
|
|
202
|
+
],
|
|
203
|
+
content: {
|
|
204
|
+
header: [
|
|
205
|
+
templateParts.component('filter-frame', 'dialogFrame', {
|
|
206
|
+
title: 'Filters',
|
|
207
|
+
subtitle: 'Show only the deals that match'
|
|
208
|
+
})
|
|
209
|
+
],
|
|
210
|
+
body: [
|
|
211
|
+
templateParts.component('filter-builder', 'filterBuilder', {
|
|
212
|
+
fields: templateParts.fromQuery('DealFilterFields'),
|
|
213
|
+
filter: templateParts.fromQuery('DealFilter', '0')
|
|
214
|
+
})
|
|
215
|
+
],
|
|
216
|
+
actions: [
|
|
217
|
+
dialogActions('filter', [
|
|
218
|
+
actionButton('filter-reset', {
|
|
219
|
+
label: 'Reset',
|
|
220
|
+
emphasis: 'secondary'
|
|
221
|
+
}),
|
|
222
|
+
closingDialog(actionButton('filter-cancel', {
|
|
223
|
+
label: 'Cancel',
|
|
224
|
+
emphasis: 'secondary'
|
|
225
|
+
})),
|
|
226
|
+
closingDialog(actionButton('filter-apply', {
|
|
227
|
+
label: 'Apply filters',
|
|
228
|
+
emphasis: 'primary'
|
|
229
|
+
}))
|
|
230
|
+
])
|
|
231
|
+
]
|
|
232
|
+
},
|
|
233
|
+
displayName: 'Filters',
|
|
234
|
+
description: 'The advanced filter builder in a dialog, the phone alternative to the filter panel.',
|
|
235
|
+
metadata: dialogMetadata('FilterDialog')
|
|
236
|
+
};
|
|
237
|
+
/** The dialogs the foundation adds to the three the gallery already had. */ const foundationDialogTemplates = [
|
|
238
|
+
quickCreateDialogTemplate,
|
|
239
|
+
lookupDialogTemplate,
|
|
240
|
+
sideSheetTemplate,
|
|
241
|
+
filterDialogTemplate
|
|
242
|
+
];
|
|
243
|
+
|
|
244
|
+
exports.actionButton = actionButton;
|
|
245
|
+
exports.closeDialogBehaviors = closeDialogBehaviors;
|
|
246
|
+
exports.closingDialog = closingDialog;
|
|
247
|
+
exports.dialogActions = dialogActions;
|
|
248
|
+
exports.dialogMetadata = dialogMetadata;
|
|
249
|
+
exports.filterDialogTemplate = filterDialogTemplate;
|
|
250
|
+
exports.foundationDialogTemplates = foundationDialogTemplates;
|
|
251
|
+
exports.lookupDialogTemplate = lookupDialogTemplate;
|
|
252
|
+
exports.quickCreateDialogTemplate = quickCreateDialogTemplate;
|
|
253
|
+
exports.sideSheetTemplate = sideSheetTemplate;
|
|
254
|
+
//# sourceMappingURL=dialogTemplates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dialogTemplates.js","sources":["../../../../foundation/templates/dialogTemplates.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 { Behavior, DialogTemplate, ExternalComponent, InteractionActionKind, InteractionTriggerKind } from '@cratis/scene.model';\nimport { panel } from '../../gallery/elements';\nimport { defaultBlueprintTemplateProvenance } from '../../templateProvenance';\nimport { component, foundationTemplateProvenance, fromQuery, thumbnailOf } from './templateParts';\n\n/** What a Cancel or Close control does: close the dialog the screen opened it from, in Scene, in Stage and in the preview alike. */\nexport const closeDialogBehaviors: Behavior[] = [{ bindings: [{ trigger: { kind: InteractionTriggerKind.Click }, actions: [{ kind: InteractionActionKind.CloseDialog }] }] }];\n\n/** An element that closes the dialog when it is clicked. */\nexport const closingDialog = <T extends ExternalComponent>(element: T): T => ({ ...element, behaviors: closeDialogBehaviors });\n\n/**\n * The provenance, type and category every foundation dialog carries. A dialog built from the foundation and core components needs no component library; one that\n * uses PrimeReact widgets (`needsPrimeReact`) declares the packages it requires.\n */\nexport const dialogMetadata = (name: string, needsPrimeReact = false) =>\n ({ ...(needsPrimeReact ? defaultBlueprintTemplateProvenance : foundationTemplateProvenance), type: 'Dialog', category: 'Foundation / Dialog', thumbnail: thumbnailOf(name) });\n\n/** One action of the foundation, by the id it is known by. */\nexport const actionButton = (id: string, properties: Record<string, unknown>): ExternalComponent => component(id, 'actionButton', properties);\n\n/** The footer of a dialog: its buttons, the one that confirms last, so it is the one the eye ends on. */\nexport const dialogActions = (id: string, buttons: ExternalComponent[]) => panel(`${id}-actions`, buttons);\n\n/**\n * The quick-create dialog: a short form - six fields at most - opened from a list's header or from a lookup, to make one record without leaving the page.\n * Cancel closes it, Create validates and saves. `FormDialog` is the general form dialog this one is the focused form of: the same shape with the heading,\n * focus handling and the form of the foundation, which is why it is offered as the alias a quick-create button chooses.\n */\nexport const quickCreateDialogTemplate: DialogTemplate = {\n name: 'QuickCreateDialog',\n slots: [{ name: 'header' }, { name: 'body' }, { name: 'actions' }],\n content: {\n header: [component('quick-create-frame', 'dialogFrame', { title: 'New contact', subtitle: 'Only what is needed to get started' })],\n body: [closingDialog(component('quick-create-form', 'formScreenBody', {\n mode: 'create', saveAndNew: false, strings: { formSave: 'Create' },\n sections: fromQuery('QuickCreateSections'), values: fromQuery('QuickCreateValues', '0'), errors: fromQuery('FormErrors', '0'),\n }))],\n actions: [],\n },\n displayName: 'Quick create',\n description: 'A short form of six fields at most with Cancel and Create, opened without leaving the page.',\n metadata: dialogMetadata('QuickCreateDialog'),\n};\n\n/**\n * The lookup dialog: search, a table or list, and single or multiple selection, with Cancel and Select. Any lookup field opens it, so one dialog serves them all;\n * `selectionMode` on the list is `single` (the default here) or `multiple`.\n */\nexport const lookupDialogTemplate: DialogTemplate = {\n name: 'LookupDialog',\n slots: [{ name: 'header' }, { name: 'body' }, { name: 'actions' }],\n content: {\n header: [component('lookup-frame', 'dialogFrame', { title: 'Select an account', subtitle: 'Search, then choose one' })],\n body: [\n component('lookup-search', 'globalSearch', { placeholder: 'Search accounts', label: 'Search accounts' }),\n component('lookup-list', 'dataList', { label: 'Accounts', rows: fromQuery('LookupRows'), columns: fromQuery('LookupColumns'), titleField: 'name', selectionMode: 'single', pageSize: 6 }),\n ],\n actions: [dialogActions('lookup', [\n closingDialog(actionButton('lookup-cancel', { label: 'Cancel', emphasis: 'secondary' })),\n closingDialog(actionButton('lookup-select', { label: 'Select', emphasis: 'primary' })),\n ])],\n },\n displayName: 'Lookup',\n description: 'A search and a list to choose one or several records from, with Cancel and Select.',\n metadata: dialogMetadata('LookupDialog'),\n};\n\n/**\n * The side sheet: a drawer from the inline end with a header, a scrollable body and footer actions. It hosts what a page hosts - a form, or a record's\n * tabs and related records - so a record can be edited or read from beside the list it came from.\n */\nexport const sideSheetTemplate: DialogTemplate = {\n name: 'SideSheet',\n slots: [{ name: 'header' }, { name: 'body' }, { name: 'actions' }],\n content: {\n header: [component('sheet-frame', 'dialogFrame', { title: 'Account details', subtitle: 'Edit without leaving the list', placement: 'side' })],\n body: [closingDialog(component('sheet-form', 'formScreenBody', { mode: 'edit', sections: fromQuery('RecordSections'), values: fromQuery('RecordValues', '0'), errors: fromQuery('FormErrors', '0') }))],\n actions: [dialogActions('sheet', [\n closingDialog(actionButton('sheet-close', { label: 'Close', emphasis: 'secondary' })),\n actionButton('sheet-open', { label: 'Open full page', emphasis: 'primary', targetScreen: 'RecordPage' }),\n ])],\n },\n displayName: 'Side sheet',\n description: 'A drawer from the side hosting a record or a form, with footer actions.',\n metadata: dialogMetadata('SideSheet'),\n};\n\n/**\n * The filter dialog: the advanced filter builder in a dialog. On a phone it fills the page, which makes it the phone's alternative to the filter panel\n * a list shows beside its table.\n */\nexport const filterDialogTemplate: DialogTemplate = {\n name: 'FilterDialog',\n slots: [{ name: 'header' }, { name: 'body' }, { name: 'actions' }],\n content: {\n header: [component('filter-frame', 'dialogFrame', { title: 'Filters', subtitle: 'Show only the deals that match' })],\n body: [component('filter-builder', 'filterBuilder', { fields: fromQuery('DealFilterFields'), filter: fromQuery('DealFilter', '0') })],\n actions: [dialogActions('filter', [\n actionButton('filter-reset', { label: 'Reset', emphasis: 'secondary' }),\n closingDialog(actionButton('filter-cancel', { label: 'Cancel', emphasis: 'secondary' })),\n closingDialog(actionButton('filter-apply', { label: 'Apply filters', emphasis: 'primary' })),\n ])],\n },\n displayName: 'Filters',\n description: 'The advanced filter builder in a dialog, the phone alternative to the filter panel.',\n metadata: dialogMetadata('FilterDialog'),\n};\n\n/** The dialogs the foundation adds to the three the gallery already had. */\nexport const foundationDialogTemplates: DialogTemplate[] = [quickCreateDialogTemplate, lookupDialogTemplate, sideSheetTemplate, filterDialogTemplate];\n"],"names":["closeDialogBehaviors","bindings","trigger","kind","InteractionTriggerKind","Click","actions","InteractionActionKind","CloseDialog","closingDialog","element","behaviors","dialogMetadata","name","needsPrimeReact","defaultBlueprintTemplateProvenance","foundationTemplateProvenance","type","category","thumbnail","thumbnailOf","actionButton","id","properties","component","dialogActions","buttons","panel","quickCreateDialogTemplate","slots","content","header","title","subtitle","body","mode","saveAndNew","strings","formSave","sections","fromQuery","values","errors","displayName","description","metadata","lookupDialogTemplate","placeholder","label","rows","columns","titleField","selectionMode","pageSize","emphasis","sideSheetTemplate","placement","targetScreen","filterDialogTemplate","fields","filter","foundationDialogTemplates"],"mappings":"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"}
|