@gen-epix/ui-client-casedb 4.1.0 → 4.2.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 (41) hide show
  1. package/dist/_chunks/AddCasesToEventDialog.js +98 -98
  2. package/dist/_chunks/AddCasesToEventDialog.js.map +1 -1
  3. package/dist/_chunks/CaseContentForm.js +10 -10
  4. package/dist/_chunks/CaseInfoDialog.js +220 -220
  5. package/dist/_chunks/CaseInfoDialog.js.map +1 -1
  6. package/dist/_chunks/CaseSetInfoDialog.js +224 -224
  7. package/dist/_chunks/CaseSetInfoDialog.js.map +1 -1
  8. package/dist/_chunks/Dashboard.js +295 -295
  9. package/dist/_chunks/Dashboard.js.map +1 -1
  10. package/dist/_chunks/FindSimilarCasesDialog.js +76 -76
  11. package/dist/_chunks/FindSimilarCasesDialog.js.map +1 -1
  12. package/dist/_chunks/LegendaItem.js.map +1 -1
  13. package/dist/_chunks/PanelSeparator.js +3 -3
  14. package/dist/_chunks/PanelSeparator.js.map +1 -1
  15. package/dist/_chunks/Upload.js +318 -318
  16. package/dist/_chunks/Upload.js.map +1 -1
  17. package/dist/_chunks/chunk-BV7QT456.js +1 -1
  18. package/dist/_chunks/chunk-BV7QT456.js.map +1 -1
  19. package/dist/_chunks/cloneDeep.js +1 -1
  20. package/dist/_chunks/cloneDeep.js.map +1 -1
  21. package/dist/_chunks/esm.js +3 -3
  22. package/dist/_chunks/esm.js.map +1 -1
  23. package/dist/_chunks/index.module.js +1 -1
  24. package/dist/_chunks/index.module.js.map +1 -1
  25. package/dist/_chunks/react.js +1 -1
  26. package/dist/_chunks/react.js.map +1 -1
  27. package/dist/_chunks/shallow.js +2 -2
  28. package/dist/_chunks/shallow.js.map +1 -1
  29. package/dist/_chunks/vanilla.js +1 -1
  30. package/dist/_chunks/vanilla.js.map +1 -1
  31. package/dist/_chunks/yup.js +24 -24
  32. package/dist/_chunks/yup.js.map +1 -1
  33. package/dist/components/form/fields/ArrangementEditor/index.js +30 -30
  34. package/dist/components/ui/CreateEventDialog/index.js +40 -40
  35. package/dist/components/ui/CreateEventDialog/index.js.map +1 -1
  36. package/dist/components/ui/SequenceDownloadDialog/index.js +22 -22
  37. package/dist/pages/UserEffectiveRightsTesterAdminPage/index.js +59 -59
  38. package/dist/pages/UserEffectiveRightsTesterAdminPage/index.js.map +1 -1
  39. package/package.json +68 -67
  40. package/dist/_chunks/index.esm.js +0 -1465
  41. package/dist/_chunks/index.esm.js.map +0 -1
@@ -3,21 +3,21 @@ import { CaseUtil as t } from "../utils/CaseUtil/index.js";
3
3
  import { CaseDbDataUtil as n } from "../utils/CaseDbDataUtil/index.js";
4
4
  import { CaseSetUtil as r } from "../utils/CaseSetUtil/index.js";
5
5
  import { t as i } from "./react.js";
6
- import { t as ee } from "./dashboardStore.js";
7
- import { t as te } from "./shallow.js";
8
- import { c as ne, n as re, o as ie } from "./index.esm.js";
9
- import { useDataCollectionsMapQuery as a } from "../dataHooks/useDataCollectionsQuery/index.js";
10
- import { useCaseSetOptionsQuery as o, useCaseSetsMapQuery as ae } from "../dataHooks/useCaseSetsQuery/index.js";
11
- import { t as oe } from "./CasesAlreadyInCaseSetWarning.js";
6
+ import { t as a } from "./dashboardStore.js";
7
+ import { t as ee } from "./shallow.js";
8
+ import { useDataCollectionsMapQuery as te } from "../dataHooks/useDataCollectionsQuery/index.js";
9
+ import { useCaseSetOptionsQuery as o, useCaseSetsMapQuery as ne } from "../dataHooks/useCaseSetsQuery/index.js";
10
+ import { t as re } from "./CasesAlreadyInCaseSetWarning.js";
12
11
  import { t as s } from "i18next";
13
12
  import { CaseDbCaseApi as c } from "@gen-epix/api-casedb";
14
13
  import { QueryClientService as l } from "@gen-epix/ui-client-common/classes/services/QueryClientService";
15
14
  import { Alert as u, AlertTitle as d, Box as f, Link as p } from "@mui/material";
16
- import { use as se, useCallback as m, useEffect as h, useId as g, useMemo as _ } from "react";
17
- import { useTranslation as ce } from "react-i18next";
15
+ import { use as m, useCallback as h, useEffect as g, useId as ie, useMemo as _ } from "react";
16
+ import { useTranslation as ae } from "react-i18next";
18
17
  import { jsx as v, jsxs as y } from "react/jsx-runtime";
19
18
  import { ResponseHandler as b } from "@gen-epix/ui-client-common/components/ui/ResponseHandler";
20
19
  import { useArray as x } from "@gen-epix/ui-core/hooks/useArray";
20
+ import { FormProvider as oe, useForm as se, useWatch as ce } from "react-hook-form";
21
21
  import { useQueryMemo as S } from "@gen-epix/ui-client-common/hooks/useQueryMemo";
22
22
  import { Select as le } from "@gen-epix/ui-core-form/components/fields/Select";
23
23
  import { withDialog as C } from "@gen-epix/ui-core-components/hoc/withDialog";
@@ -25,10 +25,10 @@ import { TestIdUtil as ue } from "@gen-epix/ui-core/utils/TestIdUtil";
25
25
  import { FormUtil as w } from "@gen-epix/ui-core-form/utils/FormUtil";
26
26
  import { RouterService as T } from "@gen-epix/ui-client-common/classes/services/RouterService";
27
27
  import { useEditMutation as E } from "@gen-epix/ui-client-common/hooks/useEditMutation";
28
- import { Autocomplete as D } from "@gen-epix/ui-core-form/components/fields/Autocomplete";
28
+ import { Autocomplete as de } from "@gen-epix/ui-core-form/components/fields/Autocomplete";
29
29
  //#region src/components/ui/AddCasesToEventDialog/AddCasesToEventDialogSuccessNotificationMessage.tsx
