@openmrs/esm-framework 3.2.1-pre.1020 → 3.2.1-pre.1030

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/docs/API.md CHANGED
@@ -160,7 +160,7 @@
160
160
  - [usePatient](API.md#usepatient)
161
161
  - [useSessionUser](API.md#usesessionuser)
162
162
  - [useStore](API.md#usestore)
163
- - [useStoreState](API.md#usestorestate)
163
+ - [useStoreWithActions](API.md#usestorewithactions)
164
164
  - [useVisit](API.md#usevisit)
165
165
  - [useVisitTypes](API.md#usevisittypes)
166
166
  - [validator](API.md#validator)
@@ -1801,7 +1801,7 @@ writing a module for a specific implementation.
1801
1801
 
1802
1802
  #### Defined in
1803
1803
 
1804
- [packages/framework/esm-extensions/src/extensions.ts:126](https://github.com/openmrs/openmrs-esm-core/blob/master/packages/framework/esm-extensions/src/extensions.ts#L126)
1804
+ [packages/framework/esm-extensions/src/extensions.ts:151](https://github.com/openmrs/openmrs-esm-core/blob/master/packages/framework/esm-extensions/src/extensions.ts#L151)
1805
1805
 
1806
1806
  ___
1807
1807
 
@@ -1955,6 +1955,8 @@ ___
1955
1955
 
1956
1956
  ▸ **createUseStore**<`T`\>(`store`): () => `T`(`actions`: [`Actions`](API.md#actions)) => `T` & [`BoundActions`](API.md#boundactions)(`actions?`: [`Actions`](API.md#actions)) => `T` & [`BoundActions`](API.md#boundactions)
1957
1957
 
1958
+ Avoid this; generally prefer to have clients use `useStore(yourStore)`
1959
+
1958
1960
  #### Type parameters
1959
1961
 
1960
1962
  | Name |
@@ -2003,7 +2005,7 @@ ___
2003
2005
 
2004
2006
  #### Defined in
2005
2007
 
2006
- [packages/framework/esm-react-utils/src/createUseStore.ts:21](https://github.com/openmrs/openmrs-esm-core/blob/master/packages/framework/esm-react-utils/src/createUseStore.ts#L21)
2008
+ [packages/framework/esm-react-utils/src/createUseStore.ts:22](https://github.com/openmrs/openmrs-esm-core/blob/master/packages/framework/esm-react-utils/src/createUseStore.ts#L22)
2007
2009
 
2008
2010
  ___
2009
2011
 
@@ -2048,7 +2050,7 @@ ___
2048
2050
 
2049
2051
  #### Defined in
2050
2052
 
2051
- [packages/framework/esm-config/src/module-config/module-config.ts:170](https://github.com/openmrs/openmrs-esm-core/blob/master/packages/framework/esm-config/src/module-config/module-config.ts#L170)
2053
+ [packages/framework/esm-config/src/module-config/module-config.ts:178](https://github.com/openmrs/openmrs-esm-core/blob/master/packages/framework/esm-config/src/module-config/module-config.ts#L178)
2052
2054
 
2053
2055
  ___
2054
2056
 
@@ -2093,7 +2095,7 @@ Avoid using this. Extension attachments should be considered declarative.
2093
2095
 
2094
2096
  #### Defined in
2095
2097
 
2096
- [packages/framework/esm-extensions/src/extensions.ts:157](https://github.com/openmrs/openmrs-esm-core/blob/master/packages/framework/esm-extensions/src/extensions.ts#L157)
2098
+ [packages/framework/esm-extensions/src/extensions.ts:182](https://github.com/openmrs/openmrs-esm-core/blob/master/packages/framework/esm-extensions/src/extensions.ts#L182)
2097
2099
 
2098
2100
  ___
2099
2101
 
@@ -2115,7 +2117,7 @@ Avoid using this. Extension attachments should be considered declarative.
2115
2117
 
2116
2118
  #### Defined in
2117
2119
 
2118
- [packages/framework/esm-extensions/src/extensions.ts:181](https://github.com/openmrs/openmrs-esm-core/blob/master/packages/framework/esm-extensions/src/extensions.ts#L181)
2120
+ [packages/framework/esm-extensions/src/extensions.ts:206](https://github.com/openmrs/openmrs-esm-core/blob/master/packages/framework/esm-extensions/src/extensions.ts#L206)
2119
2121
 
2120
2122
  ___
2121
2123
 
@@ -2247,7 +2249,7 @@ ___
2247
2249
 
2248
2250
  #### Defined in
2249
2251
 
2250
- [packages/framework/esm-extensions/src/extensions.ts:249](https://github.com/openmrs/openmrs-esm-core/blob/master/packages/framework/esm-extensions/src/extensions.ts#L249)
2252
+ [packages/framework/esm-extensions/src/extensions.ts:297](https://github.com/openmrs/openmrs-esm-core/blob/master/packages/framework/esm-extensions/src/extensions.ts#L297)
2251
2253
 
2252
2254
  ___
2253
2255
 
@@ -2345,7 +2347,7 @@ of the execution of a function.
2345
2347
 
2346
2348
  #### Defined in
2347
2349
 
2348
- [packages/framework/esm-config/src/module-config/module-config.ts:198](https://github.com/openmrs/openmrs-esm-core/blob/master/packages/framework/esm-config/src/module-config/module-config.ts#L198)
2350
+ [packages/framework/esm-config/src/module-config/module-config.ts:206](https://github.com/openmrs/openmrs-esm-core/blob/master/packages/framework/esm-config/src/module-config/module-config.ts#L206)
2349
2351
 
2350
2352
  ___
2351
2353
 
@@ -2371,7 +2373,7 @@ A list of extensions that should be rendered
2371
2373
 
2372
2374
  #### Defined in
2373
2375
 
2374
- [packages/framework/esm-extensions/src/extensions.ts:239](https://github.com/openmrs/openmrs-esm-core/blob/master/packages/framework/esm-extensions/src/extensions.ts#L239)
2376
+ [packages/framework/esm-extensions/src/extensions.ts:264](https://github.com/openmrs/openmrs-esm-core/blob/master/packages/framework/esm-extensions/src/extensions.ts#L264)
2375
2377
 
2376
2378
  ___
2377
2379
 
@@ -2438,7 +2440,7 @@ getExtensionNameFromId("baz")
2438
2440
 
2439
2441
  #### Defined in
2440
2442
 
2441
- [packages/framework/esm-extensions/src/extensions.ts:70](https://github.com/openmrs/openmrs-esm-core/blob/master/packages/framework/esm-extensions/src/extensions.ts#L70)
2443
+ [packages/framework/esm-extensions/src/extensions.ts:95](https://github.com/openmrs/openmrs-esm-core/blob/master/packages/framework/esm-extensions/src/extensions.ts#L95)
2442
2444
 
2443
2445
  ___
2444
2446
 
@@ -2458,7 +2460,7 @@ ___
2458
2460
 
2459
2461
  #### Defined in
2460
2462
 
2461
- [packages/framework/esm-extensions/src/extensions.ts:83](https://github.com/openmrs/openmrs-esm-core/blob/master/packages/framework/esm-extensions/src/extensions.ts#L83)
2463
+ [packages/framework/esm-extensions/src/extensions.ts:108](https://github.com/openmrs/openmrs-esm-core/blob/master/packages/framework/esm-extensions/src/extensions.ts#L108)
2462
2464
 
2463
2465
  ___
2464
2466
 
@@ -2479,7 +2481,7 @@ ___
2479
2481
 
2480
2482
  #### Defined in
2481
2483
 
2482
- [packages/framework/esm-extensions/src/extensions.ts:75](https://github.com/openmrs/openmrs-esm-core/blob/master/packages/framework/esm-extensions/src/extensions.ts#L75)
2484
+ [packages/framework/esm-extensions/src/extensions.ts:100](https://github.com/openmrs/openmrs-esm-core/blob/master/packages/framework/esm-extensions/src/extensions.ts#L100)
2483
2485
 
2484
2486
  ___
2485
2487
 
@@ -2964,7 +2966,7 @@ Validate and interpolate defaults for `providedConfig` according to `schema`
2964
2966
 
2965
2967
  #### Defined in
2966
2968
 
2967
- [packages/framework/esm-config/src/module-config/module-config.ts:220](https://github.com/openmrs/openmrs-esm-core/blob/master/packages/framework/esm-config/src/module-config/module-config.ts#L220)
2969
+ [packages/framework/esm-config/src/module-config/module-config.ts:228](https://github.com/openmrs/openmrs-esm-core/blob/master/packages/framework/esm-config/src/module-config/module-config.ts#L228)
2968
2970
 
2969
2971
  ___
2970
2972
 
@@ -2985,7 +2987,7 @@ ___
2985
2987
 
2986
2988
  #### Defined in
2987
2989
 
2988
- [packages/framework/esm-config/src/module-config/module-config.ts:178](https://github.com/openmrs/openmrs-esm-core/blob/master/packages/framework/esm-config/src/module-config/module-config.ts#L178)
2990
+ [packages/framework/esm-config/src/module-config/module-config.ts:186](https://github.com/openmrs/openmrs-esm-core/blob/master/packages/framework/esm-config/src/module-config/module-config.ts#L186)
2989
2991
 
2990
2992
  ___
2991
2993
 
@@ -4190,13 +4192,14 @@ ___
4190
4192
 
4191
4193
  ### useStore
4192
4194
 
4193
- ▸ **useStore**<`T`\>(`store`): `T`
4195
+ ▸ **useStore**<`T`, `U`\>(`store`): `T`
4194
4196
 
4195
4197
  #### Type parameters
4196
4198
 
4197
4199
  | Name |
4198
4200
  | :------ |
4199
4201
  | `T` |
4202
+ | `U` |
4200
4203
 
4201
4204
  #### Parameters
4202
4205
 
@@ -4210,21 +4213,47 @@ ___
4210
4213
 
4211
4214
  #### Defined in
4212
4215
 
4213
- [packages/framework/esm-react-utils/src/useStore.ts:4](https://github.com/openmrs/openmrs-esm-core/blob/master/packages/framework/esm-react-utils/src/useStore.ts#L4)
4216
+ [packages/framework/esm-react-utils/src/useStore.ts:22](https://github.com/openmrs/openmrs-esm-core/blob/master/packages/framework/esm-react-utils/src/useStore.ts#L22)
4214
4217
 
4215
- ▸ **useStore**<`T`\>(`store`, `actions`): `T` & [`BoundActions`](API.md#boundactions)
4218
+ ▸ **useStore**<`T`, `U`\>(`store`, `select`): `U`
4216
4219
 
4217
4220
  #### Type parameters
4218
4221
 
4219
4222
  | Name |
4220
4223
  | :------ |
4221
4224
  | `T` |
4225
+ | `U` |
4226
+
4227
+ #### Parameters
4228
+
4229
+ | Name | Type |
4230
+ | :------ | :------ |
4231
+ | `store` | `Store`<`T`\> |
4232
+ | `select` | (`state`: `T`) => `U` |
4233
+
4234
+ #### Returns
4235
+
4236
+ `U`
4237
+
4238
+ #### Defined in
4239
+
4240
+ [packages/framework/esm-react-utils/src/useStore.ts:23](https://github.com/openmrs/openmrs-esm-core/blob/master/packages/framework/esm-react-utils/src/useStore.ts#L23)
4241
+
4242
+ ▸ **useStore**<`T`, `U`\>(`store`, `select`, `actions`): `T` & [`BoundActions`](API.md#boundactions)
4243
+
4244
+ #### Type parameters
4245
+
4246
+ | Name |
4247
+ | :------ |
4248
+ | `T` |
4249
+ | `U` |
4222
4250
 
4223
4251
  #### Parameters
4224
4252
 
4225
4253
  | Name | Type |
4226
4254
  | :------ | :------ |
4227
4255
  | `store` | `Store`<`T`\> |
4256
+ | `select` | `undefined` |
4228
4257
  | `actions` | [`Actions`](API.md#actions) |
4229
4258
 
4230
4259
  #### Returns
@@ -4233,35 +4262,59 @@ ___
4233
4262
 
4234
4263
  #### Defined in
4235
4264
 
4236
- [packages/framework/esm-react-utils/src/useStore.ts:5](https://github.com/openmrs/openmrs-esm-core/blob/master/packages/framework/esm-react-utils/src/useStore.ts#L5)
4265
+ [packages/framework/esm-react-utils/src/useStore.ts:24](https://github.com/openmrs/openmrs-esm-core/blob/master/packages/framework/esm-react-utils/src/useStore.ts#L24)
4266
+
4267
+ ▸ **useStore**<`T`, `U`\>(`store`, `select`, `actions`): `U` & [`BoundActions`](API.md#boundactions)
4268
+
4269
+ #### Type parameters
4270
+
4271
+ | Name |
4272
+ | :------ |
4273
+ | `T` |
4274
+ | `U` |
4275
+
4276
+ #### Parameters
4277
+
4278
+ | Name | Type |
4279
+ | :------ | :------ |
4280
+ | `store` | `Store`<`T`\> |
4281
+ | `select` | (`state`: `T`) => `U` |
4282
+ | `actions` | [`Actions`](API.md#actions) |
4283
+
4284
+ #### Returns
4285
+
4286
+ `U` & [`BoundActions`](API.md#boundactions)
4287
+
4288
+ #### Defined in
4289
+
4290
+ [packages/framework/esm-react-utils/src/useStore.ts:29](https://github.com/openmrs/openmrs-esm-core/blob/master/packages/framework/esm-react-utils/src/useStore.ts#L29)
4237
4291
 
4238
4292
  ___
4239
4293
 
4240
- ### useStoreState
4294
+ ### useStoreWithActions
4241
4295
 
4242
- ▸ **useStoreState**<`T`, `U`\>(`store`, `select`): `U`
4296
+ ▸ **useStoreWithActions**<`T`\>(`store`, `actions`): `T` & [`BoundActions`](API.md#boundactions)
4243
4297
 
4244
4298
  #### Type parameters
4245
4299
 
4246
4300
  | Name |
4247
4301
  | :------ |
4248
4302
  | `T` |
4249
- | `U` |
4250
4303
 
4251
4304
  #### Parameters
4252
4305
 
4253
4306
  | Name | Type |
4254
4307
  | :------ | :------ |
4255
4308
  | `store` | `Store`<`T`\> |
4256
- | `select` | (`state`: `T`) => `U` |
4309
+ | `actions` | [`Actions`](API.md#actions) |
4257
4310
 
4258
4311
  #### Returns
4259
4312
 
4260
- `U`
4313
+ `T` & [`BoundActions`](API.md#boundactions)
4261
4314
 
4262
4315
  #### Defined in
4263
4316
 
4264
- [packages/framework/esm-react-utils/src/useStoreState.ts:5](https://github.com/openmrs/openmrs-esm-core/blob/master/packages/framework/esm-react-utils/src/useStoreState.ts#L5)
4317
+ [packages/framework/esm-react-utils/src/useStore.ts:51](https://github.com/openmrs/openmrs-esm-core/blob/master/packages/framework/esm-react-utils/src/useStore.ts#L51)
4265
4318
 
4266
4319
  ___
4267
4320
 
@@ -23,7 +23,7 @@ ___
23
23
 
24
24
  ### moduleName
25
25
 
26
- • **moduleName**: `string`
26
+ `Optional` **moduleName**: `string`
27
27
 
28
28
  #### Defined in
29
29
 
package/mock.tsx CHANGED
@@ -258,7 +258,17 @@ export const useExtensionInternalStore = createUseStore(
258
258
 
259
259
  export const useExtensionStore = createUseStore(getExtensionStore());
260
260
 
261
- export const useStore = (store: Store<any>, actions) => {
261
+ const defaultSelect = (x) => x;
262
+ export const useStore = (
263
+ store: Store<any>,
264
+ select = defaultSelect,
265
+ actions = {}
266
+ ) => {
267
+ const state = select(store.getState());
268
+ return { ...state, ...actions };
269
+ };
270
+
271
+ export const useStoreWithActions = (store: Store<any>, actions) => {
262
272
  const state = store.getState();
263
273
  return { ...state, ...actions };
264
274
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openmrs/esm-framework",
3
- "version": "3.2.1-pre.1020",
3
+ "version": "3.2.1-pre.1030",
4
4
  "license": "MPL-2.0",
5
5
  "browser": "dist/openmrs-esm-framework.js",
6
6
  "main": "src/index.ts",
@@ -35,18 +35,18 @@
35
35
  "access": "public"
36
36
  },
37
37
  "dependencies": {
38
- "@openmrs/esm-api": "^3.2.1-pre.1020",
39
- "@openmrs/esm-breadcrumbs": "^3.2.1-pre.1020",
40
- "@openmrs/esm-config": "^3.2.1-pre.1020",
41
- "@openmrs/esm-error-handling": "^3.2.1-pre.1020",
42
- "@openmrs/esm-extensions": "^3.2.1-pre.1020",
43
- "@openmrs/esm-globals": "^3.2.1-pre.1020",
44
- "@openmrs/esm-offline": "^3.2.1-pre.1020",
45
- "@openmrs/esm-react-utils": "^3.2.1-pre.1020",
46
- "@openmrs/esm-state": "^3.2.1-pre.1020",
47
- "@openmrs/esm-styleguide": "^3.2.1-pre.1020",
48
- "@openmrs/esm-utils": "^3.2.1-pre.1020",
38
+ "@openmrs/esm-api": "^3.2.1-pre.1030",
39
+ "@openmrs/esm-breadcrumbs": "^3.2.1-pre.1030",
40
+ "@openmrs/esm-config": "^3.2.1-pre.1030",
41
+ "@openmrs/esm-error-handling": "^3.2.1-pre.1030",
42
+ "@openmrs/esm-extensions": "^3.2.1-pre.1030",
43
+ "@openmrs/esm-globals": "^3.2.1-pre.1030",
44
+ "@openmrs/esm-offline": "^3.2.1-pre.1030",
45
+ "@openmrs/esm-react-utils": "^3.2.1-pre.1030",
46
+ "@openmrs/esm-state": "^3.2.1-pre.1030",
47
+ "@openmrs/esm-styleguide": "^3.2.1-pre.1030",
48
+ "@openmrs/esm-utils": "^3.2.1-pre.1030",
49
49
  "dayjs": "^1.10.7"
50
50
  },
51
- "gitHead": "05aa900c651fe7d95b15fcdc746f7a850c60e5ac"
51
+ "gitHead": "6cbe35121b26c2fa29beca46bf9e4de9012dd0fb"
52
52
  }
@@ -3,6 +3,7 @@ import {
3
3
  attach,
4
4
  registerExtension,
5
5
  updateInternalExtensionStore,
6
+ getExtensionStore,
6
7
  } from "../../../esm-extensions";
7
8
  import {
8
9
  ExtensionSlot,
@@ -10,11 +11,22 @@ import {
10
11
  openmrsComponentDecorator,
11
12
  useConfig,
12
13
  } from "../../../esm-react-utils/src";
13
- import { defineConfigSchema, provide, Type } from "../../../esm-config/src";
14
- import { render, screen, waitFor } from "@testing-library/react";
14
+ import {
15
+ defineConfigSchema,
16
+ provide,
17
+ Type,
18
+ temporaryConfigStore,
19
+ configInternalStore,
20
+ getExtensionSlotsConfigStore,
21
+ } from "../../../esm-config/src";
22
+ import { act, render, screen, waitFor } from "@testing-library/react";
23
+ import { waitForElementToBeRemoved } from "@testing-library/dom";
15
24
 
16
25
  describe("Interaction between configuration and extension systems", () => {
17
26
  beforeEach(() => {
27
+ temporaryConfigStore.setState({ config: {} });
28
+ configInternalStore.setState({ providedConfigs: [], schemas: {} });
29
+ getExtensionSlotsConfigStore().setState({ slots: {} });
18
30
  updateInternalExtensionStore(() => ({ slots: {}, extensions: {} }));
19
31
  });
20
32
 
@@ -138,6 +150,66 @@ describe("Interaction between configuration and extension systems", () => {
138
150
  expect(slot.firstChild).toHaveTextContent(/Dino/);
139
151
  expect(slot.lastChild).toHaveTextContent(/Baby Puss/);
140
152
  });
153
+
154
+ test("Slot config should update with temporary config", async () => {
155
+ registerSimpleExtension("Pearl", "esm-slaghoople");
156
+ attach("A slot", "Pearl");
157
+ defineConfigSchema("esm-slaghoople", {});
158
+ const App = openmrsComponentDecorator({
159
+ moduleName: "esm-slaghoople",
160
+ featureName: "The Slaghooples",
161
+ disableTranslations: true,
162
+ })(() => <ExtensionSlot data-testid="slot" extensionSlotName="A slot" />);
163
+ render(<App />);
164
+ await waitFor(() => expect(screen.getByText("Pearl")).toBeInTheDocument());
165
+ act(() => {
166
+ temporaryConfigStore.setState({
167
+ config: {
168
+ "esm-slaghoople": {
169
+ extensionSlots: {
170
+ "A slot": {
171
+ remove: ["Pearl"],
172
+ },
173
+ },
174
+ },
175
+ },
176
+ });
177
+ });
178
+ expect(screen.queryByText("Pearl")).not.toBeInTheDocument();
179
+ });
180
+
181
+ test("Extension config should update with temporary config", async () => {
182
+ registerSimpleExtension("Mr. Slate", "esm-flintstone", true);
183
+ attach("A slot", "Mr. Slate");
184
+ defineConfigSchema("esm-flintstone", { tie: { _default: "green" } });
185
+ const App = openmrsComponentDecorator({
186
+ moduleName: "esm-quarry",
187
+ featureName: "The Flintstones",
188
+ disableTranslations: true,
189
+ })(() => <ExtensionSlot data-testid="slot" extensionSlotName="A slot" />);
190
+ render(<App />);
191
+ await waitFor(() =>
192
+ expect(screen.getByText(/Mr. Slate/)).toBeInTheDocument()
193
+ );
194
+ expect(screen.getByTestId("slot")).toHaveTextContent(/green/);
195
+ act(() => {
196
+ temporaryConfigStore.setState({
197
+ config: {
198
+ "esm-quarry": {
199
+ extensionSlots: {
200
+ "A slot": {
201
+ configure: {
202
+ "Mr. Slate": { tie: "black" },
203
+ },
204
+ },
205
+ },
206
+ },
207
+ },
208
+ });
209
+ });
210
+ expect(screen.queryByText("green")).not.toBeInTheDocument();
211
+ expect(screen.getByTestId("slot")).toHaveTextContent(/black/);
212
+ });
141
213
  });
142
214
 
143
215
  function registerSimpleExtension(