@bahmni/home-app 0.0.1-dev.404 → 0.0.1-dev.408

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.
@@ -0,0 +1,111 @@
1
+ import { jsxs as c, jsx as e, Fragment as b } from "react/jsx-runtime";
2
+ import { u as m, W as p, N as y, C as H, D as N, a as E, E as P, H as v, G, I as f, K as L, R as O, _ as S } from "./index-BLBZZpTy.js";
3
+ import "react";
4
+ import { useQuery as T } from "@tanstack/react-query";
5
+ const C = "AppTile-module_tile__-CBFh", B = "AppTile-module_label__6vslD", A = "AppTile-module_bottom__lcJiG", d = {
6
+ tile: C,
7
+ label: B,
8
+ bottom: A
9
+ }, M = ({ id: o, label: n, icon: s, url: l }) => {
10
+ const { t } = m(), i = t(n);
11
+ return /* @__PURE__ */ c(
12
+ p,
13
+ {
14
+ href: l,
15
+ className: d.tile,
16
+ "aria-label": i,
17
+ testId: `app-tile-${o}`,
18
+ children: [
19
+ /* @__PURE__ */ e("h2", { className: d.label, "aria-hidden": "true", children: i }),
20
+ /* @__PURE__ */ c("div", { className: d.bottom, children: [
21
+ /* @__PURE__ */ e(y, { name: s, id: o, size: H.X2, "aria-hidden": "true" }),
22
+ /* @__PURE__ */ e(N, { size: 20, "aria-hidden": "true" })
23
+ ] })
24
+ ]
25
+ }
26
+ );
27
+ }, K = "HomePageGrid-module_container__Kxfim", k = "HomePageGrid-module_tileGrid__X6-Bm", x = "HomePageGrid-module_skeletonTile__U-1vu", F = "HomePageGrid-module_emptyState__xEwoK", I = "HomePageGrid-module_errorContainer__IKR3E", r = {
28
+ container: K,
29
+ tileGrid: k,
30
+ skeletonTile: x,
31
+ emptyState: F,
32
+ errorContainer: I
33
+ }, D = () => {
34
+ const { t: o } = m(), {
35
+ userPrivileges: n,
36
+ isLoading: s,
37
+ error: l
38
+ } = E(), t = n?.map((a) => a.name) ?? null, {
39
+ data: i = [],
40
+ isLoading: _,
41
+ isError: u,
42
+ refetch: h
43
+ } = T({
44
+ queryKey: ["home-modules", t],
45
+ queryFn: () => P("org.bahmni.home.dashboard", t),
46
+ enabled: !s && l === null && t !== null
47
+ });
48
+ return s || _ || t === null && !l ? /* @__PURE__ */ e(
49
+ "div",
50
+ {
51
+ className: r.container,
52
+ role: "status",
53
+ "aria-label": o("HOME_LOADING_MODULES"),
54
+ "aria-busy": "true",
55
+ children: /* @__PURE__ */ e("div", { className: r.tileGrid, children: Array.from(
56
+ { length: v },
57
+ (a, g) => `skeleton-${g}`
58
+ ).map((a) => /* @__PURE__ */ e(G, { className: r.skeletonTile }, a)) })
59
+ }
60
+ ) : l || u ? /* @__PURE__ */ e(
61
+ "div",
62
+ {
63
+ className: r.errorContainer,
64
+ "data-testid": "home-error",
65
+ role: "alert",
66
+ children: /* @__PURE__ */ e(
67
+ f,
68
+ {
69
+ kind: "error",
70
+ lowContrast: !0,
71
+ subtitle: o("HOME_ERROR_FETCH_CONFIG"),
72
+ hideCloseButton: !1,
73
+ onClose: () => void h()
74
+ }
75
+ )
76
+ }
77
+ ) : i.length === 0 ? /* @__PURE__ */ e("div", { className: r.emptyState, role: "status", children: o("HOME_NO_MODULES") }) : /* @__PURE__ */ e("div", { className: r.container, children: /* @__PURE__ */ e("div", { className: r.tileGrid, children: i.map((a) => /* @__PURE__ */ e(
78
+ M,
79
+ {
80
+ id: a.id,
81
+ label: a.translationKey ?? a.label,
82
+ icon: a.icon,
83
+ url: a.url
84
+ },
85
+ a.id
86
+ )) }) });
87
+ }, R = "HomePageHeader-module_locationSelector__foYmn", $ = {
88
+ locationSelector: R
89
+ }, U = () => {
90
+ const { t: o } = m();
91
+ return /* @__PURE__ */ e(
92
+ L,
93
+ {
94
+ ariaLabel: "Bahmni",
95
+ brandPrefix: o("HOME_LABEL"),
96
+ brandHref: "/",
97
+ globalFeatures: [
98
+ /* @__PURE__ */ e("div", { className: $.locationSelector, children: /* @__PURE__ */ e(S, {}) }, "location")
99
+ ],
100
+ userMenu: /* @__PURE__ */ e(O, {})
101
+ }
102
+ );
103
+ }, j = "HomePage-module_homePageBody__0qtrS", q = {
104
+ homePageBody: j
105
+ }, J = () => /* @__PURE__ */ c(b, { children: [
106
+ /* @__PURE__ */ e(U, {}),
107
+ /* @__PURE__ */ e("main", { className: q.homePageBody, children: /* @__PURE__ */ e(D, {}) })
108
+ ] });
109
+ export {
110
+ J as HomePage
111
+ };
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { aK as a } from "./index-dkqs2X3C.js";
1
+ import { aK as a } from "./index-BLBZZpTy.js";
2
2
  export {
3
3
  a as HomeApp
4
4
  };
