@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.
@@ -1,3 +1,3 @@
1
- [0] Successfully compiled: 55 files with swc (159.61ms)
1
+ [0] Successfully compiled: 55 files with swc (178.63ms)
2
2
  [0] swc --strip-leading-paths src -d dist exited with code 0
3
3
  [1] tsc --project tsconfig.build.json exited with code 0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openmrs/esm-react-utils",
3
- "version": "10.0.1-pre.5324",
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.5324",
64
- "@openmrs/esm-config": "^10.0.1-pre.5324",
65
- "@openmrs/esm-context": "^10.0.1-pre.5324",
66
- "@openmrs/esm-emr-api": "^10.0.1-pre.5324",
67
- "@openmrs/esm-error-handling": "^10.0.1-pre.5324",
68
- "@openmrs/esm-extensions": "^10.0.1-pre.5324",
69
- "@openmrs/esm-feature-flags": "^10.0.1-pre.5324",
70
- "@openmrs/esm-globals": "^10.0.1-pre.5324",
71
- "@openmrs/esm-navigation": "^10.0.1-pre.5324",
72
- "@openmrs/esm-state": "^10.0.1-pre.5324",
73
- "@openmrs/esm-utils": "^10.0.1-pre.5324",
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.5324",
84
- "@openmrs/esm-config": "10.0.1-pre.5324",
85
- "@openmrs/esm-context": "10.0.1-pre.5324",
86
- "@openmrs/esm-emr-api": "10.0.1-pre.5324",
87
- "@openmrs/esm-error-handling": "10.0.1-pre.5324",
88
- "@openmrs/esm-extensions": "10.0.1-pre.5324",
89
- "@openmrs/esm-feature-flags": "10.0.1-pre.5324",
90
- "@openmrs/esm-globals": "10.0.1-pre.5324",
91
- "@openmrs/esm-navigation": "10.0.1-pre.5324",
92
- "@openmrs/esm-state": "10.0.1-pre.5324",
93
- "@openmrs/esm-utils": "10.0.1-pre.5324",
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",
@@ -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,