@genesislcap/blank-app-seed 3.24.0 → 3.25.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/.genx/package.json +1 -1
- package/.genx/templates/angular/grid.hbs +9 -7
- package/.genx/templates/angular/route.hbs +8 -0
- package/.genx/templates/angular/route.template.hbs +1 -1
- package/.genx/utils/generateTile.js +135 -100
- package/.genx/utils/registerPartials.js +1 -6
- package/CHANGELOG.md +7 -0
- package/client-tmp/angular/angular.json +1 -0
- package/client-tmp/angular/package.json +3 -0
- package/client-tmp/angular/src/app/app.component.ts +23 -2
- package/client-tmp/angular/src/app/utils/fdc3.ts +32 -0
- package/client-tmp/angular/src/app/utils/index.ts +1 -0
- package/client-tmp/react/package.json +0 -1
- package/client-tmp/react/src/layouts/blank/BlankLayout.tsx +2 -2
- package/package.json +1 -1
- package/client-tmp/react/src/utils/navigation.ts +0 -5
package/.genx/package.json
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
<section style="height: 100%; width: 100%;">
|
|
2
|
-
<ng-container *ngIf="hasUserPermission('{{config.permissions.viewRight}}'); else notPermitted{{ config.index }}">
|
|
3
1
|
<rapid-grid-pro
|
|
4
2
|
header-case-type="capitalCase"
|
|
5
3
|
only-template-col-defs
|
|
6
4
|
enable-row-flashing
|
|
7
5
|
enable-cell-flashing
|
|
6
|
+
[ngStyle]="{ display: hasUserPermission('{{config.permissions.viewRight}}') ? 'block' : 'none' }"
|
|
8
7
|
>
|
|
9
8
|
<grid-pro-genesis-datasource
|
|
10
9
|
resource-name="{{config.resourceName}}"
|
|
@@ -22,13 +21,16 @@
|
|
|
22
21
|
<grid-pro-column *ngFor="let columnDef of tile{{ config.index }}.gridOptions?.columnDefs" [definition]="columnDef"></grid-pro-column>
|
|
23
22
|
{{/if}}
|
|
24
23
|
</rapid-grid-pro>
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
24
|
+
<section
|
|
25
|
+
[ngStyle]="{
|
|
26
|
+
height: '100%',
|
|
27
|
+
width: '100%',
|
|
28
|
+
display: !hasUserPermission('{{config.permissions.viewRight}}') ? 'block' : 'none'
|
|
29
|
+
}"
|
|
30
|
+
>
|
|
28
31
|
<app-error-message
|
|
29
32
|
style="width: 100%; height: 100%; display: flex; justify-content: center; align-items: center;"
|
|
30
33
|
elementType="h3"
|
|
31
34
|
message="You do not have access to view this component.">
|
|
32
35
|
</app-error-message>
|
|
33
|
-
</
|
|
34
|
-
</section>
|
|
36
|
+
</section>
|
|
@@ -4,6 +4,10 @@ import { User, getUser } from '@genesislcap/foundation-user';
|
|
|
4
4
|
import { GridOptionsConfig } from "@genesislcap/rapid-grid-pro";
|
|
5
5
|
import { getDateFormatter, getNumberFormatter, getViewUpdateRightComponent } from '../../utils';
|
|
6
6
|
import { ErrorMessageComponent } from '../../components/error-message/error-message.component';
|
|
7
|
+
import { environment } from '../../../environments/environment';
|
|
8
|
+
{{#if route.FDC3EventHandlersEnabled}}
|
|
9
|
+
import { sendEventOnChannel } from '../../utils';
|
|
10
|
+
{{/if}}
|
|
7
11
|
|
|
8
12
|
@Component({
|
|
9
13
|
selector: 'app-{{pascalCase route.name}}',
|
|
@@ -17,7 +21,11 @@ import { ErrorMessageComponent } from '../../components/error-message/error-mess
|
|
|
17
21
|
styleUrls: ['./{{kebabCase route.name}}.component.css'],
|
|
18
22
|
})
|
|
19
23
|
export class {{pascalCase route.name}}Component {
|
|
24
|
+
environment = environment;
|
|
20
25
|
hasUserPermission = (permissionCode: string) => getViewUpdateRightComponent(getUser(), permissionCode);
|
|
26
|
+
{{#if route.FDC3EventHandlersEnabled}}
|
|
27
|
+
sendEventOnChannel = sendEventOnChannel;
|
|
28
|
+
{{/if}}
|
|
21
29
|
|
|
22
30
|
{{#each route.tiles}}
|
|
23
31
|
tile{{this.config.index}} = { {{#if this.config.createFormUiSchema}}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
const { resolve } = require('node:path');
|
|
2
2
|
const makeDirectory = require('./makeDirectory');
|
|
3
3
|
const {
|
|
4
|
-
COMPONENT_TYPE,
|
|
5
4
|
FRAMEWORK_WEB_COMPONENTS_ALIAS,
|
|
6
5
|
FRAMEWORK_ANGULAR_ALIAS,
|
|
7
6
|
DIR_TEMPLATE_BY_FRAMEWORK,
|
|
@@ -10,119 +9,155 @@ const {
|
|
|
10
9
|
const getPathByFramework = {
|
|
11
10
|
[FRAMEWORK_WEB_COMPONENTS_ALIAS]: {
|
|
12
11
|
clientSrcPath: `../../client/src/routes`,
|
|
13
|
-
route: (clientSrcPath, tileName, tileType, routeName) =>
|
|
12
|
+
route: (clientSrcPath, tileName, tileType, routeName) =>
|
|
13
|
+
`${clientSrcPath}/${routeName}/${tileName}-${tileType}`,
|
|
14
14
|
index: (componentPath) => `${componentPath}/index.ts`,
|
|
15
15
|
component: (componentPath, tileName) => `${componentPath}/${tileName}.ts`,
|
|
16
|
-
template: (componentPath, tileName) =>
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
16
|
+
template: (componentPath, tileName) =>
|
|
17
|
+
`${componentPath}/${tileName}.template.ts`,
|
|
18
|
+
style: (componentPath, tileName) =>
|
|
19
|
+
`${componentPath}/${tileName}.styles.ts`,
|
|
20
|
+
addForm: (componentPath, tileName) =>
|
|
21
|
+
`${componentPath}/${tileName}.create.form.schema.ts`,
|
|
22
|
+
updateForm: (componentPath, tileName) =>
|
|
23
|
+
`${componentPath}/${tileName}.update.form.schema.ts`,
|
|
24
|
+
columnDefs: (componentPath, tileName) =>
|
|
25
|
+
`${componentPath}/${tileName}.column.defs.ts`,
|
|
26
|
+
gridOptions: (componentPath, tileName) =>
|
|
27
|
+
`${componentPath}/${tileName}.gridOptions.ts`,
|
|
22
28
|
},
|
|
23
29
|
// Placeholder for angular part
|
|
24
30
|
[FRAMEWORK_ANGULAR_ALIAS]: {},
|
|
25
31
|
};
|
|
26
32
|
|
|
27
|
-
const getFilesToWrite = (
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
33
|
+
const getFilesToWrite = (
|
|
34
|
+
tile,
|
|
35
|
+
tileName,
|
|
36
|
+
routeName,
|
|
37
|
+
path,
|
|
38
|
+
sourceTemplateDir,
|
|
39
|
+
) => {
|
|
40
|
+
const {
|
|
41
|
+
clientSrcPath,
|
|
42
|
+
route: getRouteDir,
|
|
43
|
+
index: getComponentIndexTarget,
|
|
44
|
+
component: getComponentTarget,
|
|
45
|
+
template: getTemplateTarget,
|
|
46
|
+
style: getStyleTarget,
|
|
47
|
+
addForm: getAddFormTarget,
|
|
48
|
+
updateForm: getUpdateFormTarget,
|
|
49
|
+
columnDefs: getColumnDefsTarget,
|
|
50
|
+
gridOptions: getGridOptionsTarget,
|
|
51
|
+
} = path;
|
|
52
|
+
|
|
53
|
+
const routeDir = getRouteDir(
|
|
54
|
+
clientSrcPath,
|
|
55
|
+
tileName,
|
|
56
|
+
tile.componentType,
|
|
57
|
+
routeName,
|
|
58
|
+
);
|
|
59
|
+
|
|
60
|
+
const componentIndexFile = {
|
|
61
|
+
source: `${sourceTemplateDir}/component/component.index.hbs`,
|
|
62
|
+
target: getComponentIndexTarget(routeDir, tileName),
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
const componentFile = {
|
|
66
|
+
source: `${sourceTemplateDir}/component/component.hbs`,
|
|
67
|
+
target: getComponentTarget(routeDir, tileName),
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
const componentTemplateFile = {
|
|
71
|
+
source: `${sourceTemplateDir}/component/component.template.hbs`,
|
|
72
|
+
target: getTemplateTarget(routeDir, tileName),
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
const componentStylesFile = {
|
|
76
|
+
source: `${sourceTemplateDir}/component/component.styles.hbs`,
|
|
77
|
+
target: getStyleTarget(routeDir, tileName),
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
const componentAddFormFile = {
|
|
81
|
+
source: `${sourceTemplateDir}/component/component.create.form.hbs`,
|
|
82
|
+
target: getAddFormTarget(routeDir, tileName),
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
const componentUpdateFormFile = {
|
|
86
|
+
source: `${sourceTemplateDir}/component/component.update.form.hbs`,
|
|
87
|
+
target: getUpdateFormTarget(routeDir, tileName),
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
const componentColumnsFile = {
|
|
91
|
+
source: `${sourceTemplateDir}/component/component.column.defs.hbs`,
|
|
92
|
+
target: getColumnDefsTarget(routeDir, tileName),
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
const componentGridOptionsFile = {
|
|
96
|
+
source: `${sourceTemplateDir}/component/component.gridOptions.hbs`,
|
|
97
|
+
target: getGridOptionsTarget(routeDir, tileName),
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
const filesToWrite = [
|
|
101
|
+
componentIndexFile,
|
|
102
|
+
componentFile,
|
|
103
|
+
componentTemplateFile,
|
|
104
|
+
componentStylesFile,
|
|
105
|
+
];
|
|
106
|
+
|
|
107
|
+
switch (tile.type) {
|
|
108
|
+
case 'entity-manager':
|
|
109
|
+
if (tile.config?.columns) {
|
|
110
|
+
filesToWrite.push(componentColumnsFile);
|
|
71
111
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
source: `${sourceTemplateDir}/component/component.column.defs.hbs`,
|
|
75
|
-
target: getColumnDefsTarget(routeDir, tileName),
|
|
76
|
-
};
|
|
77
|
-
|
|
78
|
-
const componentGridOptionsFile = {
|
|
79
|
-
source: `${sourceTemplateDir}/component/component.gridOptions.hbs`,
|
|
80
|
-
target: getGridOptionsTarget(routeDir, tileName),
|
|
81
|
-
};
|
|
82
|
-
|
|
83
|
-
const filesToWrite = [componentIndexFile, componentFile, componentTemplateFile, componentStylesFile];
|
|
84
|
-
|
|
85
|
-
switch (tile.type) {
|
|
86
|
-
case 'entity-manager':
|
|
87
|
-
if (tile.config?.columns) {
|
|
88
|
-
filesToWrite.push(componentColumnsFile);
|
|
89
|
-
}
|
|
90
|
-
if (tile.config?.gridOptions) {
|
|
91
|
-
filesToWrite.push(componentGridOptionsFile);
|
|
92
|
-
}
|
|
93
|
-
if (tile.config?.createFormUiSchema) {
|
|
94
|
-
filesToWrite.push(componentAddFormFile);
|
|
95
|
-
}
|
|
96
|
-
if (tile.config?.updateFormUiSchema) {
|
|
97
|
-
filesToWrite.push(componentUpdateFormFile);
|
|
98
|
-
}
|
|
99
|
-
break;
|
|
100
|
-
case 'grid-pro':
|
|
101
|
-
if (tile.config?.gridOptions) {
|
|
102
|
-
filesToWrite.push(componentGridOptionsFile);
|
|
103
|
-
}
|
|
104
|
-
break;
|
|
105
|
-
case 'smart-form':
|
|
106
|
-
filesToWrite.push(componentAddFormFile);
|
|
107
|
-
break
|
|
108
|
-
default:
|
|
109
|
-
break;
|
|
112
|
+
if (tile.config?.gridOptions) {
|
|
113
|
+
filesToWrite.push(componentGridOptionsFile);
|
|
110
114
|
}
|
|
115
|
+
if (tile.config?.createFormUiSchema) {
|
|
116
|
+
filesToWrite.push(componentAddFormFile);
|
|
117
|
+
}
|
|
118
|
+
if (tile.config?.updateFormUiSchema) {
|
|
119
|
+
filesToWrite.push(componentUpdateFormFile);
|
|
120
|
+
}
|
|
121
|
+
break;
|
|
122
|
+
case 'grid-pro':
|
|
123
|
+
if (tile.config?.gridOptions) {
|
|
124
|
+
filesToWrite.push(componentGridOptionsFile);
|
|
125
|
+
}
|
|
126
|
+
break;
|
|
127
|
+
case 'smart-form':
|
|
128
|
+
filesToWrite.push(componentAddFormFile);
|
|
129
|
+
break;
|
|
130
|
+
default:
|
|
131
|
+
break;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
return filesToWrite;
|
|
135
|
+
};
|
|
111
136
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
137
|
+
const generateTile = (
|
|
138
|
+
tile,
|
|
139
|
+
route,
|
|
140
|
+
{ changeCase, writeFileWithData },
|
|
141
|
+
framework,
|
|
142
|
+
) => {
|
|
116
143
|
const tileName = changeCase.paramCase(tile.title);
|
|
117
144
|
const routeName = changeCase.paramCase(route.name);
|
|
118
145
|
const sourceTemplateDir = `../${DIR_TEMPLATE_BY_FRAMEWORK[framework]}`;
|
|
119
|
-
const {
|
|
146
|
+
const { clientSrcPath, route: getRouteDir } = getPathByFramework[framework];
|
|
147
|
+
const routeDir = getRouteDir(
|
|
120
148
|
clientSrcPath,
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
149
|
+
tileName,
|
|
150
|
+
tile.componentType,
|
|
151
|
+
routeName,
|
|
152
|
+
);
|
|
153
|
+
|
|
154
|
+
const filesToWrite = getFilesToWrite(
|
|
155
|
+
tile,
|
|
156
|
+
tileName,
|
|
157
|
+
routeName,
|
|
158
|
+
getPathByFramework[framework],
|
|
159
|
+
sourceTemplateDir,
|
|
160
|
+
);
|
|
126
161
|
|
|
127
162
|
makeDirectory(resolve(__dirname, routeDir));
|
|
128
163
|
filesToWrite.forEach(({ source, target }) => {
|
|
@@ -1,13 +1,8 @@
|
|
|
1
1
|
const { resolve } = require('node:path');
|
|
2
|
-
const {
|
|
3
|
-
DIR_TEMPLATE_ROOT_ALIAS,
|
|
4
|
-
DIRS_MAP,
|
|
5
|
-
DIR_TEMPLATE_BY_FRAMEWORK,
|
|
6
|
-
} = require('../static');
|
|
2
|
+
const { DIR_TEMPLATE_BY_FRAMEWORK } = require('../static');
|
|
7
3
|
|
|
8
4
|
const registerPartials = ({ registerPartial }, framework) => {
|
|
9
5
|
// It can be reverted after adding changes for angular
|
|
10
|
-
const rootTemplateDir = `../${DIRS_MAP.get(DIR_TEMPLATE_ROOT_ALIAS)}`;
|
|
11
6
|
const sourceTemplateDir = `../${DIR_TEMPLATE_BY_FRAMEWORK[framework]}`;
|
|
12
7
|
|
|
13
8
|
registerPartial(
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [3.25.0](https://github.com/genesiscommunitysuccess/blank-app-seed/compare/v3.24.0...v3.25.0) (2024-07-18)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* FDC3 support in angular - [FUI-2068](https://github.com/genesiscommunitysuccess/blank-app-seed/issues/2068) (#281) 8d30d4c
|
|
9
|
+
|
|
3
10
|
## [3.24.0](https://github.com/genesiscommunitysuccess/blank-app-seed/compare/v3.23.0...v3.24.0) (2024-07-16)
|
|
4
11
|
|
|
5
12
|
|
|
@@ -40,6 +40,9 @@
|
|
|
40
40
|
"@angular/platform-browser": "^18.0.4",
|
|
41
41
|
"@angular/platform-browser-dynamic": "^18.0.4",
|
|
42
42
|
"@angular/router": "^18.0.4",
|
|
43
|
+
{{#if FDC3.includeDependencies}}
|
|
44
|
+
"@genesislcap/foundation-fdc3": "{{versions.UI}}",
|
|
45
|
+
{{/if}}
|
|
43
46
|
"@genesislcap/foundation-comms": "{{versions.UI}}",
|
|
44
47
|
"@genesislcap/foundation-login": "{{versions.UI}}",
|
|
45
48
|
"@genesislcap/foundation-entity-management": "{{versions.UI}}",
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
import { Component } from '@angular/core';
|
|
1
|
+
import { Component, AfterViewInit } from '@angular/core';
|
|
2
2
|
import { Router, NavigationEnd } from '@angular/router';
|
|
3
3
|
import getLayoutNameByRoute from './utils/getLayoutNameByRoute';
|
|
4
4
|
import type { LayoutComponentName } from './types/layout';
|
|
5
5
|
import { configureFoundationLogin } from './share/foundation-login';
|
|
6
|
+
{{#if FDC3.channels.length}}
|
|
7
|
+
import { listenToChannel, onFDC3Ready } from './utils';
|
|
8
|
+
{{/if}}
|
|
6
9
|
|
|
7
10
|
// Genesis Components
|
|
8
11
|
import './share/genesis-components';
|
|
@@ -12,7 +15,7 @@ import './share/genesis-components';
|
|
|
12
15
|
templateUrl: './app.component.html',
|
|
13
16
|
styleUrl: './app.component.css',
|
|
14
17
|
})
|
|
15
|
-
export class AppComponent {
|
|
18
|
+
export class AppComponent implements AfterViewInit {
|
|
16
19
|
layoutName?: LayoutComponentName;
|
|
17
20
|
title = '{{capitalCase appName}}';
|
|
18
21
|
|
|
@@ -28,4 +31,22 @@ export class AppComponent {
|
|
|
28
31
|
}
|
|
29
32
|
});
|
|
30
33
|
}
|
|
34
|
+
|
|
35
|
+
ngAfterViewInit() {
|
|
36
|
+
{{#if FDC3.channels.length}}
|
|
37
|
+
onFDC3Ready(this.FDC3ReadyHandler);
|
|
38
|
+
{{/if}}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
{{#if FDC3.channels.length}}
|
|
42
|
+
FDC3ReadyHandler = () => {
|
|
43
|
+
{{#each FDC3.channels}}
|
|
44
|
+
listenToChannel('{{this.name}}', '{{this.type}}', (result) => {
|
|
45
|
+
console.log('Received FDC3 channel message on: {{this.name}} channel, type: {{this.type}}', result);
|
|
46
|
+
// TODO: Add your listener logic here
|
|
47
|
+
// E.g. open a modal or route to specific page: Route.path.push(`[Route name]`);
|
|
48
|
+
});
|
|
49
|
+
{{/each}}
|
|
50
|
+
};
|
|
51
|
+
{{/if}}
|
|
31
52
|
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{{#if FDC3.includeDependencies}}
|
|
2
|
+
import { DefaultFDC3 } from '@genesislcap/foundation-fdc3';
|
|
3
|
+
{{/if}}
|
|
4
|
+
export const isFDC3 = (): boolean => !!(window as any).fdc3;
|
|
5
|
+
{{#if FDC3.includeDependencies}}
|
|
6
|
+
|
|
7
|
+
export const onFDC3Ready = async (FDC3ReadyCb: () => any): Promise<void> => {
|
|
8
|
+
isFDC3()
|
|
9
|
+
? await FDC3ReadyCb()
|
|
10
|
+
: window.addEventListener('fdc3Ready', async () => {
|
|
11
|
+
await FDC3ReadyCb();
|
|
12
|
+
});
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export const listenToChannel = async (
|
|
16
|
+
channelName: string,
|
|
17
|
+
type: string,
|
|
18
|
+
callback: (result: any) => void,
|
|
19
|
+
): Promise<void> => {
|
|
20
|
+
const fdc3Service = new DefaultFDC3();
|
|
21
|
+
fdc3Service.addChannelListener(channelName, type, callback);
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export const sendEventOnChannel = (channelName: string, type: string) => {
|
|
25
|
+
return async (e: any) => {
|
|
26
|
+
const fdc3Service = new DefaultFDC3();
|
|
27
|
+
// check for ag-grid-specific events, fall back to standard events
|
|
28
|
+
const payload = e.data || e.detail;
|
|
29
|
+
await fdc3Service.broadcastOnChannel(channelName, type, payload);
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
{{/if}}
|
|
@@ -10,7 +10,6 @@
|
|
|
10
10
|
"lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
|
|
11
11
|
"serve": "vite preview",
|
|
12
12
|
"clean": "rm -rf node_modules dist",
|
|
13
|
-
|
|
14
13
|
"lint:fix": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0 --fix"
|
|
15
14
|
},
|
|
16
15
|
"dependencies": {
|
|
@@ -17,9 +17,9 @@ const BlankLayout: React.FC<BlankLayoutProps> = ({ children }) =>{
|
|
|
17
17
|
}, []);
|
|
18
18
|
|
|
19
19
|
return (
|
|
20
|
-
<
|
|
20
|
+
<rapid-design-system-provider className={styles['blank-layout']}>
|
|
21
21
|
<section className={styles.content}>{children}</section>
|
|
22
|
-
</
|
|
22
|
+
</rapid-design-system-provider>
|
|
23
23
|
);
|
|
24
24
|
};
|
|
25
25
|
|
package/package.json
CHANGED