@@ -2,6 +2,7 @@
2
2
  "HOME_ERROR_FETCH_CONFIG": "Failed to load home page configuration",
3
3
  "HOME_ERROR_LOCATION_SYNC_FAILED": "Location change saved locally but failed to sync to server.",
4
4
  "HOME_ERROR_LOCATION_SYNC_FAILED_TITLE": "Location Sync Warning",
5
+ "HOME_LABEL": "Home",
5
6
  "HOME_LOADING_MODULES": "Loading modules",
6
7
  "HOME_NO_LOCATION_SELECTED": "No location selected",
7
8
  "HOME_NO_MODULES": "No modules available",
@@ -2,6 +2,7 @@
2
2
  "HOME_ERROR_FETCH_CONFIG": "Error al cargar la configuración de la página de inicio",
3
3
  "HOME_ERROR_LOCATION_SYNC_FAILED": "El cambio de ubicación se guardó localmente pero no se pudo sincronizar con el servidor.",
4
4
  "HOME_ERROR_LOCATION_SYNC_FAILED_TITLE": "Advertencia de sincronización de ubicación",
5
+ "HOME_LABEL": "Inicio",
5
6
  "HOME_LOADING_MODULES": "Cargando módulos",
6
7
  "HOME_NO_LOCATION_SELECTED": "Ninguna ubicación seleccionada",
7
8
  "HOME_NO_MODULES": "No hay módulos disponibles",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bahmni/home-app",
