@gen-epix/ui-client-casedb 4.2.0 → 4.3.1

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 (65) hide show
  1. package/dist/_chunks/CaseInfoDialog.js +40 -39
  2. package/dist/_chunks/CaseInfoDialog.js.map +1 -1
  3. package/dist/_chunks/Dashboard.js +613 -667
  4. package/dist/_chunks/Dashboard.js.map +1 -1
  5. package/dist/_chunks/LegendaItem.js.map +1 -1
  6. package/dist/_chunks/LineListWidget.js +138 -136
  7. package/dist/_chunks/LineListWidget.js.map +1 -1
  8. package/dist/_chunks/UploadUtil.js +4 -6
  9. package/dist/_chunks/UploadUtil.js.map +1 -1
  10. package/dist/_chunks/_baseClone.js +1 -1
  11. package/dist/_chunks/_baseClone.js.map +1 -1
  12. package/dist/_chunks/cloneDeep.js +1 -1
  13. package/dist/_chunks/cloneDeep.js.map +1 -1
  14. package/dist/_chunks/esm.js +93 -101
  15. package/dist/_chunks/esm.js.map +1 -1
  16. package/dist/_chunks/react.js +1 -1
  17. package/dist/_chunks/react.js.map +1 -1
  18. package/dist/_chunks/shallow.js +2 -2
  19. package/dist/_chunks/shallow.js.map +1 -1
  20. package/dist/_chunks/sync.js +4 -4
  21. package/dist/_chunks/sync.js.map +1 -1
  22. package/dist/_chunks/vanilla.js +1 -1
  23. package/dist/_chunks/vanilla.js.map +1 -1
  24. package/dist/_chunks/yup.js +2 -2
  25. package/dist/_chunks/yup.js.map +1 -1
  26. package/dist/components/ui/ContextMenu/index.js +1 -1
  27. package/dist/components/ui/ContextMenu/index.js.map +1 -1
  28. package/dist/components/ui/CreateEventDialog/index.js +1 -1
  29. package/dist/components/ui/CreateEventDialog/index.js.map +1 -1
  30. package/dist/components/ui/HistogramWidget/index.js +161 -162
  31. package/dist/components/ui/HistogramWidget/index.js.map +1 -1
  32. package/dist/components/ui/PanelSeparator/index.js +50 -2
  33. package/dist/components/ui/PanelSeparator/index.js.map +1 -0
  34. package/dist/locale/en.json +6 -0
  35. package/dist/locale/nl.json +7 -1
  36. package/dist/pages/CasesDetailPage/index.js +16 -16
  37. package/dist/pages/ColsAdminPage/index.js +77 -77
  38. package/dist/pages/ColsAdminPage/index.js.map +1 -1
  39. package/dist/pages/ConceptsAdminPage/index.js +31 -31
  40. package/dist/pages/DataCollectionVisualizationPage/index.js +1 -1
  41. package/dist/pages/DataCollectionVisualizationPage/index.js.map +1 -1
  42. package/dist/pages/DimsAdminPage/index.js +46 -46
  43. package/dist/pages/EventsDetailPage/index.js +18 -18
  44. package/dist/pages/OrganizationAccessCasePoliciesAdminPage/index.js +120 -86
  45. package/dist/pages/OrganizationAccessCasePoliciesAdminPage/index.js.map +1 -1
  46. package/dist/pages/RefColsAdminPage/index.js +94 -94
  47. package/dist/pages/RegionSetShapesAdminPage/index.js +26 -26
  48. package/dist/pages/RegionsAdminPage/index.js +33 -33
  49. package/dist/pages/UserEffectiveRightsAdminPage/index.js +56 -56
  50. package/dist/pages/UserEffectiveRightsAdminPage/index.js.map +1 -1
  51. package/dist/pages/UserEffectiveRightsTesterAdminPage/index.js +45 -45
  52. package/dist/pages/UserEffectiveRightsTesterAdminPage/index.js.map +1 -1
  53. package/dist/routes/index.js +93 -91
  54. package/dist/routes/index.js.map +1 -1
  55. package/dist/setup/setup.js +2 -3
  56. package/dist/setup/setup.js.map +1 -1
  57. package/dist/utils/CaseDbStandardConfigUtil/index.js +1 -5
  58. package/dist/utils/CaseDbStandardConfigUtil/index.js.map +1 -1
  59. package/dist/utils/MapUtil/index.js +1 -1
  60. package/dist/utils/MapUtil/index.js.map +1 -1
  61. package/package.json +36 -31
  62. package/dist/_chunks/PanelSeparator.js +0 -1666
  63. package/dist/_chunks/PanelSeparator.js.map +0 -1
  64. package/dist/_chunks/chunk-BV7QT456.js +0 -1162
  65. package/dist/_chunks/chunk-BV7QT456.js.map +0 -1
