@openmrs/esm-react-utils 10.0.1-pre.5324 → 10.0.1-pre.5373
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/.turbo/turbo-build.log +1 -1
- package/package.json +23 -23
- package/src/extensions.test.tsx +57 -0
package/.turbo/turbo-build.log
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openmrs/esm-react-utils",
|
|
3
|
-
"version": "10.0.1-pre.
|
|
3
|
+
"version": "10.0.1-pre.5373",
|
|
4
4
|
"license": "MPL-2.0",
|
|
5
5
|
"description": "React utilities for OpenMRS.",
|
|
6
6
|
"type": "module",
|
|
@@ -60,17 +60,17 @@
|
|
|
60
60
|
"single-spa-react": "^6.0.2"
|
|
61
61
|
},
|
|
62
62
|
"peerDependencies": {
|
|
63
|
-
"@openmrs/esm-api": "^10.0.1-pre.
|
|
64
|
-
"@openmrs/esm-config": "^10.0.1-pre.
|
|
65
|
-
"@openmrs/esm-context": "^10.0.1-pre.
|
|
66
|
-
"@openmrs/esm-emr-api": "^10.0.1-pre.
|
|
67
|
-
"@openmrs/esm-error-handling": "^10.0.1-pre.
|
|
68
|
-
"@openmrs/esm-extensions": "^10.0.1-pre.
|
|
69
|
-
"@openmrs/esm-feature-flags": "^10.0.1-pre.
|
|
70
|
-
"@openmrs/esm-globals": "^10.0.1-pre.
|
|
71
|
-
"@openmrs/esm-navigation": "^10.0.1-pre.
|
|
72
|
-
"@openmrs/esm-state": "^10.0.1-pre.
|
|
73
|
-
"@openmrs/esm-utils": "^10.0.1-pre.
|
|
63
|
+
"@openmrs/esm-api": "^10.0.1-pre.5373",
|
|
64
|
+
"@openmrs/esm-config": "^10.0.1-pre.5373",
|
|
65
|
+
"@openmrs/esm-context": "^10.0.1-pre.5373",
|
|
66
|
+
"@openmrs/esm-emr-api": "^10.0.1-pre.5373",
|
|
67
|
+
"@openmrs/esm-error-handling": "^10.0.1-pre.5373",
|
|
68
|
+
"@openmrs/esm-extensions": "^10.0.1-pre.5373",
|
|
69
|
+
"@openmrs/esm-feature-flags": "^10.0.1-pre.5373",
|
|
70
|
+
"@openmrs/esm-globals": "^10.0.1-pre.5373",
|
|
71
|
+
"@openmrs/esm-navigation": "^10.0.1-pre.5373",
|
|
72
|
+
"@openmrs/esm-state": "^10.0.1-pre.5373",
|
|
73
|
+
"@openmrs/esm-utils": "^10.0.1-pre.5373",
|
|
74
74
|
"dayjs": "1.x",
|
|
75
75
|
"i18next": "25.x",
|
|
76
76
|
"react": "18.x",
|
|
@@ -80,17 +80,17 @@
|
|
|
80
80
|
"swr": "2.x"
|
|
81
81
|
},
|
|
82
82
|
"devDependencies": {
|
|
83
|
-
"@openmrs/esm-api": "10.0.1-pre.
|
|
84
|
-
"@openmrs/esm-config": "10.0.1-pre.
|
|
85
|
-
"@openmrs/esm-context": "10.0.1-pre.
|
|
86
|
-
"@openmrs/esm-emr-api": "10.0.1-pre.
|
|
87
|
-
"@openmrs/esm-error-handling": "10.0.1-pre.
|
|
88
|
-
"@openmrs/esm-extensions": "10.0.1-pre.
|
|
89
|
-
"@openmrs/esm-feature-flags": "10.0.1-pre.
|
|
90
|
-
"@openmrs/esm-globals": "10.0.1-pre.
|
|
91
|
-
"@openmrs/esm-navigation": "10.0.1-pre.
|
|
92
|
-
"@openmrs/esm-state": "10.0.1-pre.
|
|
93
|
-
"@openmrs/esm-utils": "10.0.1-pre.
|
|
83
|
+
"@openmrs/esm-api": "10.0.1-pre.5373",
|
|
84
|
+
"@openmrs/esm-config": "10.0.1-pre.5373",
|
|
85
|
+
"@openmrs/esm-context": "10.0.1-pre.5373",
|
|
86
|
+
"@openmrs/esm-emr-api": "10.0.1-pre.5373",
|
|
87
|
+
"@openmrs/esm-error-handling": "10.0.1-pre.5373",
|
|
88
|
+
"@openmrs/esm-extensions": "10.0.1-pre.5373",
|
|
89
|
+
"@openmrs/esm-feature-flags": "10.0.1-pre.5373",
|
|
90
|
+
"@openmrs/esm-globals": "10.0.1-pre.5373",
|
|
91
|
+
"@openmrs/esm-navigation": "10.0.1-pre.5373",
|
|
92
|
+
"@openmrs/esm-state": "10.0.1-pre.5373",
|
|
93
|
+
"@openmrs/esm-utils": "10.0.1-pre.5373",
|
|
94
94
|
"@swc/cli": "0.8.1",
|
|
95
95
|
"@swc/core": "1.15.21",
|
|
96
96
|
"@vitest/coverage-v8": "^4.1.2",
|
package/src/extensions.test.tsx
CHANGED
|
@@ -12,11 +12,13 @@ import {
|
|
|
12
12
|
registerExtension,
|
|
13
13
|
updateInternalExtensionStore,
|
|
14
14
|
} from '@openmrs/esm-extensions';
|
|
15
|
+
import { defineConfigSchema, defineExtensionConfigSchema, provide, Type } from '@openmrs/esm-config';
|
|
15
16
|
import {
|
|
16
17
|
getSyncLifecycle,
|
|
17
18
|
Extension,
|
|
18
19
|
ExtensionSlot,
|
|
19
20
|
openmrsComponentDecorator,
|
|
21
|
+
useConfig,
|
|
20
22
|
useExtensionSlotMeta,
|
|
21
23
|
useRenderableExtensions,
|
|
22
24
|
} from '.';
|
|
@@ -393,6 +395,61 @@ describe('Extension teardown', () => {
|
|
|
393
395
|
});
|
|
394
396
|
});
|
|
395
397
|
|
|
398
|
+
describe('a slot opened by an extension from another module', () => {
|
|
399
|
+
beforeEach(() => {
|
|
400
|
+
updateInternalExtensionStore(() => ({ slots: {}, extensions: {} }));
|
|
401
|
+
getExtensionRenderingsStore().setState({ renderings: new Map() });
|
|
402
|
+
});
|
|
403
|
+
|
|
404
|
+
it('configures the extensions in that slot from whichever module configures the slot', async () => {
|
|
405
|
+
defineConfigSchema('esm-chart-app', {});
|
|
406
|
+
defineConfigSchema('esm-nav-app', {});
|
|
407
|
+
defineExtensionConfigSchema('group', { slotName: { _type: Type.String, _default: '' } });
|
|
408
|
+
defineExtensionConfigSchema('link', { path: { _type: Type.String, _default: '' } });
|
|
409
|
+
|
|
410
|
+
function Group() {
|
|
411
|
+
const { slotName } = useConfig<{ slotName: string }>();
|
|
412
|
+
return <ExtensionSlot name={slotName} />;
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
function Link() {
|
|
416
|
+
const { path } = useConfig<{ path: string }>();
|
|
417
|
+
return <div>path is {path || 'unset'}</div>;
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
registerSimpleExtension('group', 'esm-nav-app', Group);
|
|
421
|
+
registerSimpleExtension('link', 'esm-nav-app', Link);
|
|
422
|
+
|
|
423
|
+
provide(
|
|
424
|
+
{
|
|
425
|
+
'esm-chart-app': {
|
|
426
|
+
extensionSlots: {
|
|
427
|
+
'chart-slot': {
|
|
428
|
+
add: ['group#clinical'],
|
|
429
|
+
configure: { 'group#clinical': { slotName: 'clinical-group-slot' } },
|
|
430
|
+
},
|
|
431
|
+
'clinical-group-slot': {
|
|
432
|
+
add: ['link#ckd'],
|
|
433
|
+
configure: { 'link#ckd': { path: 'ckd-specific' } },
|
|
434
|
+
},
|
|
435
|
+
},
|
|
436
|
+
},
|
|
437
|
+
},
|
|
438
|
+
'test',
|
|
439
|
+
);
|
|
440
|
+
|
|
441
|
+
const App = openmrsComponentDecorator({
|
|
442
|
+
moduleName: 'esm-chart-app',
|
|
443
|
+
featureName: 'Chart',
|
|
444
|
+
disableTranslations: true,
|
|
445
|
+
})(() => <ExtensionSlot name="chart-slot" />);
|
|
446
|
+
|
|
447
|
+
render(<App />);
|
|
448
|
+
|
|
449
|
+
expect(await screen.findByText(/path is/)).toHaveTextContent('path is ckd-specific');
|
|
450
|
+
});
|
|
451
|
+
});
|
|
452
|
+
|
|
396
453
|
function registerSimpleExtension(
|
|
397
454
|
name: string,
|
|
398
455
|
moduleName: string,
|