@bahmni/home-app 0.0.1-dev.393 → 0.0.1-dev.394

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,5 +1,5 @@
1
1
  import { jsx as r, jsxs as p, Fragment as x } from "react/jsx-runtime";
2
- import { g as G, u as W, L as Y, D as J, q as X, w as Z, K as ee, p as te } from "./index-BUS7BPyU.js";
2
+ import { g as G, u as W, L as Y, D as J, q as X, w as Z, K as ee, p as te } from "./index-BHa8O-Hw.js";
3
3
  import { useQuery as ae } from "@tanstack/react-query";
4
4
  import { useState as l, useCallback as h, useEffect as I, useMemo as _ } from "react";
5
5
  const ne = "DocumentsTable-module_documentsTableBody__6iR3w", oe = "DocumentsTable-module_viewAttachmentsLink__aQ1on", re = "DocumentsTable-module_documentViewerContainer__F5m8D", de = "DocumentsTable-module_attachmentItem__17KA7", se = "DocumentsTable-module_attachmentCounter__WFiI3", me = "DocumentsTable-module_attachmentError__RI4U2", ce = "DocumentsTable-module_documentIframe__ptq5I", le = "DocumentsTable-module_documentImage__KQVgS", d = {
@@ -1,5 +1,5 @@
1
1
  import { jsx as i, jsxs as z, Fragment as ye } from "react/jsx-runtime";
2
- import { u as ge, g as be, A as Ne, e as Oe, a as Te, R as Ee, b as Ie, c as Ae, Z as _e, m as ve, d as Fe, P as Re, Y as $, w as Be, N as x, E as G, q as Se, K as Q, B as Le, f as Me, p as Ce, o as Ue, J as De } from "./index-BUS7BPyU.js";
2
+ import { u as ge, g as be, A as Ne, e as Oe, a as Te, R as Ee, b as Ie, c as Ae, Z as _e, m as ve, d as Fe, P as Re, Y as $, w as Be, N as x, E as G, q as Se, K as Q, B as Le, f as Me, p as Ce, o as Ue, J as De } from "./index-BHa8O-Hw.js";
3
3
  import { useQueryClient as ke, useQuery as O } from "@tanstack/react-query";
4
4
  import { useState as Y, useMemo as d, useCallback as c } from "react";
5
5
  const qe = "FormsTable-module_formsTableBody__SvGha", we = "FormsTable-module_modalHeading__wnTmA", He = "FormsTable-module_customAccordianItem__isszs", T = {
@@ -1,5 +1,5 @@
1
- import { c, T as l, P as m, a as u, D as v, Q as i } from "./YPM2AS64-BHOJDB_E.js";
2
- import { S as d, W as f, X as e } from "./index-BUS7BPyU.js";
1
+ import { c, T as l, P as m, a as u, D as v, Q as i } from "./YPM2AS64-BzpXRdY9.js";
2
+ import { S as d, W as f, X as e } from "./index-BHa8O-Hw.js";
3
3
  var p = (a) => {
4
4
  const [r, t] = c({
5
5
  prefix: "TanstackQueryDevtools"
@@ -1,5 +1,5 @@
1
- import { c as s, T as c, P as u, a as i, b as m, C as P, Q as d } from "./YPM2AS64-BHOJDB_E.js";
2
- import { S as v, W as C, X as e } from "./index-BUS7BPyU.js";
1
+ import { c as s, T as c, P as u, a as i, b as m, C as P, Q as d } from "./YPM2AS64-BzpXRdY9.js";
2
+ import { S as v, W as C, X as e } from "./index-BHa8O-Hw.js";
3
3
  var h = (t) => {
4
4
  const [r, o] = s({
5
5
  prefix: "TanstackQueryDevtools"
@@ -1,5 +1,5 @@
1
1
  import { jsxs as S, jsx as u } from "react/jsx-runtime";
2
- import { g as k, L as q, u as N, T as j, O as M, m as Q, F as w, j as x, U as G, h as H, K as P, i as z, k as F, l as J, _ as Y, n as W, r as X, V as Z, y as ee } from "./index-BUS7BPyU.js";
2
+ import { g as k, L as q, u as N, T as j, O as M, m as Q, F as w, j as x, U as G, h as H, K as P, i as z, k as F, l as J, _ as Y, n as W, r as X, V as Z, y as ee } from "./index-BHa8O-Hw.js";
3
3
  import { useQueries as ae, useQuery as te } from "@tanstack/react-query";
4
4
  import { useRef as se, useEffect as I, useMemo as T } from "react";
5
5
  const L = (a, n, d, l, b, r) => {
@@ -1,4 +1,4 @@
1
- import { $ as we, a0 as z, a1 as xt, a2 as B, W as q, X as y, a3 as Ro, a4 as ye, a5 as R, a6 as _, a7 as k, a8 as N, a9 as A, aa as bs, ab as ir, ac as $e, ad as G, ae as Hn, af as Vn, ag as dt, ah as D, ai as xs, aj as cn, ak as Be, al as ws, am as qt, an as zt, ao as $s, ap as Cs, aq as $n, ar as Ss, as as Nr, at as Bt, au as zo, av as ks, aw as Es, ax as j, ay as Gr, az as Ms, aA as Ds, aB as sr, aC as As, aD as Ts, aE as zn, aF as Fs, aG as Is, aH as Z, aI as Ps, aJ as Ls } from "./index-BUS7BPyU.js";
1
+ import { $ as we, a0 as z, a1 as xt, a2 as B, W as q, X as y, a3 as Ro, a4 as ye, a5 as R, a6 as _, a7 as k, a8 as N, a9 as A, aa as bs, ab as ir, ac as $e, ad as G, ae as Hn, af as Vn, ag as dt, ah as D, ai as xs, aj as cn, ak as Be, al as ws, am as qt, an as zt, ao as $s, ap as Cs, aq as $n, ar as Ss, as as Nr, at as Bt, au as zo, av as ks, aw as Es, ax as j, ay as Gr, az as Ms, aA as Ds, aB as sr, aC as As, aD as Ts, aE as zn, aF as Fs, aG as Is, aH as Z, aI as Ps, aJ as Ls } from "./index-BHa8O-Hw.js";
2
2
  var Os = (e) => e != null, qs = (e) => e.filter(Os);
3
3
  function _s(e) {
4
4
  return (...t) => {
@@ -103887,13 +103887,7 @@ const df0 = ({
103887
103887
  }
103888
103888
  )
103889
103889
  ] });
103890
- }, Kf0 = "http://json-schema.org/draft-07/schema#", Gf0 = "Search Patient Widget Config Schema", Yf0 = "object", Jf0 = !1, Xf0 = { patientDetailUrl: { type: "string", description: "URL template for navigating to a patient detail page. Use {{patientUuid}} as a placeholder." }, customAttributes: { type: "array", description: "Array of available search fields", items: { type: "object", additionalProperties: !1, properties: { translationKey: { type: "string", description: "Translation key for the dropdown label" }, fields: { type: "array", description: "Array of field names to search against", items: { type: "string" } }, columnTranslationKeys: { type: "array", description: "Array of translation keys for the column headers", items: { type: "string" } }, expectedFields: { type: "array", description: "Array of fields configurations with translation keys to display on table headers", items: { type: "object", additionalProperties: !1, properties: { field: { type: "string", description: "field corresponding to table header" }, translationKey: { type: "string", description: "Translation key for the table header" } } } }, type: { type: "string", enum: ["person", "address", "program", "appointment"], description: "Type of the search field (person, address, program, appointment)" } } } }, appointment: { type: "array", description: "Array of available search fields for appointments", items: { type: "object", additionalProperties: !0, required: ["translationKey", "fields"], properties: { translationKey: { type: "string", description: "Translation key for the field label" }, fields: { type: "array", description: "Array of field names to search against", items: { type: "string" } }, expectedFields: { type: "array", description: "Array of expected fields with optional types", items: { type: "object", required: ["field", "translationKey"], properties: { field: { type: "string", description: "The field name (e.g., apptNumber, apptDate)" }, translationKey: { type: "string", description: "Translation key for the field's display label" }, type: { type: "string", description: "Optional field type (e.g., date, string)" } } } }, type: { type: "string", enum: ["appointment"], description: "Type of the search field (appointment)" }, actions: { type: "array", description: "Array of actions allowed on this search field", items: { type: "object", required: ["translationKey", "type", "enabledRule", "onAction"], properties: { translationKey: { type: "string", description: "Translation key for the action button label" }, type: { type: "string", enum: ["changeStatus", "navigate", "checkInAndStartVisit"], description: "Type of action to perform" }, enabledRule: { type: "array", description: "Conditions to enable this action (rules)", items: { type: "object", properties: { type: { type: "string", enum: ["privilegeCheck", "statusCheck", "appDateCheck", "appointmentService"], description: "Type of rule to evaluate" }, values: { type: "array", items: { type: "string" }, description: "Values to match for the rule" }, excludeValues: { type: "array", items: { type: "string" }, description: "Values to exclude for the rule" } } } }, onAction: { type: "object", description: "What happens when action is triggered", additionalProperties: !0, properties: { status: { type: "string", description: "Status to set (for changeStatus type)" }, navigation: { type: "string", description: "URL path to navigate to (for navigate type)" }, submit: { type: "string", description: "API endpoint URL to submit to (for checkInAndStartVisit type)" } } }, onSuccess: { type: "object", description: "Notification or other success response", additionalProperties: !0, properties: { notification: { type: "string", description: "Translation key for success notification message" } } } } } } } } } }, Qf0 = {
103891
- $schema: Kf0,
103892
- title: Gf0,
103893
- type: Yf0,
103894
- additionalProperties: Jf0,
103895
- properties: Xf0
103896
- }, em0 = ({
103890
+ }, Kf0 = ({
103897
103891
  buttonTitle: t,
103898
103892
  searchBarPlaceholder: e,
103899
103893
  isLoading: r,
@@ -104018,6 +104012,12 @@ const df0 = ({
104018
104012
  ]
104019
104013
  }
104020
104014
  );
104015
+ }, Gf0 = "http://json-schema.org/draft-07/schema#", Yf0 = "Search Patient Widget Config Schema", Jf0 = "object", Xf0 = !1, Qf0 = { patientDetailUrl: { type: "string", description: "URL template for navigating to a patient detail page. Use {{patientUuid}} as a placeholder." }, customAttributes: { type: "array", description: "Array of available search fields", items: { type: "object", additionalProperties: !1, properties: { translationKey: { type: "string", description: "Translation key for the dropdown label" }, fields: { type: "array", description: "Array of field names to search against", items: { type: "string" } }, columnTranslationKeys: { type: "array", description: "Array of translation keys for the column headers", items: { type: "string" } }, expectedFields: { type: "array", description: "Array of fields configurations with translation keys to display on table headers", items: { type: "object", additionalProperties: !1, properties: { field: { type: "string", description: "field corresponding to table header" }, translationKey: { type: "string", description: "Translation key for the table header" } } } }, type: { type: "string", enum: ["person", "address", "program", "appointment"], description: "Type of the search field (person, address, program, appointment)" } } } }, appointment: { type: "array", description: "Array of available search fields for appointments", items: { type: "object", additionalProperties: !0, required: ["translationKey", "fields"], properties: { translationKey: { type: "string", description: "Translation key for the field label" }, fields: { type: "array", description: "Array of field names to search against", items: { type: "string" } }, expectedFields: { type: "array", description: "Array of expected fields with optional types", items: { type: "object", required: ["field", "translationKey"], properties: { field: { type: "string", description: "The field name (e.g., apptNumber, apptDate)" }, translationKey: { type: "string", description: "Translation key for the field's display label" }, type: { type: "string", description: "Optional field type (e.g., date, string)" } } } }, type: { type: "string", enum: ["appointment"], description: "Type of the search field (appointment)" }, actions: { type: "array", description: "Array of actions allowed on this search field", items: { type: "object", required: ["translationKey", "type", "enabledRule", "onAction"], properties: { translationKey: { type: "string", description: "Translation key for the action button label" }, type: { type: "string", enum: ["changeStatus", "navigate", "checkInAndStartVisit"], description: "Type of action to perform" }, enabledRule: { type: "array", description: "Conditions to enable this action (rules)", items: { type: "object", properties: { type: { type: "string", enum: ["privilegeCheck", "statusCheck", "appDateCheck", "appointmentService"], description: "Type of rule to evaluate" }, values: { type: "array", items: { type: "string" }, description: "Values to match for the rule" }, excludeValues: { type: "array", items: { type: "string" }, description: "Values to exclude for the rule" } } } }, onAction: { type: "object", description: "What happens when action is triggered", additionalProperties: !0, properties: { status: { type: "string", description: "Status to set (for changeStatus type)" }, navigation: { type: "string", description: "URL path to navigate to (for navigate type)" }, submit: { type: "string", description: "API endpoint URL to submit to (for checkInAndStartVisit type)" } } }, onSuccess: { type: "object", description: "Notification or other success response", additionalProperties: !0, properties: { notification: { type: "string", description: "Translation key for success notification message" } } } } } } } } } }, em0 = {
104016
+ $schema: Gf0,
104017
+ title: Yf0,
104018
+ type: Jf0,
104019
+ additionalProperties: Xf0,
104020
+ properties: Qf0
104021
104021
  };
104022
104022
  class tm0 {
104023
104023
  type = "appointment";
@@ -104279,7 +104279,7 @@ const am0 = ({ extensionParams: t }) => {
104279
104279
  data: a
104280
104280
  } = K2({
104281
104281
  queryKey: ["searchPatientConfig", e],
104282
- queryFn: () => a22(e, Qf0),
104282
+ queryFn: () => a22(e, em0),
104283
104283
  enabled: !!e
104284
104284
  }), [c, l] = y1(""), [i, s] = y1(""), [d, u] = y1(""), [h, p] = y1(""), { addNotification: m } = dt(), { t: y } = Ke(), [g, E] = y1(!1), [H, f] = y1([]), [w, C] = y1(""), [v, L] = y1([]), [A, _] = y1(void 0), k = () => v.find(
104285
104285
  (F) => y(F.translationKey) === w
@@ -104395,7 +104395,7 @@ const am0 = ({ extensionParams: t }) => {
104395
104395
  } : void 0, J = g ? O : "", Y = J === "appointment" ? Z?.appointment ?? [] : Z?.customAttributes ?? [];
104396
104396
  return /* @__PURE__ */ K1("div", { children: [
104397
104397
  /* @__PURE__ */ o1(
104398
- em0,
104398
+ Kf0,
104399
104399
  {
104400
104400
  buttonTitle: y("REGISTRATION_PATIENT_SEARCH_BUTTON_TITLE"),
104401
104401
  searchBarPlaceholder: y(
@@ -112446,15 +112446,7 @@ const SM0 = (t, e) => t.filter(
112446
112446
  className: C2.dataTable
112447
112447
  }
112448
112448
  );
112449
- }, UM0 = "http://json-schema.org/draft-07/schema#", WM0 = "Common Search Widget Config Schema", KM0 = "Configuration for the common search widget, defining search criteria per context", GM0 = "array", YM0 = 1, JM0 = { $ref: "#/definitions/searchContextConfig" }, XM0 = { searchContextConfig: { type: "object", required: ["context", "translationKey", "requiredPrivileges", "url", "pageSize", "criteria", "resultFields"], additionalProperties: !1, properties: { context: { type: "string", enum: ["patient", "appointment", "patientProgram"], description: "The context this search configuration applies to" }, translationKey: { type: "string", minLength: 1, description: "i18n key for the tab/section label" }, requiredPrivileges: { type: "array", items: { type: "string" }, minItems: 1, uniqueItems: !0, description: "Privileges required to access this search context" }, locationAware: { type: "string", enum: ["loggedInLocation", "allowedLocation"], description: "Location scope applied when executing searches in this context" }, url: { type: "string", minLength: 1, description: "API endpoint URL for search results" }, pageSize: { type: "integer", minimum: 1, description: "Number of results per page" }, criteria: { type: "array", items: { $ref: "#/definitions/criterionConfig" }, minItems: 1, description: "Search criteria available in this context" }, resultFields: { type: "array", items: { $ref: "#/definitions/resultFieldConfig" }, minItems: 1, description: "Defines the columns shown in the results table after a successful search" }, actions: { type: "array", minItems: 1, items: { $ref: "#/definitions/actionConfig" }, description: "Actions available in this context. Optional at the context level, but required when any resultField references an action key. Each action key must be unique within the context." } } }, resultFieldConfig: { type: "object", required: ["translationKey", "expression"], additionalProperties: !1, properties: { translationKey: { type: "string", minLength: 1, description: "i18n key for the column header" }, expression: { type: "string", minLength: 1, description: "JSONata expression evaluated against each result item to extract the column value" }, enableSort: { type: "boolean", description: "When true, the column header is clickable to sort results client-side" }, sortOrder: { type: "string", enum: ["asc", "desc"], description: "Direction the results are sorted by this column before any user interaction" }, filterType: { type: "string", enum: ["text", "select", "dateRange", "numeric"], description: "When present, a filter control appears for this column" }, action: { type: "string", description: "Key of an action defined in the context's actions array. When the referenced action has type navigate, the cell renders as a link. If the user holds none of the action's required privileges, the cell renders as plain text. Referencing a key not present in the actions array is a config error and blocks the widget." }, transform: { type: "string", enum: ["formatDate", "formatTime", "formatDateTime", "formatAge", "formatGender", "formatCountry", "formatSearchResult"], description: "Name of a transform applied to the extracted value before display" } } }, criterionConfig: { type: "object", required: ["field", "translationKey", "input"], additionalProperties: !1, properties: { id: { type: "string", minLength: 1, description: "Human-readable identifier for this criterion, unique within its context. Referenced by other criteria's additionalCriteria list. When omitted, an identifier is auto-derived from field.key/keyType." }, field: { $ref: "#/definitions/fieldConfig" }, default: { type: "boolean", description: "Whether this criterion is shown by default in the UI" }, translationKey: { type: "string", minLength: 1, description: "i18n key for the criterion label" }, input: { $ref: "#/definitions/inputConfig" }, additionalCriteria: { type: "array", items: { type: "string", minLength: 1 }, minItems: 1, uniqueItems: !0, description: "IDs of other criteria in this context that qualify as a sufficient companion when this criterion would otherwise be the only one active. When set and no other active criterion's id appears in this list, the search is blocked." } } }, fieldConfig: { type: "object", required: ["key"], additionalProperties: !1, properties: { key: { type: "string", minLength: 1, description: "Field identifier used when constructing the search query" }, keyType: { type: "string", minLength: 1, description: "UUID or type qualifier for polymorphic fields such as identifier or personAttribute" } } }, inputConfig: { oneOf: [{ $ref: "#/definitions/textInput" }, { $ref: "#/definitions/dateInput" }, { $ref: "#/definitions/numericInput" }, { $ref: "#/definitions/optionsInput" }, { $ref: "#/definitions/lookupInput" }] }, textInput: { type: "object", required: ["kind", "placeholderTranslationKey"], additionalProperties: !1, properties: { kind: { type: "string", const: "text" }, placeholderTranslationKey: { type: "string", minLength: 1 }, regex: { type: "string", minLength: 1, description: "Optional regular expression. When provided, the value is validated against this pattern on search submission." } } }, dateInput: { type: "object", required: ["kind", "placeholderTranslationKey"], additionalProperties: !1, properties: { kind: { type: "string", const: "date" }, placeholderTranslationKey: { type: "string", minLength: 1 }, rangeAllowed: { type: "boolean", description: "When true, UI renders two inputs (From and To), each with its own value and comparator" } } }, numericInput: { type: "object", required: ["kind", "placeholderTranslationKey"], additionalProperties: !1, properties: { kind: { type: "string", const: "numeric" }, placeholderTranslationKey: { type: "string", minLength: 1 }, rangeAllowed: { type: "boolean", description: "When true, UI renders two inputs (From and To), each with its own value and comparator" } } }, optionsInput: { type: "object", required: ["kind", "placeholderTranslationKey", "options"], additionalProperties: !1, properties: { kind: { type: "string", const: "options" }, placeholderTranslationKey: { type: "string", minLength: 1 }, options: { type: "array", minItems: 1, items: { $ref: "#/definitions/optionItem" }, description: "Static list of selectable options" } } }, optionItem: { type: "object", required: ["translationKey", "value"], additionalProperties: !1, properties: { translationKey: { type: "string", minLength: 1 }, value: { type: "string", minLength: 1 } } }, lookupInput: { type: "object", required: ["kind", "placeholderTranslationKey", "lookup"], additionalProperties: !1, properties: { kind: { type: "string", const: "lookup" }, placeholderTranslationKey: { type: "string", minLength: 1 }, lookup: { $ref: "#/definitions/lookupConfig" } } }, lookupConfig: { type: "object", required: ["source"], additionalProperties: !1, properties: { source: { type: "string", minLength: 1, description: "Identifies the lookup source (e.g. appointmentService, concept)" }, prefetch: { type: "boolean", description: "Whether to load all options upfront rather than on user input" }, valueSet: { type: "string", description: "UUID of the concept value set to restrict lookup results" } } }, actionConfig: { oneOf: [{ $ref: "#/definitions/navigateAction" }] }, navigateAction: { type: "object", required: ["key", "type", "navigationURL"], additionalProperties: !0, properties: { key: { type: "string", description: "Unique identifier for this action within the context. Referenced by resultField entries via their action field." }, type: { type: "string", const: "navigate", description: "Renders the column cell as a link navigating to navigationURL." }, navigationURL: { type: "string", description: "URL template for navigation. Placeholders use {expression} syntax where the content must be a valid JSONata expression evaluated against the result row. For example, {uuid} resolves the uuid field; {patient.uuid} resolves a nested field." }, requiredPrivileges: { type: "array", items: { type: "string" }, description: "Privileges required to activate this action. Any one suffices. An empty array makes the action available to all users." } } } }, QM0 = {
112450
- $schema: UM0,
112451
- title: WM0,
112452
- description: KM0,
112453
- type: GM0,
112454
- minItems: YM0,
112455
- items: JM0,
112456
- definitions: XM0
112457
- }, eV0 = ({
112449
+ }, UM0 = ({
112458
112450
  input: t,
112459
112451
  value: e,
112460
112452
  onChange: r,
@@ -112563,7 +112555,7 @@ const SM0 = (t, e) => t.filter(
112563
112555
  )
112564
112556
  }
112565
112557
  ) });
112566
- }, tV0 = async () => {
112558
+ }, WM0 = async () => {
112567
112559
  const t = mc();
112568
112560
  return (await Y00()).filter(
112569
112561
  (e) => e.location === null || e.location.uuid === t.uuid
@@ -112571,20 +112563,20 @@ const SM0 = (t, e) => t.filter(
112571
112563
  uuid: e.uuid,
112572
112564
  label: e.name
112573
112565
  }));
112574
- }, rV0 = async () => (await Xn0()).filter((t) => !t.retired).map((t) => ({ uuid: t.uuid, label: t.name })), nV0 = async () => (await On0()).filter((t) => t.person).map((t) => ({
112566
+ }, KM0 = async () => (await Xn0()).filter((t) => !t.retired).map((t) => ({ uuid: t.uuid, label: t.name })), GM0 = async () => (await On0()).filter((t) => t.person).map((t) => ({
112575
112567
  uuid: t.uuid,
112576
112568
  label: (t.person?.preferredName?.display ?? t.person.display) || t.display
112577
- })), oV0 = {
112578
- appointmentService: tV0,
112579
- provider: nV0,
112580
- programName: rV0
112581
- }, aV0 = ({
112569
+ })), YM0 = {
112570
+ appointmentService: WM0,
112571
+ provider: GM0,
112572
+ programName: KM0
112573
+ }, JM0 = ({
112582
112574
  input: t,
112583
112575
  value: e,
112584
112576
  onChange: r,
112585
112577
  validationError: o
112586
112578
  }) => {
112587
- const { t: a } = Ke(), [c, l] = y1(null), i = oV0[t.lookup.source], { data: s, isLoading: d, isError: u } = K2({
112579
+ const { t: a } = Ke(), [c, l] = y1(null), i = YM0[t.lookup.source], { data: s, isLoading: d, isError: u } = K2({
112588
112580
  queryKey: ["lookup", t.lookup.source],
112589
112581
  queryFn: i,
112590
112582
  enabled: !!i,
@@ -112625,7 +112617,7 @@ const SM0 = (t, e) => t.filter(
112625
112617
  )
112626
112618
  }
112627
112619
  );
112628
- }, sp = (t) => t == null || t === "" ? null : String(t), cV0 = ({
112620
+ }, sp = (t) => t == null || t === "" ? null : String(t), XM0 = ({
112629
112621
  input: t,
112630
112622
  value: e,
112631
112623
  onChange: r,
@@ -112726,7 +112718,7 @@ const SM0 = (t, e) => t.filter(
112726
112718
  )
112727
112719
  }
112728
112720
  );
112729
- }, lV0 = ({
112721
+ }, QM0 = ({
112730
112722
  input: t,
112731
112723
  value: e,
112732
112724
  onChange: r,
@@ -112756,7 +112748,7 @@ const SM0 = (t, e) => t.filter(
112756
112748
  )
112757
112749
  }
112758
112750
  );
112759
- }, iV0 = ({
112751
+ }, eV0 = ({
112760
112752
  input: t,
112761
112753
  value: e,
112762
112754
  onChange: r,
@@ -112779,7 +112771,7 @@ const SM0 = (t, e) => t.filter(
112779
112771
  invalidText: o ?? void 0
112780
112772
  }
112781
112773
  ) });
112782
- }, sV0 = ({
112774
+ }, tV0 = ({
112783
112775
  input: t,
112784
112776
  value: e,
112785
112777
  onChange: r,
@@ -112789,7 +112781,7 @@ const SM0 = (t, e) => t.filter(
112789
112781
  switch (t.kind) {
112790
112782
  case "text":
112791
112783
  return /* @__PURE__ */ o1(
112792
- iV0,
112784
+ eV0,
112793
112785
  {
112794
112786
  input: t,
112795
112787
  value: e,
@@ -112799,7 +112791,7 @@ const SM0 = (t, e) => t.filter(
112799
112791
  );
112800
112792
  case "numeric":
112801
112793
  return /* @__PURE__ */ o1(
112802
- cV0,
112794
+ XM0,
112803
112795
  {
112804
112796
  input: t,
112805
112797
  value: e,
@@ -112810,7 +112802,7 @@ const SM0 = (t, e) => t.filter(
112810
112802
  );
112811
112803
  case "date":
112812
112804
  return /* @__PURE__ */ o1(
112813
- eV0,
112805
+ UM0,
112814
112806
  {
112815
112807
  input: t,
112816
112808
  value: e,
@@ -112821,7 +112813,7 @@ const SM0 = (t, e) => t.filter(
112821
112813
  );
112822
112814
  case "options":
112823
112815
  return /* @__PURE__ */ o1(
112824
- lV0,
112816
+ QM0,
112825
112817
  {
112826
112818
  input: t,
112827
112819
  value: e,
@@ -112831,7 +112823,7 @@ const SM0 = (t, e) => t.filter(
112831
112823
  );
112832
112824
  case "lookup":
112833
112825
  return /* @__PURE__ */ o1(
112834
- aV0,
112826
+ JM0,
112835
112827
  {
112836
112828
  input: t,
112837
112829
  value: e,
@@ -112840,7 +112832,7 @@ const SM0 = (t, e) => t.filter(
112840
112832
  }
112841
112833
  );
112842
112834
  }
112843
- }, dV0 = ({
112835
+ }, rV0 = ({
112844
112836
  row: t,
112845
112837
  availableCriteria: e,
112846
112838
  selectedCriterion: r,
@@ -112875,7 +112867,7 @@ const SM0 = (t, e) => t.filter(
112875
112867
  }
112876
112868
  ) }),
112877
112869
  /* @__PURE__ */ o1("div", { className: C2.criterionInput, children: r ? /* @__PURE__ */ o1(
112878
- sV0,
112870
+ tV0,
112879
112871
  {
112880
112872
  input: r.input,
112881
112873
  value: t.value,
@@ -112898,7 +112890,7 @@ const SM0 = (t, e) => t.filter(
112898
112890
  ]
112899
112891
  }
112900
112892
  );
112901
- }, uV0 = ({
112893
+ }, nV0 = ({
112902
112894
  config: t,
112903
112895
  location: e,
112904
112896
  onSearch: r,
@@ -112982,7 +112974,7 @@ const SM0 = (t, e) => t.filter(
112982
112974
  }
112983
112975
  ) }),
112984
112976
  d.map((w) => /* @__PURE__ */ o1("div", { className: C2.fullWidthCol, children: /* @__PURE__ */ o1(
112985
- dV0,
112977
+ rV0,
112986
112978
  {
112987
112979
  row: w,
112988
112980
  availableCriteria: _M0(
@@ -113032,7 +113024,7 @@ const SM0 = (t, e) => t.filter(
113032
113024
  ]
113033
113025
  }
113034
113026
  );
113035
- }, hV0 = (t, e, r) => {
113027
+ }, oV0 = (t, e, r) => {
113036
113028
  if ("value" in t) {
113037
113029
  if (e.kind === "options") {
113038
113030
  const a = e.options.find((c) => c.value === t.value);
@@ -113048,14 +113040,14 @@ const SM0 = (t, e) => t.filter(
113048
113040
  }
113049
113041
  const o = t.from.value;
113050
113042
  return t.to?.value ? r("COMMON_SEARCH_CRITERIA_TAG_RANGE", { from: o, to: t.to.value }) : o;
113051
- }, pV0 = (t, e, r) => `${r(e.translationKey)}: ${hV0(t.value, e.input, r)}`, fV0 = ({ currentSearchState: t }) => {
113043
+ }, aV0 = (t, e, r) => `${r(e.translationKey)}: ${oV0(t.value, e.input, r)}`, cV0 = ({ currentSearchState: t }) => {
113052
113044
  const { t: e } = Ke(), { context: r, rows: o } = t, a = o.filter(
113053
113045
  (c) => c.criterionKey !== null && c.value !== null
113054
113046
  ).map((c) => {
113055
113047
  const l = r.criteria.find(
113056
113048
  (i) => i.id === c.criterionKey
113057
113049
  );
113058
- return { key: c.rowId, text: pV0(c, l, e) };
113050
+ return { key: c.rowId, text: aV0(c, l, e) };
113059
113051
  });
113060
113052
  return /* @__PURE__ */ K1(
113061
113053
  "div",
@@ -113087,6 +113079,14 @@ const SM0 = (t, e) => t.filter(
113087
113079
  ]
113088
113080
  }
113089
113081
  );
113082
+ }, lV0 = "http://json-schema.org/draft-07/schema#", iV0 = "Common Search Widget Config Schema", sV0 = "Configuration for the common search widget, defining search criteria per context", dV0 = "array", uV0 = 1, hV0 = { $ref: "#/definitions/searchContextConfig" }, pV0 = { searchContextConfig: { type: "object", required: ["context", "translationKey", "requiredPrivileges", "url", "pageSize", "criteria", "resultFields"], additionalProperties: !1, properties: { context: { type: "string", enum: ["patient", "appointment", "patientProgram"], description: "The context this search configuration applies to" }, translationKey: { type: "string", minLength: 1, description: "i18n key for the tab/section label" }, requiredPrivileges: { type: "array", items: { type: "string" }, minItems: 1, uniqueItems: !0, description: "Privileges required to access this search context" }, locationAware: { type: "string", enum: ["loggedInLocation", "allowedLocation"], description: "Location scope applied when executing searches in this context" }, url: { type: "string", minLength: 1, description: "API endpoint URL for search results" }, pageSize: { type: "integer", minimum: 1, description: "Number of results per page" }, criteria: { type: "array", items: { $ref: "#/definitions/criterionConfig" }, minItems: 1, description: "Search criteria available in this context" }, resultFields: { type: "array", items: { $ref: "#/definitions/resultFieldConfig" }, minItems: 1, description: "Defines the columns shown in the results table after a successful search" }, actions: { type: "array", minItems: 1, items: { $ref: "#/definitions/actionConfig" }, description: "Actions available in this context. Optional at the context level, but required when any resultField references an action key. Each action key must be unique within the context." } } }, resultFieldConfig: { type: "object", required: ["translationKey", "expression"], additionalProperties: !1, properties: { translationKey: { type: "string", minLength: 1, description: "i18n key for the column header" }, expression: { type: "string", minLength: 1, description: "JSONata expression evaluated against each result item to extract the column value" }, enableSort: { type: "boolean", description: "When true, the column header is clickable to sort results client-side" }, sortOrder: { type: "string", enum: ["asc", "desc"], description: "Direction the results are sorted by this column before any user interaction" }, filterType: { type: "string", enum: ["text", "select", "dateRange", "numeric"], description: "When present, a filter control appears for this column" }, action: { type: "string", description: "Key of an action defined in the context's actions array. When the referenced action has type navigate, the cell renders as a link. If the user holds none of the action's required privileges, the cell renders as plain text. Referencing a key not present in the actions array is a config error and blocks the widget." }, transform: { type: "string", enum: ["formatDate", "formatTime", "formatDateTime", "formatAge", "formatGender", "formatCountry", "formatSearchResult"], description: "Name of a transform applied to the extracted value before display" } } }, criterionConfig: { type: "object", required: ["field", "translationKey", "input"], additionalProperties: !1, properties: { id: { type: "string", minLength: 1, description: "Human-readable identifier for this criterion, unique within its context. Referenced by other criteria's additionalCriteria list. When omitted, an identifier is auto-derived from field.key/keyType." }, field: { $ref: "#/definitions/fieldConfig" }, default: { type: "boolean", description: "Whether this criterion is shown by default in the UI" }, translationKey: { type: "string", minLength: 1, description: "i18n key for the criterion label" }, input: { $ref: "#/definitions/inputConfig" }, additionalCriteria: { type: "array", items: { type: "string", minLength: 1 }, minItems: 1, uniqueItems: !0, description: "IDs of other criteria in this context that qualify as a sufficient companion when this criterion would otherwise be the only one active. When set and no other active criterion's id appears in this list, the search is blocked." } } }, fieldConfig: { type: "object", required: ["key"], additionalProperties: !1, properties: { key: { type: "string", minLength: 1, description: "Field identifier used when constructing the search query" }, keyType: { type: "string", minLength: 1, description: "UUID or type qualifier for polymorphic fields such as identifier or personAttribute" } } }, inputConfig: { oneOf: [{ $ref: "#/definitions/textInput" }, { $ref: "#/definitions/dateInput" }, { $ref: "#/definitions/numericInput" }, { $ref: "#/definitions/optionsInput" }, { $ref: "#/definitions/lookupInput" }] }, textInput: { type: "object", required: ["kind", "placeholderTranslationKey"], additionalProperties: !1, properties: { kind: { type: "string", const: "text" }, placeholderTranslationKey: { type: "string", minLength: 1 }, regex: { type: "string", minLength: 1, description: "Optional regular expression. When provided, the value is validated against this pattern on search submission." } } }, dateInput: { type: "object", required: ["kind", "placeholderTranslationKey"], additionalProperties: !1, properties: { kind: { type: "string", const: "date" }, placeholderTranslationKey: { type: "string", minLength: 1 }, rangeAllowed: { type: "boolean", description: "When true, UI renders two inputs (From and To), each with its own value and comparator" } } }, numericInput: { type: "object", required: ["kind", "placeholderTranslationKey"], additionalProperties: !1, properties: { kind: { type: "string", const: "numeric" }, placeholderTranslationKey: { type: "string", minLength: 1 }, rangeAllowed: { type: "boolean", description: "When true, UI renders two inputs (From and To), each with its own value and comparator" } } }, optionsInput: { type: "object", required: ["kind", "placeholderTranslationKey", "options"], additionalProperties: !1, properties: { kind: { type: "string", const: "options" }, placeholderTranslationKey: { type: "string", minLength: 1 }, options: { type: "array", minItems: 1, items: { $ref: "#/definitions/optionItem" }, description: "Static list of selectable options" } } }, optionItem: { type: "object", required: ["translationKey", "value"], additionalProperties: !1, properties: { translationKey: { type: "string", minLength: 1 }, value: { type: "string", minLength: 1 } } }, lookupInput: { type: "object", required: ["kind", "placeholderTranslationKey", "lookup"], additionalProperties: !1, properties: { kind: { type: "string", const: "lookup" }, placeholderTranslationKey: { type: "string", minLength: 1 }, lookup: { $ref: "#/definitions/lookupConfig" } } }, lookupConfig: { type: "object", required: ["source"], additionalProperties: !1, properties: { source: { type: "string", minLength: 1, description: "Identifies the lookup source (e.g. appointmentService, concept)" }, prefetch: { type: "boolean", description: "Whether to load all options upfront rather than on user input" }, valueSet: { type: "string", description: "UUID of the concept value set to restrict lookup results" } } }, actionConfig: { oneOf: [{ $ref: "#/definitions/navigateAction" }] }, navigateAction: { type: "object", required: ["key", "type", "navigationURL"], additionalProperties: !0, properties: { key: { type: "string", description: "Unique identifier for this action within the context. Referenced by resultField entries via their action field." }, type: { type: "string", const: "navigate", description: "Renders the column cell as a link navigating to navigationURL." }, navigationURL: { type: "string", description: "URL template for navigation. Placeholders use {expression} syntax where the content must be a valid JSONata expression evaluated against the result row. For example, {uuid} resolves the uuid field; {patient.uuid} resolves a nested field." }, requiredPrivileges: { type: "array", items: { type: "string" }, description: "Privileges required to activate this action. Any one suffices. An empty array makes the action available to all users." } } } }, fV0 = {
113083
+ $schema: lV0,
113084
+ title: iV0,
113085
+ description: sV0,
113086
+ type: dV0,
113087
+ minItems: uV0,
113088
+ items: hV0,
113089
+ definitions: pV0
113090
113090
  }, mV0 = ({ extensionParams: t }) => {
113091
113091
  const { t: e } = Ke(), { addNotification: r } = dt(), o = t?.configUrl, [a, c] = y1(!1), [l] = y1(() => {
113092
113092
  try {
@@ -113100,7 +113100,7 @@ const SM0 = (t, e) => t.filter(
113100
113100
  data: y
113101
113101
  } = K2({
113102
113102
  queryKey: ["commonSearchWidgetConfig", o],
113103
- queryFn: () => a22(o, QM0),
113103
+ queryFn: () => a22(o, fV0),
113104
113104
  enabled: !!o
113105
113105
  }), {
113106
113106
  isLoading: g,
@@ -113222,7 +113222,7 @@ const SM0 = (t, e) => t.filter(
113222
113222
  testId: "common-search-criteria-accordion-test-id",
113223
113223
  className: C2.searchCriteriaAccordionItem,
113224
113224
  children: /* @__PURE__ */ o1(
113225
- uV0,
113225
+ nV0,
113226
113226
  {
113227
113227
  config: L,
113228
113228
  location: l,
@@ -113236,7 +113236,7 @@ const SM0 = (t, e) => t.filter(
113236
113236
  }
113237
113237
  ),
113238
113238
  !a && i && /* @__PURE__ */ K1(r0, { children: [
113239
- /* @__PURE__ */ o1(fV0, { currentSearchState: i }),
113239
+ /* @__PURE__ */ o1(cV0, { currentSearchState: i }),
113240
113240
  /* @__PURE__ */ o1(
113241
113241
  qM0,
113242
113242
  {
@@ -113262,7 +113262,7 @@ z02({
113262
113262
  key: "commonSearch",
113263
113263
  component: mV0
113264
113264
  });
113265
- J0(() => Promise.resolve().then(() => s70)), J0(() => Promise.resolve().then(() => R70)), J0(() => Promise.resolve().then(() => md0)), J0(() => Promise.resolve().then(() => yd0)), J0(() => import("./DocumentsTable-ULtsCmIW-B61WoyMW.js")), J0(() => Promise.resolve().then(() => Mm0)), J0(() => import("./FormsTable-DAFDPXnd-BZVyqZ8I.js")), J0(() => Promise.resolve().then(() => pf0)), J0(() => import("./Observations-DOZ-UiSs-CZznhV_1.js")), J0(
113265
+ J0(() => Promise.resolve().then(() => s70)), J0(() => Promise.resolve().then(() => R70)), J0(() => Promise.resolve().then(() => md0)), J0(() => Promise.resolve().then(() => yd0)), J0(() => import("./DocumentsTable-Cz-E1n_9-wehXs_BR.js")), J0(() => Promise.resolve().then(() => Mm0)), J0(() => import("./FormsTable-D2iNj6MO-xK8524tK.js")), J0(() => Promise.resolve().then(() => pf0)), J0(() => import("./Observations-mnzr0Nxn-SEANTdZE.js")), J0(
113266
113266
  () => Promise.resolve().then(() => sw0)
113267
113267
  ), J0(
113268
113268
  () => Promise.resolve().then(() => Dp0)
@@ -198121,7 +198121,7 @@ var wRt = (t, e = !1) => {
198121
198121
  const e = d82(() => {
198122
198122
  const r = this, [o] = this.#n, [a] = this.#o, [c] = this.#a, [l] = this.#c, [i] = this.#p, [s] = this.#t;
198123
198123
  let d;
198124
- return this.#l ? d = this.#l : (d = i82(() => import("./LNWAZHJI-DX7tyJnq.js")), this.#l = d), L82(this.#h, this.#r), c82(d, l82({
198124
+ return this.#l ? d = this.#l : (d = i82(() => import("./LNWAZHJI-CPusRSG7.js")), this.#l = d), L82(this.#h, this.#r), c82(d, l82({
198125
198125
  get queryFlavor() {
198126
198126
  return r.#d;
198127
198127
  },
@@ -198219,7 +198219,7 @@ var wRt = (t, e = !1) => {
198219
198219
  const e = d82(() => {
198220
198220
  const r = this, [o] = this.#n, [a] = this.#o, [c] = this.#a, [l] = this.#c, [i] = this.#p, [s] = this.#t, [d] = this.#l;
198221
198221
  let u;
198222
- return this.#i ? u = this.#i : (u = i82(() => import("./MWZ6AO7Z-CrJr551_.js")), this.#i = u), L82(this.#h, this.#r), c82(u, l82({
198222
+ return this.#i ? u = this.#i : (u = i82(() => import("./MWZ6AO7Z-DGqxX4ZH.js")), this.#i = u), L82(this.#h, this.#r), c82(u, l82({
198223
198223
  get queryFlavor() {
198224
198224
  return r.#d;
198225
198225
  },
@@ -198349,7 +198349,7 @@ const p$t = {
198349
198349
  }
198350
198350
  }
198351
198351
  }, f$t = "home", VRt = 6, m$t = J0(
198352
- () => import("./index-BkUDWo_E.js").then((t) => ({
198352
+ () => import("./index-BtVaD1TO.js").then((t) => ({
198353
198353
  default: t.HomePage
198354
198354
  }))
198355
198355
  ), w$t = [
@@ -1,5 +1,5 @@
1
1
  import { jsxs as c, jsx as e, Fragment as p } from "react/jsx-runtime";
2
- import { u as m, s as b, t as y, v as H, x as N, e as v, z as P, H as E, C as G, G as f, I as C, M as S, Q as T } from "./index-BUS7BPyU.js";
2
+ import { u as m, s as b, t as y, v as H, x as N, e as v, z as P, H as E, C as G, G as f, I as C, M as S, Q as T } from "./index-BHa8O-Hw.js";
3
3
  import "react";
4
4
  import { useQuery as O } from "@tanstack/react-query";
5
5
  const L = "AppTile-module_tile__-CBFh", B = "AppTile-module_label__6vslD", M = "AppTile-module_bottom__lcJiG", d = {
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { aK as a } from "./index-BUS7BPyU.js";
1
+ import { aK as a } from "./index-BHa8O-Hw.js";
2
2
  export {
3
3
  a as HomeApp
4
4
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bahmni/home-app",
3
- "version": "0.0.1-dev.393",
3
+ "version": "0.0.1-dev.394",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",