30
- var de = ({ caseSet: e, numAddedCases: t }) => {
31
- let n = m(async () => {
30
+ var fe = ({ caseSet: e, numAddedCases: t }) => {
31
+ let n = h(async () => {
32
32
  await T.getInstance().router.navigate({ pathname: r.createCaseSetLink(e) });
33
33
  }, [e]);
34
34
  return /* @__PURE__ */ y(f, { children: [/* @__PURE__ */ v(f, { children: s("Successfully added {{numAddedCases}} case(s) to event: {{name}}", {
@@ -42,87 +42,87 @@ var de = ({ caseSet: e, numAddedCases: t }) => {
42
42
  children: s("View event: {{name}}", { name: e.name })
43
43
  })
44
44
  })] });
45
- }, O = C(({ onActionsChange: r, onClose: s, onTitleChange: p, openProps: C }) => {
46
- let { t: T } = ce(), O = a(), k = o(), A = ae(), j = se(ee), M = i(j, (e) => e.fetchData), N = i(j, (e) => e.completeCaseType), P = i(j, te((e) => e.findSimilarCasesResults?.flatMap((e) => e.similarCaseIds) ?? [])), F = g(), I = _(() => C.rows.map((e) => e.id).filter((e) => P.includes(e)), [C.rows, P]), L = _(() => (k.options ?? []).filter((e) => {
47
- let t = A.map.get(e.value);
48
- return !(t.case_type_id !== N.id || I.length === 0 && t?.id === C.currentCaseSet?.id);
45
+ }, D = C(({ onActionsChange: r, onClose: s, onTitleChange: p, openProps: C }) => {
46
+ let { t: T } = ae(), D = te(), O = o(), k = ne(), A = m(a), j = i(A, (e) => e.fetchData), M = i(A, (e) => e.completeCaseType), N = i(A, ee((e) => e.findSimilarCasesResults?.flatMap((e) => e.similarCaseIds) ?? [])), P = ie(), F = _(() => C.rows.map((e) => e.id).filter((e) => N.includes(e)), [C.rows, N]), I = _(() => (O.options ?? []).filter((e) => {
47
+ let t = k.map.get(e.value);
48
+ return !(t.case_type_id !== M.id || F.length === 0 && t?.id === C.currentCaseSet?.id);
49
49
  }).map((e) => ({
50
50
  ...e,
51
51
  label: e.value === C.currentCaseSet?.id ? T("{{eventName}} (currently shown event)", { eventName: e.label }) : e.label
52
52
  })), [
53
- k.options,
54
- A.map,
55
- N.id,
53
+ O.options,
54
+ k.map,
55
+ M.id,
56
56
  C.currentCaseSet?.id,
57
- I.length,
57
+ F.length,
58
58
  T
59
- ]), R = _(() => L.length === 1 ? L[0].value : I.length > 0 && C.currentCaseSet?.id ? C.currentCaseSet?.id : null, [
60
- L,
59
+ ]), L = _(() => I.length === 1 ? I[0].value : F.length > 0 && C.currentCaseSet?.id ? C.currentCaseSet?.id : null, [
60
+ I,
61
61
  C.currentCaseSet?.id,
62
- I.length
63
- ]), z = ie({ values: {
64
- caseSetId: R,
62
+ F.length
63
+ ]), R = se({ values: {
64
+ caseSetId: L,
65
65
  shouldApplySharingToCases: !0
66
- } }), { control: B } = z, { caseSetId: V, shouldApplySharingToCases: H } = ne({ control: B }), U = _(() => ({
66
+ } }), { control: z } = R, { caseSetId: B, shouldApplySharingToCases: V } = ce({ control: z }), H = _(() => ({
67
67
  invert: !1,
68
68
  key: "case_set_id",
69
- members: [V],
69
+ members: [B],
70
70
  type: "UUID_SET"
71
- }), [V]), { data: W, error: fe, isLoading: G } = S({
72
- enabled: !!V,
73
- queryFn: async ({ signal: e }) => (await c.getInstance().caseSetMembersPostQuery(U, null, null, { signal: e })).data,
74
- queryKey: l.getInstance().getGenericKey(e.CASE_SET_MEMBERS, U)
75
- }), K = _(() => ({
71
+ }), [B]), { data: U, error: pe, isLoading: W } = S({
72
+ enabled: !!B,
73
+ queryFn: async ({ signal: e }) => (await c.getInstance().caseSetMembersPostQuery(H, null, null, { signal: e })).data,
74
+ queryKey: l.getInstance().getGenericKey(e.CASE_SET_MEMBERS, H)
75
+ }), G = _(() => ({
76
76
  invert: !1,
77
77
  key: "case_set_id",
78
- members: [V],
78
+ members: [B],
79
79
  type: "UUID_SET"
80
- }), [V]), { data: q, error: pe, isLoading: J } = S({
81
- enabled: !!V,
82
- queryFn: async ({ signal: e }) => (await c.getInstance().caseSetDataCollectionLinksPostQuery(K, null, null, { signal: e })).data,
83
- queryKey: l.getInstance().getGenericKey(e.CASE_SET_DATA_COLLECTION_LINKS, K)
84
- }), Y = _(() => q?.map((e) => O.map.get(e.data_collection_id)).filter((e) => !!e), [q, O.map]), X = _(() => C.rows.map((e) => e.id).filter((e) => !(W ?? []).map((e) => e.case_id).includes(e)), [W, C.rows]), me = m(async () => {
85
- H && await t.applyDataCollectionLinks({
80
+ }), [B]), { data: K, error: me, isLoading: q } = S({
81
+ enabled: !!B,
82
+ queryFn: async ({ signal: e }) => (await c.getInstance().caseSetDataCollectionLinksPostQuery(G, null, null, { signal: e })).data,
83
+ queryKey: l.getInstance().getGenericKey(e.CASE_SET_DATA_COLLECTION_LINKS, G)
84
+ }), J = _(() => K?.map((e) => D.map.get(e.data_collection_id)).filter((e) => !!e), [K, D.map]), Y = _(() => C.rows.map((e) => e.id).filter((e) => !(U ?? []).map((e) => e.case_id).includes(e)), [U, C.rows]), X = h(async () => {
85
+ V && await t.applyDataCollectionLinks({
86
86
  caseIds: C.rows ? C.rows.map((e) => e.id) : void 0,
87
- caseSetDataCollectionIds: q?.map((e) => e.data_collection_id),
88
- caseSetId: V,
89
- caseTypeId: N.id
90
- }), await M(), s();
87
+ caseSetDataCollectionIds: K?.map((e) => e.data_collection_id),
88
+ caseSetId: B,
89
+ caseTypeId: M.id
90
+ }), await j(), s();
91
91
  }, [
92
- q,
93
- V,
94
- N.id,
95
- M,
92
+ K,
93
+ B,
94
+ M.id,
95
+ j,
96
96
  s,
97
97
  C.rows,
98
- H
99
- ]), he = m(async () => {
100
- await M(), s();
101
- }, [M, s]), { isMutating: Z, mutate: Q } = E({
98
+ V
99
+ ]), he = h(async () => {
100
+ await j(), s();
101
+ }, [j, s]), { isMutating: Z, mutate: Q } = E({
102
102
  associationQueryKeys: l.getInstance().getQueryKeyDependencies([e.CASE_SET_MEMBERS], !0),
103
- getErrorNotificationMessage: () => T("Failed add case(s) to {{caseSetName}}", { caseSetName: A.map.get(V).name }),
104
- getProgressNotificationMessage: () => T("Adding case(s) to {{caseSetName}}", { caseSetName: A.map.get(V).name }),
105
- getSuccessNotificationMessage: () => /* @__PURE__ */ v(de, {
106
- caseSet: A.map.get(V),
107
- numAddedCases: X.length
103
+ getErrorNotificationMessage: () => T("Failed add case(s) to {{caseSetName}}", { caseSetName: k.map.get(B).name }),
104
+ getProgressNotificationMessage: () => T("Adding case(s) to {{caseSetName}}", { caseSetName: k.map.get(B).name }),
105
+ getSuccessNotificationMessage: () => /* @__PURE__ */ v(fe, {
106
+ caseSet: k.map.get(B),
107
+ numAddedCases: Y.length
108
108
  }),
109
109
  onError: he,
110
- onSuccess: me,
110
+ onSuccess: X,
111
111
  queryFn: async (e) => (await c.getInstance().caseSetMembersPostSome(e), e)
112
- }), $ = m((() => {
113
- Q(X.map((e) => ({
112
+ }), $ = h((() => {
113
+ Q(Y.map((e) => ({
114
114
  case_id: e,
115
- case_set_id: V
115
+ case_set_id: B
116
116
  })));
117
117
  }), [
118
- X,
119
- V,
118
+ Y,
119
+ B,
120
120
  Q
121
- ]), ge = m((() => {
121
+ ]), ge = h((() => {
122
122
  s();
123
123
  }), [s]);
124
- h(() => {
125
- let e = V ? A.map.get(V) : null;
124
+ g(() => {
125
+ let e = B ? k.map.get(B) : null;
126
126
  if (e) {
127
127
  p(T("Add {{numCases}} selected case(s) to {{eventName}}", {
128
128
  eventName: n.getCaseSetName(e),
@@ -132,101 +132,101 @@ var de = ({ caseSet: e, numAddedCases: t }) => {
132
132
  }
133
133
  p(T("Add {{numCases}} selected case(s) to an existing event", { numCases: C.rows.length }));
134
134
  }, [
135
- V,
136
- A.map,
137
- N.name,
135
+ B,
136
+ k.map,
137
+ M.name,
138
138
  p,
139
139
  C.rows.length,
140
140
  T
141
- ]), h(() => {
141
+ ]), g(() => {
142
142
  let e = [];
143
143
  e.push({
144
144
  ...ue.createAttributes("AddCasesToEventDialog-confirmButton"),
145
145
  autoFocus: !0,
146
146
  color: "secondary",
147
- disabled: V && G || !V || Z || X.length < 1,
148
- form: F,
147
+ disabled: B && W || !B || Z || Y.length < 1,
148
+ form: P,
149
149
  label: T`Confirm`,
150
- loading: V && G || Z || J,
150
+ loading: B && W || Z || q,
151
151
  onClick: $,
152
152
  type: "submit",
153
153
  variant: "contained"
154
154
  }), r(e);
155
155
  }, [
156
- V,
157
- F,
156
+ B,
157
+ P,
158
158
  Z,
159
- G,
159
+ W,
160
160
  r,
161
161
  ge,
162
162
  $,
163
163
  T,
164
- X.length,
165
- J
164
+ Y.length,
165
+ q
166
166
  ]);
167
167
  let _e = x([
168
+ O,
168
169
  k,
169
- A,
170
- O
171
- ]), ve = _(() => w.createBooleanOptions(T), [T]), ye = m(() => {}, []);
170
+ D
171
+ ]), ve = _(() => w.createBooleanOptions(T), [T]), ye = h(() => {}, []);
172
172
  return /* @__PURE__ */ v(b, {
173
173
  isLoading: Z,
174
174
  loadables: _e,
175
- children: /* @__PURE__ */ v(re, {
176
- ...z,
175
+ children: /* @__PURE__ */ v(oe, {
176
+ ...R,
177
177
  children: /* @__PURE__ */ y("form", {
178
178
  autoComplete: "off",
179
179
  onSubmit: ye,
180
180
  children: [/* @__PURE__ */ y(f, { children: [/* @__PURE__ */ v(f, {
181
181
  sx: { marginY: 1 },
182
- children: /* @__PURE__ */ v(D, {
183
- infoMessage: L?.length === 0 ? T`No events of the same case type available` : void 0,
182
+ children: /* @__PURE__ */ v(de, {
183
+ infoMessage: I?.length === 0 ? T`No events of the same case type available` : void 0,
184
184
  label: T`Select event`,
185
185
  name: "caseSetId",
186
- options: L
186
+ options: I
187
187
  })
188
188
  }), /* @__PURE__ */ v(f, {
189
189
  sx: { marginY: 1 },
190
190
  children: /* @__PURE__ */ v(le, {
191
- disabled: q?.length === 0,
192
- infoMessage: q?.length === 0 ? T`No data collections to add` : void 0,
191
+ disabled: K?.length === 0,
192
+ infoMessage: K?.length === 0 ? T`No data collections to add` : void 0,
193
193
  label: T`Should the selected cases be given the same access rights as the selected event?`,
194
- loading: q?.length && J,
194
+ loading: K?.length && q,
195
195
  name: "shouldApplySharingToCases",
196
196
  options: ve
197
197
  })
198
- })] }), V && /* @__PURE__ */ v(f, {
198
+ })] }), B && /* @__PURE__ */ v(f, {
199
199
  sx: { marginY: 2 },
200
200
  children: /* @__PURE__ */ y(b, {
201
- error: fe || pe,
201
+ error: pe || me,
202
202
  inlineSpinner: !0,
203
- isLoading: G,
203
+ isLoading: W,
204
204
  shouldHideActionButtons: !0,
205
205
  children: [
206
- Y?.length > 0 && /* @__PURE__ */ v(f, {
206
+ J?.length > 0 && /* @__PURE__ */ v(f, {
207
207
  sx: { marginY: 2 },
208
208
  children: /* @__PURE__ */ y(u, {
209
209
  severity: "info",
210
- children: [/* @__PURE__ */ v(d, { children: T("The selected event is shared in the following data collection(s):") }), Y.map((e) => /* @__PURE__ */ v(f, { children: e.name }, e.id))]
210
+ children: [/* @__PURE__ */ v(d, { children: T("The selected event is shared in the following data collection(s):") }), J.map((e) => /* @__PURE__ */ v(f, { children: e.name }, e.id))]
211
211
  })
212
212
  }),
213
- X.length > 0 && /* @__PURE__ */ v(f, {
213
+ Y.length > 0 && /* @__PURE__ */ v(f, {
214
214
  sx: { marginY: 2 },
215
215
  children: /* @__PURE__ */ v(u, {
216
216
  severity: "info",
217
- children: /* @__PURE__ */ y(d, { children: [T("{{numCasesToAdd}} selected case(s) will be added to selected the event.", { numCasesToAdd: X.length }), C.rows.length !== X.length && /* @__PURE__ */ v(f, { children: T("{{numCasesAlreadyInEvent}} selected case(s) are already part of the selected event.", { numCasesAlreadyInEvent: C.rows.length - X.length }) })] })
217
+ children: /* @__PURE__ */ y(d, { children: [T("{{numCasesToAdd}} selected case(s) will be added to selected the event.", { numCasesToAdd: Y.length }), C.rows.length !== Y.length && /* @__PURE__ */ v(f, { children: T("{{numCasesAlreadyInEvent}} selected case(s) are already part of the selected event.", { numCasesAlreadyInEvent: C.rows.length - Y.length }) })] })
218
218
  })
219
219
  }),
220
- X.length === 0 && /* @__PURE__ */ v(f, {
220
+ Y.length === 0 && /* @__PURE__ */ v(f, {
221
221
  sx: { marginY: 2 },
222
222
  children: /* @__PURE__ */ v(u, {
223
223
  severity: "error",
224
224
  children: /* @__PURE__ */ v(d, { children: T("All selected case(s) are already part of the selected event.") })
225
225
  })
226
226
  }),
227
- X.length > 0 && /* @__PURE__ */ v(f, {
227
+ Y.length > 0 && /* @__PURE__ */ v(f, {
228
228
  sx: { marginY: 2 },
229
- children: /* @__PURE__ */ v(oe, { cases: C.rows.filter((e) => X.includes(e.id)) })
229
+ children: /* @__PURE__ */ v(re, { cases: C.rows.filter((e) => Y.includes(e.id)) })
230
230
  })
231
231
  ]
232
232
  })
@@ -241,6 +241,6 @@ var de = ({ caseSet: e, numAddedCases: t }) => {
241
241
  testId: "AddCasesToEventDialog"
242
242
  });
243
243
  //#endregion
244
- export { O as t };
244
+ export { D as t };
245
245
 
246
246
  //# sourceMappingURL=AddCasesToEventDialog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AddCasesToEventDialog.js","names":[],"sources":["../../src/components/ui/AddCasesToEventDialog/AddCasesToEventDialogSuccessNotificationMessage.tsx","../../src/components/ui/AddCasesToEventDialog/AddCasesToEventDialog.tsx"],"sourcesContent":["import { t } from 'i18next';\nimport {\n Box,\n Link,\n} from '@mui/material';\nimport { useCallback } from 'react';\nimport type { CaseDbCaseSet } from '@gen-epix/api-casedb';\nimport { RouterService } from '@gen-epix/ui-client-common/classes/services/RouterService';\n\nimport { CaseSetUtil } from '../../../utils/CaseSetUtil';\n\nexport type AddCasesToEventDialogSuccessNotificationMessageProps = {\n readonly caseSet: CaseDbCaseSet;\n readonly numAddedCases: number;\n};\n\nexport const AddCasesToEventDialogSuccessNotificationMessage = ({ caseSet, numAddedCases }: AddCasesToEventDialogSuccessNotificationMessageProps) => {\n\n const onLinkClick = useCallback(async () => {\n await RouterService.getInstance().router.navigate({ pathname: CaseSetUtil.createCaseSetLink(caseSet) });\n }, [caseSet]);\n\n return (\n <Box>\n <Box>\n {t('Successfully added {{numAddedCases}} case(s) to event: {{name}}', { name: caseSet.name, numAddedCases })}\n </Box>\n <Box\n sx={{\n marginY: 2,\n }}\n >\n <Link\n href={'#'}\n onClick={onLinkClick}\n >\n {t('View event: {{name}}', { name: caseSet.name })}\n </Link>\n </Box>\n </Box>\n );\n};\n","import {\n Alert,\n AlertTitle,\n Box,\n} from '@mui/material';\nimport {\n use,\n useCallback,\n useEffect,\n useId,\n useMemo,\n} from 'react';\nimport type { ReactElement } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useStore } from 'zustand';\nimport {\n FormProvider,\n useForm,\n useWatch,\n} from 'react-hook-form';\nimport { useShallow } from 'zustand/shallow';\nimport type {\n CaseDbCase,\n CaseDbCaseSet,\n CaseDbCaseSetMember,\n CaseDbUuidSetFilter,\n} from '@gen-epix/api-casedb';\nimport { CaseDbCaseApi } from '@gen-epix/api-casedb';\nimport type { DialogAction } from '@gen-epix/ui-core-components/components/Dialog';\nimport type {\n WithDialogRefMethods,\n WithDialogRenderProps,\n} from '@gen-epix/ui-core-components/hoc/withDialog';\nimport { QueryClientService } from '@gen-epix/ui-client-common/classes/services/QueryClientService';\nimport { ResponseHandler } from '@gen-epix/ui-client-common/components/ui/ResponseHandler';\nimport { useEditMutation } from '@gen-epix/ui-client-common/hooks/useEditMutation';\nimport { useQueryMemo } from '@gen-epix/ui-client-common/hooks/useQueryMemo';\nimport { withDialog } from '@gen-epix/ui-core-components/hoc/withDialog';\nimport { TestIdUtil } from '@gen-epix/ui-core/utils/TestIdUtil';\nimport { useArray } from '@gen-epix/ui-core/hooks/useArray';\nimport { FormUtil } from '@gen-epix/ui-core-form/utils/FormUtil';\nimport { Select } from '@gen-epix/ui-core-form/components/fields/Select';\nimport { Autocomplete } from '@gen-epix/ui-core-form/components/fields/Autocomplete';\n\nimport {\n useCaseSetOptionsQuery,\n useCaseSetsMapQuery,\n} from '../../../dataHooks/useCaseSetsQuery';\nimport { useDataCollectionsMapQuery } from '../../../dataHooks/useDataCollectionsQuery';\nimport { DashboardStoreContext } from '../../../stores/dashboardStore';\nimport { CaseUtil } from '../../../utils/CaseUtil';\nimport { CasesAlreadyInCaseSetWarning } from '../CasesAlreadyInCaseSetWarning';\nimport { CASEDB_QUERY_KEY } from '../../../constants/query';\nimport { CaseDbDataUtil } from '../../../utils/CaseDbDataUtil';\n\nimport { AddCasesToEventDialogSuccessNotificationMessage } from './AddCasesToEventDialogSuccessNotificationMessage';\n\n\nexport interface AddCasesToEventDialogOpenProps {\n currentCaseSet: CaseDbCaseSet;\n rows: CaseDbCase[];\n}\n\nexport interface AddCasesToEventDialogProps extends WithDialogRenderProps<AddCasesToEventDialogOpenProps> {\n //\n}\n\nexport type AddCasesToEventDialogRefMethods = WithDialogRefMethods<AddCasesToEventDialogProps, AddCasesToEventDialogOpenProps>;\n\ntype FormFields = {\n caseSetId: string;\n shouldApplySharingToCases: boolean;\n};\n\nexport const AddCasesToEventDialog = withDialog<AddCasesToEventDialogProps, AddCasesToEventDialogOpenProps>((\n {\n onActionsChange,\n onClose,\n onTitleChange,\n openProps,\n }: AddCasesToEventDialogProps,\n): ReactElement => {\n const { t } = useTranslation();\n\n const dataCollectionsMapQuery = useDataCollectionsMapQuery();\n const caseSetOptionsQuery = useCaseSetOptionsQuery();\n const caseSetsMapQuery = useCaseSetsMapQuery();\n const dashboardStore = use(DashboardStoreContext);\n const fetchData = useStore(dashboardStore, (state) => state.fetchData);\n const completeCaseType = useStore(dashboardStore, (state) => state.completeCaseType);\n const similarCaseIds = useStore(dashboardStore, useShallow((state) => state.findSimilarCasesResults?.flatMap(result => result.similarCaseIds) ?? []));\n const formId = useId();\n const similarCaseIdsInRows = useMemo(() => {\n return openProps.rows.map(row => row.id).filter(id => similarCaseIds.includes(id));\n }, [openProps.rows, similarCaseIds]);\n\n const filteredCaseSetOptions = useMemo(() => (caseSetOptionsQuery.options ?? []).filter(option => {\n const caseSet = caseSetsMapQuery.map.get(option.value);\n\n if (caseSet.case_type_id !== completeCaseType.id) {\n return false;\n }\n\n if (similarCaseIdsInRows.length === 0 && caseSet?.id === openProps.currentCaseSet?.id) {\n return false;\n }\n\n return true;\n }).map(option => {\n return {\n ...option,\n label: option.value === openProps.currentCaseSet?.id ? t('{{eventName}} (currently shown event)', { eventName: option.label }) : option.label,\n };\n }), [caseSetOptionsQuery.options, caseSetsMapQuery.map, completeCaseType.id, openProps.currentCaseSet?.id, similarCaseIdsInRows.length, t]);\n\n const initialSetSetId = useMemo(() => {\n if (filteredCaseSetOptions.length === 1) {\n return filteredCaseSetOptions[0].value;\n }\n if (similarCaseIdsInRows.length > 0 && openProps.currentCaseSet?.id) {\n return openProps.currentCaseSet?.id;\n }\n return null;\n }, [filteredCaseSetOptions, openProps.currentCaseSet?.id, similarCaseIdsInRows.length]);\n\n const formMethods = useForm<FormFields>({\n values: {\n caseSetId: initialSetSetId,\n shouldApplySharingToCases: true,\n },\n });\n\n const { control } = formMethods;\n const { caseSetId, shouldApplySharingToCases } = useWatch({ control });\n\n const caseSetMembersFilter = useMemo<CaseDbUuidSetFilter>(() => ({\n invert: false,\n key: 'case_set_id',\n members: [caseSetId],\n type: 'UUID_SET',\n }), [caseSetId]);\n const { data: caseSetMembers, error: caseSetMembersError, isLoading: isCaseSetMembersLoading } = useQueryMemo({\n enabled: !!caseSetId,\n queryFn: async ({ signal }) => {\n const response = await CaseDbCaseApi.getInstance().caseSetMembersPostQuery(caseSetMembersFilter, null, null, { signal });\n return response.data;\n },\n queryKey: QueryClientService.getInstance().getGenericKey(CASEDB_QUERY_KEY.CASE_SET_MEMBERS, caseSetMembersFilter),\n });\n\n const caseSetDataCollectionLinksFilter = useMemo<CaseDbUuidSetFilter>(() => ({\n invert: false,\n key: 'case_set_id',\n members: [caseSetId],\n type: 'UUID_SET',\n }), [caseSetId]);\n const { data: caseSetDataCollectionLinks, error: caseSetDataCollectionLinksError, isLoading: isCaseSetDataCollectionLinksLoading } = useQueryMemo({\n enabled: !!caseSetId,\n queryFn: async ({ signal }) => {\n const response = await CaseDbCaseApi.getInstance().caseSetDataCollectionLinksPostQuery(caseSetDataCollectionLinksFilter, null, null, { signal });\n return response.data;\n },\n queryKey: QueryClientService.getInstance().getGenericKey(CASEDB_QUERY_KEY.CASE_SET_DATA_COLLECTION_LINKS, caseSetDataCollectionLinksFilter),\n });\n\n const caseSetDataCollections = useMemo(() => {\n return caseSetDataCollectionLinks?.map(link => dataCollectionsMapQuery.map.get(link.data_collection_id)).filter(x => !!x);\n }, [caseSetDataCollectionLinks, dataCollectionsMapQuery.map]);\n\n const caseIdsToAdd = useMemo(() => {\n return openProps.rows.map(row => row.id).filter(caseId => !(caseSetMembers ?? []).map(x => x.case_id).includes(caseId));\n }, [caseSetMembers, openProps.rows]);\n\n const onSuccess = useCallback(async () => {\n if (shouldApplySharingToCases) {\n await CaseUtil.applyDataCollectionLinks({\n caseIds: openProps.rows ? openProps.rows.map(row => row.id) : undefined,\n caseSetDataCollectionIds: caseSetDataCollectionLinks?.map(link => link.data_collection_id),\n caseSetId,\n caseTypeId: completeCaseType.id,\n });\n }\n await fetchData();\n onClose();\n }, [caseSetDataCollectionLinks, caseSetId, completeCaseType.id, fetchData, onClose, openProps.rows, shouldApplySharingToCases]);\n\n const onError = useCallback(async () => {\n await fetchData();\n onClose();\n }, [fetchData, onClose]);\n\n const { isMutating: isMutatingItems, mutate: mutateItems } = useEditMutation<CaseDbCaseSetMember[]>({\n associationQueryKeys: QueryClientService.getInstance().getQueryKeyDependencies([CASEDB_QUERY_KEY.CASE_SET_MEMBERS], true),\n getErrorNotificationMessage: () => t('Failed add case(s) to {{caseSetName}}', { caseSetName: caseSetsMapQuery.map.get(caseSetId).name }),\n getProgressNotificationMessage: () => t('Adding case(s) to {{caseSetName}}', { caseSetName: caseSetsMapQuery.map.get(caseSetId).name }),\n getSuccessNotificationMessage: () => (\n <AddCasesToEventDialogSuccessNotificationMessage\n caseSet={caseSetsMapQuery.map.get(caseSetId)}\n numAddedCases={caseIdsToAdd.length}\n />\n ),\n onError,\n onSuccess,\n queryFn: async (items: CaseDbCaseSetMember[]) => {\n await CaseDbCaseApi.getInstance().caseSetMembersPostSome(items);\n return items;\n },\n });\n\n const onConfirmButtonClick = useCallback((() => {\n mutateItems(caseIdsToAdd.map(caseId => ({\n case_id: caseId,\n case_set_id: caseSetId,\n } satisfies CaseDbCaseSetMember)));\n }), [caseIdsToAdd, caseSetId, mutateItems]);\n\n const onCancelButtonClick = useCallback((() => {\n onClose();\n }), [onClose]);\n\n useEffect(() => {\n const caseSet = caseSetId ? caseSetsMapQuery.map.get(caseSetId) : null;\n if (caseSet) {\n onTitleChange(t('Add {{numCases}} selected case(s) to {{eventName}}', { eventName: CaseDbDataUtil.getCaseSetName(caseSet), numCases: openProps.rows.length }));\n return;\n }\n onTitleChange(t('Add {{numCases}} selected case(s) to an existing event', { numCases: openProps.rows.length }));\n }, [caseSetId, caseSetsMapQuery.map, completeCaseType.name, onTitleChange, openProps.rows.length, t]);\n\n useEffect(() => {\n const actions: DialogAction[] = [];\n actions.push(\n {\n ...TestIdUtil.createAttributes('AddCasesToEventDialog-confirmButton'),\n autoFocus: true,\n color: 'secondary',\n disabled: (caseSetId && isCaseSetMembersLoading) || !caseSetId || isMutatingItems || caseIdsToAdd.length < 1,\n form: formId,\n label: t`Confirm`,\n loading: (caseSetId && isCaseSetMembersLoading) || isMutatingItems || isCaseSetDataCollectionLinksLoading,\n onClick: onConfirmButtonClick,\n type: 'submit',\n variant: 'contained',\n },\n );\n onActionsChange(actions);\n }, [caseSetId, formId, isMutatingItems, isCaseSetMembersLoading, onActionsChange, onCancelButtonClick, onConfirmButtonClick, t, caseIdsToAdd.length, isCaseSetDataCollectionLinksLoading]);\n\n const loadables = useArray([caseSetOptionsQuery, caseSetsMapQuery, dataCollectionsMapQuery]);\n\n const booleanOptions = useMemo(() => FormUtil.createBooleanOptions(t), [t]);\n\n const onSubmit = useCallback(() => {\n // noop, as the mutation is triggered by a button outside of the form\n }, []);\n\n return (\n <ResponseHandler\n isLoading={isMutatingItems}\n loadables={loadables}\n >\n <FormProvider {...formMethods}>\n <form\n autoComplete={'off'}\n onSubmit={onSubmit}\n >\n <Box>\n <Box\n sx={{\n marginY: 1,\n }}\n >\n <Autocomplete\n infoMessage={filteredCaseSetOptions?.length === 0 ? t`No events of the same case type available` : undefined}\n label={t`Select event`}\n name={'caseSetId'}\n options={filteredCaseSetOptions}\n />\n </Box>\n <Box\n sx={{\n marginY: 1,\n }}\n >\n <Select\n disabled={caseSetDataCollectionLinks?.length === 0}\n infoMessage={caseSetDataCollectionLinks?.length === 0 ? t`No data collections to add` : undefined}\n label={t`Should the selected cases be given the same access rights as the selected event?`}\n loading={caseSetDataCollectionLinks?.length && isCaseSetDataCollectionLinksLoading}\n name={'shouldApplySharingToCases'}\n options={booleanOptions}\n />\n </Box>\n </Box>\n {caseSetId && (\n <Box\n sx={{\n marginY: 2,\n }}\n >\n <ResponseHandler\n error={caseSetMembersError || caseSetDataCollectionLinksError}\n inlineSpinner\n isLoading={isCaseSetMembersLoading}\n shouldHideActionButtons\n >\n {caseSetDataCollections?.length > 0 && (\n <Box\n sx={{\n marginY: 2,\n }}\n >\n <Alert severity={'info'}>\n <AlertTitle>\n {t('The selected event is shared in the following data collection(s):')}\n </AlertTitle>\n {caseSetDataCollections.map(dataCollection => (\n <Box key={dataCollection.id}>\n {dataCollection.name}\n </Box>\n ))}\n </Alert>\n </Box>\n )}\n {caseIdsToAdd.length > 0 && (\n <Box\n sx={{\n marginY: 2,\n }}\n >\n <Alert severity={'info'}>\n <AlertTitle>\n {t('{{numCasesToAdd}} selected case(s) will be added to selected the event.', { numCasesToAdd: caseIdsToAdd.length })}\n {openProps.rows.length !== caseIdsToAdd.length && (\n <Box>\n {t('{{numCasesAlreadyInEvent}} selected case(s) are already part of the selected event.', { numCasesAlreadyInEvent: openProps.rows.length - caseIdsToAdd.length })}\n </Box>\n )}\n </AlertTitle>\n </Alert>\n </Box>\n )}\n {caseIdsToAdd.length === 0 && (\n <Box\n sx={{\n marginY: 2,\n }}\n >\n <Alert severity={'error'}>\n <AlertTitle>\n {t('All selected case(s) are already part of the selected event.')}\n </AlertTitle>\n </Alert>\n </Box>\n )}\n {caseIdsToAdd.length > 0 && (\n <Box\n sx={{\n marginY: 2,\n }}\n >\n <CasesAlreadyInCaseSetWarning\n cases={openProps.rows.filter(row => caseIdsToAdd.includes(row.id))}\n />\n </Box>\n )}\n </ResponseHandler>\n </Box>\n )}\n </form>\n </FormProvider>\n </ResponseHandler>\n );\n}, {\n defaultTitle: '',\n fullWidth: true,\n maxWidth: 'md',\n testId: 'AddCasesToEventDialog',\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"AddCasesToEventDialog.js","names":[],"sources":["../../src/components/ui/AddCasesToEventDialog/AddCasesToEventDialogSuccessNotificationMessage.tsx","../../src/components/ui/AddCasesToEventDialog/AddCasesToEventDialog.tsx"],"sourcesContent":["import { t } from 'i18next';\nimport {\n Box,\n Link,\n} from '@mui/material';\nimport { useCallback } from 'react';\nimport type { CaseDbCaseSet } from '@gen-epix/api-casedb';\nimport { RouterService } from '@gen-epix/ui-client-common/classes/services/RouterService';\n\nimport { CaseSetUtil } from '../../../utils/CaseSetUtil';\n\nexport type AddCasesToEventDialogSuccessNotificationMessageProps = {\n readonly caseSet: CaseDbCaseSet;\n readonly numAddedCases: number;\n};\n\nexport const AddCasesToEventDialogSuccessNotificationMessage = ({ caseSet, numAddedCases }: AddCasesToEventDialogSuccessNotificationMessageProps) => {\n\n const onLinkClick = useCallback(async () => {\n await RouterService.getInstance().router.navigate({ pathname: CaseSetUtil.createCaseSetLink(caseSet) });\n }, [caseSet]);\n\n return (\n <Box>\n <Box>\n {t('Successfully added {{numAddedCases}} case(s) to event: {{name}}', { name: caseSet.name, numAddedCases })}\n </Box>\n <Box\n sx={{\n marginY: 2,\n }}\n >\n <Link\n href={'#'}\n onClick={onLinkClick}\n >\n {t('View event: {{name}}', { name: caseSet.name })}\n </Link>\n </Box>\n </Box>\n );\n};\n","import {\n Alert,\n AlertTitle,\n Box,\n} from '@mui/material';\nimport {\n use,\n useCallback,\n useEffect,\n useId,\n useMemo,\n} from 'react';\nimport type { ReactElement } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useStore } from 'zustand';\nimport {\n FormProvider,\n useForm,\n useWatch,\n} from 'react-hook-form';\nimport { useShallow } from 'zustand/shallow';\nimport type {\n CaseDbCase,\n CaseDbCaseSet,\n CaseDbCaseSetMember,\n CaseDbUuidSetFilter,\n} from '@gen-epix/api-casedb';\nimport { CaseDbCaseApi } from '@gen-epix/api-casedb';\nimport type { DialogAction } from '@gen-epix/ui-core-components/components/Dialog';\nimport type {\n WithDialogRefMethods,\n WithDialogRenderProps,\n} from '@gen-epix/ui-core-components/hoc/withDialog';\nimport { QueryClientService } from '@gen-epix/ui-client-common/classes/services/QueryClientService';\nimport { ResponseHandler } from '@gen-epix/ui-client-common/components/ui/ResponseHandler';\nimport { useEditMutation } from '@gen-epix/ui-client-common/hooks/useEditMutation';\nimport { useQueryMemo } from '@gen-epix/ui-client-common/hooks/useQueryMemo';\nimport { withDialog } from '@gen-epix/ui-core-components/hoc/withDialog';\nimport { TestIdUtil } from '@gen-epix/ui-core/utils/TestIdUtil';\nimport { useArray } from '@gen-epix/ui-core/hooks/useArray';\nimport { FormUtil } from '@gen-epix/ui-core-form/utils/FormUtil';\nimport { Select } from '@gen-epix/ui-core-form/components/fields/Select';\nimport { Autocomplete } from '@gen-epix/ui-core-form/components/fields/Autocomplete';\n\nimport {\n useCaseSetOptionsQuery,\n useCaseSetsMapQuery,\n} from '../../../dataHooks/useCaseSetsQuery';\nimport { useDataCollectionsMapQuery } from '../../../dataHooks/useDataCollectionsQuery';\nimport { DashboardStoreContext } from '../../../stores/dashboardStore';\nimport { CaseUtil } from '../../../utils/CaseUtil';\nimport { CasesAlreadyInCaseSetWarning } from '../CasesAlreadyInCaseSetWarning';\nimport { CASEDB_QUERY_KEY } from '../../../constants/query';\nimport { CaseDbDataUtil } from '../../../utils/CaseDbDataUtil';\n\nimport { AddCasesToEventDialogSuccessNotificationMessage } from './AddCasesToEventDialogSuccessNotificationMessage';\n\n\nexport interface AddCasesToEventDialogOpenProps {\n currentCaseSet: CaseDbCaseSet;\n rows: CaseDbCase[];\n}\n\nexport interface AddCasesToEventDialogProps extends WithDialogRenderProps<AddCasesToEventDialogOpenProps> {\n //\n}\n\nexport type AddCasesToEventDialogRefMethods = WithDialogRefMethods<AddCasesToEventDialogProps, AddCasesToEventDialogOpenProps>;\n\ntype FormFields = {\n caseSetId: string;\n shouldApplySharingToCases: boolean;\n};\n\nexport const AddCasesToEventDialog = withDialog<AddCasesToEventDialogProps, AddCasesToEventDialogOpenProps>((\n {\n onActionsChange,\n onClose,\n onTitleChange,\n openProps,\n }: AddCasesToEventDialogProps,\n): ReactElement => {\n const { t } = useTranslation();\n\n const dataCollectionsMapQuery = useDataCollectionsMapQuery();\n const caseSetOptionsQuery = useCaseSetOptionsQuery();\n const caseSetsMapQuery = useCaseSetsMapQuery();\n const dashboardStore = use(DashboardStoreContext);\n const fetchData = useStore(dashboardStore, (state) => state.fetchData);\n const completeCaseType = useStore(dashboardStore, (state) => state.completeCaseType);\n const similarCaseIds = useStore(dashboardStore, useShallow((state) => state.findSimilarCasesResults?.flatMap(result => result.similarCaseIds) ?? []));\n const formId = useId();\n const similarCaseIdsInRows = useMemo(() => {\n return openProps.rows.map(row => row.id).filter(id => similarCaseIds.includes(id));\n }, [openProps.rows, similarCaseIds]);\n\n const filteredCaseSetOptions = useMemo(() => (caseSetOptionsQuery.options ?? []).filter(option => {\n const caseSet = caseSetsMapQuery.map.get(option.value);\n\n if (caseSet.case_type_id !== completeCaseType.id) {\n return false;\n }\n\n if (similarCaseIdsInRows.length === 0 && caseSet?.id === openProps.currentCaseSet?.id) {\n return false;\n }\n\n return true;\n }).map(option => {\n return {\n ...option,\n label: option.value === openProps.currentCaseSet?.id ? t('{{eventName}} (currently shown event)', { eventName: option.label }) : option.label,\n };\n }), [caseSetOptionsQuery.options, caseSetsMapQuery.map, completeCaseType.id, openProps.currentCaseSet?.id, similarCaseIdsInRows.length, t]);\n\n const initialSetSetId = useMemo(() => {\n if (filteredCaseSetOptions.length === 1) {\n return filteredCaseSetOptions[0].value;\n }\n if (similarCaseIdsInRows.length > 0 && openProps.currentCaseSet?.id) {\n return openProps.currentCaseSet?.id;\n }\n return null;\n }, [filteredCaseSetOptions, openProps.currentCaseSet?.id, similarCaseIdsInRows.length]);\n\n const formMethods = useForm<FormFields>({\n values: {\n caseSetId: initialSetSetId,\n shouldApplySharingToCases: true,\n },\n });\n\n const { control } = formMethods;\n const { caseSetId, shouldApplySharingToCases } = useWatch({ control });\n\n const caseSetMembersFilter = useMemo<CaseDbUuidSetFilter>(() => ({\n invert: false,\n key: 'case_set_id',\n members: [caseSetId],\n type: 'UUID_SET',\n }), [caseSetId]);\n const { data: caseSetMembers, error: caseSetMembersError, isLoading: isCaseSetMembersLoading } = useQueryMemo({\n enabled: !!caseSetId,\n queryFn: async ({ signal }) => {\n const response = await CaseDbCaseApi.getInstance().caseSetMembersPostQuery(caseSetMembersFilter, null, null, { signal });\n return response.data;\n },\n queryKey: QueryClientService.getInstance().getGenericKey(CASEDB_QUERY_KEY.CASE_SET_MEMBERS, caseSetMembersFilter),\n });\n\n const caseSetDataCollectionLinksFilter = useMemo<CaseDbUuidSetFilter>(() => ({\n invert: false,\n key: 'case_set_id',\n members: [caseSetId],\n type: 'UUID_SET',\n }), [caseSetId]);\n const { data: caseSetDataCollectionLinks, error: caseSetDataCollectionLinksError, isLoading: isCaseSetDataCollectionLinksLoading } = useQueryMemo({\n enabled: !!caseSetId,\n queryFn: async ({ signal }) => {\n const response = await CaseDbCaseApi.getInstance().caseSetDataCollectionLinksPostQuery(caseSetDataCollectionLinksFilter, null, null, { signal });\n return response.data;\n },\n queryKey: QueryClientService.getInstance().getGenericKey(CASEDB_QUERY_KEY.CASE_SET_DATA_COLLECTION_LINKS, caseSetDataCollectionLinksFilter),\n });\n\n const caseSetDataCollections = useMemo(() => {\n return caseSetDataCollectionLinks?.map(link => dataCollectionsMapQuery.map.get(link.data_collection_id)).filter(x => !!x);\n }, [caseSetDataCollectionLinks, dataCollectionsMapQuery.map]);\n\n const caseIdsToAdd = useMemo(() => {\n return openProps.rows.map(row => row.id).filter(caseId => !(caseSetMembers ?? []).map(x => x.case_id).includes(caseId));\n }, [caseSetMembers, openProps.rows]);\n\n const onSuccess = useCallback(async () => {\n if (shouldApplySharingToCases) {\n await CaseUtil.applyDataCollectionLinks({\n caseIds: openProps.rows ? openProps.rows.map(row => row.id) : undefined,\n caseSetDataCollectionIds: caseSetDataCollectionLinks?.map(link => link.data_collection_id),\n caseSetId,\n caseTypeId: completeCaseType.id,\n });\n }\n await fetchData();\n onClose();\n }, [caseSetDataCollectionLinks, caseSetId, completeCaseType.id, fetchData, onClose, openProps.rows, shouldApplySharingToCases]);\n\n const onError = useCallback(async () => {\n await fetchData();\n onClose();\n }, [fetchData, onClose]);\n\n const { isMutating: isMutatingItems, mutate: mutateItems } = useEditMutation<CaseDbCaseSetMember[]>({\n associationQueryKeys: QueryClientService.getInstance().getQueryKeyDependencies([CASEDB_QUERY_KEY.CASE_SET_MEMBERS], true),\n getErrorNotificationMessage: () => t('Failed add case(s) to {{caseSetName}}', { caseSetName: caseSetsMapQuery.map.get(caseSetId).name }),\n getProgressNotificationMessage: () => t('Adding case(s) to {{caseSetName}}', { caseSetName: caseSetsMapQuery.map.get(caseSetId).name }),\n getSuccessNotificationMessage: () => (\n <AddCasesToEventDialogSuccessNotificationMessage\n caseSet={caseSetsMapQuery.map.get(caseSetId)}\n numAddedCases={caseIdsToAdd.length}\n />\n ),\n onError,\n onSuccess,\n queryFn: async (items: CaseDbCaseSetMember[]) => {\n await CaseDbCaseApi.getInstance().caseSetMembersPostSome(items);\n return items;\n },\n });\n\n const onConfirmButtonClick = useCallback((() => {\n mutateItems(caseIdsToAdd.map(caseId => ({\n case_id: caseId,\n case_set_id: caseSetId,\n } satisfies CaseDbCaseSetMember)));\n }), [caseIdsToAdd, caseSetId, mutateItems]);\n\n const onCancelButtonClick = useCallback((() => {\n onClose();\n }), [onClose]);\n\n useEffect(() => {\n const caseSet = caseSetId ? caseSetsMapQuery.map.get(caseSetId) : null;\n if (caseSet) {\n onTitleChange(t('Add {{numCases}} selected case(s) to {{eventName}}', { eventName: CaseDbDataUtil.getCaseSetName(caseSet), numCases: openProps.rows.length }));\n return;\n }\n onTitleChange(t('Add {{numCases}} selected case(s) to an existing event', { numCases: openProps.rows.length }));\n }, [caseSetId, caseSetsMapQuery.map, completeCaseType.name, onTitleChange, openProps.rows.length, t]);\n\n useEffect(() => {\n const actions: DialogAction[] = [];\n actions.push(\n {\n ...TestIdUtil.createAttributes('AddCasesToEventDialog-confirmButton'),\n autoFocus: true,\n color: 'secondary',\n disabled: (caseSetId && isCaseSetMembersLoading) || !caseSetId || isMutatingItems || caseIdsToAdd.length < 1,\n form: formId,\n label: t`Confirm`,\n loading: (caseSetId && isCaseSetMembersLoading) || isMutatingItems || isCaseSetDataCollectionLinksLoading,\n onClick: onConfirmButtonClick,\n type: 'submit',\n variant: 'contained',\n },\n );\n onActionsChange(actions);\n }, [caseSetId, formId, isMutatingItems, isCaseSetMembersLoading, onActionsChange, onCancelButtonClick, onConfirmButtonClick, t, caseIdsToAdd.length, isCaseSetDataCollectionLinksLoading]);\n\n const loadables = useArray([caseSetOptionsQuery, caseSetsMapQuery, dataCollectionsMapQuery]);\n\n const booleanOptions = useMemo(() => FormUtil.createBooleanOptions(t), [t]);\n\n const onSubmit = useCallback(() => {\n // noop, as the mutation is triggered by a button outside of the form\n }, []);\n\n return (\n <ResponseHandler\n isLoading={isMutatingItems}\n loadables={loadables}\n >\n <FormProvider {...formMethods}>\n <form\n autoComplete={'off'}\n onSubmit={onSubmit}\n >\n <Box>\n <Box\n sx={{\n marginY: 1,\n }}\n >\n <Autocomplete\n infoMessage={filteredCaseSetOptions?.length === 0 ? t`No events of the same case type available` : undefined}\n label={t`Select event`}\n name={'caseSetId'}\n options={filteredCaseSetOptions}\n />\n </Box>\n <Box\n sx={{\n marginY: 1,\n }}\n >\n <Select\n disabled={caseSetDataCollectionLinks?.length === 0}\n infoMessage={caseSetDataCollectionLinks?.length === 0 ? t`No data collections to add` : undefined}\n label={t`Should the selected cases be given the same access rights as the selected event?`}\n loading={caseSetDataCollectionLinks?.length && isCaseSetDataCollectionLinksLoading}\n name={'shouldApplySharingToCases'}\n options={booleanOptions}\n />\n </Box>\n </Box>\n {caseSetId && (\n <Box\n sx={{\n marginY: 2,\n }}\n >\n <ResponseHandler\n error={caseSetMembersError || caseSetDataCollectionLinksError}\n inlineSpinner\n isLoading={isCaseSetMembersLoading}\n shouldHideActionButtons\n >\n {caseSetDataCollections?.length > 0 && (\n <Box\n sx={{\n marginY: 2,\n }}\n >\n <Alert severity={'info'}>\n <AlertTitle>\n {t('The selected event is shared in the following data collection(s):')}\n </AlertTitle>\n {caseSetDataCollections.map(dataCollection => (\n <Box key={dataCollection.id}>\n {dataCollection.name}\n </Box>\n ))}\n </Alert>\n </Box>\n )}\n {caseIdsToAdd.length > 0 && (\n <Box\n sx={{\n marginY: 2,\n }}\n >\n <Alert severity={'info'}>\n <AlertTitle>\n {t('{{numCasesToAdd}} selected case(s) will be added to selected the event.', { numCasesToAdd: caseIdsToAdd.length })}\n {openProps.rows.length !== caseIdsToAdd.length && (\n <Box>\n {t('{{numCasesAlreadyInEvent}} selected case(s) are already part of the selected event.', { numCasesAlreadyInEvent: openProps.rows.length - caseIdsToAdd.length })}\n </Box>\n )}\n </AlertTitle>\n </Alert>\n </Box>\n )}\n {caseIdsToAdd.length === 0 && (\n <Box\n sx={{\n marginY: 2,\n }}\n >\n <Alert severity={'error'}>\n <AlertTitle>\n {t('All selected case(s) are already part of the selected event.')}\n </AlertTitle>\n </Alert>\n </Box>\n )}\n {caseIdsToAdd.length > 0 && (\n <Box\n sx={{\n marginY: 2,\n }}\n >\n <CasesAlreadyInCaseSetWarning\n cases={openProps.rows.filter(row => caseIdsToAdd.includes(row.id))}\n />\n </Box>\n )}\n </ResponseHandler>\n </Box>\n )}\n </form>\n </FormProvider>\n </ResponseHandler>\n );\n}, {\n defaultTitle: '',\n fullWidth: true,\n maxWidth: 'md',\n testId: 'AddCasesToEventDialog',\n});\n"],"mappings":"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"}
@@ -1,17 +1,17 @@
1
1
  import { CaseTypeFormUtil as e } from "../utils/CaseTypeFormUtil/index.js";
2
- import { o as t } from "./index.esm.js";
3
- import { t as n } from "./yup.js";
4
- import { useCallback as r, useEffect as i, useMemo as a } from "react";
5
- import { jsx as o } from "react/jsx-runtime";
2
+ import { t } from "./yup.js";
3
+ import { useCallback as n, useEffect as r, useMemo as i } from "react";
4
+ import { jsx as a } from "react/jsx-runtime";
5
+ import { useForm as o } from "react-hook-form";
6
6
  import { GenericForm as s } from "@gen-epix/ui-core-form/components/helpers/GenericForm";
7
7
  import { FormUtil as c } from "@gen-epix/ui-core-form/utils/FormUtil";
8
8
  //#region src/components/ui/CaseContentForm/CaseContentForm.tsx
9
9
  var l = ({ caseContent: l, caseId: u, completeCaseType: d, enabledColIds: f, formId: p, onSubmit: m }) => {
10
- let h = a(() => e.createYupSchema({ completeCaseType: d }), [d]), g = t({ resolver: n(h) }), { handleSubmit: _, reset: v, setValue: y } = g, b = r((e) => {
10
+ let h = i(() => e.createYupSchema({ completeCaseType: d }), [d]), g = o({ resolver: t(h) }), { handleSubmit: _, reset: v, setValue: y } = g, b = n((e) => {
11
11
  e.forEach((e) => {
12
12
  y(e, null);
13
13
  });
14
- }, [y]), { fieldDefinitions: x, groupDefinitions: S } = a(() => e.createFormDefinitions({
14
+ }, [y]), { fieldDefinitions: x, groupDefinitions: S } = i(() => e.createFormDefinitions({
15
15
  completeCaseType: d,
16
16
  enabledColIds: f,
17
17
  onClearGroupFields: b
@@ -19,16 +19,16 @@ var l = ({ caseContent: l, caseId: u, completeCaseType: d, enabledColIds: f, for
19
19
  d,
20
20
  b,
21
21
  f
22
- ]), C = r((e) => {
22
+ ]), C = n((e) => {
23
23
  u && m(u, c.createStringValuesFromFormValues(x, e));
24
24
  }, [
25
25
  u,
26
26
  x,
27
27
  m
28
- ]), w = a(() => c.createFormValues(x, l), [x, l]);
29
- return i(() => {
28
+ ]), w = i(() => c.createFormValues(x, l), [x, l]);
29
+ return r(() => {
30
30
  v(w);
31
- }, [v, w]), /* @__PURE__ */ o(s, {
31
+ }, [v, w]), /* @__PURE__ */ a(s, {
32
32
  formFieldDefinitions: x,
33
33
  formGroupDefinitions: S,
34
34
  formId: p,