3
- "version": "0.0.1-dev.404",
3
+ "version": "0.0.1-dev.408",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",
@@ -1,213 +0,0 @@
1
- import { jsxs as S, jsx as u } from "react/jsx-runtime";
2
- import { v as q, z as G, u as N, l as k, G as x, m as z, n as Q, o as w, s as H, r as M, K as j, t as P, _ as D, x as J, C as Y, y as W, E as X, B as Z, D as ee } from "./index-dkqs2X3C.js";
3
- import { useQueries as ae, useQuery as te } from "@tanstack/react-query";
4
- import { useRef as se, useEffect as I, useMemo as T } from "react";
5
- const C = (a, n, d, l, b, r) => {
6
- const t = J(a, n, b), s = t.value, o = Y(s);
7
- let i = s;
8
- o === "Image" && (i = /* @__PURE__ */ u(
9
- X,
10
- {
11
- imageSrc: s,
12
- alt: s,
13
- id: `${s}-img`,
14
- hideThumbnail: r
15
- }
16
- )), o === "Video" && (i = /* @__PURE__ */ u(
17
- Z,
18
- {
19
- id: `${s}-video`,
20
- videoSrc: s,
21
- hideThumbnail: r
22
- }
23
- )), o === "PDF" && (i = /* @__PURE__ */ u(ee, { id: `${s}-pdf`, src: s }));
24
- const m = b("OBSERVATIONS_RECORDED_BY", {
25
- provider: t.provider
26
- }), p = a.display, h = a.observationValue?.isAbnormal ? "abnormal-obs" : "obs", c = l ? `${l}-${h}-${p}-${d}-${n}` : `${h}-${p}-${d}-${n}`;
27
- return /* @__PURE__ */ u(
28
- W,
29
- {
30
- header: t.header,
31
- value: i,
32
- info: m,
33
- id: c,
34
- testId: c,
35
- ariaLabel: c
36
- },
37
- `obs-${a.id}`
38
- );
39
- }, re = (a, n, d, l, b, r, t) => /* @__PURE__ */ u(
40
- D,
41
- {
42
- title: a.display,
43
- id: `grouped-obs-${a.display}-${l}`,
44
- open: d,
45
- children: a.members?.map(
46
- (s, o) => C(
47
- s,
48
- o,
49
- b,
50
- r,
51
- n,
52
- t
53
- )
54
- )
55
- },
56
- `grouped-obs-${a.id}`
57
- ), oe = ({
58
- groupedData: a,
59
- title: n = "",
60
- hideThumbnail: d
61
- }) => {
62
- const { t: l } = N(), b = (r, t, s) => {
63
- const o = P(r.encounterDetails, l);
64
- return /* @__PURE__ */ S(
65
- D,
66
- {
67
- title: o,
68
- id: `encounter-${r.encounterId}`,
69
- open: t,
70
- children: [
71
- r.observations.map(
72
- (i, m) => C(
73
- i,
74
- m,
75
- s,
76
- n,
77
- l,
78
- d
79
- )
80
- ),
81
- r.groupedObservations.map(
82
- (i, m) => re(
83
- i,
84
- l,
85
- t,
86
- m,
87
- s,
88
- n,
89
- d
90
- )
91
- )
92
- ]
93
- },
94
- `encounter-${r.encounterId}`
95
- );
96
- };
97
- return /* @__PURE__ */ u(
98
- "div",
99
- {
100
- id: "obs-by-encounter",
101
- "data-testid": "obs-by-encounter-test-id",
102
- "aria-label": "obs-by-encounter-aria-label",
103
- children: a.map(
104
- (r, t) => b(r, t === 0, t)
105
- )
106
- }
107
- );
108
- }, ie = "Observations-module_observations__RKSyo", ne = "Observations-module_title__TJL3z", $ = {
109
- observations: ie,
110
- title: ne
111
- }, de = (a) => ["conceptUuid", a], le = (a, n) => ["observations", a, ...n], pe = ({ config: a }) => {
112
- const n = a, {
113
- conceptNames: d = [],
114
- conceptUuid: l = [],
115
- hideThumbnail: b = !1
116
- } = n, r = se(/* @__PURE__ */ new Set()), t = q(), { addNotification: s } = G(), { t: o } = N(), i = ae({
117
- queries: d.map((e) => ({
118
- queryKey: de(e),
119
- queryFn: () => k(e),
120
- enabled: !!e
121
- }))
122
- });
123
- I(() => {
124
- i.forEach((e, y) => {
125
- if (e.isError && !r.current.has(y)) {
126
- const U = d[y];
127
- s({
128
- title: o("ERROR_DEFAULT_TITLE"),
129
- message: o("ERROR_FETCHING_CONCEPT", { conceptName: U }),
130
- type: "error"
131
- }), r.current.add(y);
132
- } else e.isError || r.current.delete(y);
133
- });
134
- }, [i, d]);
135
- const m = T(() => i.map((e) => e.data?.uuid).filter((e) => !!e), [i]), p = T(() => [.../* @__PURE__ */ new Set([...m, ...l])], [m, l]), h = T(() => d.length === 0 ? !0 : i.every((e) => !e.isLoading), [i, d.length]), {
136
- data: c,
137
- isLoading: F,
138
- isError: R,
139
- refetch: g
140
- } = te({
141
- queryKey: le(t, p),
142
- queryFn: () => x(t, p),
143
- enabled: !!t && p.length > 0 && h
144
- });
145
- z(
146
- (e) => {
147
- e.patientUUID === t && e.updatedConcepts.size > 0 && [...e.updatedConcepts.keys()].some(
148
- (y) => p.includes(y)
149
- ) && g();
150
- },
151
- [t, g]
152
- ), I(() => {
153
- R && s({
154
- title: o("ERROR_DEFAULT_TITLE"),
155
- message: o("ERROR_FETCHING_OBSERVATIONS"),
156
- type: "error"
157
- });
158
- }, [R]);
159
- const O = T(() => {
160
- if (!c) return [];
161
- const e = Q(c), y = w(e);
162
- return H(y);
163
- }, [c]), L = [
164
- { key: "name", header: "name" },
165
- { key: "value", header: "value" },
166
- { key: "form", header: "form" }
167
- ], _ = F || !h, f = R && h, A = (!c || c.entry?.length === 0 || p.length === 0) && h, K = f ? o("ERROR_FETCHING_OBSERVATIONS") : null, V = A ? o("NO_OBSERVATIONS_FOUND") : void 0, B = O.length > 0 && !_ && !f, E = n.titleTranslationKey, v = E ? o(E) : "";
168
- return /* @__PURE__ */ S(
169
- "div",
170
- {
171
- id: "observations",
172
- "data-testid": E ? `observations-${v}` : "observations",
173
- "aria-label": "observations-aria-label",
174
- className: $.observations,
175
- children: [
176
- /* @__PURE__ */ u(
177
- M,
178
- {
179
- id: "observations-title",
180
- testId: E ? `observations-title-${v}` : "observations-title",
181
- title: v,
182
- className: $.title,
183
- children: /* @__PURE__ */ u("p", { children: v })
184
- }
185
- ),
186
- B ? /* @__PURE__ */ u(
187
- oe,
188
- {
189
- groupedData: O,
190
- title: v,
191
- hideThumbnail: b
192
- }
193
- ) : /* @__PURE__ */ u(
194
- j,
195
- {
196
- headers: L,
197
- rows: [],
198
- ariaLabel: o("OBSERVATIONS"),
199
- loading: _,
200
- errorStateMessage: K,
201
- emptyStateMessage: V,
202
- dataTestId: "observations-table"
203
- }
204
- )
205
- ]
206
- }
207
- );
208
- };
209
- export {
210
- de as conceptUuidQueryKeys,
211
- pe as default,
212
- le as observationsQueryKeys
213
- };
@@ -1,108 +0,0 @@
1
- import { jsxs as c, jsx as e, Fragment as b } from "react/jsx-runtime";
2
- import { u as m, W as p, N as y, H, I as N, a as P, L as v, M as E, O as G, Q as f, R as S, S as T, T as O } from "./index-dkqs2X3C.js";
3
- import "react";
4
- import { useQuery as L } from "@tanstack/react-query";
5
- const C = "AppTile-module_tile__-CBFh", B = "AppTile-module_label__6vslD", M = "AppTile-module_bottom__lcJiG", d = {
6
- tile: C,
7
- label: B,
8
- bottom: M
9
- }, A = ({ id: r, label: n, icon: s, url: l }) => {
10
- const { t } = m(), i = t(n);
11
- return /* @__PURE__ */ c(
12
- p,
13
- {
14
- href: l,
15
- className: d.tile,
16
- "aria-label": i,
17
- testId: `app-tile-${r}`,
18
- children: [
19
- /* @__PURE__ */ e("h2", { className: d.label, "aria-hidden": "true", children: i }),
20
- /* @__PURE__ */ c("div", { className: d.bottom, children: [
21
- /* @__PURE__ */ e(y, { name: s, id: r, size: H.X2, "aria-hidden": "true" }),
22
- /* @__PURE__ */ e(N, { size: 20, "aria-hidden": "true" })
23
- ] })
24
- ]
25
- }
26
- );
27
- }, F = "HomePageGrid-module_container__Kxfim", k = "HomePageGrid-module_tileGrid__X6-Bm", x = "HomePageGrid-module_skeletonTile__U-1vu", I = "HomePageGrid-module_emptyState__xEwoK", K = "HomePageGrid-module_errorContainer__IKR3E", o = {
28
- container: F,
29
- tileGrid: k,
30
- skeletonTile: x,
31
- emptyState: I,
32
- errorContainer: K
33
- }, R = () => {
34
- const { t: r } = m(), {
35
- userPrivileges: n,
36
- isLoading: s,
37
- error: l
38
- } = P(), t = n?.map((a) => a.name) ?? null, {
39
- data: i = [],
40
- isLoading: _,
41
- isError: u,
42
- refetch: h
43
- } = L({
44
- queryKey: ["home-modules", t],
45
- queryFn: () => v("org.bahmni.home.dashboard", t),
46
- enabled: !s && l === null && t !== null
47
- });
48
- return s || _ || t === null && !l ? /* @__PURE__ */ e(
49
- "div",
50
- {
51
- className: o.container,
52
- role: "status",
53
- "aria-label": r("HOME_LOADING_MODULES"),
54
- "aria-busy": "true",
55
- children: /* @__PURE__ */ e("div", { className: o.tileGrid, children: Array.from(
56
- { length: E },
57
- (a, g) => `skeleton-${g}`
58
- ).map((a) => /* @__PURE__ */ e(G, { className: o.skeletonTile }, a)) })
59
- }
60
- ) : l || u ? /* @__PURE__ */ e(
61
- "div",
62
- {
63
- className: o.errorContainer,
64
- "data-testid": "home-error",
65
- role: "alert",
66
- children: /* @__PURE__ */ e(
67
- f,
68
- {
69
- kind: "error",
70
- lowContrast: !0,
71
- subtitle: r("HOME_ERROR_FETCH_CONFIG"),
72
- hideCloseButton: !1,
73
- onClose: () => void h()
74
- }
75
- )
76
- }
77
- ) : i.length === 0 ? /* @__PURE__ */ e("div", { className: o.emptyState, role: "status", children: r("HOME_NO_MODULES") }) : /* @__PURE__ */ e("div", { className: o.container, children: /* @__PURE__ */ e("div", { className: o.tileGrid, children: i.map((a) => /* @__PURE__ */ e(
78
- A,
79
- {
80
- id: a.id,
81
- label: a.translationKey ?? a.label,
82
- icon: a.icon,
83
- url: a.url
84
- },
85
- a.id
86
- )) }) });
87
- }, $ = "HomePageHeader-module_locationSelector__foYmn", D = {
88
- locationSelector: $
89
- }, U = () => /* @__PURE__ */ e(
90
- S,
91
- {
92
- ariaLabel: "Bahmni",
93
- brandPrefix: "Home",
94
- brandHref: "/",
95
- globalFeatures: [
96
- /* @__PURE__ */ e("div", { className: D.locationSelector, children: /* @__PURE__ */ e(O, {}) }, "location")
97
- ],
98
- userMenu: /* @__PURE__ */ e(T, {})
99
- }
100
- ), j = "HomePage-module_homePageBody__0qtrS", q = {
101
- homePageBody: j
102
- }, X = () => /* @__PURE__ */ c(b, { children: [
103
- /* @__PURE__ */ e(U, {}),
104
- /* @__PURE__ */ e("main", { className: q.homePageBody, children: /* @__PURE__ */ e(R, {}) })
105
- ] });
106
- export {
107
- X as HomePage
108
- };