@digihmis/esm-login-app 1.0.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.
Files changed (186) hide show
  1. package/README.md +35 -0
  2. package/__mocks__/config.mock.ts +34 -0
  3. package/__mocks__/locations.mock.ts +540 -0
  4. package/__mocks__/react-i18next.js +49 -0
  5. package/dist/1091.js +1 -0
  6. package/dist/1091.js.map +1 -0
  7. package/dist/119.js +1 -0
  8. package/dist/119.js.map +1 -0
  9. package/dist/1339.js +1 -0
  10. package/dist/1339.js.map +1 -0
  11. package/dist/1465.js +1 -0
  12. package/dist/1576.js +1 -0
  13. package/dist/1799.js +1 -0
  14. package/dist/1827.js +1 -0
  15. package/dist/204.js +1 -0
  16. package/dist/204.js.map +1 -0
  17. package/dist/2197.js +1 -0
  18. package/dist/2254.js +1 -0
  19. package/dist/2273.js +1 -0
  20. package/dist/2573.js +1 -0
  21. package/dist/2573.js.map +1 -0
  22. package/dist/2603.js +1 -0
  23. package/dist/2802.js +1 -0
  24. package/dist/3040.js +1 -0
  25. package/dist/3074.js +1 -0
  26. package/dist/3116.js +1 -0
  27. package/dist/3408.js +1 -0
  28. package/dist/3472.js +1 -0
  29. package/dist/3472.js.map +1 -0
  30. package/dist/3549.js +1 -0
  31. package/dist/3566.js +1 -0
  32. package/dist/3631.js +1 -0
  33. package/dist/3663.js +15 -0
  34. package/dist/3663.js.map +1 -0
  35. package/dist/3667.js +1 -0
  36. package/dist/3667.js.map +1 -0
  37. package/dist/3720.js +1 -0
  38. package/dist/3720.js.map +1 -0
  39. package/dist/3809.js +1 -0
  40. package/dist/3890.js +1 -0
  41. package/dist/3890.js.map +1 -0
  42. package/dist/4316.js +1 -0
  43. package/dist/4523.js +1 -0
  44. package/dist/4523.js.map +1 -0
  45. package/dist/4571.js +1 -0
  46. package/dist/4618.js +1 -0
  47. package/dist/4641.js +1 -0
  48. package/dist/466.js +1 -0
  49. package/dist/466.js.map +1 -0
  50. package/dist/4904.js +1 -0
  51. package/dist/5138.js +1 -0
  52. package/dist/5170.js +1 -0
  53. package/dist/5170.js.map +1 -0
  54. package/dist/5177.js +1 -0
  55. package/dist/5882.js +1 -0
  56. package/dist/6339.js +1 -0
  57. package/dist/6666.js +1 -0
  58. package/dist/689.js +1 -0
  59. package/dist/689.js.map +1 -0
  60. package/dist/6989.js +1 -0
  61. package/dist/6989.js.map +1 -0
  62. package/dist/7085.js +1 -0
  63. package/dist/7085.js.map +1 -0
  64. package/dist/7127.js +1 -0
  65. package/dist/720.js +1 -0
  66. package/dist/7240.js +1 -0
  67. package/dist/7240.js.map +1 -0
  68. package/dist/7329.js +1 -0
  69. package/dist/7329.js.map +1 -0
  70. package/dist/760.js +1 -0
  71. package/dist/760.js.map +1 -0
  72. package/dist/7751.js +1 -0
  73. package/dist/7874.js +1 -0
  74. package/dist/7874.js.map +1 -0
  75. package/dist/7925.js +43 -0
  76. package/dist/7925.js.map +1 -0
  77. package/dist/8037.js +1 -0
  78. package/dist/8381.js +1 -0
  79. package/dist/8474.js +1 -0
  80. package/dist/8674.js +1 -0
  81. package/dist/868.js +1 -0
  82. package/dist/8925.js +1 -0
  83. package/dist/8958.js +1 -0
  84. package/dist/8958.js.map +1 -0
  85. package/dist/900.js +1 -0
  86. package/dist/9001.js +1 -0
  87. package/dist/9001.js.map +1 -0
  88. package/dist/916.js +1 -0
  89. package/dist/918.js +1 -0
  90. package/dist/954.js +1 -0
  91. package/dist/970.js +1 -0
  92. package/dist/9754.js +1 -0
  93. package/dist/998.js +1 -0
  94. package/dist/998.js.map +1 -0
  95. package/dist/digihmis-esm-login-app.js +6 -0
  96. package/dist/digihmis-esm-login-app.js.buildmanifest.json +1704 -0
  97. package/dist/digihmis-esm-login-app.js.map +1 -0
  98. package/dist/main.js +6 -0
  99. package/dist/main.js.map +1 -0
  100. package/dist/routes.json +1 -0
  101. package/jest.config.js +20 -0
  102. package/package.json +73 -0
  103. package/rspack.config.js +1 -0
  104. package/src/background-wrapper/background-wrapper.component.tsx +58 -0
  105. package/src/background-wrapper/background-wrapper.scss +45 -0
  106. package/src/change-location-link/change-location-link.extension.tsx +32 -0
  107. package/src/change-location-link/change-location-link.scss +17 -0
  108. package/src/change-location-link/change-location-link.test.tsx +36 -0
  109. package/src/change-password/change-password-link.extension.tsx +30 -0
  110. package/src/change-password/change-password-link.test.tsx +27 -0
  111. package/src/change-password/change-password-modal.scss +11 -0
  112. package/src/change-password/change-password.component.tsx +159 -0
  113. package/src/change-password/change-password.modal.tsx +175 -0
  114. package/src/change-password/change-password.resource.ts +12 -0
  115. package/src/change-password/change-password.scss +51 -0
  116. package/src/change-password/change-password.test.tsx +53 -0
  117. package/src/config-schema.ts +166 -0
  118. package/src/declarations.d.ts +1 -0
  119. package/src/flag/flag.component.tsx +19 -0
  120. package/src/footer.component.tsx +41 -0
  121. package/src/footer.scss +105 -0
  122. package/src/index.ts +25 -0
  123. package/src/loading/loading.component.tsx +11 -0
  124. package/src/loading/loading.scss +7 -0
  125. package/src/location-picker/location-picker-view.component.tsx +174 -0
  126. package/src/location-picker/location-picker.resource.ts +111 -0
  127. package/src/location-picker/location-picker.scss +94 -0
  128. package/src/location-picker/location-picker.test.tsx +341 -0
  129. package/src/login/login.component.tsx +256 -0
  130. package/src/login/login.scss +174 -0
  131. package/src/login/login.test.tsx +289 -0
  132. package/src/login.resource.ts +147 -0
  133. package/src/logo.component.tsx +24 -0
  134. package/src/logout/logout.extension.tsx +23 -0
  135. package/src/logout/logout.scss +12 -0
  136. package/src/redirect-logout/logout.resource.ts +21 -0
  137. package/src/redirect-logout/redirect-logout.component.tsx +34 -0
  138. package/src/redirect-logout/redirect-logout.test.tsx +117 -0
  139. package/src/root.component.tsx +22 -0
  140. package/src/routes.json +63 -0
  141. package/src/setupTests.ts +15 -0
  142. package/src/test-helpers/render-with-router.tsx +17 -0
  143. package/src/types.ts +34 -0
  144. package/translations/am.json +39 -0
  145. package/translations/ar.json +41 -0
  146. package/translations/ar_SY.json +41 -0
  147. package/translations/bn.json +41 -0
  148. package/translations/cs.json +41 -0
  149. package/translations/de.json +41 -0
  150. package/translations/en.json +39 -0
  151. package/translations/en_US.json +41 -0
  152. package/translations/es.json +41 -0
  153. package/translations/es_MX.json +41 -0
  154. package/translations/fr.json +41 -0
  155. package/translations/he.json +41 -0
  156. package/translations/hi.json +41 -0
  157. package/translations/hi_IN.json +41 -0
  158. package/translations/id.json +41 -0
  159. package/translations/it.json +41 -0
  160. package/translations/ka.json +41 -0
  161. package/translations/km.json +41 -0
  162. package/translations/ku.json +41 -0
  163. package/translations/ky.json +41 -0
  164. package/translations/lg.json +41 -0
  165. package/translations/ne.json +41 -0
  166. package/translations/pl.json +41 -0
  167. package/translations/pt.json +41 -0
  168. package/translations/pt_BR.json +41 -0
  169. package/translations/qu.json +41 -0
  170. package/translations/ro_RO.json +41 -0
  171. package/translations/ru_RU.json +41 -0
  172. package/translations/si.json +41 -0
  173. package/translations/sq.json +41 -0
  174. package/translations/sw.json +39 -0
  175. package/translations/sw_KE.json +41 -0
  176. package/translations/tr.json +41 -0
  177. package/translations/tr_TR.json +41 -0
  178. package/translations/uk.json +41 -0
  179. package/translations/uz.json +41 -0
  180. package/translations/uz@Latn.json +41 -0
  181. package/translations/uz_UZ.json +41 -0
  182. package/translations/vi.json +41 -0
  183. package/translations/zh.json +41 -0
  184. package/translations/zh_CN.json +41 -0
  185. package/translations/zh_TW.json +41 -0
  186. package/tsconfig.json +25 -0