@@ -1,4 +1,4 @@
1
- //#region ../../node_modules/.pnpm/zustand@5.0.15_@types+react@19.3.0_immer@11.1.18_react@19.3.0_use-sync-external-store@1.6.0_react@19.3.0_/node_modules/zustand/esm/vanilla.mjs
1
+ //#region ../../node_modules/.pnpm/zustand@5.0.15_@types+react@19.3.0_immer@11.1.18_react@19.3.0_use-sync-external-store@1.7.0_react@19.3.0_/node_modules/zustand/esm/vanilla.mjs
2
2
  var e = (e) => {
3
3
  let t, n = /* @__PURE__ */ new Set(), r = (e, r) => {
4
4
  let i = typeof e == "function" ? e(t) : e;
@@ -1 +1 @@
1
- {"version":3,"file":"vanilla.js","names":[],"sources":["../../../../node_modules/.pnpm/zustand@5.0.15_@types+react@19.3.0_immer@11.1.18_react@19.3.0_use-sync-external-store@1.6.0_react@19.3.0_/node_modules/zustand/esm/vanilla.mjs"],"sourcesContent":["const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = (replace != null ? replace : typeof nextState !== \"object\" || nextState === null) ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const getInitialState = () => initialState;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const api = { setState, getState, getInitialState, subscribe };\n const initialState = state = createState(setState, getState, api);\n return api;\n};\nconst createStore = ((createState) => createState ? createStoreImpl(createState) : createStoreImpl);\n\nexport { createStore };\n"],"x_google_ignoreList":[0],"mappings":";AAAA,IAAM,KAAmB,MAAgB;CACvC,IAAI,GACE,oBAA4B,IAAI,IAAI,GACpC,KAAY,GAAS,MAAY;EACrC,IAAM,IAAY,OAAO,KAAY,aAAa,EAAQ,CAAK,IAAI;EACnE,IAAI,CAAC,OAAO,GAAG,GAAW,CAAK,GAAG;GAChC,IAAM,IAAgB;GAEtB,AADA,IAAS,MAA4B,OAAO,KAAc,aAAY,KAAsB,IAAY,OAAO,OAAO,CAAC,GAAG,GAAO,CAAS,GAC1I,EAAU,SAAS,MAAa,EAAS,GAAO,CAAa,CAAC;EAChE;CACF,GACM,UAAiB,GAMjB,IAAM;EAAE;EAAU;EAAU,uBALJ;EAKqB,YAJhC,OACjB,EAAU,IAAI,CAAQ,SACT,EAAU,OAAO,CAAQ;CAEqB,GACvD,IAAe,IAAQ,EAAY,GAAU,GAAU,CAAG;CAChE,OAAO;AACT,GACM,MAAgB,MAAgB,IAAc,EAAgB,CAAW,IAAI"}
1
+ {"version":3,"file":"vanilla.js","names":[],"sources":["../../../../node_modules/.pnpm/zustand@5.0.15_@types+react@19.3.0_immer@11.1.18_react@19.3.0_use-sync-external-store@1.7.0_react@19.3.0_/node_modules/zustand/esm/vanilla.mjs"],"sourcesContent":["const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = (replace != null ? replace : typeof nextState !== \"object\" || nextState === null) ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const getInitialState = () => initialState;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const api = { setState, getState, getInitialState, subscribe };\n const initialState = state = createState(setState, getState, api);\n return api;\n};\nconst createStore = ((createState) => createState ? createStoreImpl(createState) : createStoreImpl);\n\nexport { createStore };\n"],"x_google_ignoreList":[0],"mappings":";AAAA,IAAM,KAAmB,MAAgB;CACvC,IAAI,GACE,oBAA4B,IAAI,IAAI,GACpC,KAAY,GAAS,MAAY;EACrC,IAAM,IAAY,OAAO,KAAY,aAAa,EAAQ,CAAK,IAAI;EACnE,IAAI,CAAC,OAAO,GAAG,GAAW,CAAK,GAAG;GAChC,IAAM,IAAgB;GAEtB,AADA,IAAS,MAA4B,OAAO,KAAc,aAAY,KAAsB,IAAY,OAAO,OAAO,CAAC,GAAG,GAAO,CAAS,GAC1I,EAAU,SAAS,MAAa,EAAS,GAAO,CAAa,CAAC;EAChE;CACF,GACM,UAAiB,GAMjB,IAAM;EAAE;EAAU;EAAU,uBALJ;EAKqB,YAJhC,OACjB,EAAU,IAAI,CAAQ,SACT,EAAU,OAAO,CAAQ;CAEqB,GACvD,IAAe,IAAQ,EAAY,GAAU,GAAU,CAAG;CAChE,OAAO;AACT,GACM,MAAgB,MAAgB,IAAc,EAAgB,CAAW,IAAI"}
@@ -1,5 +1,5 @@
1
1
  import { appendErrors as e, get as t, set as n } from "react-hook-form";
2
- //#region ../../node_modules/.pnpm/@hookform+resolvers@5.9.1_@sinclair+typebox@0.34.49_@standard-schema+spec@1.1.0_ajv@8.2_d65c61737e3f2f7870713464959ae2bf/node_modules/@hookform/resolvers/dist/resolvers.mjs
2
+ //#region ../../node_modules/.pnpm/@hookform+resolvers@5.9.1_ajv@8.20.0_react-hook-form@7.88.0_react@19.3.0__yup@1.7.1_zod@4.6.5/node_modules/@hookform/resolvers/dist/resolvers.mjs
3
3
  var r = (e, n, r) => {
4
4
  if (e && "reportValidity" in e) {
5
5
  let i = t(r, n);
@@ -29,7 +29,7 @@ function s(e) {
29
29
  return e.replace(/\[(\d+)]/g, ".$1").replace(/[[\]]/g, "");
30
30
  }
31
31
  //#endregion
32
- //#region ../../node_modules/.pnpm/@hookform+resolvers@5.9.1_@sinclair+typebox@0.34.49_@standard-schema+spec@1.1.0_ajv@8.2_d65c61737e3f2f7870713464959ae2bf/node_modules/@hookform/resolvers/yup/dist/yup.mjs
32
+ //#region ../../node_modules/.pnpm/@hookform+resolvers@5.9.1_ajv@8.20.0_react-hook-form@7.88.0_react@19.3.0__yup@1.7.1_zod@4.6.5/node_modules/@hookform/resolvers/yup/dist/yup.mjs
33
33
  function c(t, n, r) {
34
34
  return r === void 0 && (r = {}), function(o, s, c) {
35
35
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"yup.js","names":["e","o","r","s","e","t","r"],"sources":["../../../../node_modules/.pnpm/@hookform+resolvers@5.9.1_@sinclair+typebox@0.34.49_@standard-schema+spec@1.1.0_ajv@8.2_d65c61737e3f2f7870713464959ae2bf/node_modules/@hookform/resolvers/dist/resolvers.mjs","../../../../node_modules/.pnpm/@hookform+resolvers@5.9.1_@sinclair+typebox@0.34.49_@standard-schema+spec@1.1.0_ajv@8.2_d65c61737e3f2f7870713464959ae2bf/node_modules/@hookform/resolvers/yup/dist/yup.mjs"],"sourcesContent":["import{get as e,set as r}from\"react-hook-form\";const t=(r,t,s)=>{if(r&&\"reportValidity\"in r){const o=e(s,t);r.setCustomValidity(o&&o.message||\"\"),r.reportValidity()}},s=(e,r)=>{for(const s in r.fields){const o=r.fields[s];o&&o.ref&&\"reportValidity\"in o.ref?t(o.ref,s,e):o&&o.refs&&o.refs.forEach(r=>t(r,s,e))}},o=(t,o)=>{o.shouldUseNativeValidation&&s(t,o);const n={};for(const s in t){const f=e(o.fields,s),c=Object.assign(t[s]||{},{ref:f&&f.refs?f.refs[0]:f&&f.ref});if(i(o.names||Object.keys(t),s)){const t=Object.assign({},e(n,s));r(t,\"root\",c),r(n,s,t)}else r(n,s,c)}return n},i=(e,r)=>{const t=n(r).replace(/[.*+?^${}()|\\\\]/g,\"\\\\$&\");return e.some(e=>n(e).match(`^${t}\\\\.\\\\d+`))};function n(e){return e.replace(/\\[(\\d+)]/g,\".$1\").replace(/[[\\]]/g,\"\")}export{o as toNestErrors,s as validateFieldsNatively};\n//# sourceMappingURL=resolvers.mjs.map\n","import{validateFieldsNatively as e,toNestErrors as t}from\"@hookform/resolvers\";import{appendErrors as r}from\"react-hook-form\";function o(o,n,a){return void 0===a&&(a={}),function(s,i,c){try{return Promise.resolve(function(t,r){try{var u=(null!=n&&n.context&&\"development\"===process.env.NODE_ENV&&console.warn(\"You should not used the yup options context. Please, use the 'useForm' context object instead\"),Promise.resolve(o[\"sync\"===a.mode?\"validateSync\":\"validate\"](s,Object.assign({abortEarly:!1},n,{context:i}))).then(function(t){return c.shouldUseNativeValidation&&e({},c),{values:a.raw?Object.assign({},s):t,errors:{}}}))}catch(e){return r(e)}return u&&u.then?u.then(void 0,r):u}(0,function(e){if(!e.inner)throw e;return{values:{},errors:t((o=e,n=!c.shouldUseNativeValidation&&\"all\"===c.criteriaMode,(o.inner||[]).reduce(function(e,t){if(e[t.path]||(e[t.path]={message:t.message,type:t.type}),n){var o=e[t.path].types,a=o&&o[t.type];e[t.path]=r(t.path,n,e,t.type,a?[].concat(a,t.message):t.message)}return e},Object.create(null))),c)};var o,n}))}catch(e){return Promise.reject(e)}}}export{o as yupResolver};\n//# sourceMappingURL=yup.module.js.map\n"],"x_google_ignoreList":[0,1],"mappings":"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"}
1
+ {"version":3,"file":"yup.js","names":["e","o","r","s","e","t","r"],"sources":["../../../../node_modules/.pnpm/@hookform+resolvers@5.9.1_ajv@8.20.0_react-hook-form@7.88.0_react@19.3.0__yup@1.7.1_zod@4.6.5/node_modules/@hookform/resolvers/dist/resolvers.mjs","../../../../node_modules/.pnpm/@hookform+resolvers@5.9.1_ajv@8.20.0_react-hook-form@7.88.0_react@19.3.0__yup@1.7.1_zod@4.6.5/node_modules/@hookform/resolvers/yup/dist/yup.mjs"],"sourcesContent":["import{get as e,set as r}from\"react-hook-form\";const t=(r,t,s)=>{if(r&&\"reportValidity\"in r){const o=e(s,t);r.setCustomValidity(o&&o.message||\"\"),r.reportValidity()}},s=(e,r)=>{for(const s in r.fields){const o=r.fields[s];o&&o.ref&&\"reportValidity\"in o.ref?t(o.ref,s,e):o&&o.refs&&o.refs.forEach(r=>t(r,s,e))}},o=(t,o)=>{o.shouldUseNativeValidation&&s(t,o);const n={};for(const s in t){const f=e(o.fields,s),c=Object.assign(t[s]||{},{ref:f&&f.refs?f.refs[0]:f&&f.ref});if(i(o.names||Object.keys(t),s)){const t=Object.assign({},e(n,s));r(t,\"root\",c),r(n,s,t)}else r(n,s,c)}return n},i=(e,r)=>{const t=n(r).replace(/[.*+?^${}()|\\\\]/g,\"\\\\$&\");return e.some(e=>n(e).match(`^${t}\\\\.\\\\d+`))};function n(e){return e.replace(/\\[(\\d+)]/g,\".$1\").replace(/[[\\]]/g,\"\")}export{o as toNestErrors,s as validateFieldsNatively};\n//# sourceMappingURL=resolvers.mjs.map\n","import{validateFieldsNatively as e,toNestErrors as t}from\"@hookform/resolvers\";import{appendErrors as r}from\"react-hook-form\";function o(o,n,a){return void 0===a&&(a={}),function(s,i,c){try{return Promise.resolve(function(t,r){try{var u=(null!=n&&n.context&&\"development\"===process.env.NODE_ENV&&console.warn(\"You should not used the yup options context. Please, use the 'useForm' context object instead\"),Promise.resolve(o[\"sync\"===a.mode?\"validateSync\":\"validate\"](s,Object.assign({abortEarly:!1},n,{context:i}))).then(function(t){return c.shouldUseNativeValidation&&e({},c),{values:a.raw?Object.assign({},s):t,errors:{}}}))}catch(e){return r(e)}return u&&u.then?u.then(void 0,r):u}(0,function(e){if(!e.inner)throw e;return{values:{},errors:t((o=e,n=!c.shouldUseNativeValidation&&\"all\"===c.criteriaMode,(o.inner||[]).reduce(function(e,t){if(e[t.path]||(e[t.path]={message:t.message,type:t.type}),n){var o=e[t.path].types,a=o&&o[t.type];e[t.path]=r(t.path,n,e,t.type,a?[].concat(a,t.message):t.message)}return e},Object.create(null))),c)};var o,n}))}catch(e){return Promise.reject(e)}}}export{o as yupResolver};\n//# sourceMappingURL=yup.module.js.map\n"],"x_google_ignoreList":[0,1],"mappings":"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"}
@@ -14,7 +14,7 @@ var v = ({ config: v, getExtraItems: y, onMenuClose: b }) => {
14
14
  let { t: x } = d(), S = s(n), C = t(S, (e) => e.selectedIds), w = t(S, (e) => e.setSelectedIds), T = u(() => v?.parseIdsFromAnchorElement ? v.parseIdsFromAnchorElement(v.anchorElement) : v?.caseIds ? v.caseIds : [], [v]);
15
15
  l(() => {
16
16
  let t = v?.mouseEvent;
17
- if (!(!t || !t.metaKey && !t.ctrlKey)) {
17
+ if (t && (t.metaKey || t.ctrlKey)) {
18
18
  if (e.canAddToSelection(T, C)) {
19
19
  w(e.addComponentCaseIdsToSelection(T, C)), b();
20
20
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../../src/components/ui/ContextMenu/ContextMenu.tsx"],"sourcesContent":["import type { PopoverPosition } from '@mui/material';\nimport {\n ListItemIcon,\n ListItemText,\n Menu,\n MenuItem,\n} from '@mui/material';\nimport PlaylistAddCheckIcon from '@mui/icons-material/PlaylistAddCheck';\nimport PlaylistAddIcon from '@mui/icons-material/PlaylistAdd';\nimport PlaylistRemoveIcon from '@mui/icons-material/PlaylistRemove';\nimport PlaylistPlayIcon from '@mui/icons-material/PlaylistPlay';\nimport type { ReactElement } from 'react';\nimport {\n use,\n useCallback,\n useEffect,\n useMemo,\n} from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useStore } from 'zustand';\n\nimport { DashboardStoreContext } from '../../../stores/dashboardStore';\nimport { CaseSelectionUtil } from '../../../utils/CaseSelectionUtil';\n\nexport type ContextMenuConfigWithAnchor = {\n anchorElement?: Element;\n mouseEvent?: MouseEvent;\n parseIdsFromAnchorElement?: (element: Element) => string[];\n};\n\nexport type ContextMenuConfigWithPosition = {\n caseIds?: string[];\n mouseEvent?: MouseEvent;\n position?: PopoverPosition;\n};\n\nexport type ContextMenuProps = {\n readonly config: ContextMenuConfig;\n readonly getExtraItems?: (onMenuClose?: () => void) => ReactElement;\n readonly onMenuClose: () => void;\n};\n\ntype ContextMenuConfig = ContextMenuConfigWithAnchor & ContextMenuConfigWithPosition;\n\nexport const ContextMenu = ({ config, getExtraItems, onMenuClose }: ContextMenuProps) => {\n const { t } = useTranslation();\n const dashboardStore = use(DashboardStoreContext);\n const selectedIds = useStore(dashboardStore, (state) => state.selectedIds);\n const setSelectedIds = useStore(dashboardStore, (state) => state.setSelectedIds);\n\n const componentCaseIds = useMemo(() => {\n if (config?.parseIdsFromAnchorElement) {\n return config.parseIdsFromAnchorElement(config.anchorElement);\n }\n if (config?.caseIds) {\n return config.caseIds;\n }\n return [];\n }, [config]);\n\n useEffect(() => {\n const mouseEvent = config?.mouseEvent;\n if (!mouseEvent || (!mouseEvent.metaKey && !mouseEvent.ctrlKey)) {\n return;\n }\n if (CaseSelectionUtil.canAddToSelection(componentCaseIds, selectedIds)) {\n setSelectedIds(CaseSelectionUtil.addComponentCaseIdsToSelection(componentCaseIds, selectedIds));\n onMenuClose();\n return;\n }\n if (CaseSelectionUtil.canRemoveFromSelection(componentCaseIds, selectedIds)) {\n setSelectedIds(CaseSelectionUtil.removeComponentCaseIdsFromSelection(componentCaseIds, selectedIds));\n onMenuClose();\n return;\n }\n }, [componentCaseIds, config?.mouseEvent, selectedIds, setSelectedIds, onMenuClose]);\n\n\n const onMenuSelectClick = useCallback(() => {\n setSelectedIds(componentCaseIds);\n onMenuClose();\n }, [componentCaseIds, onMenuClose, setSelectedIds]);\n\n const onAddToSelectionMenuItemClick = useCallback(() => {\n setSelectedIds(CaseSelectionUtil.addComponentCaseIdsToSelection(componentCaseIds, selectedIds));\n onMenuClose();\n }, [componentCaseIds, onMenuClose, setSelectedIds, selectedIds]);\n\n const onRemoveFromSelectionMenuItemClick = useCallback(() => {\n setSelectedIds(CaseSelectionUtil.removeComponentCaseIdsFromSelection(componentCaseIds, selectedIds));\n onMenuClose();\n }, [componentCaseIds, onMenuClose, setSelectedIds, selectedIds]);\n\n const onRefineSelectionMenuItemClick = useCallback(() => {\n setSelectedIds(CaseSelectionUtil.refineSelectionWithComponentCaseIds(componentCaseIds, selectedIds));\n onMenuClose();\n }, [componentCaseIds, onMenuClose, setSelectedIds, selectedIds]);\n\n const extraItems = getExtraItems ? getExtraItems(onMenuClose) : null;\n\n return (\n <Menu\n anchorEl={config?.anchorElement}\n anchorPosition={config?.position}\n anchorReference={config?.anchorElement ? 'anchorEl' : 'anchorPosition'}\n onClose={onMenuClose}\n open={!!config}\n >\n {extraItems}\n <MenuItem\n disabled={componentCaseIds.length === 0}\n onClick={onMenuSelectClick}\n >\n <ListItemIcon>\n <PlaylistAddCheckIcon fontSize={'small'} />\n </ListItemIcon>\n <ListItemText>\n {t`Select rows`}\n </ListItemText>\n </MenuItem>\n <MenuItem\n disabled={!CaseSelectionUtil.canAddToSelection(componentCaseIds, selectedIds)}\n onClick={onAddToSelectionMenuItemClick}\n >\n <ListItemIcon>\n <PlaylistAddIcon fontSize={'small'} />\n </ListItemIcon>\n <ListItemText>\n {t`Add to selected rows`}\n </ListItemText>\n </MenuItem>\n <MenuItem\n disabled={!CaseSelectionUtil.canRemoveFromSelection(componentCaseIds, selectedIds)}\n onClick={onRemoveFromSelectionMenuItemClick}\n >\n <ListItemIcon>\n <PlaylistRemoveIcon fontSize={'small'} />\n </ListItemIcon>\n <ListItemText>\n {t`Remove from selected rows`}\n </ListItemText>\n </MenuItem>\n <MenuItem\n disabled={!CaseSelectionUtil.canRefineSelection(componentCaseIds, selectedIds)}\n onClick={onRefineSelectionMenuItemClick}\n >\n <ListItemIcon>\n <PlaylistPlayIcon fontSize={'small'} />\n </ListItemIcon>\n <ListItemText>\n {t`Refine selected rows (intersect)`}\n </ListItemText>\n </MenuItem>\n </Menu>\n );\n};\n"],"mappings":";;;;;;;;;;;;AA4CA,IAAa,KAAe,EAAE,WAAQ,kBAAe,qBAAoC;CACvF,IAAM,EAAE,SAAM,EAAe,GACvB,IAAiB,EAAI,CAAqB,GAC1C,IAAc,EAAS,IAAiB,MAAU,EAAM,WAAW,GACnE,IAAiB,EAAS,IAAiB,MAAU,EAAM,cAAc,GAEzE,IAAmB,QACnB,GAAQ,4BACH,EAAO,0BAA0B,EAAO,aAAa,IAE1D,GAAQ,UACH,EAAO,UAET,CAAC,GACP,CAAC,CAAM,CAAC;CAEX,QAAgB;EACd,IAAM,IAAa,GAAQ;EACvB,OAAC,KAAe,CAAC,EAAW,WAAW,CAAC,EAAW,UAGvD;OAAI,EAAkB,kBAAkB,GAAkB,CAAW,GAAG;IAEtE,AADA,EAAe,EAAkB,+BAA+B,GAAkB,CAAW,CAAC,GAC9F,EAAY;IACZ;GACF;GACA,IAAI,EAAkB,uBAAuB,GAAkB,CAAW,GAAG;IAE3E,AADA,EAAe,EAAkB,oCAAoC,GAAkB,CAAW,CAAC,GACnG,EAAY;IACZ;GACF;EALA;CAMF,GAAG;EAAC;EAAkB,GAAQ;EAAY;EAAa;EAAgB;CAAW,CAAC;CAGnF,IAAM,IAAoB,QAAkB;EAE1C,AADA,EAAe,CAAgB,GAC/B,EAAY;CACd,GAAG;EAAC;EAAkB;EAAa;CAAc,CAAC,GAE5C,IAAgC,QAAkB;EAEtD,AADA,EAAe,EAAkB,+BAA+B,GAAkB,CAAW,CAAC,GAC9F,EAAY;CACd,GAAG;EAAC;EAAkB;EAAa;EAAgB;CAAW,CAAC,GAEzD,IAAqC,QAAkB;EAE3D,AADA,EAAe,EAAkB,oCAAoC,GAAkB,CAAW,CAAC,GACnG,EAAY;CACd,GAAG;EAAC;EAAkB;EAAa;EAAgB;CAAW,CAAC,GAEzD,IAAiC,QAAkB;EAEvD,AADA,EAAe,EAAkB,oCAAoC,GAAkB,CAAW,CAAC,GACnG,EAAY;CACd,GAAG;EAAC;EAAkB;EAAa;EAAgB;CAAW,CAAC,GAEzD,IAAa,IAAgB,EAAc,CAAW,IAAI;CAEhE,OACE,kBAAC,GAAD;EACE,UAAU,GAAQ;EAClB,gBAAgB,GAAQ;EACxB,iBAAiB,GAAQ,gBAAgB,aAAa;EACtD,SAAS;EACT,MAAM,CAAC,CAAC;EALV,UAAA;GAOG;GACD,kBAAC,GAAD;IACE,UAAU,EAAiB,WAAW;IACtC,SAAS;IAFX,UAAA,CAIE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD,EAAsB,UAAU,QAAU,CAAA,EAC9B,CAAA,GACd,kBAAC,GAAD,EAAA,UACG,CAAC,cACU,CAAA,CACN;;GACV,kBAAC,GAAD;IACE,UAAU,CAAC,EAAkB,kBAAkB,GAAkB,CAAW;IAC5E,SAAS;IAFX,UAAA,CAIE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD,EAAiB,UAAU,QAAU,CAAA,EACzB,CAAA,GACd,kBAAC,GAAD,EAAA,UACG,CAAC,uBACU,CAAA,CACN;;GACV,kBAAC,GAAD;IACE,UAAU,CAAC,EAAkB,uBAAuB,GAAkB,CAAW;IACjF,SAAS;IAFX,UAAA,CAIE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD,EAAoB,UAAU,QAAU,CAAA,EAC5B,CAAA,GACd,kBAAC,GAAD,EAAA,UACG,CAAC,4BACU,CAAA,CACN;;GACV,kBAAC,GAAD;IACE,UAAU,CAAC,EAAkB,mBAAmB,GAAkB,CAAW;IAC7E,SAAS;IAFX,UAAA,CAIE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD,EAAkB,UAAU,QAAU,CAAA,EAC1B,CAAA,GACd,kBAAC,GAAD,EAAA,UACG,CAAC,mCACU,CAAA,CACN;;EACN;;AAEV"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../src/components/ui/ContextMenu/ContextMenu.tsx"],"sourcesContent":["import type { PopoverPosition } from '@mui/material';\nimport {\n ListItemIcon,\n ListItemText,\n Menu,\n MenuItem,\n} from '@mui/material';\nimport PlaylistAddCheckIcon from '@mui/icons-material/PlaylistAddCheck';\nimport PlaylistAddIcon from '@mui/icons-material/PlaylistAdd';\nimport PlaylistRemoveIcon from '@mui/icons-material/PlaylistRemove';\nimport PlaylistPlayIcon from '@mui/icons-material/PlaylistPlay';\nimport type { ReactElement } from 'react';\nimport {\n use,\n useCallback,\n useEffect,\n useMemo,\n} from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useStore } from 'zustand';\n\nimport { DashboardStoreContext } from '../../../stores/dashboardStore';\nimport { CaseSelectionUtil } from '../../../utils/CaseSelectionUtil';\n\nexport type ContextMenuConfigWithAnchor = {\n anchorElement?: Element;\n mouseEvent?: MouseEvent;\n parseIdsFromAnchorElement?: (element: Element) => string[];\n};\n\nexport type ContextMenuConfigWithPosition = {\n caseIds?: string[];\n mouseEvent?: MouseEvent;\n position?: PopoverPosition;\n};\n\nexport type ContextMenuProps = {\n readonly config: ContextMenuConfig;\n readonly getExtraItems?: (onMenuClose?: () => void) => ReactElement;\n readonly onMenuClose: () => void;\n};\n\ntype ContextMenuConfig = ContextMenuConfigWithAnchor & ContextMenuConfigWithPosition;\n\nexport const ContextMenu = ({ config, getExtraItems, onMenuClose }: ContextMenuProps) => {\n const { t } = useTranslation();\n const dashboardStore = use(DashboardStoreContext);\n const selectedIds = useStore(dashboardStore, (state) => state.selectedIds);\n const setSelectedIds = useStore(dashboardStore, (state) => state.setSelectedIds);\n\n const componentCaseIds = useMemo(() => {\n if (config?.parseIdsFromAnchorElement) {\n return config.parseIdsFromAnchorElement(config.anchorElement);\n }\n if (config?.caseIds) {\n return config.caseIds;\n }\n return [];\n }, [config]);\n\n useEffect(() => {\n const mouseEvent = config?.mouseEvent;\n if (!mouseEvent || (!mouseEvent.metaKey && !mouseEvent.ctrlKey)) {\n return;\n }\n if (CaseSelectionUtil.canAddToSelection(componentCaseIds, selectedIds)) {\n setSelectedIds(CaseSelectionUtil.addComponentCaseIdsToSelection(componentCaseIds, selectedIds));\n onMenuClose();\n return;\n }\n if (CaseSelectionUtil.canRemoveFromSelection(componentCaseIds, selectedIds)) {\n setSelectedIds(CaseSelectionUtil.removeComponentCaseIdsFromSelection(componentCaseIds, selectedIds));\n onMenuClose();\n return;\n }\n }, [componentCaseIds, config?.mouseEvent, selectedIds, setSelectedIds, onMenuClose]);\n\n\n const onMenuSelectClick = useCallback(() => {\n setSelectedIds(componentCaseIds);\n onMenuClose();\n }, [componentCaseIds, onMenuClose, setSelectedIds]);\n\n const onAddToSelectionMenuItemClick = useCallback(() => {\n setSelectedIds(CaseSelectionUtil.addComponentCaseIdsToSelection(componentCaseIds, selectedIds));\n onMenuClose();\n }, [componentCaseIds, onMenuClose, setSelectedIds, selectedIds]);\n\n const onRemoveFromSelectionMenuItemClick = useCallback(() => {\n setSelectedIds(CaseSelectionUtil.removeComponentCaseIdsFromSelection(componentCaseIds, selectedIds));\n onMenuClose();\n }, [componentCaseIds, onMenuClose, setSelectedIds, selectedIds]);\n\n const onRefineSelectionMenuItemClick = useCallback(() => {\n setSelectedIds(CaseSelectionUtil.refineSelectionWithComponentCaseIds(componentCaseIds, selectedIds));\n onMenuClose();\n }, [componentCaseIds, onMenuClose, setSelectedIds, selectedIds]);\n\n const extraItems = getExtraItems ? getExtraItems(onMenuClose) : null;\n\n return (\n <Menu\n anchorEl={config?.anchorElement}\n anchorPosition={config?.position}\n anchorReference={config?.anchorElement ? 'anchorEl' : 'anchorPosition'}\n onClose={onMenuClose}\n open={!!config}\n >\n {extraItems}\n <MenuItem\n disabled={componentCaseIds.length === 0}\n onClick={onMenuSelectClick}\n >\n <ListItemIcon>\n <PlaylistAddCheckIcon fontSize={'small'} />\n </ListItemIcon>\n <ListItemText>\n {t`Select rows`}\n </ListItemText>\n </MenuItem>\n <MenuItem\n disabled={!CaseSelectionUtil.canAddToSelection(componentCaseIds, selectedIds)}\n onClick={onAddToSelectionMenuItemClick}\n >\n <ListItemIcon>\n <PlaylistAddIcon fontSize={'small'} />\n </ListItemIcon>\n <ListItemText>\n {t`Add to selected rows`}\n </ListItemText>\n </MenuItem>\n <MenuItem\n disabled={!CaseSelectionUtil.canRemoveFromSelection(componentCaseIds, selectedIds)}\n onClick={onRemoveFromSelectionMenuItemClick}\n >\n <ListItemIcon>\n <PlaylistRemoveIcon fontSize={'small'} />\n </ListItemIcon>\n <ListItemText>\n {t`Remove from selected rows`}\n </ListItemText>\n </MenuItem>\n <MenuItem\n disabled={!CaseSelectionUtil.canRefineSelection(componentCaseIds, selectedIds)}\n onClick={onRefineSelectionMenuItemClick}\n >\n <ListItemIcon>\n <PlaylistPlayIcon fontSize={'small'} />\n </ListItemIcon>\n <ListItemText>\n {t`Refine selected rows (intersect)`}\n </ListItemText>\n </MenuItem>\n </Menu>\n );\n};\n"],"mappings":";;;;;;;;;;;;AA4CA,IAAa,KAAe,EAAE,WAAQ,kBAAe,qBAAoC;CACvF,IAAM,EAAE,SAAM,EAAe,GACvB,IAAiB,EAAI,CAAqB,GAC1C,IAAc,EAAS,IAAiB,MAAU,EAAM,WAAW,GACnE,IAAiB,EAAS,IAAiB,MAAU,EAAM,cAAc,GAEzE,IAAmB,QACnB,GAAQ,4BACH,EAAO,0BAA0B,EAAO,aAAa,IAE1D,GAAQ,UACH,EAAO,UAET,CAAC,GACP,CAAC,CAAM,CAAC;CAEX,QAAgB;EACd,IAAM,IAAa,GAAQ;EACvB,IAAC,MAAgB,EAAW,WAAY,EAAW,UAGvD;OAAI,EAAkB,kBAAkB,GAAkB,CAAW,GAAG;IAEtE,AADA,EAAe,EAAkB,+BAA+B,GAAkB,CAAW,CAAC,GAC9F,EAAY;IACZ;GACF;GACA,IAAI,EAAkB,uBAAuB,GAAkB,CAAW,GAAG;IAE3E,AADA,EAAe,EAAkB,oCAAoC,GAAkB,CAAW,CAAC,GACnG,EAAY;IACZ;GACF;EALA;CAMF,GAAG;EAAC;EAAkB,GAAQ;EAAY;EAAa;EAAgB;CAAW,CAAC;CAGnF,IAAM,IAAoB,QAAkB;EAE1C,AADA,EAAe,CAAgB,GAC/B,EAAY;CACd,GAAG;EAAC;EAAkB;EAAa;CAAc,CAAC,GAE5C,IAAgC,QAAkB;EAEtD,AADA,EAAe,EAAkB,+BAA+B,GAAkB,CAAW,CAAC,GAC9F,EAAY;CACd,GAAG;EAAC;EAAkB;EAAa;EAAgB;CAAW,CAAC,GAEzD,IAAqC,QAAkB;EAE3D,AADA,EAAe,EAAkB,oCAAoC,GAAkB,CAAW,CAAC,GACnG,EAAY;CACd,GAAG;EAAC;EAAkB;EAAa;EAAgB;CAAW,CAAC,GAEzD,IAAiC,QAAkB;EAEvD,AADA,EAAe,EAAkB,oCAAoC,GAAkB,CAAW,CAAC,GACnG,EAAY;CACd,GAAG;EAAC;EAAkB;EAAa;EAAgB;CAAW,CAAC,GAEzD,IAAa,IAAgB,EAAc,CAAW,IAAI;CAEhE,OACE,kBAAC,GAAD;EACE,UAAU,GAAQ;EAClB,gBAAgB,GAAQ;EACxB,iBAAiB,GAAQ,gBAAgB,aAAa;EACtD,SAAS;EACT,MAAM,CAAC,CAAC;EALV,UAAA;GAOG;GACD,kBAAC,GAAD;IACE,UAAU,EAAiB,WAAW;IACtC,SAAS;IAFX,UAAA,CAIE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD,EAAsB,UAAU,QAAU,CAAA,EAC9B,CAAA,GACd,kBAAC,GAAD,EAAA,UACG,CAAC,cACU,CAAA,CACN;;GACV,kBAAC,GAAD;IACE,UAAU,CAAC,EAAkB,kBAAkB,GAAkB,CAAW;IAC5E,SAAS;IAFX,UAAA,CAIE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD,EAAiB,UAAU,QAAU,CAAA,EACzB,CAAA,GACd,kBAAC,GAAD,EAAA,UACG,CAAC,uBACU,CAAA,CACN;;GACV,kBAAC,GAAD;IACE,UAAU,CAAC,EAAkB,uBAAuB,GAAkB,CAAW;IACjF,SAAS;IAFX,UAAA,CAIE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD,EAAoB,UAAU,QAAU,CAAA,EAC5B,CAAA,GACd,kBAAC,GAAD,EAAA,UACG,CAAC,4BACU,CAAA,CACN;;GACV,kBAAC,GAAD;IACE,UAAU,CAAC,EAAkB,mBAAmB,GAAkB,CAAW;IAC7E,SAAS;IAFX,UAAA,CAIE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD,EAAkB,UAAU,QAAU,CAAA,EAC1B,CAAA,GACd,kBAAC,GAAD,EAAA,UACG,CAAC,mCACU,CAAA,CACN;;EACN;;AAEV"}
@@ -83,7 +83,7 @@ var D = S(({ onActionsChange: S, onClose: D, onTitleChange: O, openProps: k }) =
83
83
  k.completeCaseType,
84
84
  B
85
85
  ]), _(() => {
86
- N.isLoading || !q?.length || q?.length === 1 && B("create_in_data_collection_id", q[0].value);
86
+ !N.isLoading && q?.length && q?.length === 1 && B("create_in_data_collection_id", q[0].value);
87
87
  }, [
88
88
  q,
89
89
  N.isLoading,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../../src/components/ui/CreateEventDialog/CreateEventDialog.tsx"],"sourcesContent":["import {\n useCallback,\n useEffect,\n useId,\n useMemo,\n} from 'react';\nimport type { ReactElement } from 'react';\nimport SaveIcon from '@mui/icons-material/Save';\nimport { useTranslation } from 'react-i18next';\nimport {\n array,\n boolean,\n object,\n string,\n} from 'yup';\nimport {\n useForm,\n useWatch,\n} from 'react-hook-form';\nimport type { Resolver } from 'react-hook-form';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport {\n Alert,\n Box,\n} from '@mui/material';\nimport type {\n CaseDbCase,\n CaseDbCaseSet,\n CaseDbCompleteCaseType,\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 { LoadableUtil } from '@gen-epix/ui-client-common/utils/LoadableUtil';\nimport { QueryClientService } from '@gen-epix/ui-client-common/classes/services/QueryClientService';\nimport { ResponseHandler } from '@gen-epix/ui-client-common/components/ui/ResponseHandler';\nimport { useCreateMutation } from '@gen-epix/ui-client-common/hooks/useCreateMutation';\nimport { useItemQuery } from '@gen-epix/ui-client-common/hooks/useItemQuery';\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 { GenericForm } from '@gen-epix/ui-core-form/components/helpers/GenericForm';\nimport type {\n AutoCompleteOption,\n FormFieldDefinition,\n} from '@gen-epix/ui-core-form/models/form';\nimport { FORM_FIELD_DEFINITION_TYPE } from '@gen-epix/ui-core-form/models/form';\nimport { SchemaUtil } from '@gen-epix/ui-core-form/utils/SchemaUtil';\n\nimport { EventBusService } from '../../../classes/services/EventBusService';\nimport { useCaseSetCategoryOptionsQuery } from '../../../dataHooks/useCaseSetCategoriesQuery';\nimport { useCaseSetStatusOptionsQuery } from '../../../dataHooks/useCaseSetStatusesQuery';\nimport { useCaseTypeOptionsQuery } from '../../../dataHooks/useCaseTypesQuery';\nimport { useDataCollectionOptionsQuery } from '../../../dataHooks/useDataCollectionsQuery';\nimport { CaseUtil } from '../../../utils/CaseUtil';\nimport { CasesAlreadyInCaseSetWarning } from '../CasesAlreadyInCaseSetWarning';\nimport { CASEDB_QUERY_KEY } from '../../../constants/query';\n\nimport { CreateEventDialogSuccessNotificationMessage } from './CreateEventDialogSuccessNotificationMessage';\n\nexport interface CreateEventDialogOpenProps {\n readonly completeCaseType?: CaseDbCompleteCaseType;\n readonly rows?: CaseDbCase[];\n}\n\nexport interface CreateEventDialogProps extends WithDialogRenderProps<CreateEventDialogOpenProps> {\n}\n\nexport type CreateEventDialogRefMethods = WithDialogRefMethods<CreateEventDialogProps, CreateEventDialogOpenProps>;\n\ntype FormFields = {\n case_set_category_id: string;\n case_set_status_id: string;\n case_type_id: string;\n code: string;\n create_in_data_collection_id: string;\n description: string;\n name: string;\n share_in_data_collection_ids: string[];\n shouldApplySharingToCases: boolean;\n};\n\nexport const CreateEventDialog = withDialog<CreateEventDialogProps, CreateEventDialogOpenProps>((\n {\n onActionsChange,\n onClose,\n onTitleChange,\n openProps,\n }: CreateEventDialogProps,\n): ReactElement => {\n const caseTypeOptionsQuery = useCaseTypeOptionsQuery();\n const caseSetCategoryOptionsQuery = useCaseSetCategoryOptionsQuery();\n const caseSetStatusOptionsQuery = useCaseSetStatusOptionsQuery();\n const dataCollectionOptionsQuery = useDataCollectionOptionsQuery();\n const { t } = useTranslation();\n const formId = useId();\n\n const schema = useMemo(() => object<FormFields>().shape({\n case_set_category_id: string().uuid4().required(),\n case_set_status_id: string().uuid4().required(),\n case_type_id: string().uuid4().required(),\n code: SchemaUtil.code,\n create_in_data_collection_id: string().uuid4().required(),\n description: SchemaUtil.description.required(),\n name: SchemaUtil.name,\n share_in_data_collection_ids: array().of(string().uuid4()),\n shouldApplySharingToCases: boolean().required(),\n }), []);\n\n const formMethods = useForm<FormFields>({\n resolver: yupResolver(schema) as Resolver<FormFields>,\n values: {\n case_set_category_id: null,\n case_set_status_id: null,\n case_type_id: openProps.completeCaseType?.id ?? null,\n code: '',\n create_in_data_collection_id: null,\n description: '',\n name: openProps.completeCaseType ? t('New {{eventName}} event', { eventName: openProps.completeCaseType.name }) : '',\n share_in_data_collection_ids: [],\n shouldApplySharingToCases: true,\n },\n });\n const { control, handleSubmit, setValue } = formMethods;\n\n const { case_type_id: userSelectedCaseTypeId, create_in_data_collection_id: createdInDataCollectionId, share_in_data_collection_ids: sharedInDataCollectionIds } = useWatch({ control });\n\n const sanitizedCompleteCaseTypeId = openProps.completeCaseType?.id ?? userSelectedCaseTypeId;\n\n const { data: loadedCompleteCaseType, error: completeCaseTypeError, isLoading: isCompleteCaseTypeLoading } = useItemQuery({\n baseQueryKey: CASEDB_QUERY_KEY.COMPLETE_CASE_TYPES,\n itemId: sanitizedCompleteCaseTypeId,\n useQueryOptions: {\n enabled: !openProps.completeCaseType && !!sanitizedCompleteCaseTypeId,\n queryFn: async ({ signal }) => {\n return (await CaseDbCaseApi.getInstance().completeCaseTypesGetOne(sanitizedCompleteCaseTypeId, { signal })).data;\n },\n },\n });\n\n const completeCaseType = openProps.completeCaseType ?? loadedCompleteCaseType;\n\n const createInDataCollectionOptions = useMemo<AutoCompleteOption[]>(() => {\n if (!completeCaseType || !dataCollectionOptionsQuery.options?.length) {\n return [];\n }\n return dataCollectionOptionsQuery.options.filter(option => {\n const dataCollectionId = option.value;\n return completeCaseType.case_type_access_abacs[dataCollectionId]?.is_private && completeCaseType.case_type_access_abacs[dataCollectionId]?.add_case_set;\n });\n }, [completeCaseType, dataCollectionOptionsQuery.options]);\n\n const shareInDataCollectionOptions = useMemo<AutoCompleteOption[]>(() => {\n if (!completeCaseType) {\n return [];\n }\n return dataCollectionOptionsQuery.options.filter(option => {\n const dataCollectionId = option.value;\n return createdInDataCollectionId !== dataCollectionId && completeCaseType.case_type_access_abacs[dataCollectionId]?.add_case_set;\n });\n }, [completeCaseType, createdInDataCollectionId, dataCollectionOptionsQuery.options]);\n\n useEffect(() => {\n // Validate if the createdInDataCollectionId is in the shareInDataCollectionIds\n // If it is, remove it from the shareInDataCollectionIds\n if (sharedInDataCollectionIds?.length && sharedInDataCollectionIds.includes(createdInDataCollectionId)) {\n setValue('share_in_data_collection_ids', sharedInDataCollectionIds.filter(id => id !== createdInDataCollectionId));\n }\n }, [createdInDataCollectionId, setValue, sharedInDataCollectionIds]);\n\n useEffect(() => {\n if (openProps.completeCaseType) {\n return;\n }\n setValue('create_in_data_collection_id', null);\n setValue('share_in_data_collection_ids', []);\n }, [completeCaseType, openProps.completeCaseType, setValue]);\n\n useEffect(() => {\n if (dataCollectionOptionsQuery.isLoading || !createInDataCollectionOptions?.length) {\n return;\n }\n\n if (createInDataCollectionOptions?.length === 1) {\n setValue('create_in_data_collection_id', createInDataCollectionOptions[0].value as string);\n }\n }, [createInDataCollectionOptions, dataCollectionOptionsQuery.isLoading, setValue]);\n\n\n const formFieldDefinitions = useMemo<FormFieldDefinition<FormFields>[]>(() => {\n return [\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n disabled: !!openProps.completeCaseType,\n label: t`Case type`,\n loading: caseTypeOptionsQuery.isLoading,\n name: 'case_type_id',\n options: caseTypeOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n label: t`Create in data collection`,\n loading: dataCollectionOptionsQuery.isLoading || isCompleteCaseTypeLoading,\n name: 'create_in_data_collection_id',\n options: createInDataCollectionOptions,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n label: t`Share in data collections`,\n loading: dataCollectionOptionsQuery.isLoading || isCompleteCaseTypeLoading,\n multiple: true,\n name: 'share_in_data_collection_ids',\n options: shareInDataCollectionOptions,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.BOOLEAN,\n disabled: sharedInDataCollectionIds.length === 0 || !openProps.rows?.length,\n label: t`Should the same sharing be applied to the cases in the event?`,\n loading: dataCollectionOptionsQuery.isLoading || isCompleteCaseTypeLoading,\n name: 'shouldApplySharingToCases',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD,\n label: t`Event name`,\n name: 'name',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD,\n label: t`Event code`,\n name: 'code',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.RICH_TEXT,\n label: t`Description`,\n name: 'description',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n label: t`Category`,\n loading: caseSetCategoryOptionsQuery.isLoading,\n name: 'case_set_category_id',\n options: caseSetCategoryOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n label: t`Status`,\n loading: caseSetStatusOptionsQuery.isLoading,\n name: 'case_set_status_id',\n options: caseSetStatusOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n ] as const;\n }, [caseSetCategoryOptionsQuery.isLoading, caseSetCategoryOptionsQuery.options, caseSetStatusOptionsQuery.isLoading, caseSetStatusOptionsQuery.options, caseTypeOptionsQuery.isLoading, caseTypeOptionsQuery.options, createInDataCollectionOptions, dataCollectionOptionsQuery.isLoading, isCompleteCaseTypeLoading, openProps.completeCaseType, openProps.rows?.length, shareInDataCollectionOptions, sharedInDataCollectionIds.length, t]);\n\n const loadables = useArray([\n caseTypeOptionsQuery,\n caseSetCategoryOptionsQuery,\n caseSetStatusOptionsQuery,\n dataCollectionOptionsQuery,\n ]);\n\n\n const isLoading = LoadableUtil.isSomeLoading(loadables);\n\n const onSuccess = useCallback(async (item: CaseDbCaseSet, variables: FormFields) => {\n if (variables.shouldApplySharingToCases) {\n await CaseUtil.applyDataCollectionLinks({\n caseIds: openProps.rows ? openProps.rows.map(row => row.id) : undefined,\n caseSetDataCollectionIds: variables.share_in_data_collection_ids,\n caseSetId: item.id,\n caseTypeId: completeCaseType.id,\n });\n }\n EventBusService.getInstance().emit('onEventCreated');\n onClose();\n }, [completeCaseType?.id, onClose, openProps.rows]);\n\n const onError = useCallback(() => {\n EventBusService.getInstance().emit('onEventCreated');\n onClose();\n }, [onClose]);\n\n const { isMutating: isCreating, mutate: mutateCreate } = useCreateMutation<CaseDbCaseSet, FormFields>({\n associationQueryKeys: [\n ...QueryClientService.getInstance().getQueryKeyDependencies([CASEDB_QUERY_KEY.CASE_SETS]),\n ...QueryClientService.getInstance().getQueryKeyDependencies([CASEDB_QUERY_KEY.CASE_SET_MEMBERS], true),\n ...QueryClientService.getInstance().getQueryKeyDependencies([CASEDB_QUERY_KEY.DATA_COLLECTION_SET_MEMBERS], true),\n ],\n getErrorNotificationMessage: (item, _error) => t('Failed to create event: {{name}}', { name: item.name }),\n getProgressNotificationMessage: (variables) => t('Creating event: {{name}}...', { name: variables.name }),\n getSuccessNotificationMessage: (item) => (\n <CreateEventDialogSuccessNotificationMessage\n caseSet={item}\n isCreating\n />\n ),\n onError,\n onSuccess,\n queryFn: async (formData: FormFields): Promise<CaseDbCaseSet> => {\n const caseSetResult = (await CaseDbCaseApi.getInstance().createCaseSet({\n case_ids: openProps.rows?.map(row => row.id) ?? [],\n case_set: {\n case_set_category_id: formData.case_set_category_id,\n case_set_status_id: formData.case_set_status_id,\n case_type_id: formData.case_type_id,\n code: formData.code,\n created_in_data_collection_id: formData.create_in_data_collection_id,\n description: formData.description,\n name: formData.name,\n },\n data_collection_ids: formData.share_in_data_collection_ids,\n })).data;\n\n return caseSetResult;\n },\n resourceQueryKey: QueryClientService.getInstance().getGenericKey(CASEDB_QUERY_KEY.CASE_SETS),\n });\n\n const isFormDisabled = useMemo(() => {\n return isLoading || caseTypeOptionsQuery.options?.length === 0 || dataCollectionOptionsQuery.options?.length === 0;\n }, [isLoading, caseTypeOptionsQuery.options?.length, dataCollectionOptionsQuery.options?.length]);\n\n useEffect(() => {\n const actions: DialogAction[] = [];\n if (isLoading || !isFormDisabled) {\n actions.push({\n ...TestIdUtil.createAttributes('CreateEventDialog-saveButton'),\n autoFocus: true,\n color: 'secondary',\n disabled: isLoading || isCreating,\n form: formId,\n label: t`Save`,\n loading: isLoading,\n startIcon: <SaveIcon />,\n type: 'submit',\n variant: 'contained',\n });\n }\n onActionsChange(actions);\n }, [formId, isCreating, isLoading, onActionsChange, t, caseTypeOptionsQuery.options?.length, isFormDisabled]);\n\n const onFormSubmit = useCallback((formData: FormFields) => {\n mutateCreate(formData);\n }, [mutateCreate]);\n\n useEffect(() => {\n if (openProps.completeCaseType) {\n if (openProps.rows?.length) {\n onTitleChange(t('Create new event from {{numCases}} selected {{caseTypeName}} cases', { caseTypeName: openProps.completeCaseType.name, numCases: openProps.rows.length }));\n } else {\n onTitleChange(t('Create event'));\n }\n } else {\n onTitleChange(t('Create event'));\n }\n }, [onTitleChange, openProps, t]);\n\n return (\n <ResponseHandler\n error={completeCaseTypeError}\n inlineSpinner\n isLoading={isCreating}\n loadables={loadables}\n >\n {isFormDisabled ? (\n <Box>\n <Alert severity={'error'}>\n {t`You do not have the required permissions to create an event. Contact your organization administrator for assistance.`}\n </Alert>\n </Box>\n ) : (\n <GenericForm<FormFields>\n disableAll={isFormDisabled}\n formFieldDefinitions={formFieldDefinitions}\n formId={formId}\n formMethods={formMethods}\n onSubmit={handleSubmit(onFormSubmit)}\n schema={schema}\n />\n )}\n {openProps.rows?.length > 0 && (\n <CasesAlreadyInCaseSetWarning\n cases={openProps.rows}\n />\n )}\n </ResponseHandler>\n );\n}, {\n fullWidth: true,\n maxWidth: 'lg',\n testId: 'CreateEventDialog',\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../src/components/ui/CreateEventDialog/CreateEventDialog.tsx"],"sourcesContent":["import {\n useCallback,\n useEffect,\n useId,\n useMemo,\n} from 'react';\nimport type { ReactElement } from 'react';\nimport SaveIcon from '@mui/icons-material/Save';\nimport { useTranslation } from 'react-i18next';\nimport {\n array,\n boolean,\n object,\n string,\n} from 'yup';\nimport {\n useForm,\n useWatch,\n} from 'react-hook-form';\nimport type { Resolver } from 'react-hook-form';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport {\n Alert,\n Box,\n} from '@mui/material';\nimport type {\n CaseDbCase,\n CaseDbCaseSet,\n CaseDbCompleteCaseType,\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 { LoadableUtil } from '@gen-epix/ui-client-common/utils/LoadableUtil';\nimport { QueryClientService } from '@gen-epix/ui-client-common/classes/services/QueryClientService';\nimport { ResponseHandler } from '@gen-epix/ui-client-common/components/ui/ResponseHandler';\nimport { useCreateMutation } from '@gen-epix/ui-client-common/hooks/useCreateMutation';\nimport { useItemQuery } from '@gen-epix/ui-client-common/hooks/useItemQuery';\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 { GenericForm } from '@gen-epix/ui-core-form/components/helpers/GenericForm';\nimport type {\n AutoCompleteOption,\n FormFieldDefinition,\n} from '@gen-epix/ui-core-form/models/form';\nimport { FORM_FIELD_DEFINITION_TYPE } from '@gen-epix/ui-core-form/models/form';\nimport { SchemaUtil } from '@gen-epix/ui-core-form/utils/SchemaUtil';\n\nimport { EventBusService } from '../../../classes/services/EventBusService';\nimport { useCaseSetCategoryOptionsQuery } from '../../../dataHooks/useCaseSetCategoriesQuery';\nimport { useCaseSetStatusOptionsQuery } from '../../../dataHooks/useCaseSetStatusesQuery';\nimport { useCaseTypeOptionsQuery } from '../../../dataHooks/useCaseTypesQuery';\nimport { useDataCollectionOptionsQuery } from '../../../dataHooks/useDataCollectionsQuery';\nimport { CaseUtil } from '../../../utils/CaseUtil';\nimport { CasesAlreadyInCaseSetWarning } from '../CasesAlreadyInCaseSetWarning';\nimport { CASEDB_QUERY_KEY } from '../../../constants/query';\n\nimport { CreateEventDialogSuccessNotificationMessage } from './CreateEventDialogSuccessNotificationMessage';\n\nexport interface CreateEventDialogOpenProps {\n readonly completeCaseType?: CaseDbCompleteCaseType;\n readonly rows?: CaseDbCase[];\n}\n\nexport interface CreateEventDialogProps extends WithDialogRenderProps<CreateEventDialogOpenProps> {\n}\n\nexport type CreateEventDialogRefMethods = WithDialogRefMethods<CreateEventDialogProps, CreateEventDialogOpenProps>;\n\ntype FormFields = {\n case_set_category_id: string;\n case_set_status_id: string;\n case_type_id: string;\n code: string;\n create_in_data_collection_id: string;\n description: string;\n name: string;\n share_in_data_collection_ids: string[];\n shouldApplySharingToCases: boolean;\n};\n\nexport const CreateEventDialog = withDialog<CreateEventDialogProps, CreateEventDialogOpenProps>((\n {\n onActionsChange,\n onClose,\n onTitleChange,\n openProps,\n }: CreateEventDialogProps,\n): ReactElement => {\n const caseTypeOptionsQuery = useCaseTypeOptionsQuery();\n const caseSetCategoryOptionsQuery = useCaseSetCategoryOptionsQuery();\n const caseSetStatusOptionsQuery = useCaseSetStatusOptionsQuery();\n const dataCollectionOptionsQuery = useDataCollectionOptionsQuery();\n const { t } = useTranslation();\n const formId = useId();\n\n const schema = useMemo(() => object<FormFields>().shape({\n case_set_category_id: string().uuid4().required(),\n case_set_status_id: string().uuid4().required(),\n case_type_id: string().uuid4().required(),\n code: SchemaUtil.code,\n create_in_data_collection_id: string().uuid4().required(),\n description: SchemaUtil.description.required(),\n name: SchemaUtil.name,\n share_in_data_collection_ids: array().of(string().uuid4()),\n shouldApplySharingToCases: boolean().required(),\n }), []);\n\n const formMethods = useForm<FormFields>({\n resolver: yupResolver(schema) as Resolver<FormFields>,\n values: {\n case_set_category_id: null,\n case_set_status_id: null,\n case_type_id: openProps.completeCaseType?.id ?? null,\n code: '',\n create_in_data_collection_id: null,\n description: '',\n name: openProps.completeCaseType ? t('New {{eventName}} event', { eventName: openProps.completeCaseType.name }) : '',\n share_in_data_collection_ids: [],\n shouldApplySharingToCases: true,\n },\n });\n const { control, handleSubmit, setValue } = formMethods;\n\n const { case_type_id: userSelectedCaseTypeId, create_in_data_collection_id: createdInDataCollectionId, share_in_data_collection_ids: sharedInDataCollectionIds } = useWatch({ control });\n\n const sanitizedCompleteCaseTypeId = openProps.completeCaseType?.id ?? userSelectedCaseTypeId;\n\n const { data: loadedCompleteCaseType, error: completeCaseTypeError, isLoading: isCompleteCaseTypeLoading } = useItemQuery({\n baseQueryKey: CASEDB_QUERY_KEY.COMPLETE_CASE_TYPES,\n itemId: sanitizedCompleteCaseTypeId,\n useQueryOptions: {\n enabled: !openProps.completeCaseType && !!sanitizedCompleteCaseTypeId,\n queryFn: async ({ signal }) => {\n return (await CaseDbCaseApi.getInstance().completeCaseTypesGetOne(sanitizedCompleteCaseTypeId, { signal })).data;\n },\n },\n });\n\n const completeCaseType = openProps.completeCaseType ?? loadedCompleteCaseType;\n\n const createInDataCollectionOptions = useMemo<AutoCompleteOption[]>(() => {\n if (!completeCaseType || !dataCollectionOptionsQuery.options?.length) {\n return [];\n }\n return dataCollectionOptionsQuery.options.filter(option => {\n const dataCollectionId = option.value;\n return completeCaseType.case_type_access_abacs[dataCollectionId]?.is_private && completeCaseType.case_type_access_abacs[dataCollectionId]?.add_case_set;\n });\n }, [completeCaseType, dataCollectionOptionsQuery.options]);\n\n const shareInDataCollectionOptions = useMemo<AutoCompleteOption[]>(() => {\n if (!completeCaseType) {\n return [];\n }\n return dataCollectionOptionsQuery.options.filter(option => {\n const dataCollectionId = option.value;\n return createdInDataCollectionId !== dataCollectionId && completeCaseType.case_type_access_abacs[dataCollectionId]?.add_case_set;\n });\n }, [completeCaseType, createdInDataCollectionId, dataCollectionOptionsQuery.options]);\n\n useEffect(() => {\n // Validate if the createdInDataCollectionId is in the shareInDataCollectionIds\n // If it is, remove it from the shareInDataCollectionIds\n if (sharedInDataCollectionIds?.length && sharedInDataCollectionIds.includes(createdInDataCollectionId)) {\n setValue('share_in_data_collection_ids', sharedInDataCollectionIds.filter(id => id !== createdInDataCollectionId));\n }\n }, [createdInDataCollectionId, setValue, sharedInDataCollectionIds]);\n\n useEffect(() => {\n if (openProps.completeCaseType) {\n return;\n }\n setValue('create_in_data_collection_id', null);\n setValue('share_in_data_collection_ids', []);\n }, [completeCaseType, openProps.completeCaseType, setValue]);\n\n useEffect(() => {\n if (dataCollectionOptionsQuery.isLoading || !createInDataCollectionOptions?.length) {\n return;\n }\n\n if (createInDataCollectionOptions?.length === 1) {\n setValue('create_in_data_collection_id', createInDataCollectionOptions[0].value as string);\n }\n }, [createInDataCollectionOptions, dataCollectionOptionsQuery.isLoading, setValue]);\n\n\n const formFieldDefinitions = useMemo<FormFieldDefinition<FormFields>[]>(() => {\n return [\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n disabled: !!openProps.completeCaseType,\n label: t`Case type`,\n loading: caseTypeOptionsQuery.isLoading,\n name: 'case_type_id',\n options: caseTypeOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n label: t`Create in data collection`,\n loading: dataCollectionOptionsQuery.isLoading || isCompleteCaseTypeLoading,\n name: 'create_in_data_collection_id',\n options: createInDataCollectionOptions,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n label: t`Share in data collections`,\n loading: dataCollectionOptionsQuery.isLoading || isCompleteCaseTypeLoading,\n multiple: true,\n name: 'share_in_data_collection_ids',\n options: shareInDataCollectionOptions,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.BOOLEAN,\n disabled: sharedInDataCollectionIds.length === 0 || !openProps.rows?.length,\n label: t`Should the same sharing be applied to the cases in the event?`,\n loading: dataCollectionOptionsQuery.isLoading || isCompleteCaseTypeLoading,\n name: 'shouldApplySharingToCases',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD,\n label: t`Event name`,\n name: 'name',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD,\n label: t`Event code`,\n name: 'code',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.RICH_TEXT,\n label: t`Description`,\n name: 'description',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n label: t`Category`,\n loading: caseSetCategoryOptionsQuery.isLoading,\n name: 'case_set_category_id',\n options: caseSetCategoryOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n label: t`Status`,\n loading: caseSetStatusOptionsQuery.isLoading,\n name: 'case_set_status_id',\n options: caseSetStatusOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n ] as const;\n }, [caseSetCategoryOptionsQuery.isLoading, caseSetCategoryOptionsQuery.options, caseSetStatusOptionsQuery.isLoading, caseSetStatusOptionsQuery.options, caseTypeOptionsQuery.isLoading, caseTypeOptionsQuery.options, createInDataCollectionOptions, dataCollectionOptionsQuery.isLoading, isCompleteCaseTypeLoading, openProps.completeCaseType, openProps.rows?.length, shareInDataCollectionOptions, sharedInDataCollectionIds.length, t]);\n\n const loadables = useArray([\n caseTypeOptionsQuery,\n caseSetCategoryOptionsQuery,\n caseSetStatusOptionsQuery,\n dataCollectionOptionsQuery,\n ]);\n\n\n const isLoading = LoadableUtil.isSomeLoading(loadables);\n\n const onSuccess = useCallback(async (item: CaseDbCaseSet, variables: FormFields) => {\n if (variables.shouldApplySharingToCases) {\n await CaseUtil.applyDataCollectionLinks({\n caseIds: openProps.rows ? openProps.rows.map(row => row.id) : undefined,\n caseSetDataCollectionIds: variables.share_in_data_collection_ids,\n caseSetId: item.id,\n caseTypeId: completeCaseType.id,\n });\n }\n EventBusService.getInstance().emit('onEventCreated');\n onClose();\n }, [completeCaseType?.id, onClose, openProps.rows]);\n\n const onError = useCallback(() => {\n EventBusService.getInstance().emit('onEventCreated');\n onClose();\n }, [onClose]);\n\n const { isMutating: isCreating, mutate: mutateCreate } = useCreateMutation<CaseDbCaseSet, FormFields>({\n associationQueryKeys: [\n ...QueryClientService.getInstance().getQueryKeyDependencies([CASEDB_QUERY_KEY.CASE_SETS]),\n ...QueryClientService.getInstance().getQueryKeyDependencies([CASEDB_QUERY_KEY.CASE_SET_MEMBERS], true),\n ...QueryClientService.getInstance().getQueryKeyDependencies([CASEDB_QUERY_KEY.DATA_COLLECTION_SET_MEMBERS], true),\n ],\n getErrorNotificationMessage: (item, _error) => t('Failed to create event: {{name}}', { name: item.name }),\n getProgressNotificationMessage: (variables) => t('Creating event: {{name}}...', { name: variables.name }),\n getSuccessNotificationMessage: (item) => (\n <CreateEventDialogSuccessNotificationMessage\n caseSet={item}\n isCreating\n />\n ),\n onError,\n onSuccess,\n queryFn: async (formData: FormFields): Promise<CaseDbCaseSet> => {\n const caseSetResult = (await CaseDbCaseApi.getInstance().createCaseSet({\n case_ids: openProps.rows?.map(row => row.id) ?? [],\n case_set: {\n case_set_category_id: formData.case_set_category_id,\n case_set_status_id: formData.case_set_status_id,\n case_type_id: formData.case_type_id,\n code: formData.code,\n created_in_data_collection_id: formData.create_in_data_collection_id,\n description: formData.description,\n name: formData.name,\n },\n data_collection_ids: formData.share_in_data_collection_ids,\n })).data;\n\n return caseSetResult;\n },\n resourceQueryKey: QueryClientService.getInstance().getGenericKey(CASEDB_QUERY_KEY.CASE_SETS),\n });\n\n const isFormDisabled = useMemo(() => {\n return isLoading || caseTypeOptionsQuery.options?.length === 0 || dataCollectionOptionsQuery.options?.length === 0;\n }, [isLoading, caseTypeOptionsQuery.options?.length, dataCollectionOptionsQuery.options?.length]);\n\n useEffect(() => {\n const actions: DialogAction[] = [];\n if (isLoading || !isFormDisabled) {\n actions.push({\n ...TestIdUtil.createAttributes('CreateEventDialog-saveButton'),\n autoFocus: true,\n color: 'secondary',\n disabled: isLoading || isCreating,\n form: formId,\n label: t`Save`,\n loading: isLoading,\n startIcon: <SaveIcon />,\n type: 'submit',\n variant: 'contained',\n });\n }\n onActionsChange(actions);\n }, [formId, isCreating, isLoading, onActionsChange, t, caseTypeOptionsQuery.options?.length, isFormDisabled]);\n\n const onFormSubmit = useCallback((formData: FormFields) => {\n mutateCreate(formData);\n }, [mutateCreate]);\n\n useEffect(() => {\n if (openProps.completeCaseType) {\n if (openProps.rows?.length) {\n onTitleChange(t('Create new event from {{numCases}} selected {{caseTypeName}} cases', { caseTypeName: openProps.completeCaseType.name, numCases: openProps.rows.length }));\n } else {\n onTitleChange(t('Create event'));\n }\n } else {\n onTitleChange(t('Create event'));\n }\n }, [onTitleChange, openProps, t]);\n\n return (\n <ResponseHandler\n error={completeCaseTypeError}\n inlineSpinner\n isLoading={isCreating}\n loadables={loadables}\n >\n {isFormDisabled ? (\n <Box>\n <Alert severity={'error'}>\n {t`You do not have the required permissions to create an event. Contact your organization administrator for assistance.`}\n </Alert>\n </Box>\n ) : (\n <GenericForm<FormFields>\n disableAll={isFormDisabled}\n formFieldDefinitions={formFieldDefinitions}\n formId={formId}\n formMethods={formMethods}\n onSubmit={handleSubmit(onFormSubmit)}\n schema={schema}\n />\n )}\n {openProps.rows?.length > 0 && (\n <CasesAlreadyInCaseSetWarning\n cases={openProps.rows}\n />\n )}\n </ResponseHandler>\n );\n}, {\n fullWidth: true,\n maxWidth: 'lg',\n testId: 'CreateEventDialog',\n});\n"],"mappings":"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"}