package/README.md ADDED
@@ -0,0 +1,35 @@
1
+ # @digihmis/esm-login-app
2
+
3
+ A customized login microfrontend for DigiHMIS built on the OpenMRS SPA framework.
4
+
5
+ ## Overview
6
+
7
+ This package provides the authentication and session management interface for DigiHMIS, including:
8
+
9
+ - **Loading Page**: Initial application loading screen with DigiHMIS branding
10
+ - **Login Page**: User authentication interface with form validation
11
+ - **Location Picker**: Healthcare facility/location selection for users with multiple access points
12
+
13
+ ## Installation
14
+
15
+ ```bash
16
+ npm install @digihmis/esm-login-app
17
+ ```
18
+
19
+ ## Usage
20
+
21
+ ### In an OpenMRS SPA ImportMap
22
+
23
+ ```json
24
+ {
25
+ "frontendModules": {
26
+ "@digihmis/esm-login-app": "^8.0.1"
27
+ }
28
+ }
29
+ ```
30
+
31
+ ---
32
+
33
+ **Version**: 8.0.1
34
+ **Maintainer**: DigiHMIS Team
35
+ **Keywords**: digihmis, openmrs, microfrontends, healthcare, spa
@@ -0,0 +1,34 @@
1
+ import { type ConfigSchema } from '../src/config-schema';
2
+
3
+ export const mockConfig: ConfigSchema = {
4
+ provider: {
5
+ type: 'basic',
6
+ loginUrl: '',
7
+ logoutUrl: '',
8
+ },
9
+ chooseLocation: {
10
+ enabled: true,
11
+ numberToShow: 3,
12
+ useLoginLocationTag: true,
13
+ locationsPerRequest: 50,
14
+ },
15
+ logo: {
16
+ src: null,
17
+ alt: 'Logo',
18
+ },
19
+ backgroundImage: {
20
+ src: null,
21
+ alt: 'Background Image',
22
+ },
23
+ flag: {
24
+ src: null,
25
+ alt: 'Flag Image',
26
+ },
27
+ links: {
28
+ loginSuccess: '${openmrsSpaBase}/home',
29
+ },
30
+ footer: {
31
+ additionalLogos: [],
32
+ },
33
+ showPasswordOnSeparateScreen: true,
34
+ };
@@ -0,0 +1,540 @@
1
+ export const mockLoginLocations = {
2
+ data: {
3
+ resourceType: 'Bundle',
4
+ id: '301b3ad6-868a-48a6-bc3f-aaa8aa3f89a6',
5
+ meta: {
6
+ lastUpdated: '2022-03-17T07:47:02.272+00:00',
7
+ tag: [
8
+ {
9
+ system: 'http://terminology.hl7.org/CodeSystem/v3-ObservationValue',
10
+ code: 'SUBSETTED',
11
+ display: 'Resource encoded in summary mode',
12
+ },
13
+ ],
14
+ },
15
+ type: 'searchset',
16
+ total: 4,
17
+ link: [
18
+ {
19
+ relation: 'self',
20
+ url: 'http://openmrs:8080/openmrs/ws/fhir2/R4/Location?_count=50&_summary=data&_tag=login%20location',
21
+ },
22
+ ],
23
+ entry: [
24
+ {
25
+ fullUrl: 'http://openmrs:8080/openmrs/ws/fhir2/R4/Location/44c3efb0-2583-4c80-a79e-1f756a03c0a1',
26
+ resource: {
27
+ resourceType: 'Location',
28
+ id: '44c3efb0-2583-4c80-a79e-1f756a03c0a1',
29
+ meta: {
30
+ tag: [
31
+ {
32
+ system: 'http://fhir.openmrs.org/ext/location-tag',
33
+ code: 'Login Location',
34
+ display: 'When a user logs in and chooses a session location, they may only choose one with this tag',
35
+ },
36
+ {
37
+ system: 'http://fhir.openmrs.org/ext/location-tag',
38
+ code: 'Facility Location',
39
+ },
40
+ {
41
+ system: 'http://terminology.hl7.org/CodeSystem/v3-ObservationValue',
42
+ code: 'SUBSETTED',
43
+ display: 'Resource encoded in summary mode',
44
+ },
45
+ ],
46
+ },
47
+ contained: [
48
+ {
49
+ resourceType: 'Provenance',
50
+ id: 'e6f5d190-5a5a-4e1f-b34b-20a3480a6e1b',
51
+ meta: {
52
+ tag: [
53
+ {
54
+ system: 'http://terminology.hl7.org/CodeSystem/v3-ObservationValue',
55
+ code: 'SUBSETTED',
56
+ display: 'Resource encoded in summary mode',
57
+ },
58
+ ],
59
+ },
60
+ recorded: '2022-02-23T22:44:33.000+00:00',
61
+ activity: {
62
+ coding: [
63
+ {
64
+ system: 'http://terminology.hl7.org/CodeSystemv3-DataOperation',
65
+ code: 'CREATE',
66
+ display: 'create',
67
+ },
68
+ ],
69
+ },
70
+ agent: [
71
+ {
72
+ type: {
73
+ coding: [
74
+ {
75
+ system: 'http://terminology.hl7.org/CodeSystemprovenance-participant-type',
76
+ code: 'author',
77
+ display: 'Author',
78
+ },
79
+ ],
80
+ },
81
+ role: [
82
+ {
83
+ coding: [
84
+ {
85
+ system: 'http://terminology.hl7.org/CodeSystemv3-ParticipationType',
86
+ code: 'AUT',
87
+ display: 'author',
88
+ },
89
+ ],
90
+ },
91
+ ],
92
+ who: {
93
+ reference: 'Practitioner/A4F30A1B-5EB9-11DF-A648-37A07F9C90FB',
94
+ type: 'Practitioner',
95
+ display: 'Super User',
96
+ },
97
+ },
98
+ ],
99
+ },
100
+ ],
101
+ status: 'active',
102
+ name: 'Outpatient Clinic',
103
+ description: 'Outpatient Clinic',
104
+ },
105
+ },
106
+ {
107
+ fullUrl: 'http://openmrs:8080/openmrs/ws/fhir2/R4/Location/ba685651-ed3b-4e63-9b35-78893060758a',
108
+ resource: {
109
+ resourceType: 'Location',
110
+ id: 'ba685651-ed3b-4e63-9b35-78893060758a',
111
+ meta: {
112
+ tag: [
113
+ {
114
+ system: 'http://fhir.openmrs.org/ext/location-tag',
115
+ code: 'Login Location',
116
+ display: 'When a user logs in and chooses a session location, they may only choose one with this tag',
117
+ },
118
+ {
119
+ system: 'http://terminology.hl7.org/CodeSystem/v3-ObservationValue',
120
+ code: 'SUBSETTED',
121
+ display: 'Resource encoded in summary mode',
122
+ },
123
+ ],
124
+ },
125
+ contained: [
126
+ {
127
+ resourceType: 'Provenance',
128
+ id: '621310a4-4c42-46eb-83e8-46e4a61cf250',
129
+ meta: {
130
+ tag: [
131
+ {
132
+ system: 'http://terminology.hl7.org/CodeSystem/v3-ObservationValue',
133
+ code: 'SUBSETTED',
134
+ display: 'Resource encoded in summary mode',
135
+ },
136
+ ],
137
+ },
138
+ recorded: '2022-02-23T22:44:33.000+00:00',
139
+ activity: {
140
+ coding: [
141
+ {
142
+ system: 'http://terminology.hl7.org/CodeSystemv3-DataOperation',
143
+ code: 'CREATE',
144
+ display: 'create',
145
+ },
146
+ ],
147
+ },
148
+ agent: [
149
+ {
150
+ type: {
151
+ coding: [
152
+ {
153
+ system: 'http://terminology.hl7.org/CodeSystemprovenance-participant-type',
154
+ code: 'author',
155
+ display: 'Author',
156
+ },
157
+ ],
158
+ },
159
+ role: [
160
+ {
161
+ coding: [
162
+ {
163
+ system: 'http://terminology.hl7.org/CodeSystemv3-ParticipationType',
164
+ code: 'AUT',
165
+ display: 'author',
166
+ },
167
+ ],
168
+ },
169
+ ],
170
+ who: {
171
+ reference: 'Practitioner/A4F30A1B-5EB9-11DF-A648-37A07F9C90FB',
172
+ type: 'Practitioner',
173
+ display: 'Super User',
174
+ },
175
+ },
176
+ ],
177
+ },
178
+ ],
179
+ status: 'active',
180
+ name: 'Inpatient Ward',
181
+ description: 'Inpatient Ward',
182
+ },
183
+ },
184
+ {
185
+ fullUrl: 'http://openmrs:8080/openmrs/ws/fhir2/R4/Location/8d9045ad-50f0-45b8-93c8-3ed4bce19dbf',
186
+ resource: {
187
+ resourceType: 'Location',
188
+ id: '8d9045ad-50f0-45b8-93c8-3ed4bce19dbf',
189
+ meta: {
190
+ tag: [
191
+ {
192
+ system: 'http://fhir.openmrs.org/ext/location-tag',
193
+ code: 'Login Location',
194
+ display: 'When a user logs in and chooses a session location, they may only choose one with this tag',
195
+ },
196
+ {
197
+ system: 'http://terminology.hl7.org/CodeSystem/v3-ObservationValue',
198
+ code: 'SUBSETTED',
199
+ display: 'Resource encoded in summary mode',
200
+ },
201
+ ],
202
+ },
203
+ contained: [
204
+ {
205
+ resourceType: 'Provenance',
206
+ id: '307f2319-cf8a-419d-9c0d-94fbe385e214',
207
+ meta: {
208
+ tag: [
209
+ {
210
+ system: 'http://terminology.hl7.org/CodeSystem/v3-ObservationValue',
211
+ code: 'SUBSETTED',
212
+ display: 'Resource encoded in summary mode',
213
+ },
214
+ ],
215
+ },
216
+ recorded: '2022-02-23T22:44:33.000+00:00',
217
+ activity: {
218
+ coding: [
219
+ {
220
+ system: 'http://terminology.hl7.org/CodeSystemv3-DataOperation',
221
+ code: 'CREATE',
222
+ display: 'create',
223
+ },
224
+ ],
225
+ },
226
+ agent: [
227
+ {
228
+ type: {
229
+ coding: [
230
+ {
231
+ system: 'http://terminology.hl7.org/CodeSystemprovenance-participant-type',
232
+ code: 'author',
233
+ display: 'Author',
234
+ },
235
+ ],
236
+ },
237
+ role: [
238
+ {
239
+ coding: [
240
+ {
241
+ system: 'http://terminology.hl7.org/CodeSystemv3-ParticipationType',
242
+ code: 'AUT',
243
+ display: 'author',
244
+ },
245
+ ],
246
+ },
247
+ ],
248
+ who: {
249
+ reference: 'Practitioner/A4F30A1B-5EB9-11DF-A648-37A07F9C90FB',
250
+ type: 'Practitioner',
251
+ display: 'Super User',
252
+ },
253
+ },
254
+ ],
255
+ },
256
+ ],
257
+ status: 'active',
258
+ name: 'Mobile Clinic',
259
+ description: 'Mobile Clinic',
260
+ },
261
+ },
262
+ {
263
+ fullUrl: 'http://openmrs:8080/openmrs/ws/fhir2/R4/Location/1ce1b7d4-c865-4178-82b0-5932e51503d6',
264
+ resource: {
265
+ resourceType: 'Location',
266
+ id: '1ce1b7d4-c865-4178-82b0-5932e51503d6',
267
+ meta: {
268
+ tag: [
269
+ {
270
+ system: 'http://fhir.openmrs.org/ext/location-tag',
271
+ code: 'Login Location',
272
+ display: 'When a user logs in and chooses a session location, they may only choose one with this tag',
273
+ },
274
+ {
275
+ system: 'http://terminology.hl7.org/CodeSystem/v3-ObservationValue',
276
+ code: 'SUBSETTED',
277
+ display: 'Resource encoded in summary mode',
278
+ },
279
+ ],
280
+ },
281
+ contained: [
282
+ {
283
+ resourceType: 'Provenance',
284
+ id: 'd82a66d0-2c79-4679-8330-dac32aa1209c',
285
+ meta: {
286
+ tag: [
287
+ {
288
+ system: 'http://terminology.hl7.org/CodeSystem/v3-ObservationValue',
289
+ code: 'SUBSETTED',
290
+ display: 'Resource encoded in summary mode',
291
+ },
292
+ ],
293
+ },
294
+ recorded: '2022-02-23T22:44:33.000+00:00',
295
+ activity: {
296
+ coding: [
297
+ {
298
+ system: 'http://terminology.hl7.org/CodeSystemv3-DataOperation',
299
+ code: 'CREATE',
300
+ display: 'create',
301
+ },
302
+ ],
303
+ },
304
+ agent: [
305
+ {
306
+ type: {
307
+ coding: [
308
+ {
309
+ system: 'http://terminology.hl7.org/CodeSystemprovenance-participant-type',
310
+ code: 'author',
311
+ display: 'Author',
312
+ },
313
+ ],
314
+ },
315
+ role: [
316
+ {
317
+ coding: [
318
+ {
319
+ system: 'http://terminology.hl7.org/CodeSystemv3-ParticipationType',
320
+ code: 'AUT',
321
+ display: 'author',
322
+ },
323
+ ],
324
+ },
325
+ ],
326
+ who: {
327
+ reference: 'Practitioner/A4F30A1B-5EB9-11DF-A648-37A07F9C90FB',
328
+ type: 'Practitioner',
329
+ display: 'Super User',
330
+ },
331
+ },
332
+ ],
333
+ },
334
+ ],
335
+ status: 'active',
336
+ name: 'Community Outreach',
337
+ description: 'Community Outreach',
338
+ },
339
+ },
340
+ ],
341
+ },
342
+ };
343
+
344
+ export const mockLocationResponseWithOneEntry = {
345
+ data: {
346
+ resourceType: 'Bundle',
347
+ id: '301b3ad6-868a-48a6-bc3f-aaa8aa3f89a6',
348
+ meta: {
349
+ lastUpdated: '2022-03-17T07:47:02.272+00:00',
350
+ tag: [
351
+ {
352
+ system: 'http://terminology.hl7.org/CodeSystem/v3-ObservationValue',
353
+ code: 'SUBSETTED',
354
+ display: 'Resource encoded in summary mode',
355
+ },
356
+ ],
357
+ },
358
+ type: 'searchset',
359
+ total: 1,
360
+ link: [
361
+ {
362
+ relation: 'self',
363
+ url: 'http://openmrs:8080/openmrs/ws/fhir2/R4/Location?_count=50&_summary=data&_tag=login%20location',
364
+ },
365
+ ],
366
+ entry: [
367
+ {
368
+ fullUrl: 'http://openmrs:8080/openmrs/ws/fhir2/R4/Location/44c3efb0-2583-4c80-a79e-1f756a03c0a1',
369
+ resource: {
370
+ resourceType: 'Location',
371
+ id: '44c3efb0-2583-4c80-a79e-1f756a03c0a1',
372
+ meta: {
373
+ tag: [
374
+ {
375
+ system: 'http://fhir.openmrs.org/ext/location-tag',
376
+ code: 'Login Location',
377
+ display: 'When a user logs in and chooses a session location, they may only choose one with this tag',
378
+ },
379
+ {
380
+ system: 'http://fhir.openmrs.org/ext/location-tag',
381
+ code: 'Facility Location',
382
+ },
383
+ {
384
+ system: 'http://terminology.hl7.org/CodeSystem/v3-ObservationValue',
385
+ code: 'SUBSETTED',
386
+ display: 'Resource encoded in summary mode',
387
+ },
388
+ ],
389
+ },
390
+ contained: [
391
+ {
392
+ resourceType: 'Provenance',
393
+ id: 'e6f5d190-5a5a-4e1f-b34b-20a3480a6e1b',
394
+ meta: {
395
+ tag: [
396
+ {
397
+ system: 'http://terminology.hl7.org/CodeSystem/v3-ObservationValue',
398
+ code: 'SUBSETTED',
399
+ display: 'Resource encoded in summary mode',
400
+ },
401
+ ],
402
+ },
403
+ recorded: '2022-02-23T22:44:33.000+00:00',
404
+ activity: {
405
+ coding: [
406
+ {
407
+ system: 'http://terminology.hl7.org/CodeSystemv3-DataOperation',
408
+ code: 'CREATE',
409
+ display: 'create',
410
+ },
411
+ ],
412
+ },
413
+ agent: [
414
+ {
415
+ type: {
416
+ coding: [
417
+ {
418
+ system: 'http://terminology.hl7.org/CodeSystemprovenance-participant-type',
419
+ code: 'author',
420
+ display: 'Author',
421
+ },
422
+ ],
423
+ },
424
+ role: [
425
+ {
426
+ coding: [
427
+ {
428
+ system: 'http://terminology.hl7.org/CodeSystemv3-ParticipationType',
429
+ code: 'AUT',
430
+ display: 'author',
431
+ },
432
+ ],
433
+ },
434
+ ],
435
+ who: {
436
+ reference: 'Practitioner/A4F30A1B-5EB9-11DF-A648-37A07F9C90FB',
437
+ type: 'Practitioner',
438
+ display: 'Super User',
439
+ },
440
+ },
441
+ ],
442
+ },
443
+ ],
444
+ status: 'active',
445
+ name: 'Outpatient Clinic',
446
+ description: 'Outpatient Clinic',
447
+ },
448
+ },
449
+ ],
450
+ },
451
+ };
452
+
453
+ export const validatingLocationSuccessResponse = {
454
+ ok: true,
455
+ data: {
456
+ resourceType: 'Bundle',
457
+ id: 'e3c2aa40-21b0-4671-a492-bb7e7f16cc46',
458
+ meta: {
459
+ lastUpdated: '2023-11-08T08:45:48.967+00:00',
460
+ },
461
+ type: 'searchset',
462
+ total: 1,
463
+ link: [
464
+ {
465
+ relation: 'self',
466
+ url: 'https://dev3.openmrs.org/openmrs/ws/fhir2/R4/Location?_id=1ce1b7d4-c865-4178-82b0-5932e51503d6',
467
+ },
468
+ ],
469
+ entry: [
470
+ {
471
+ fullUrl: 'https://dev3.openmrs.org/openmrs/ws/fhir2/R4/Location/1ce1b7d4-c865-4178-82b0-5932e51503d6',
472
+ resource: {
473
+ resourceType: 'Location',
474
+ id: '1ce1b7d4-c865-4178-82b0-5932e51503d6',
475
+ meta: {
476
+ lastUpdated: '2023-09-05T15:20:51.000+00:00',
477
+ tag: [
478
+ {
479
+ system: 'http://fhir.openmrs.org/ext/location-tag',
480
+ code: 'Login Location',
481
+ display: 'When a user logs in and chooses a session location, they may only choose one with this tag',
482
+ },
483
+ ],
484
+ },
485
+ text: {
486
+ status: 'generated',
487
+ div: '<div xmlns="http://www.w3.org/1999/xhtml"><h2>Community Outreach</h2></div>',
488
+ },
489
+ status: 'active',
490
+ name: 'Community Outreach',
491
+ description: 'Community Outreach',
492
+ },
493
+ },
494
+ ],
495
+ },
496
+ };
497
+
498
+ export const validatingLocationFailureResponse = {
499
+ ok: false,
500
+ data: {
501
+ resourceType: 'Bundle',
502
+ id: 'deaa418b-c900-4fd3-bb35-16fe5c2be744',
503
+ meta: {
504
+ lastUpdated: '2023-11-08T08:45:20.012+00:00',
505
+ },
506
+ type: 'searchset',
507
+ total: 0,
508
+ link: [
509
+ {
510
+ relation: 'self',
511
+ url: 'https://dev3.openmrs.org/openmrs/ws/fhir2/R4/Location?_id=8d6c993e-c2cc-11de-8d13-0010c6dffd0',
512
+ },
513
+ ],
514
+ },
515
+ };
516
+
517
+ export const mockSoleLoginLocation = {
518
+ data: {
519
+ id: '301b3ad6-868a-48a6-bc3f-aaa8aa3f891z',
520
+ total: 1,
521
+ link: [
522
+ {
523
+ relation: 'self',
524
+ url: 'http://openmrs:8080/openmrs/ws/fhir2/R4/Location?_count=50&_summary=data&_tag=login%20location',
525
+ },
526
+ ],
527
+ entry: [
528
+ {
529
+ resource: {
530
+ id: '44c3efb0-2583-4c80-a79e-1f756a03c0a1',
531
+ status: 'active',
532
+ name: 'Outpatient Clinic',
533
+ description: 'Outpatient Clinic',
534
+ },
535
+ },
536
+ ],
537
+ },
538
+ };
539
+
540
+ export const mockSetSessionLocation = Promise.resolve();
@@ -0,0 +1,49 @@
1
+ const React = require('react');
2
+ const reactI18next = require('react-i18next');
3
+
4
+ const hasChildren = (node) => node && (node.children || (node.props && node.props.children));
5
+
6
+ const getChildren = (node) => (node && node.children ? node.children : node.props && node.props.children);
7
+
8
+ const renderNodes = (reactNodes) => {
9
+ if (typeof reactNodes === 'string') {
10
+ return reactNodes;
11
+ }
12
+
13
+ return Object.keys(reactNodes).map((key, i) => {
14
+ const child = reactNodes[key];
15
+ const isElement = React.isValidElement(child);
16
+
17
+ if (typeof child === 'string') {
18
+ return child;
19
+ }
20
+ if (hasChildren(child)) {
21
+ const inner = renderNodes(getChildren(child));
22
+ return React.cloneElement(child, { ...child.props, key: i }, inner);
23
+ }
24
+ if (typeof child === 'object' && !isElement) {
25
+ return Object.keys(child).reduce((str, childKey) => `${str}${child[childKey]}`, '');
26
+ }
27
+
28
+ return child;
29
+ });
30
+ };
31
+
32
+ const useMock = [(k) => k, {}];
33
+ useMock.t = (k, o) => (o && o.defaultValue) || (typeof o === 'string' ? o : k);
34
+ useMock.i18n = {};
35
+
36
+ module.exports = {
37
+ // this mock makes sure any components using the translate HoC receive the t function as a prop
38
+ Trans: ({ children }) => renderNodes(children),
39
+ Translation: ({ children }) => children((k) => k, { i18n: {} }),
40
+ useTranslation: () => useMock,
41
+
42
+ // mock if needed
43
+ I18nextProvider: reactI18next.I18nextProvider,
44
+ initReactI18next: reactI18next.initReactI18next,
45
+ setDefaults: reactI18next.setDefaults,
46
+ getDefaults: reactI18next.getDefaults,
47
+ setI18n: reactI18next.setI18n,
48
+ getI18n: reactI18next.getI18n,
49
+ };
package/dist/1091.js ADDED
@@ -0,0 +1 @@
1
+ "use strict";(globalThis.webpackChunk_digihmis_esm_login_app=globalThis.webpackChunk_digihmis_esm_login_app||[]).push([["1091"],{2910:function(e,t,r){r.r(t),r.d(t,{default:()=>z,infinite:()=>m,unstable_serialize:()=>h});var a=r(381),l=r(3624),i=r(2695),n=r(2215),u=r(4764),s=r(8139);let o=()=>{},c=o(),f=Object,g=e=>e===c,p=new WeakMap,_=(e,t)=>e===`[object ${t}]`,d=0,y=e=>{let t,r,a=typeof e,l=f.prototype.toString.call(e),i=_(l,"Date"),n=_(l,"RegExp"),u=_(l,"Object");if(f(e)!==e||i||n)t=i?e.toJSON():"symbol"==a?e.toString():"string"==a?JSON.stringify(e):""+e;else{if(t=p.get(e))return t;if(t=++d+"~",p.set(e,t),Array.isArray(e)){for(r=0,t="@";r<e.length;r++)t+=y(e[r])+",";p.set(e,t)}if(u){t="#";let a=f.keys(e).sort();for(;!g(r=a.pop());)g(e[r])||(t+=r+":"+y(e[r])+",");p.set(e,t)}}return t},b=e=>(e=>{if("function"==typeof e)try{e=e()}catch(t){e=""}let t=e;return[e="string"==typeof e?e:(Array.isArray(e)?e.length:e)?y(e):"",t]})(e?e(0,null):null)[0],h=e=>n.q+b(e),k=Promise.resolve(),m=e=>(t,r,l)=>{let u,o=(0,a.useRef)(!1),{cache:c,initialSize:f=1,revalidateAll:g=!1,persistSize:p=!1,revalidateFirstPage:_=!0,revalidateOnMount:d=!1,parallel:y=!1}=l,[,,,h]=i.b.get(i.c);try{(u=b(t))&&(u=n.q+u)}catch(e){}let[m,z,v]=(0,i.z)(c,u),w=(0,a.useCallback)(()=>(0,i.e)(m()._l)?f:m()._l,[c,u,f]);(0,s.useSyncExternalStore)((0,a.useCallback)(e=>u?v(u,()=>{e()}):()=>{},[c,u]),w,w);let C=(0,a.useCallback)(()=>{let e=m()._l;return(0,i.e)(e)?f:e},[u,f]),S=(0,a.useRef)(C());(0,i.u)(()=>{if(!o.current){o.current=!0;return}u&&z({_l:p?S.current:C()})},[u,c]);let A=d&&!o.current,O=e(u,async e=>{let a=m()._i,n=m()._r;z({_r:i.U});let u=[],s=C(),[o]=(0,i.z)(c,e),f=o().data,p=[],d=null;for(let e=0;e<s;++e){let[s,o]=(0,i.s)(t(e,y?null:d));if(!s)break;let[b,k]=(0,i.z)(c,s),m=b().data,z=g||a||(0,i.e)(m)||_&&!e&&!(0,i.e)(f)||A||f&&!(0,i.e)(f[e])&&!l.compare(f[e],m);if(r&&("function"==typeof n?n(m,o):z)){let t=async()=>{if(s in h){let e=h[s];delete h[s],m=await e}else m=await r(o);k({data:m,_k:o}),u[e]=m};y?p.push(t):await t()}else u[e]=m;y||(d=m)}return y&&await Promise.all(p.map(e=>e())),z({_i:i.U}),u},l),j=(0,a.useCallback)(function(e,t){let r="boolean"==typeof t?{revalidate:t}:t||{},a=!1!==r.revalidate;return u?(a&&((0,i.e)(e)?z({_i:!0,_r:r.revalidate}):z({_i:!1,_r:r.revalidate})),arguments.length?O.mutate(e,{...r,revalidate:a}):O.mutate()):k},[u,c]),R=(0,a.useCallback)(e=>{let r;if(!u)return k;let[,a]=(0,i.z)(c,u);if((0,i.a)(e)?r=e(C()):"number"==typeof e&&(r=e),"number"!=typeof r)return k;a({_l:r}),S.current=r;let l=[],[n]=(0,i.z)(c,u),s=null;for(let e=0;e<r;++e){let[r]=(0,i.s)(t(e,s)),[a]=(0,i.z)(c,r),u=r?a().data:i.U;if((0,i.e)(u))return j(n().data);l.push(u),s=u}return j(l)},[u,c,j,C]);return{size:C(),setSize:R,mutate:j,get data(){return O.data},get error(){return O.error},get isValidating(){return O.isValidating},get isLoading(){return O.isLoading}}},z=(0,u.Ht)(l.Ay,m)}}]);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1091.js","sources":["webpack://@digihmis/esm-login-app/../../node_modules/swr/dist/infinite/index.mjs"],"names":["Object","WeakMap","t","i","JSON","Array","Promise","c","p","e","arguments"],"mappings":"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"}
package/dist/119.js ADDED
@@ -0,0 +1 @@
1
+ "use strict";(globalThis.webpackChunk_digihmis_esm_login_app=globalThis.webpackChunk_digihmis_esm_login_app||[]).push([["119"],{3296:function(e,t,n){var i=n(381),u="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},o=i.useState,a=i.useEffect,r=i.useLayoutEffect,c=i.useDebugValue;function s(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!u(e,n)}catch(e){return!0}}var l="undefined"==typeof window||void 0===window.document||void 0===window.document.createElement?function(e,t){return t()}:function(e,t){var n=t(),i=o({inst:{value:n,getSnapshot:t}}),u=i[0].inst,l=i[1];return r(function(){u.value=n,u.getSnapshot=t,s(u)&&l({inst:u})},[e,n,t]),a(function(){return s(u)&&l({inst:u}),e(function(){s(u)&&l({inst:u})})},[e]),c(n),n};t.useSyncExternalStore=void 0!==i.useSyncExternalStore?i.useSyncExternalStore:l},8139:function(e,t,n){e.exports=n(3296)},4924:function(e,t,n){n.r(t),n.d(t,{default:()=>a,immutable:()=>o});var i=n(3624),u=n(4764);let o=e=>(t,n,i)=>(i.revalidateOnFocus=!1,i.revalidateIfStale=!1,i.revalidateOnReconnect=!1,e(t,n,i)),a=(0,u.Ht)(i.Ay,o)}}]);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"119.js","sources":["webpack://@digihmis/esm-login-app/../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js","webpack://@digihmis/esm-login-app/../../node_modules/use-sync-external-store/shim/index.js","webpack://@digihmis/esm-login-app/../../node_modules/swr/dist/immutable/index.mjs"],"names":["Object","n","e","window"],"mappings":"qJAWA,IAAI,EAAQ,EAAQ,KAIhB,EAAW,YAAe,OAAOA,OAAO,EAAE,CAAGA,OAAO,EAAE,CAH1D,SAAY,CAAC,CAAE,CAAC,EACd,OAAO,AAAC,IAAM,GAAM,KAAM,GAAK,EAAI,GAAM,EAAI,IAAQ,GAAM,GAAK,GAAM,CACxE,EAEE,EAAW,EAAM,QAAQ,CACzB,EAAY,EAAM,SAAS,CAC3B,EAAkB,EAAM,eAAe,CACvC,EAAgB,EAAM,aAAa,CA0BrC,SAAS,EAAuB,CAAI,EAClC,IAAI,EAAoB,EAAK,WAAW,CACxC,EAAO,EAAK,KAAK,CACjB,GAAI,CACF,IAAIC,EAAY,IAChB,MAAO,CAAC,EAAS,EAAMA,EACzB,CAAE,MAAOC,EAAO,CACd,MAAO,CAAC,CACV,CACF,CAIA,IAAI,EACF,aAAgB,OAAOC,QACvB,SAAuBA,OAAO,QAAQ,EACtC,SAAuBA,OAAO,QAAQ,CAAC,aAAa,CANtD,SAAgC,CAAS,CAAE,CAAW,EACpD,OAAO,GACT,EArCA,SAAgC,CAAS,CAAE,CAAW,EACpD,IAAI,EAAQ,IACV,EAAY,EAAS,CAAE,KAAM,CAAE,MAAO,EAAO,YAAa,CAAY,CAAE,GACxE,EAAO,CAAS,CAAC,EAAE,CAAC,IAAI,CACxB,EAAc,CAAS,CAAC,EAAE,CAmB5B,OAlBA,EACE,WACE,EAAK,KAAK,CAAG,EACb,EAAK,WAAW,CAAG,EACnB,EAAuB,IAAS,EAAY,CAAE,KAAM,CAAK,EAC3D,EACA,CAAC,EAAW,EAAO,EAAY,EAEjC,EACE,WAEE,OADA,EAAuB,IAAS,EAAY,CAAE,KAAM,CAAK,GAClD,EAAU,WACf,EAAuB,IAAS,EAAY,CAAE,KAAM,CAAK,EAC3D,EACF,EACA,CAAC,EAAU,EAEb,EAAc,GACP,CACT,CAoBA,GAAQ,oBAAoB,CAC1B,KAAK,IAAM,EAAM,oBAAoB,CAAG,EAAM,oBAAoB,CAAG,C,uBC9DrE,EAAO,OAAO,CAAG,EAAjB,K,6FCAF,IAAM,EAAY,AAAC,GAAa,CAAC,EAAK,EAAS,KAEvC,EAAO,iBAAiB,CAAG,GAC3B,EAAO,iBAAiB,CAAG,GAC3B,EAAO,qBAAqB,CAAG,GACxB,EAAW,EAAK,EAAS,IAElC,EAAkB,SAAe,IAAM,CAAE,E"}