udp-react-enterprise-component-library 25.18.1-beta.4 → 25.18.1-beta.6

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 (132) hide show
  1. package/dist/{Accordion-gB7-h8x2.js → Accordion-CaMSRkVt.js} +2 -2
  2. package/dist/{Accordion-gB7-h8x2.js.map → Accordion-CaMSRkVt.js.map} +1 -1
  3. package/dist/{ActionProvider-Bac2QDAs.js → ActionProvider-CXHkH2mP.js} +2 -2
  4. package/dist/{ActionProvider-Bac2QDAs.js.map → ActionProvider-CXHkH2mP.js.map} +1 -1
  5. package/dist/{ActionSplitScreen-sKnNHSHa.js → ActionSplitScreen-D-Ao-Oc1.js} +3 -3
  6. package/dist/{ActionSplitScreen-sKnNHSHa.js.map → ActionSplitScreen-D-Ao-Oc1.js.map} +1 -1
  7. package/dist/{ActionWrapper-CVOfJ5oR.js → ActionWrapper-h7Itpcl5.js} +3 -3
  8. package/dist/{ActionWrapper-CVOfJ5oR.js.map → ActionWrapper-h7Itpcl5.js.map} +1 -1
  9. package/dist/AmbientCardButton-DOnaCczn.js.map +1 -1
  10. package/dist/{BaseTreeMenu-sWv-qaul.js → BaseTreeMenu-C3azNZ0b.js} +2 -2
  11. package/dist/{BaseTreeMenu-sWv-qaul.js.map → BaseTreeMenu-C3azNZ0b.js.map} +1 -1
  12. package/dist/{CircleButton-DpVIcx-w.js → CircleButton-DZtXx7uN.js} +2 -2
  13. package/dist/{CircleButton-DpVIcx-w.js.map → CircleButton-DZtXx7uN.js.map} +1 -1
  14. package/dist/{CustomMenuPage-BhA0LNhM.js → CustomMenuPage-iBhLu1TK.js} +2 -2
  15. package/dist/{CustomMenuPage-BhA0LNhM.js.map → CustomMenuPage-iBhLu1TK.js.map} +1 -1
  16. package/dist/{EntityHeader-BLt_uxQ3.js → EntityHeader--gf9BpbJ.js} +2 -2
  17. package/dist/{EntityHeader-BLt_uxQ3.js.map → EntityHeader--gf9BpbJ.js.map} +1 -1
  18. package/dist/{FileViewer-Cqrlt60_.js → FileViewer-qG1dw7RF.js} +2 -2
  19. package/dist/{FileViewer-Cqrlt60_.js.map → FileViewer-qG1dw7RF.js.map} +1 -1
  20. package/dist/{FluentCell-C2Qfg1ve.js → FluentCell-Ce9_3cOY.js} +2 -2
  21. package/dist/{FluentCell-C2Qfg1ve.js.map → FluentCell-Ce9_3cOY.js.map} +1 -1
  22. package/dist/{FluentDataTable-DuDb9VVl.js → FluentDataTable-BjCP7-Vf.js} +2 -2
  23. package/dist/{FluentDataTable-DuDb9VVl.js.map → FluentDataTable-BjCP7-Vf.js.map} +1 -1
  24. package/dist/FluentProfileMenuCard-BMGWsjyD.js.map +1 -1
  25. package/dist/{FluentTimeline-CCQ3mUhk.js → FluentTimeline-ExazqTRJ.js} +2 -2
  26. package/dist/{FluentTimeline-CCQ3mUhk.js.map → FluentTimeline-ExazqTRJ.js.map} +1 -1
  27. package/dist/{IconRenderer-BB7NMX-b.js → IconRenderer-DAfBq9qv.js} +2 -2
  28. package/dist/{IconRenderer-BB7NMX-b.js.map → IconRenderer-DAfBq9qv.js.map} +1 -1
  29. package/dist/{MenuPage-BhPLgI_i.js → MenuPage-BtPJFNys.js} +3 -3
  30. package/dist/{MenuPage-BhPLgI_i.js.map → MenuPage-BtPJFNys.js.map} +1 -1
  31. package/dist/{MenuPage-DNq_eYJy.js → MenuPage-VDT9iycc.js} +3 -3
  32. package/dist/{MttMainTimeline-uB-YMlPd.js → MttMainTimeline-_6Fpr66g.js} +2 -2
  33. package/dist/{MttMainTimeline-uB-YMlPd.js.map → MttMainTimeline-_6Fpr66g.js.map} +1 -1
  34. package/dist/{MttSummary-dlQbfqex.js → MttSummary-BBsBlhgF.js} +3 -3
  35. package/dist/{MttSummary-dlQbfqex.js.map → MttSummary-BBsBlhgF.js.map} +1 -1
  36. package/dist/{NotesScreen-BjY_InsP.js → NotesScreen-B7hLzUOl.js} +2 -2
  37. package/dist/{NotesScreen-BjY_InsP.js.map → NotesScreen-B7hLzUOl.js.map} +1 -1
  38. package/dist/{PageActionWrapper-5hXS8BiL.js → PageActionWrapper-BBCjuj8x.js} +2 -2
  39. package/dist/{PageActionWrapper-5hXS8BiL.js.map → PageActionWrapper-BBCjuj8x.js.map} +1 -1
  40. package/dist/{PaymentForm-C9djfH5t.js → PaymentForm-OijJFr0S.js} +2 -2
  41. package/dist/{PaymentForm-C9djfH5t.js.map → PaymentForm-OijJFr0S.js.map} +1 -1
  42. package/dist/{RecentlyLoadedNodesTable-BaUKwrK6.js → RecentlyLoadedNodesTable-ScWvY2Bk.js} +2 -2
  43. package/dist/{RecentlyLoadedNodesTable-BaUKwrK6.js.map → RecentlyLoadedNodesTable-ScWvY2Bk.js.map} +1 -1
  44. package/dist/{RecentlyLoadedNodesWidget-Bwmkdavm.js → RecentlyLoadedNodesWidget-5538JENZ.js} +2 -2
  45. package/dist/{RecentlyLoadedNodesWidget-Bwmkdavm.js.map → RecentlyLoadedNodesWidget-5538JENZ.js.map} +1 -1
  46. package/dist/{RemindersCard-D1M4Z5Tm.js → RemindersCard-BVT2iuT4.js} +2 -2
  47. package/dist/{RemindersCard-D1M4Z5Tm.js.map → RemindersCard-BVT2iuT4.js.map} +1 -1
  48. package/dist/{RemindersScreen-BiRcMvRs.js → RemindersScreen-NaO3jhh9.js} +2 -2
  49. package/dist/{RemindersScreen-BiRcMvRs.js.map → RemindersScreen-NaO3jhh9.js.map} +1 -1
  50. package/dist/{RemindersWidget-DBgk6Ibq.js → RemindersWidget-cUps1X7r.js} +2 -2
  51. package/dist/{RemindersWidget-DBgk6Ibq.js.map → RemindersWidget-cUps1X7r.js.map} +1 -1
  52. package/dist/{Shell-DtiGFd4z.js → Shell-DbVTLfw8.js} +3 -3
  53. package/dist/{Shell-DtiGFd4z.js.map → Shell-DbVTLfw8.js.map} +1 -1
  54. package/dist/{Statistic-CdpPX5KV.js → Statistic-BMkpqkol.js} +2 -2
  55. package/dist/{Statistic-CdpPX5KV.js.map → Statistic-BMkpqkol.js.map} +1 -1
  56. package/dist/TokenGroupItem-DEZAU-Gs.js.map +1 -1
  57. package/dist/{TreeUtilities-BnHT4nq0.js → TreeUtilities-DWgARig7.js} +3 -3
  58. package/dist/{TreeUtilities-BnHT4nq0.js.map → TreeUtilities-DWgARig7.js.map} +1 -1
  59. package/dist/UI/accordion/index.js +2 -2
  60. package/dist/UI/dataDisplay/FluentDataTable/FluentCell/index.js +2 -2
  61. package/dist/UI/dataDisplay/FluentDataTable/index.js +3 -3
  62. package/dist/UI/dataDisplay/entityHeader/index.js +3 -3
  63. package/dist/UI/dataDisplay/index.js +3 -3
  64. package/dist/UI/fileViewer/index.js +2 -2
  65. package/dist/UI/index.js +6 -6
  66. package/dist/UI/mapLayout/ui/index.js +2 -2
  67. package/dist/UI/templates/ui/renderers/index.js +2 -2
  68. package/dist/UI/timeline/fluentTimeline/index.js +2 -2
  69. package/dist/UI/timeline/index.js +2 -2
  70. package/dist/UI/widgets/library/RecentlyLoadedNodesWidget/index.js +4 -4
  71. package/dist/UI/widgets/library/RemindersWidget/index.js +3 -3
  72. package/dist/{UdpDataBrowserPage-BlxXko_I.js → UdpDataBrowserPage-8NLQuSA9.js} +2 -2
  73. package/dist/{UdpDataBrowserPage-BlxXko_I.js.map → UdpDataBrowserPage-8NLQuSA9.js.map} +1 -1
  74. package/dist/{UdpInquiryMaintenanceEnginePage-hLsxBDt2.js → UdpInquiryMaintenanceEnginePage-CgfEuu7m.js} +2 -2
  75. package/dist/{UdpInquiryMaintenanceEnginePage-hLsxBDt2.js.map → UdpInquiryMaintenanceEnginePage-CgfEuu7m.js.map} +1 -1
  76. package/dist/{UdpMaintenanceEnginePage-CWdToHMY.js → UdpMaintenanceEnginePage-BrWw5TD0.js} +2 -2
  77. package/dist/{UdpMaintenanceEnginePage-CWdToHMY.js.map → UdpMaintenanceEnginePage-BrWw5TD0.js.map} +1 -1
  78. package/dist/{UdpNotesPage-DVow0aLq.js → UdpNotesPage-DfICgZRs.js} +2 -2
  79. package/dist/{UdpNotesPage-DVow0aLq.js.map → UdpNotesPage-DfICgZRs.js.map} +1 -1
  80. package/dist/{UdpPages-DS_z-6mU.js → UdpPages-CZRR6uL_.js} +9 -9
  81. package/dist/{UdpPages-DS_z-6mU.js.map → UdpPages-CZRR6uL_.js.map} +1 -1
  82. package/dist/{UdpRemindersPage-CYBm84GL.js → UdpRemindersPage-KAHur1Oo.js} +2 -2
  83. package/dist/{UdpRemindersPage-CYBm84GL.js.map → UdpRemindersPage-KAHur1Oo.js.map} +1 -1
  84. package/dist/{UdpRoutes-98S-kqBV.js → UdpRoutes-BvnliB-h.js} +3 -3
  85. package/dist/{UdpRoutes-98S-kqBV.js.map → UdpRoutes-BvnliB-h.js.map} +1 -1
  86. package/dist/{UdpVerticalManagementPage-D9bK-UMW.js → UdpVerticalManagementPage-hpHkwE6I.js} +2 -2
  87. package/dist/{UdpVerticalManagementPage-D9bK-UMW.js.map → UdpVerticalManagementPage-hpHkwE6I.js.map} +1 -1
  88. package/dist/{UdpVerticalManagementSidesheet-DQJpNJaQ.js → UdpVerticalManagementSidesheet-CVU_tQ17.js} +2 -2
  89. package/dist/{UdpVerticalManagementSidesheet-DQJpNJaQ.js.map → UdpVerticalManagementSidesheet-CVU_tQ17.js.map} +1 -1
  90. package/dist/{WorkflowContainer-hbA-EyK-.js → WorkflowContainer-CNAbhsJK.js} +2 -2
  91. package/dist/{WorkflowContainer-hbA-EyK-.js.map → WorkflowContainer-CNAbhsJK.js.map} +1 -1
  92. package/dist/{WorkflowContainer-CzQerfwt.js → WorkflowContainer-DNf1UcY5.js} +3 -3
  93. package/dist/{WorkflowTreeMenu-BDolYqHx.js → WorkflowTreeMenu-U3JYFWVn.js} +2 -2
  94. package/dist/{WorkflowTreeMenu-BDolYqHx.js.map → WorkflowTreeMenu-U3JYFWVn.js.map} +1 -1
  95. package/dist/actions/index.js +6 -6
  96. package/dist/componentSystems/multiThreadTimeline/index.js +5 -5
  97. package/dist/componentSystems/multiThreadTimeline/mttMainTimeline/index.js +3 -3
  98. package/dist/componentSystems/multiThreadTimeline/mttSummary/index.js +4 -4
  99. package/dist/componentSystems/multiThreadTimeline/ui/index.js +3 -3
  100. package/dist/index.js +39 -39
  101. package/dist/inquiry/dashboard/index.js +3 -3
  102. package/dist/inquiry/index.js +9 -9
  103. package/dist/{inquiry-KrLF1JVq.js → inquiry-BurQFtZD.js} +44 -21
  104. package/dist/inquiry-BurQFtZD.js.map +1 -0
  105. package/dist/menuPage/index.js +4 -4
  106. package/dist/notes/index.js +2 -2
  107. package/dist/reminders/index.js +3 -3
  108. package/dist/routes/index.js +1 -1
  109. package/dist/shell/index.js +8 -8
  110. package/dist/treeMenu/index.js +2 -2
  111. package/dist/types/src/inquiry/InquiryContainer.d.ts.map +1 -1
  112. package/dist/types/src/utilities/tree/TreeUtilities.d.ts +1 -1
  113. package/dist/types/src/utilities/tree/TreeUtilities.d.ts.map +1 -1
  114. package/dist/types/tsconfig.tsbuildinfo +1 -1
  115. package/dist/udp/pages/UdpDataBrowserPage/index.js +2 -2
  116. package/dist/udp/pages/UdpGridPanelManagementPage/index.js +2 -2
  117. package/dist/udp/pages/UdpInquiryMaintenanceEnginePage/index.js +11 -11
  118. package/dist/udp/pages/UdpMaintenanceEnginePage/index.js +10 -10
  119. package/dist/udp/pages/UdpNotesPage/index.js +3 -3
  120. package/dist/udp/pages/UdpPages/index.js +20 -20
  121. package/dist/udp/pages/UdpRemindersPage/index.js +3 -3
  122. package/dist/udp/pages/UdpVerticalManagementPage/index.js +3 -3
  123. package/dist/udp/pages/UdpVerticalManagementSidesheet/index.js +2 -2
  124. package/dist/udp/pages/index.js +20 -20
  125. package/dist/utilities/form/paymentForm/index.js +2 -2
  126. package/dist/utilities/provider/index.js +6 -6
  127. package/dist/utilities/tree/index.js +1 -1
  128. package/dist/workflow/index.js +3 -3
  129. package/dist/workflow/menus/index.js +2 -2
  130. package/export-map.json +1 -1
  131. package/package.json +2 -2
  132. package/dist/inquiry-KrLF1JVq.js.map +0 -1
@@ -1,7 +1,7 @@
1
1
  import { r as useAgGridApi, t as AgTable } from "./AgTable-B2xTzAm2.js";
2
2
  import { r as getSanitizedName } from "./entityUtilities-_8w-Zjs3.js";
3
3
  import { t as AmbientCard } from "./AmbientCard-blAjLcmr.js";
4
- import { t as IconRenderer } from "./IconRenderer-BB7NMX-b.js";
4
+ import { t as IconRenderer } from "./IconRenderer-DAfBq9qv.js";
5
5
  import { t as formatDateToLocaleString } from "./DateUtilities-COCIN8sN.js";
6
6
  import React, { useCallback, useEffect, useMemo, useState } from "react";
7
7
  import { LinearProgress, Typography } from "@material-ui/core";
@@ -105,4 +105,4 @@ const RecentlyLoadedNodesTable = (props) => {
105
105
 
106
106
  //#endregion
107
107
  export { RecentlyLoadedNodesTable as t };
108
- //# sourceMappingURL=RecentlyLoadedNodesTable-BaUKwrK6.js.map
108
+ //# sourceMappingURL=RecentlyLoadedNodesTable-ScWvY2Bk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RecentlyLoadedNodesTable-BaUKwrK6.js","names":[],"sources":["../src/inquiry/dashboard/RecentlyLoadedNodesTable.jsx"],"sourcesContent":["import React, { useCallback, useMemo, useEffect, useState } from 'react';\nimport { Typography, LinearProgress } from '@material-ui/core';\nimport { AmbientCard } from '../../UI/surfaces/cards/AmbientCard';\nimport { AgTable, useAgGridApi } from '../../utilities/aggrid/AgTable.tsx';\nimport { formatDateToLocaleString } from '../../utilities/input/DateUtilities';\nimport { DateTime } from 'luxon';\nimport { IconRenderer } from '../../UI/templates/ui/renderers/IconRenderer';\nimport { getSanitizedName } from '../../utilities/entities/entityUtilities';\n\nconst defaultColDef = {\n resizable: true,\n editable: false,\n sortable: true,\n filter: true\n};\n\nexport const RecentlyLoadedNodesTable = (props) => {\n const {\n recentlyLoadedNodes,\n loading,\n onLoadedNodeClick,\n tableHeight,\n tree,\n columnDefs,\n hideTitle = false\n } = props;\n\n const { gridApi, gridColumnApi, onGridReady } = useAgGridApi();\n const [selectedRow, setSelectedRow] = useState();\n\n useEffect(() => {\n if (!gridColumnApi) return;\n\n gridApi?.sizeColumnsToFit();\n setSelectedRow(\n gridApi?.getSelectedRows().length && gridApi.getSelectedRows()[0]\n );\n }, [gridColumnApi, gridApi]);\n\n const handleRowSelected = useCallback(\n (event) => {\n if (!event.node.selected) return;\n\n if (!gridApi) return;\n\n const selectedRowData =\n gridApi.getSelectedRows().length && gridApi.getSelectedRows()[0];\n\n if (!selectedRowData) return;\n\n setSelectedRow(selectedRowData);\n\n if (selectedRowData?.nodeInfo) {\n // if the row is a node\n onLoadedNodeClick(selectedRowData.nodeInfo);\n }\n },\n [gridApi, onLoadedNodeClick]\n );\n\n const getterRowData = useCallback((params) => {\n return params.data?.iconData;\n }, []);\n\n const columnDefinitions = useMemo(\n () =>\n columnDefs\n ? columnDefs\n : [\n tree?.treeStructure && {\n headerName: '',\n cellRenderer: 'iconRenderer',\n valueGetter: getterRowData,\n maxWidth: 60,\n resizable: false,\n suppressMenu: true,\n sortable: false,\n cellStyle: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n }\n },\n {\n headerName: 'Name',\n field: 'name',\n minWidth: 120,\n maxWidth: 300\n },\n {\n headerName: 'Type',\n field: 'type',\n valueGetter: (params) => getSanitizedName(params.data?.type),\n minWidth: 80\n },\n {\n headerName: 'Date Loaded',\n field: 'dateLoaded',\n minWidth: 80\n },\n {\n headerName: '',\n field: 'nodeInfo',\n maxWidth: 0,\n cellStyle: {\n display: 'none'\n }\n }\n ],\n [columnDefs, getterRowData, tree]\n );\n\n const recentlyLoadedNodesValues = useMemo(\n () =>\n recentlyLoadedNodes?.map((loadedNode) => {\n const matchingNode = tree?.treeStructure?.find(\n (node) =>\n node.properties.catalogReturnObject ===\n loadedNode?.nodeDetails?.catalogReturnObject\n );\n\n return {\n iconData: matchingNode?.properties?.defaultIcon || {\n name: 'PictureTileIcon'\n },\n name: loadedNode?.nodeDetails?.nodeLabel,\n type: loadedNode?.nodeDetails?.catalogReturnObject,\n dateLoaded: formatDateToLocaleString(\n loadedNode?.dateLoaded,\n DateTime.DATETIME_MED\n ),\n nodeInfo: loadedNode\n };\n }),\n [recentlyLoadedNodes, tree]\n );\n\n return (\n <AmbientCard\n title={!hideTitle ? 'Recently Loaded' : ' '}\n fullWidth\n noAdornment\n >\n {loading || !tree ? (\n <LinearProgress />\n ) : recentlyLoadedNodes?.length ? (\n <AgTable\n columnDefs={columnDefinitions}\n defaultColDef={defaultColDef}\n rowData={recentlyLoadedNodesValues || []}\n onGridReady={onGridReady}\n getRowNodeId={(row) => row.name}\n onRowSelected={handleRowSelected}\n rowSelection='single'\n frameworkComponents={{ iconRenderer: IconRenderer }}\n height={tableHeight}\n />\n ) : (\n <Typography>No Data Recently Loaded.</Typography>\n )}\n </AmbientCard>\n );\n};\n"],"mappings":";;;;;;;;;;AASA,MAAM,gBAAgB;CACpB,WAAW;CACX,UAAU;CACV,UAAU;CACV,QAAQ;CACT;AAED,MAAa,4BAA4B,UAAU;CACjD,MAAM,EACJ,qBACA,SACA,mBACA,aACA,MACA,YACA,YAAY,UACV;CAEJ,MAAM,EAAE,SAAS,eAAe,gBAAgB,cAAc;CAC9D,MAAM,CAAC,aAAa,kBAAkB,UAAU;AAEhD,iBAAgB;AACd,MAAI,CAAC,cAAe;AAEpB,WAAS,kBAAkB;AAC3B,iBACE,SAAS,iBAAiB,CAAC,UAAU,QAAQ,iBAAiB,CAAC,GAChE;IACA,CAAC,eAAe,QAAQ,CAAC;CAE5B,MAAM,oBAAoB,aACvB,UAAU;AACT,MAAI,CAAC,MAAM,KAAK,SAAU;AAE1B,MAAI,CAAC,QAAS;EAEd,MAAM,kBACJ,QAAQ,iBAAiB,CAAC,UAAU,QAAQ,iBAAiB,CAAC;AAEhE,MAAI,CAAC,gBAAiB;AAEtB,iBAAe,gBAAgB;AAE/B,MAAI,iBAAiB,SAEnB,mBAAkB,gBAAgB,SAAS;IAG/C,CAAC,SAAS,kBAAkB,CAC7B;CAED,MAAM,gBAAgB,aAAa,WAAW;AAC5C,SAAO,OAAO,MAAM;IACnB,EAAE,CAAC;CAEN,MAAM,oBAAoB,cAEtB,aACI,aACA;EACE,MAAM,iBAAiB;GACrB,YAAY;GACZ,cAAc;GACd,aAAa;GACb,UAAU;GACV,WAAW;GACX,cAAc;GACd,UAAU;GACV,WAAW;IACT,SAAS;IACT,YAAY;IACZ,gBAAgB;IACjB;GACF;EACD;GACE,YAAY;GACZ,OAAO;GACP,UAAU;GACV,UAAU;GACX;EACD;GACE,YAAY;GACZ,OAAO;GACP,cAAc,WAAW,iBAAiB,OAAO,MAAM,KAAK;GAC5D,UAAU;GACX;EACD;GACE,YAAY;GACZ,OAAO;GACP,UAAU;GACX;EACD;GACE,YAAY;GACZ,OAAO;GACP,UAAU;GACV,WAAW,EACT,SAAS,QACV;GACF;EACF,EACP;EAAC;EAAY;EAAe;EAAK,CAClC;CAED,MAAM,4BAA4B,cAE9B,qBAAqB,KAAK,eAAe;AAOvC,SAAO;GACL,WAPmB,MAAM,eAAe,MACvC,SACC,KAAK,WAAW,wBAChB,YAAY,aAAa,oBAC5B,GAGyB,YAAY,eAAe,EACjD,MAAM,mBACP;GACD,MAAM,YAAY,aAAa;GAC/B,MAAM,YAAY,aAAa;GAC/B,YAAY,yBACV,YAAY,YACZ,SAAS,aACV;GACD,UAAU;GACX;GACD,EACJ,CAAC,qBAAqB,KAAK,CAC5B;AAED,QACE,oCAAC;EACC,OAAO,CAAC,YAAY,oBAAoB;EACxC;EACA;IAEC,WAAW,CAAC,OACX,oCAAC,qBAAiB,GAChB,qBAAqB,SACvB,oCAAC;EACC,YAAY;EACG;EACf,SAAS,6BAA6B,EAAE;EAC3B;EACb,eAAe,QAAQ,IAAI;EAC3B,eAAe;EACf,cAAa;EACb,qBAAqB,EAAE,cAAc,cAAc;EACnD,QAAQ;GACR,GAEF,oCAAC,kBAAW,2BAAqC,CAEvC"}
1
+ {"version":3,"file":"RecentlyLoadedNodesTable-ScWvY2Bk.js","names":[],"sources":["../src/inquiry/dashboard/RecentlyLoadedNodesTable.jsx"],"sourcesContent":["import React, { useCallback, useMemo, useEffect, useState } from 'react';\nimport { Typography, LinearProgress } from '@material-ui/core';\nimport { AmbientCard } from '../../UI/surfaces/cards/AmbientCard';\nimport { AgTable, useAgGridApi } from '../../utilities/aggrid/AgTable.tsx';\nimport { formatDateToLocaleString } from '../../utilities/input/DateUtilities';\nimport { DateTime } from 'luxon';\nimport { IconRenderer } from '../../UI/templates/ui/renderers/IconRenderer';\nimport { getSanitizedName } from '../../utilities/entities/entityUtilities';\n\nconst defaultColDef = {\n resizable: true,\n editable: false,\n sortable: true,\n filter: true\n};\n\nexport const RecentlyLoadedNodesTable = (props) => {\n const {\n recentlyLoadedNodes,\n loading,\n onLoadedNodeClick,\n tableHeight,\n tree,\n columnDefs,\n hideTitle = false\n } = props;\n\n const { gridApi, gridColumnApi, onGridReady } = useAgGridApi();\n const [selectedRow, setSelectedRow] = useState();\n\n useEffect(() => {\n if (!gridColumnApi) return;\n\n gridApi?.sizeColumnsToFit();\n setSelectedRow(\n gridApi?.getSelectedRows().length && gridApi.getSelectedRows()[0]\n );\n }, [gridColumnApi, gridApi]);\n\n const handleRowSelected = useCallback(\n (event) => {\n if (!event.node.selected) return;\n\n if (!gridApi) return;\n\n const selectedRowData =\n gridApi.getSelectedRows().length && gridApi.getSelectedRows()[0];\n\n if (!selectedRowData) return;\n\n setSelectedRow(selectedRowData);\n\n if (selectedRowData?.nodeInfo) {\n // if the row is a node\n onLoadedNodeClick(selectedRowData.nodeInfo);\n }\n },\n [gridApi, onLoadedNodeClick]\n );\n\n const getterRowData = useCallback((params) => {\n return params.data?.iconData;\n }, []);\n\n const columnDefinitions = useMemo(\n () =>\n columnDefs\n ? columnDefs\n : [\n tree?.treeStructure && {\n headerName: '',\n cellRenderer: 'iconRenderer',\n valueGetter: getterRowData,\n maxWidth: 60,\n resizable: false,\n suppressMenu: true,\n sortable: false,\n cellStyle: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n }\n },\n {\n headerName: 'Name',\n field: 'name',\n minWidth: 120,\n maxWidth: 300\n },\n {\n headerName: 'Type',\n field: 'type',\n valueGetter: (params) => getSanitizedName(params.data?.type),\n minWidth: 80\n },\n {\n headerName: 'Date Loaded',\n field: 'dateLoaded',\n minWidth: 80\n },\n {\n headerName: '',\n field: 'nodeInfo',\n maxWidth: 0,\n cellStyle: {\n display: 'none'\n }\n }\n ],\n [columnDefs, getterRowData, tree]\n );\n\n const recentlyLoadedNodesValues = useMemo(\n () =>\n recentlyLoadedNodes?.map((loadedNode) => {\n const matchingNode = tree?.treeStructure?.find(\n (node) =>\n node.properties.catalogReturnObject ===\n loadedNode?.nodeDetails?.catalogReturnObject\n );\n\n return {\n iconData: matchingNode?.properties?.defaultIcon || {\n name: 'PictureTileIcon'\n },\n name: loadedNode?.nodeDetails?.nodeLabel,\n type: loadedNode?.nodeDetails?.catalogReturnObject,\n dateLoaded: formatDateToLocaleString(\n loadedNode?.dateLoaded,\n DateTime.DATETIME_MED\n ),\n nodeInfo: loadedNode\n };\n }),\n [recentlyLoadedNodes, tree]\n );\n\n return (\n <AmbientCard\n title={!hideTitle ? 'Recently Loaded' : ' '}\n fullWidth\n noAdornment\n >\n {loading || !tree ? (\n <LinearProgress />\n ) : recentlyLoadedNodes?.length ? (\n <AgTable\n columnDefs={columnDefinitions}\n defaultColDef={defaultColDef}\n rowData={recentlyLoadedNodesValues || []}\n onGridReady={onGridReady}\n getRowNodeId={(row) => row.name}\n onRowSelected={handleRowSelected}\n rowSelection='single'\n frameworkComponents={{ iconRenderer: IconRenderer }}\n height={tableHeight}\n />\n ) : (\n <Typography>No Data Recently Loaded.</Typography>\n )}\n </AmbientCard>\n );\n};\n"],"mappings":";;;;;;;;;;AASA,MAAM,gBAAgB;CACpB,WAAW;CACX,UAAU;CACV,UAAU;CACV,QAAQ;CACT;AAED,MAAa,4BAA4B,UAAU;CACjD,MAAM,EACJ,qBACA,SACA,mBACA,aACA,MACA,YACA,YAAY,UACV;CAEJ,MAAM,EAAE,SAAS,eAAe,gBAAgB,cAAc;CAC9D,MAAM,CAAC,aAAa,kBAAkB,UAAU;AAEhD,iBAAgB;AACd,MAAI,CAAC,cAAe;AAEpB,WAAS,kBAAkB;AAC3B,iBACE,SAAS,iBAAiB,CAAC,UAAU,QAAQ,iBAAiB,CAAC,GAChE;IACA,CAAC,eAAe,QAAQ,CAAC;CAE5B,MAAM,oBAAoB,aACvB,UAAU;AACT,MAAI,CAAC,MAAM,KAAK,SAAU;AAE1B,MAAI,CAAC,QAAS;EAEd,MAAM,kBACJ,QAAQ,iBAAiB,CAAC,UAAU,QAAQ,iBAAiB,CAAC;AAEhE,MAAI,CAAC,gBAAiB;AAEtB,iBAAe,gBAAgB;AAE/B,MAAI,iBAAiB,SAEnB,mBAAkB,gBAAgB,SAAS;IAG/C,CAAC,SAAS,kBAAkB,CAC7B;CAED,MAAM,gBAAgB,aAAa,WAAW;AAC5C,SAAO,OAAO,MAAM;IACnB,EAAE,CAAC;CAEN,MAAM,oBAAoB,cAEtB,aACI,aACA;EACE,MAAM,iBAAiB;GACrB,YAAY;GACZ,cAAc;GACd,aAAa;GACb,UAAU;GACV,WAAW;GACX,cAAc;GACd,UAAU;GACV,WAAW;IACT,SAAS;IACT,YAAY;IACZ,gBAAgB;IACjB;GACF;EACD;GACE,YAAY;GACZ,OAAO;GACP,UAAU;GACV,UAAU;GACX;EACD;GACE,YAAY;GACZ,OAAO;GACP,cAAc,WAAW,iBAAiB,OAAO,MAAM,KAAK;GAC5D,UAAU;GACX;EACD;GACE,YAAY;GACZ,OAAO;GACP,UAAU;GACX;EACD;GACE,YAAY;GACZ,OAAO;GACP,UAAU;GACV,WAAW,EACT,SAAS,QACV;GACF;EACF,EACP;EAAC;EAAY;EAAe;EAAK,CAClC;CAED,MAAM,4BAA4B,cAE9B,qBAAqB,KAAK,eAAe;AAOvC,SAAO;GACL,WAPmB,MAAM,eAAe,MACvC,SACC,KAAK,WAAW,wBAChB,YAAY,aAAa,oBAC5B,GAGyB,YAAY,eAAe,EACjD,MAAM,mBACP;GACD,MAAM,YAAY,aAAa;GAC/B,MAAM,YAAY,aAAa;GAC/B,YAAY,yBACV,YAAY,YACZ,SAAS,aACV;GACD,UAAU;GACX;GACD,EACJ,CAAC,qBAAqB,KAAK,CAC5B;AAED,QACE,oCAAC;EACC,OAAO,CAAC,YAAY,oBAAoB;EACxC;EACA;IAEC,WAAW,CAAC,OACX,oCAAC,qBAAiB,GAChB,qBAAqB,SACvB,oCAAC;EACC,YAAY;EACG;EACf,SAAS,6BAA6B,EAAE;EAC3B;EACb,eAAe,QAAQ,IAAI;EAC3B,eAAe;EACf,cAAa;EACb,qBAAqB,EAAE,cAAc,cAAc;EACnD,QAAQ;GACR,GAEF,oCAAC,kBAAW,2BAAqC,CAEvC"}
@@ -1,5 +1,5 @@
1
1
  import { t as __export } from "./chunk-Bp6m_JJh.js";
2
- import { t as RecentlyLoadedNodesTable } from "./RecentlyLoadedNodesTable-BaUKwrK6.js";
2
+ import { t as RecentlyLoadedNodesTable } from "./RecentlyLoadedNodesTable-ScWvY2Bk.js";
3
3
  import { t as WidgetCard_default } from "./WidgetCard-DZYTvG7e.js";
4
4
  import React, { forwardRef } from "react";
5
5
 
@@ -31,4 +31,4 @@ var RecentlyLoadedNodesWidget_exports = /* @__PURE__ */ __export({
31
31
 
32
32
  //#endregion
33
33
  export { RecentlyLoadedNodesWidget as n, RecentlyLoadedNodesWidget_default as r, RecentlyLoadedNodesWidget_exports as t };
34
- //# sourceMappingURL=RecentlyLoadedNodesWidget-Bwmkdavm.js.map
34
+ //# sourceMappingURL=RecentlyLoadedNodesWidget-5538JENZ.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RecentlyLoadedNodesWidget-Bwmkdavm.js","names":["WidgetCard"],"sources":["../src/UI/widgets/library/RecentlyLoadedNodesWidget/RecentlyLoadedNodesWidget.jsx","../src/UI/widgets/library/RecentlyLoadedNodesWidget/index.ts"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport WidgetCard from '../../WidgetCard';\nimport { RecentlyLoadedNodesTable } from '../../../../inquiry/dashboard/RecentlyLoadedNodesTable';\n\n// export const layout = {\n// w: { default: 2, min: 0, max: 4 },\n// h: { default: 2, min: 0, max: 4 }\n// };\n\nexport const RecentlyLoadedNodesWidget = (props, ref) => {\n const { children, params, setParam, ...other } = props;\n const {\n recentlyLoadedNodes,\n loading,\n onLoadedNodeClick,\n tree,\n hideWidgetName\n } = params;\n\n return (\n <WidgetCard\n ref={ref}\n title={'Recently Loaded'}\n hideWidgetName={hideWidgetName}\n {...other}\n >\n <RecentlyLoadedNodesTable\n recentlyLoadedNodes={recentlyLoadedNodes}\n loading={loading}\n onLoadedNodeClick={onLoadedNodeClick}\n tree={tree}\n hideTitle={true}\n />\n {children}\n </WidgetCard>\n );\n};\n\nexport default forwardRef(RecentlyLoadedNodesWidget);\n","export * from './RecentlyLoadedNodesWidget';\nexport {default} from './RecentlyLoadedNodesWidget';\n"],"mappings":";;;;;;AASA,MAAa,6BAA6B,OAAO,QAAQ;CACvD,MAAM,EAAE,UAAU,QAAQ,SAAU,GAAG,UAAU;CACjD,MAAM,EACJ,qBACA,SACA,mBACA,MACA,mBACE;AAEJ,QACE,oCAACA;EACM;EACL,OAAO;EACS;EAChB,GAAI;IAEJ,oCAAC;EACsB;EACZ;EACU;EACb;EACN,WAAW;GACX,EACD,SACU;;AAIjB,wCAAe,WAAW,0BAA0B"}
1
+ {"version":3,"file":"RecentlyLoadedNodesWidget-5538JENZ.js","names":["WidgetCard"],"sources":["../src/UI/widgets/library/RecentlyLoadedNodesWidget/RecentlyLoadedNodesWidget.jsx","../src/UI/widgets/library/RecentlyLoadedNodesWidget/index.ts"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport WidgetCard from '../../WidgetCard';\nimport { RecentlyLoadedNodesTable } from '../../../../inquiry/dashboard/RecentlyLoadedNodesTable';\n\n// export const layout = {\n// w: { default: 2, min: 0, max: 4 },\n// h: { default: 2, min: 0, max: 4 }\n// };\n\nexport const RecentlyLoadedNodesWidget = (props, ref) => {\n const { children, params, setParam, ...other } = props;\n const {\n recentlyLoadedNodes,\n loading,\n onLoadedNodeClick,\n tree,\n hideWidgetName\n } = params;\n\n return (\n <WidgetCard\n ref={ref}\n title={'Recently Loaded'}\n hideWidgetName={hideWidgetName}\n {...other}\n >\n <RecentlyLoadedNodesTable\n recentlyLoadedNodes={recentlyLoadedNodes}\n loading={loading}\n onLoadedNodeClick={onLoadedNodeClick}\n tree={tree}\n hideTitle={true}\n />\n {children}\n </WidgetCard>\n );\n};\n\nexport default forwardRef(RecentlyLoadedNodesWidget);\n","export * from './RecentlyLoadedNodesWidget';\nexport {default} from './RecentlyLoadedNodesWidget';\n"],"mappings":";;;;;;AASA,MAAa,6BAA6B,OAAO,QAAQ;CACvD,MAAM,EAAE,UAAU,QAAQ,SAAU,GAAG,UAAU;CACjD,MAAM,EACJ,qBACA,SACA,mBACA,MACA,mBACE;AAEJ,QACE,oCAACA;EACM;EACL,OAAO;EACS;EAChB,GAAI;IAEJ,oCAAC;EACsB;EACZ;EACU;EACb;EACN,WAAW;GACX,EACD,SACU;;AAIjB,wCAAe,WAAW,0BAA0B"}
@@ -1,7 +1,7 @@
1
1
  import { A as SplitScreenTypeEnums } from "./unitySystemEnums-DQSkCr3D.js";
2
2
  import { t as UnityFluentIcon } from "./UnityFluentIcon-DkZ-zXku.js";
3
3
  import { n as useActions } from "./useActions-CBGNxEKr.js";
4
- import { S as getIconFromName } from "./TreeUtilities-BnHT4nq0.js";
4
+ import { S as getIconFromName } from "./TreeUtilities-DWgARig7.js";
5
5
  import { t as getUnityIconFromName } from "./UnityIconLibrary-CjIwzfjv.js";
6
6
  import { t as StatusChip } from "./StatusChip-DZAN88VU.js";
7
7
  import React, { useCallback, useMemo, useState } from "react";
@@ -135,4 +135,4 @@ const RemindersCard = (props) => {
135
135
 
136
136
  //#endregion
137
137
  export { CompleteReminderSwitch as n, RemindersCard as t };
138
- //# sourceMappingURL=RemindersCard-D1M4Z5Tm.js.map
138
+ //# sourceMappingURL=RemindersCard-BVT2iuT4.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RemindersCard-D1M4Z5Tm.js","names":[],"sources":["../src/reminders/CompleteReminderSwitch.jsx","../src/reminders/RemindersCard.jsx"],"sourcesContent":["import React, { useCallback, useState } from 'react';\nimport { Switch } from '@material-ui/core';\n\nexport const CompleteReminderSwitch = (props) => {\n const { checked, onChange, ...otherProps } = props;\n const [switchChecked, setSwitchChecked] = useState(checked);\n\n const handleOnChange = useCallback(\n (event) => {\n setSwitchChecked(event.target.checked);\n onChange && onChange(event);\n },\n [onChange]\n );\n\n return (\n <Switch checked={switchChecked} onChange={handleOnChange} {...otherProps} />\n );\n};\n","import React, { useCallback, useMemo } from 'react';\nimport {\n Typography,\n LinearProgress,\n makeStyles,\n List,\n ListItem,\n Checkbox,\n ListItemText,\n ListItemSecondaryAction,\n Divider,\n FormControlLabel\n} from '@material-ui/core';\nimport { StatusChip } from '../UI/dataDisplay/status/StatusChip';\nimport { UnityFluentIcon } from '../utilities/iconLibrary/UnityFluentIcon';\nimport { getUnityIconFromName } from '../utilities/iconLibrary/UnityIconLibrary';\nimport { getIconFromName } from '../utilities/tree/TreeUtilities';\nimport { useActions } from '../hooks/useActions';\nimport { SplitScreenTypeEnums } from '../enums/unitySystemEnums';\nimport { CompleteReminderSwitch } from './CompleteReminderSwitch';\nimport { executeQueryWithParameters } from '../udp/utilities/methodUtils';\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n item: {\n display: 'flex',\n '& .MuiListItem-container': {\n width: '100%'\n },\n '& .MuiListItem-container > .MuiListItem-button': {\n paddingLeft: 0,\n paddingRight: 0\n }\n }\n}));\n\nexport const RemindersCard = (props) => {\n const {\n reminders,\n setReminders,\n loading,\n getNodeToLoad,\n onLoadedNodeClick,\n getIcon = () => {},\n updateRemindersAcknowledgement\n } = props;\n const classes = useStyles(props);\n const { openSplitScreen } = useActions();\n\n const handleSwitchChange = useCallback(\n async (event, reminder) => {\n const updatedReminder = { ...reminder };\n updatedReminder.checked = event.target.checked;\n await updateRemindersAcknowledgement([updatedReminder]);\n },\n [updateRemindersAcknowledgement]\n );\n\n const getCompleteSwitch = useCallback(\n (reminder) => (\n <FormControlLabel\n control={\n <CompleteReminderSwitch\n size='small'\n checked={reminder?.acknowledged || false}\n onChange={(event) => handleSwitchChange(event, reminder)}\n />\n }\n label='Complete'\n style={{ marginRight: 8 }}\n />\n ),\n [handleSwitchChange]\n );\n\n const getStatusLabel = useCallback((date) => {\n const day = 1000 * 60 * 60 * 24;\n const reminderDate = new Date(date).getTime();\n if (reminderDate >= Date.now() - day * 7) {\n // Less than or equal 7 days past reminder date\n return Math.floor((Date.now() - reminderDate) / (1000 * 3600 * 24));\n } else if (\n reminderDate < Date.now() - day * 7 &&\n reminderDate >= Date.now() - day * 30\n ) {\n // Greater than 7 days but less than or equal to 30 days past reminder date\n return Math.floor((Date.now() - reminderDate) / (1000 * 3600 * 24));\n } else if (\n reminderDate < Date.now() - day * 30 &&\n reminderDate >= Date.now() - day * 180\n ) {\n // Greater 30 days but less than or equal to 180 days past reminder date\n return Math.floor((Date.now() - reminderDate) / (1000 * 3600 * 24));\n } else if (reminderDate < Date.now() - day * 180) {\n // Greater than 180 days past reminder date\n return Math.floor((Date.now() - reminderDate) / (1000 * 3600 * 24));\n }\n }, []);\n\n const getStatusColor = useCallback((date) => {\n const day = 1000 * 60 * 60 * 24;\n const reminderDate = new Date(date).getTime();\n if (reminderDate >= Date.now() - day * 7) {\n // Less than or equal 7 days past reminder date\n return '';\n } else if (\n reminderDate < Date.now() - day * 7 &&\n reminderDate >= Date.now() - day * 30\n ) {\n // Greater than 7 days but less than or equal to 30 days past reminder date\n return 'info';\n } else if (\n reminderDate < Date.now() - day * 30 &&\n reminderDate >= Date.now() - day * 180\n ) {\n // Greater 30 days but less than or equal to 180 days past reminder date\n return 'warning';\n } else if (reminderDate < Date.now() - day * 180) {\n // Greater than 180 days past reminder date\n return 'error';\n }\n }, []);\n\n const handleReminderCheck = useCallback(\n (evt, reminder) => {\n const updatedReminders = [...reminders];\n const matchingReminders = updatedReminders.filter(\n (r) => r.id === reminder.id\n );\n matchingReminders?.forEach(\n (matchingReminder) => (matchingReminder.checked = evt.target.checked)\n );\n setReminders(updatedReminders);\n },\n [reminders, setReminders]\n );\n\n const handleReminderClick = useCallback(\n (nodeToLoad, reminder) => {\n onLoadedNodeClick(nodeToLoad);\n\n openSplitScreen({\n open: true,\n action: null,\n type: SplitScreenTypeEnums.Reminders,\n params: {\n id: reminder?.id || '',\n additionalInputs: reminder ? getCompleteSwitch(reminder) : null\n }\n });\n },\n [onLoadedNodeClick, openSplitScreen, getCompleteSwitch]\n );\n\n return loading ? (\n <LinearProgress />\n ) : reminders?.length ? (\n <List className={classes.root}>\n {reminders.map((reminder) => {\n const icon = getIcon(reminder);\n const nodeToLoad = getNodeToLoad(reminder);\n return (\n <>\n <div className={classes.item} key={reminder.id}>\n <Checkbox\n id='udpRecord-RemindersCard-Checkbox'\n udprecordid='udpRecord-RemindersCard-Checkbox'\n edge='start'\n checked={reminder.checked || reminder.acknowledged}\n disableRipple\n size='small'\n onChange={(evt) => handleReminderCheck(evt, reminder)}\n disabled={reminder.acknowledged}\n />\n <ListItem\n id='udpRecord-ReminderCard-Item'\n udprecordid='udpRecord-ReminderCard-Item'\n key={reminder.id}\n dense\n subject={reminder.subject}\n removePadding={true}\n button\n onClick={() => handleReminderClick(nodeToLoad, reminder)}\n >\n <ListItemText>\n <div style={{ display: 'block' }}>\n <Typography\n style={{ lineHeight: '0.9rem', fontSize: '0.8rem' }}\n >\n {reminder.subject}\n </Typography>\n </div>\n <Typography\n style={{\n lineHeight: '0.8rem',\n fontSize: '0.7rem',\n fontWeight: 400,\n color: 'rgba(0, 0, 0, 0.54)'\n }}\n >\n {new Date(reminder.reminderDate).toDateString()}\n </Typography>\n </ListItemText>\n <ListItemSecondaryAction>\n <StatusChip\n status={getStatusColor(reminder.reminderDate)}\n label={getStatusLabel(reminder.reminderDate)}\n icon={\n <UnityFluentIcon\n type={icon?.type}\n icon={\n icon?.type === 'unity'\n ? getUnityIconFromName(icon?.name || '')\n : getIconFromName(icon?.name || '')\n }\n />\n }\n />\n </ListItemSecondaryAction>\n </ListItem>\n </div>\n <Divider style={{ height: 1 }} />\n </>\n );\n })}\n </List>\n ) : (\n <Typography>All Reminders Completed</Typography>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"RemindersCard-BVT2iuT4.js","names":[],"sources":["../src/reminders/CompleteReminderSwitch.jsx","../src/reminders/RemindersCard.jsx"],"sourcesContent":["import React, { useCallback, useState } from 'react';\nimport { Switch } from '@material-ui/core';\n\nexport const CompleteReminderSwitch = (props) => {\n const { checked, onChange, ...otherProps } = props;\n const [switchChecked, setSwitchChecked] = useState(checked);\n\n const handleOnChange = useCallback(\n (event) => {\n setSwitchChecked(event.target.checked);\n onChange && onChange(event);\n },\n [onChange]\n );\n\n return (\n <Switch checked={switchChecked} onChange={handleOnChange} {...otherProps} />\n );\n};\n","import React, { useCallback, useMemo } from 'react';\nimport {\n Typography,\n LinearProgress,\n makeStyles,\n List,\n ListItem,\n Checkbox,\n ListItemText,\n ListItemSecondaryAction,\n Divider,\n FormControlLabel\n} from '@material-ui/core';\nimport { StatusChip } from '../UI/dataDisplay/status/StatusChip';\nimport { UnityFluentIcon } from '../utilities/iconLibrary/UnityFluentIcon';\nimport { getUnityIconFromName } from '../utilities/iconLibrary/UnityIconLibrary';\nimport { getIconFromName } from '../utilities/tree/TreeUtilities';\nimport { useActions } from '../hooks/useActions';\nimport { SplitScreenTypeEnums } from '../enums/unitySystemEnums';\nimport { CompleteReminderSwitch } from './CompleteReminderSwitch';\nimport { executeQueryWithParameters } from '../udp/utilities/methodUtils';\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n item: {\n display: 'flex',\n '& .MuiListItem-container': {\n width: '100%'\n },\n '& .MuiListItem-container > .MuiListItem-button': {\n paddingLeft: 0,\n paddingRight: 0\n }\n }\n}));\n\nexport const RemindersCard = (props) => {\n const {\n reminders,\n setReminders,\n loading,\n getNodeToLoad,\n onLoadedNodeClick,\n getIcon = () => {},\n updateRemindersAcknowledgement\n } = props;\n const classes = useStyles(props);\n const { openSplitScreen } = useActions();\n\n const handleSwitchChange = useCallback(\n async (event, reminder) => {\n const updatedReminder = { ...reminder };\n updatedReminder.checked = event.target.checked;\n await updateRemindersAcknowledgement([updatedReminder]);\n },\n [updateRemindersAcknowledgement]\n );\n\n const getCompleteSwitch = useCallback(\n (reminder) => (\n <FormControlLabel\n control={\n <CompleteReminderSwitch\n size='small'\n checked={reminder?.acknowledged || false}\n onChange={(event) => handleSwitchChange(event, reminder)}\n />\n }\n label='Complete'\n style={{ marginRight: 8 }}\n />\n ),\n [handleSwitchChange]\n );\n\n const getStatusLabel = useCallback((date) => {\n const day = 1000 * 60 * 60 * 24;\n const reminderDate = new Date(date).getTime();\n if (reminderDate >= Date.now() - day * 7) {\n // Less than or equal 7 days past reminder date\n return Math.floor((Date.now() - reminderDate) / (1000 * 3600 * 24));\n } else if (\n reminderDate < Date.now() - day * 7 &&\n reminderDate >= Date.now() - day * 30\n ) {\n // Greater than 7 days but less than or equal to 30 days past reminder date\n return Math.floor((Date.now() - reminderDate) / (1000 * 3600 * 24));\n } else if (\n reminderDate < Date.now() - day * 30 &&\n reminderDate >= Date.now() - day * 180\n ) {\n // Greater 30 days but less than or equal to 180 days past reminder date\n return Math.floor((Date.now() - reminderDate) / (1000 * 3600 * 24));\n } else if (reminderDate < Date.now() - day * 180) {\n // Greater than 180 days past reminder date\n return Math.floor((Date.now() - reminderDate) / (1000 * 3600 * 24));\n }\n }, []);\n\n const getStatusColor = useCallback((date) => {\n const day = 1000 * 60 * 60 * 24;\n const reminderDate = new Date(date).getTime();\n if (reminderDate >= Date.now() - day * 7) {\n // Less than or equal 7 days past reminder date\n return '';\n } else if (\n reminderDate < Date.now() - day * 7 &&\n reminderDate >= Date.now() - day * 30\n ) {\n // Greater than 7 days but less than or equal to 30 days past reminder date\n return 'info';\n } else if (\n reminderDate < Date.now() - day * 30 &&\n reminderDate >= Date.now() - day * 180\n ) {\n // Greater 30 days but less than or equal to 180 days past reminder date\n return 'warning';\n } else if (reminderDate < Date.now() - day * 180) {\n // Greater than 180 days past reminder date\n return 'error';\n }\n }, []);\n\n const handleReminderCheck = useCallback(\n (evt, reminder) => {\n const updatedReminders = [...reminders];\n const matchingReminders = updatedReminders.filter(\n (r) => r.id === reminder.id\n );\n matchingReminders?.forEach(\n (matchingReminder) => (matchingReminder.checked = evt.target.checked)\n );\n setReminders(updatedReminders);\n },\n [reminders, setReminders]\n );\n\n const handleReminderClick = useCallback(\n (nodeToLoad, reminder) => {\n onLoadedNodeClick(nodeToLoad);\n\n openSplitScreen({\n open: true,\n action: null,\n type: SplitScreenTypeEnums.Reminders,\n params: {\n id: reminder?.id || '',\n additionalInputs: reminder ? getCompleteSwitch(reminder) : null\n }\n });\n },\n [onLoadedNodeClick, openSplitScreen, getCompleteSwitch]\n );\n\n return loading ? (\n <LinearProgress />\n ) : reminders?.length ? (\n <List className={classes.root}>\n {reminders.map((reminder) => {\n const icon = getIcon(reminder);\n const nodeToLoad = getNodeToLoad(reminder);\n return (\n <>\n <div className={classes.item} key={reminder.id}>\n <Checkbox\n id='udpRecord-RemindersCard-Checkbox'\n udprecordid='udpRecord-RemindersCard-Checkbox'\n edge='start'\n checked={reminder.checked || reminder.acknowledged}\n disableRipple\n size='small'\n onChange={(evt) => handleReminderCheck(evt, reminder)}\n disabled={reminder.acknowledged}\n />\n <ListItem\n id='udpRecord-ReminderCard-Item'\n udprecordid='udpRecord-ReminderCard-Item'\n key={reminder.id}\n dense\n subject={reminder.subject}\n removePadding={true}\n button\n onClick={() => handleReminderClick(nodeToLoad, reminder)}\n >\n <ListItemText>\n <div style={{ display: 'block' }}>\n <Typography\n style={{ lineHeight: '0.9rem', fontSize: '0.8rem' }}\n >\n {reminder.subject}\n </Typography>\n </div>\n <Typography\n style={{\n lineHeight: '0.8rem',\n fontSize: '0.7rem',\n fontWeight: 400,\n color: 'rgba(0, 0, 0, 0.54)'\n }}\n >\n {new Date(reminder.reminderDate).toDateString()}\n </Typography>\n </ListItemText>\n <ListItemSecondaryAction>\n <StatusChip\n status={getStatusColor(reminder.reminderDate)}\n label={getStatusLabel(reminder.reminderDate)}\n icon={\n <UnityFluentIcon\n type={icon?.type}\n icon={\n icon?.type === 'unity'\n ? getUnityIconFromName(icon?.name || '')\n : getIconFromName(icon?.name || '')\n }\n />\n }\n />\n </ListItemSecondaryAction>\n </ListItem>\n </div>\n <Divider style={{ height: 1 }} />\n </>\n );\n })}\n </List>\n ) : (\n <Typography>All Reminders Completed</Typography>\n );\n};\n"],"mappings":"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"}
@@ -8,7 +8,7 @@ import { r as useActionStore } from "./inquiryStore-BMYKf5MP.js";
8
8
  import { n as useShellStore } from "./shellStore-C8zfPsZ-.js";
9
9
  import { t as useActionState } from "./useActions-CBGNxEKr.js";
10
10
  import { r as getSearchObject } from "./SearchUtilities-Df1gkDw9.js";
11
- import { r as constructBusinessObjectArrFromTree } from "./TreeUtilities-BnHT4nq0.js";
11
+ import { r as constructBusinessObjectArrFromTree } from "./TreeUtilities-DWgARig7.js";
12
12
  import { t as LayoutUnit } from "./LayoutUnit-D4jJvonh.js";
13
13
  import { t as CkRichEditor } from "./CkRichEditor-CoP_h6jt.js";
14
14
  import { a as getBaseMethod, i as executeQueryWithParameters, t as executeQueryAdHoc } from "./methodUtils-DEk9B4A8.js";
@@ -437,4 +437,4 @@ const RemindersScreen = (props) => {
437
437
 
438
438
  //#endregion
439
439
  export { RemindersScreen as t };
440
- //# sourceMappingURL=RemindersScreen-BiRcMvRs.js.map
440
+ //# sourceMappingURL=RemindersScreen-NaO3jhh9.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RemindersScreen-BiRcMvRs.js","names":["reminder","existingReminderObj"],"sources":["../src/reminders/RemindersScreen.jsx"],"sourcesContent":["import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState\n} from 'react';\nimport { CkRichEditor } from '../UI/inputs/richEditors/CkRichEditor';\nimport { makeStyles, TextField, LinearProgress } from '@material-ui/core';\nimport { Field, Form } from '../utilities/form';\nimport { FluentTextFieldAutoComplete } from '../UI/inputs/textField/FluentTextFieldAutoComplete';\nimport { useTranslation } from 'react-i18next';\nimport { useActionState } from '../hooks/useActions';\nimport { constructBusinessObjectArrFromTree } from '../utilities/tree/TreeUtilities';\nimport { LayoutUnit } from '../layout/LayoutUnit';\nimport { UdpEnums } from '../enums/unitySystemEnums';\nimport { useHandleAxiosSnackbar } from '../utilities/apiHelpers';\nimport { useUser } from '../utilities/auth/useUser';\nimport { differenceWith } from 'lodash';\nimport {\n executeQueryAdHoc,\n getBaseMethod,\n executeQueryWithParameters\n} from '../udp/utilities/methodUtils';\nimport { ShortcutContentFinder } from '../udp/ShortcutContent/ShortcutContentFinder';\nimport { AmbientCard } from '../UI/surfaces/cards/AmbientCard';\nimport { useShellStore } from '../stores/shellStore';\nimport { FluentDatePicker } from '../UI/inputs/pickers/FluentDatePicker';\nimport { useActionStore } from '../stores/actionStore';\nimport { FILE_TO_TYPES } from '../constants/reminderConstants';\nimport { getSearchObject } from '../utilities/search/SearchUtilities';\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n editor: {\n '& .ck-editor__main > .ck-editor__editable_inline': {\n backgroundColor:\n theme?.getThemeData()?.mode === 'dark'\n ? theme.palette.grey[800]\n : theme.palette.grey[100]\n }\n },\n row: {\n display: 'flex',\n justifyContent: 'space-between'\n },\n input: {\n height: 34,\n padding: 0\n },\n formTextInput: {\n fontSize: 14\n },\n labelRoot: {\n fontSize: 14\n }\n}));\n\nexport const RemindersScreen = (props) => {\n const {\n formRef,\n onSubmit,\n shortcutContentFinderEnabled,\n id,\n viewOnly,\n reloadReminders\n } = props;\n const [reminder, setReminder] = useState('');\n const [typeOptions, setTypeOptions] = useState([]);\n const [templateOptions, setTemplateOptions] = useState([]);\n const [reminderId, setReminderId] = useState(id || '');\n const [existingReminderFiledFor, setExistingReminderFiledFor] = useState([]);\n const [existingReminderObj, setExistingReminderObj] = useState(null);\n const [loading, setLoading] = useState(false);\n const classes = useStyles(props);\n const { t } = useTranslation();\n const actionState = useActionState();\n const shellHidden = useShellStore((state) => state.shellHidden);\n const { menuListState, catalogPromotedEntities } = actionState;\n const { handleSuccessSnackbar, handleErrorSnackbar } =\n useHandleAxiosSnackbar();\n const user = useUser();\n const editorRef = useRef(null);\n const selectedNode = useActionStore((state) => state.selectedNode);\n\n const selectedMenu = useMemo(() => {\n if (menuListState.menuList.length) {\n return menuListState.menuList[menuListState.selectedMenuIndex] || null;\n }\n return null;\n }, [menuListState]);\n\n const reminderGetFullApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Reminder,\n 'unityBaseGetFullMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const reminderTypeSearchApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Reminder_Type,\n 'unityBaseSearchMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const reminderTemplateSearchApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Reminder_Template,\n 'unityBaseSearchMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const createReminderApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Reminder,\n 'unityBaseCreateMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const updateReminderApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Reminder,\n 'unityBaseUpdateMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const createReminderFiledForApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Reminder_Filed_For,\n 'unityBaseCreateMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const updateReminderFiledForApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Reminder_Filed_For,\n 'unityBaseUpdateMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const deleteReminderFiledForApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Reminder_Filed_For,\n 'unityBaseDeleteMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const disabled = useMemo(() => {\n return viewOnly;\n }, [viewOnly]);\n\n const handleSaveReminder = useCallback(\n async (values) => {\n let response = null;\n const reminderDate = new Date(values?.reminderDate?.setHours(0, 0, 0, 0));\n const data = {\n requestBody: {\n tenantId: user?.currentTenantId,\n typeCode: values?.type?.code,\n subject: values?.subject,\n content: values?.reminder,\n unityUserId: user?.id,\n userDisplayName: `${user?.firstName} ${user?.familyName}`,\n reminderDate: reminderDate.toDateString()\n }\n };\n if (reminderId) {\n if (updateReminderApiMethod) {\n // Set the url parameter for updating reminder\n data['{iD}'] = reminderId;\n response = await executeQueryWithParameters(\n { data },\n updateReminderApiMethod.apiMethodId\n ).catch((e) => handleErrorSnackbar(e, 'Could not Update Reminder'));\n } else {\n handleErrorSnackbar(null, 'Update Reminder Method Not Promoted');\n }\n } else {\n if (createReminderApiMethod) {\n response = await executeQueryWithParameters(\n { data },\n createReminderApiMethod.apiMethodId\n ).catch((e) => handleErrorSnackbar(e, 'Could not Save Reminder'));\n } else {\n handleErrorSnackbar(null, 'Create Reminder Method Not Promoted');\n }\n }\n\n if (response?.status === 200) {\n if (!reminderId) {\n setReminderId(response.data.id || '');\n handleSuccessSnackbar('Reminder Saved');\n } else {\n handleSuccessSnackbar('Reminder Updated');\n }\n if (reloadReminders) {\n reloadReminders();\n }\n return response.data.id || reminderId;\n }\n\n return reminderId;\n },\n [\n createReminderApiMethod,\n updateReminderApiMethod,\n reminderId,\n setReminderId,\n handleErrorSnackbar,\n handleSuccessSnackbar,\n user,\n reloadReminders\n ]\n );\n\n const reminderFiledForToComparator = (nftc1, nftc2) => {\n return nftc1?.value === nftc2?.value;\n };\n\n const handleReminderFiledFor = useCallback(\n async (values, reminderdIdToFileFor) => {\n // Get the reminderFiledFor objects to delete\n const reminderFiledForToDelete = differenceWith(\n existingReminderFiledFor,\n values?.fileTo,\n reminderFiledForToComparator\n );\n\n // Get the reminderFiledFor objects to create\n const reminderFiledForToCreate = differenceWith(\n values?.fileTo,\n existingReminderFiledFor,\n reminderFiledForToComparator\n );\n\n if (reminderdIdToFileFor) {\n if (deleteReminderFiledForApiMethod) {\n const deletedPromises = [];\n reminderFiledForToDelete.forEach((nftd) => {\n const data = {};\n data['{reminderID}'] = reminderdIdToFileFor;\n data['{entityBusinessKey}'] = nftd.value;\n\n deletedPromises.push(\n executeQueryWithParameters(\n { data },\n deleteReminderFiledForApiMethod.apiMethodId\n )\n );\n });\n\n await Promise.all(deletedPromises.map((p) => p.catch((e) => e))).then(\n (responses) => {\n if (responses.length !== deletedPromises.length) {\n console.warn(`Not all Reminder Filed For deleted`);\n }\n }\n );\n } else {\n handleErrorSnackbar(\n null,\n 'Delete Reminder Filed For Method Not Promoted'\n );\n }\n\n if (createReminderFiledForApiMethod) {\n const createdPromises = [];\n reminderFiledForToCreate.forEach((nftc) => {\n const data = {\n requestBody: {\n reminderId: reminderdIdToFileFor,\n entityBusinessKey: nftc.value,\n domainObject: nftc.domainObject,\n type: values?.fileToType?.value || 1\n }\n };\n createdPromises.push(\n executeQueryWithParameters(\n { data },\n createReminderFiledForApiMethod.apiMethodId\n )\n );\n });\n await Promise.all(createdPromises.map((p) => p.catch((e) => e))).then(\n (responses) => {\n responses.forEach((response) => {\n if (response.status === 200) {\n const entityBusinessKey = response.data.entityBusinessKey;\n const matchingReminderFiledFor =\n reminderFiledForToCreate.find(\n (nftc) => nftc.value === entityBusinessKey\n );\n if (!matchingReminderFiledFor) {\n console.warn(\n `Reminder Filed For not created for all file to entities`\n );\n }\n }\n });\n }\n );\n setExistingReminderFiledFor(values?.fileTo);\n } else {\n handleErrorSnackbar(\n null,\n 'Create Reminder Filed For Method Not Promoted'\n );\n }\n\n if (updateReminderFiledForApiMethod) {\n const updatedPromises = [];\n values?.fileTo?.forEach((nftu) => {\n const data = {\n requestBody: {\n reminderId: reminderdIdToFileFor,\n entityBusinessKey: nftu.value,\n domainObject: nftu.domainObject,\n type: values?.fileToType?.value || 1\n }\n };\n data['{reminderID}'] = reminderdIdToFileFor;\n data['{entityBusinessKey}'] = nftu.value;\n updatedPromises.push(\n executeQueryWithParameters(\n { data },\n updateReminderFiledForApiMethod.apiMethodId\n )\n );\n });\n await Promise.all(updatedPromises.map((p) => p.catch((e) => e))).then(\n (responses) => {\n responses.forEach((response) => {\n if (response.status === 200) {\n const entityBusinessKey = response.data.entityBusinessKey;\n const matchingReminderFiledFor = values?.fileTo?.find(\n (nftu) => nftu.value === entityBusinessKey\n );\n if (!matchingReminderFiledFor) {\n console.warn(\n `Reminder Filed For not updated for all file to entities`\n );\n }\n }\n });\n }\n );\n setExistingReminderFiledFor(values?.fileTo);\n } else {\n handleErrorSnackbar(\n null,\n 'Update Reminder Filed For Method Not Promoted'\n );\n }\n }\n },\n [\n createReminderFiledForApiMethod,\n updateReminderFiledForApiMethod,\n deleteReminderFiledForApiMethod,\n handleErrorSnackbar,\n existingReminderFiledFor,\n setExistingReminderFiledFor\n ]\n );\n\n const handleOnSubmit = useCallback(\n async (values) => {\n if (onSubmit) {\n onSubmit({ reminder, ...values });\n } else {\n const reminderdIdToFileFor = await handleSaveReminder({\n reminder,\n ...values\n });\n await handleReminderFiledFor(\n { reminder, ...values },\n reminderdIdToFileFor\n );\n }\n },\n [reminder, onSubmit, handleSaveReminder, handleReminderFiledFor]\n );\n\n const handleTextEditorChange = (reminder) => {\n setReminder(reminder);\n };\n\n const onTemplateChange = useCallback(\n (value) => {\n formRef?.current?.form?.change('subject', value?.subject || '');\n const type = typeOptions.find((option) => option.code === value.typeCode);\n formRef?.current?.form?.change('type', type || null);\n formRef?.current?.form?.change(\n 'reminderDate',\n value.reminderDate === '0001-01-01T00:00:00'\n ? new Date()\n : new Date(value.reminderDate)\n );\n setReminder(value?.content || '');\n },\n [setReminder, formRef, typeOptions]\n );\n\n const handleShortcutOnSelect = useCallback(\n (shortcutContent) => {\n editorRef?.current?.model?.change((writer) => {\n const insertPosition =\n editorRef?.current?.model?.document?.selection?.getFirstPosition();\n writer.remove(\n editorRef?.current?.model?.document?.selection?.getFirstRange()\n );\n writer.insertText(shortcutContent, insertPosition);\n });\n\n setReminder(editorRef?.current?.getData());\n },\n [editorRef, setReminder]\n );\n\n const fileToOptions = useMemo(() => {\n let options = [];\n if (selectedMenu) {\n options = constructBusinessObjectArrFromTree(selectedMenu);\n }\n return options;\n }, [selectedMenu]);\n\n useEffect(() => {\n // TODO: update to use getAll reminderTypes\n const getTypeOptions = async () => {\n let options = [];\n if (reminderTypeSearchApiMethod) {\n const filterElements = [];\n const searchObject = getSearchObject(filterElements, 1, 200, true);\n const data = { data: searchObject };\n const typesResponse = await executeQueryAdHoc(\n data,\n reminderTypeSearchApiMethod.apiMethodId\n );\n if (typesResponse?.status === 200) {\n options = typesResponse.data?.pageList || [];\n }\n }\n setTypeOptions(options);\n };\n getTypeOptions();\n }, [reminderTypeSearchApiMethod, setTypeOptions, user]);\n\n useEffect(() => {\n // TODO: update to use getAll reminderTemplates\n const getTemplateOptions = async () => {\n let options = [];\n if (reminderTemplateSearchApiMethod) {\n const filterElements = [];\n const searchObject = getSearchObject(filterElements, 1, 200, true);\n const data = { data: searchObject };\n const templatesResponse = await executeQueryAdHoc(\n data,\n reminderTemplateSearchApiMethod.apiMethodId\n );\n if (templatesResponse?.status === 200) {\n options = templatesResponse.data?.pageList || [];\n }\n }\n setTemplateOptions(options);\n };\n getTemplateOptions();\n }, [reminderTemplateSearchApiMethod, setTemplateOptions, user]);\n\n useEffect(() => {\n const getExistingReminder = async () => {\n let existingReminderObj = null;\n const data = {};\n if (reminderGetFullApiMethod) {\n setLoading(true);\n data['{iD}'] = id;\n const reminderResponse = await executeQueryWithParameters(\n { data },\n reminderGetFullApiMethod.apiMethodId\n ).catch((e) => {\n console.error(e);\n setLoading(false);\n });\n if (reminderResponse?.status === 200) {\n existingReminderObj = reminderResponse.data;\n }\n }\n setExistingReminderObj(existingReminderObj);\n setReminder(existingReminderObj?.content);\n setLoading(false);\n };\n if (id) {\n getExistingReminder();\n }\n }, [id, reminderGetFullApiMethod]);\n\n useEffect(() => {\n if (!existingReminderObj || !fileToOptions?.length) {\n return;\n }\n const initialFileTos = fileToOptions.filter((option) => {\n return existingReminderObj.reminderFiledFor.find(\n (nff) => option.value === nff.entityBusinessKey\n );\n });\n setExistingReminderFiledFor(initialFileTos);\n formRef?.current?.form?.change('fileTo', initialFileTos);\n }, [existingReminderObj, fileToOptions, formRef]);\n\n useEffect(() => {\n if (!existingReminderObj || !typeOptions?.length) {\n return;\n }\n const initialType = typeOptions.find(\n (option) => option.code === existingReminderObj.typeCode\n );\n formRef?.current?.form?.change('type', initialType || null);\n }, [existingReminderObj, typeOptions, formRef]);\n\n useEffect(() => {\n if (!existingReminderObj) {\n return;\n }\n formRef?.current?.form?.change(\n 'subject',\n existingReminderObj?.subject || ''\n );\n }, [existingReminderObj, formRef]);\n\n useEffect(() => {\n if (!existingReminderObj?.reminderDate) {\n return;\n }\n formRef?.current?.form?.change(\n 'reminderDate',\n new Date(existingReminderObj.reminderDate)\n );\n }, [existingReminderObj, formRef]);\n\n useEffect(() => {\n if (!existingReminderObj) {\n return;\n }\n const matchingReminderFiledFor = existingReminderObj.reminderFiledFor?.find(\n (rff) =>\n rff.domainObject === selectedNode?.properties?.catalogReturnObject\n );\n const initialFileToType = FILE_TO_TYPES.find(\n (option) => option.value === matchingReminderFiledFor?.type\n );\n formRef?.current?.form?.change('fileToType', initialFileToType || null);\n }, [existingReminderObj, typeOptions, formRef, selectedNode]);\n\n return (\n <div className={classes.root}>\n {loading && <LinearProgress color='secondary' />}\n <AmbientCard fullWidth={true} header={true}>\n <Form onSubmit={handleOnSubmit} ref={formRef}>\n <Field\n component={FluentTextFieldAutoComplete}\n label={t('File To')}\n name='fileTo'\n id='fileTo'\n fullWidth\n variant='outlined'\n margin='dense'\n size='small'\n options={fileToOptions || []}\n optionKey={'label'}\n required={true}\n limitTags={!viewOnly ? 2 : -1}\n isMultiple={true}\n disabled={disabled}\n />\n <Field\n component={FluentTextFieldAutoComplete}\n label={t('File To Type')}\n name='fileToType'\n id='fileToType'\n fullWidth\n variant='outlined'\n margin='dense'\n size='small'\n options={FILE_TO_TYPES || []}\n optionKey={'label'}\n required={true}\n disabled={disabled}\n />\n <div className={classes.row}>\n <div style={{ width: '100%' }}>\n <Field\n component={FluentTextFieldAutoComplete}\n label={t('Type')}\n name='type'\n id='type'\n fullWidth\n variant='outlined'\n margin='dense'\n size='small'\n options={typeOptions || []}\n optionKey={'name'}\n required={true}\n disabled={disabled}\n />\n </div>\n {!viewOnly && (\n <div style={{ width: '100%', marginLeft: 8 }}>\n <Field\n component={FluentTextFieldAutoComplete}\n label={t('Template')}\n name='template'\n id='template'\n fullWidth\n variant='outlined'\n margin='dense'\n size='small'\n options={templateOptions || []}\n optionKey={'name'}\n additionalOnChangeAction={onTemplateChange}\n />\n </div>\n )}\n </div>\n <Field\n component={FluentDatePicker}\n label={t('Reminder Date')}\n name='reminderDate'\n id='reminderDate'\n fullWidth\n variant='outlined'\n size='small'\n margin='dense'\n required\n disabled={disabled}\n />\n <Field\n component={TextField}\n label={t('Subject')}\n name='subject'\n id='subject'\n fullWidth\n variant='outlined'\n size='small'\n margin='dense'\n required\n disabled={disabled}\n InputProps={{\n classes: {\n root: classes?.input,\n input: classes?.formTextInput\n }\n }}\n InputLabelProps={{\n classes: {\n root: classes?.labelRoot\n }\n }}\n />\n <LayoutUnit unit='nudge' />\n <CkRichEditor\n handleChange={handleTextEditorChange}\n classes={{ editor: classes.editor }}\n data={reminder}\n editorRef={editorRef}\n isUsingRef={true}\n readOnly={disabled}\n />\n </Form>\n </AmbientCard>\n <LayoutUnit unit='nudge' />\n {shortcutContentFinderEnabled && (\n <AmbientCard\n fullWidth={true}\n header={true}\n lastChildBottomPadding={'0px'}\n cardContentHeight={`calc(100vh - ${shellHidden ? '568px' : '623px'})`}\n >\n <ShortcutContentFinder onSelect={handleShortcutOnSelect} />\n </AmbientCard>\n )}\n </div>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"RemindersScreen-NaO3jhh9.js","names":["reminder","existingReminderObj"],"sources":["../src/reminders/RemindersScreen.jsx"],"sourcesContent":["import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState\n} from 'react';\nimport { CkRichEditor } from '../UI/inputs/richEditors/CkRichEditor';\nimport { makeStyles, TextField, LinearProgress } from '@material-ui/core';\nimport { Field, Form } from '../utilities/form';\nimport { FluentTextFieldAutoComplete } from '../UI/inputs/textField/FluentTextFieldAutoComplete';\nimport { useTranslation } from 'react-i18next';\nimport { useActionState } from '../hooks/useActions';\nimport { constructBusinessObjectArrFromTree } from '../utilities/tree/TreeUtilities';\nimport { LayoutUnit } from '../layout/LayoutUnit';\nimport { UdpEnums } from '../enums/unitySystemEnums';\nimport { useHandleAxiosSnackbar } from '../utilities/apiHelpers';\nimport { useUser } from '../utilities/auth/useUser';\nimport { differenceWith } from 'lodash';\nimport {\n executeQueryAdHoc,\n getBaseMethod,\n executeQueryWithParameters\n} from '../udp/utilities/methodUtils';\nimport { ShortcutContentFinder } from '../udp/ShortcutContent/ShortcutContentFinder';\nimport { AmbientCard } from '../UI/surfaces/cards/AmbientCard';\nimport { useShellStore } from '../stores/shellStore';\nimport { FluentDatePicker } from '../UI/inputs/pickers/FluentDatePicker';\nimport { useActionStore } from '../stores/actionStore';\nimport { FILE_TO_TYPES } from '../constants/reminderConstants';\nimport { getSearchObject } from '../utilities/search/SearchUtilities';\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n editor: {\n '& .ck-editor__main > .ck-editor__editable_inline': {\n backgroundColor:\n theme?.getThemeData()?.mode === 'dark'\n ? theme.palette.grey[800]\n : theme.palette.grey[100]\n }\n },\n row: {\n display: 'flex',\n justifyContent: 'space-between'\n },\n input: {\n height: 34,\n padding: 0\n },\n formTextInput: {\n fontSize: 14\n },\n labelRoot: {\n fontSize: 14\n }\n}));\n\nexport const RemindersScreen = (props) => {\n const {\n formRef,\n onSubmit,\n shortcutContentFinderEnabled,\n id,\n viewOnly,\n reloadReminders\n } = props;\n const [reminder, setReminder] = useState('');\n const [typeOptions, setTypeOptions] = useState([]);\n const [templateOptions, setTemplateOptions] = useState([]);\n const [reminderId, setReminderId] = useState(id || '');\n const [existingReminderFiledFor, setExistingReminderFiledFor] = useState([]);\n const [existingReminderObj, setExistingReminderObj] = useState(null);\n const [loading, setLoading] = useState(false);\n const classes = useStyles(props);\n const { t } = useTranslation();\n const actionState = useActionState();\n const shellHidden = useShellStore((state) => state.shellHidden);\n const { menuListState, catalogPromotedEntities } = actionState;\n const { handleSuccessSnackbar, handleErrorSnackbar } =\n useHandleAxiosSnackbar();\n const user = useUser();\n const editorRef = useRef(null);\n const selectedNode = useActionStore((state) => state.selectedNode);\n\n const selectedMenu = useMemo(() => {\n if (menuListState.menuList.length) {\n return menuListState.menuList[menuListState.selectedMenuIndex] || null;\n }\n return null;\n }, [menuListState]);\n\n const reminderGetFullApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Reminder,\n 'unityBaseGetFullMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const reminderTypeSearchApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Reminder_Type,\n 'unityBaseSearchMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const reminderTemplateSearchApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Reminder_Template,\n 'unityBaseSearchMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const createReminderApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Reminder,\n 'unityBaseCreateMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const updateReminderApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Reminder,\n 'unityBaseUpdateMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const createReminderFiledForApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Reminder_Filed_For,\n 'unityBaseCreateMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const updateReminderFiledForApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Reminder_Filed_For,\n 'unityBaseUpdateMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const deleteReminderFiledForApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Reminder_Filed_For,\n 'unityBaseDeleteMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const disabled = useMemo(() => {\n return viewOnly;\n }, [viewOnly]);\n\n const handleSaveReminder = useCallback(\n async (values) => {\n let response = null;\n const reminderDate = new Date(values?.reminderDate?.setHours(0, 0, 0, 0));\n const data = {\n requestBody: {\n tenantId: user?.currentTenantId,\n typeCode: values?.type?.code,\n subject: values?.subject,\n content: values?.reminder,\n unityUserId: user?.id,\n userDisplayName: `${user?.firstName} ${user?.familyName}`,\n reminderDate: reminderDate.toDateString()\n }\n };\n if (reminderId) {\n if (updateReminderApiMethod) {\n // Set the url parameter for updating reminder\n data['{iD}'] = reminderId;\n response = await executeQueryWithParameters(\n { data },\n updateReminderApiMethod.apiMethodId\n ).catch((e) => handleErrorSnackbar(e, 'Could not Update Reminder'));\n } else {\n handleErrorSnackbar(null, 'Update Reminder Method Not Promoted');\n }\n } else {\n if (createReminderApiMethod) {\n response = await executeQueryWithParameters(\n { data },\n createReminderApiMethod.apiMethodId\n ).catch((e) => handleErrorSnackbar(e, 'Could not Save Reminder'));\n } else {\n handleErrorSnackbar(null, 'Create Reminder Method Not Promoted');\n }\n }\n\n if (response?.status === 200) {\n if (!reminderId) {\n setReminderId(response.data.id || '');\n handleSuccessSnackbar('Reminder Saved');\n } else {\n handleSuccessSnackbar('Reminder Updated');\n }\n if (reloadReminders) {\n reloadReminders();\n }\n return response.data.id || reminderId;\n }\n\n return reminderId;\n },\n [\n createReminderApiMethod,\n updateReminderApiMethod,\n reminderId,\n setReminderId,\n handleErrorSnackbar,\n handleSuccessSnackbar,\n user,\n reloadReminders\n ]\n );\n\n const reminderFiledForToComparator = (nftc1, nftc2) => {\n return nftc1?.value === nftc2?.value;\n };\n\n const handleReminderFiledFor = useCallback(\n async (values, reminderdIdToFileFor) => {\n // Get the reminderFiledFor objects to delete\n const reminderFiledForToDelete = differenceWith(\n existingReminderFiledFor,\n values?.fileTo,\n reminderFiledForToComparator\n );\n\n // Get the reminderFiledFor objects to create\n const reminderFiledForToCreate = differenceWith(\n values?.fileTo,\n existingReminderFiledFor,\n reminderFiledForToComparator\n );\n\n if (reminderdIdToFileFor) {\n if (deleteReminderFiledForApiMethod) {\n const deletedPromises = [];\n reminderFiledForToDelete.forEach((nftd) => {\n const data = {};\n data['{reminderID}'] = reminderdIdToFileFor;\n data['{entityBusinessKey}'] = nftd.value;\n\n deletedPromises.push(\n executeQueryWithParameters(\n { data },\n deleteReminderFiledForApiMethod.apiMethodId\n )\n );\n });\n\n await Promise.all(deletedPromises.map((p) => p.catch((e) => e))).then(\n (responses) => {\n if (responses.length !== deletedPromises.length) {\n console.warn(`Not all Reminder Filed For deleted`);\n }\n }\n );\n } else {\n handleErrorSnackbar(\n null,\n 'Delete Reminder Filed For Method Not Promoted'\n );\n }\n\n if (createReminderFiledForApiMethod) {\n const createdPromises = [];\n reminderFiledForToCreate.forEach((nftc) => {\n const data = {\n requestBody: {\n reminderId: reminderdIdToFileFor,\n entityBusinessKey: nftc.value,\n domainObject: nftc.domainObject,\n type: values?.fileToType?.value || 1\n }\n };\n createdPromises.push(\n executeQueryWithParameters(\n { data },\n createReminderFiledForApiMethod.apiMethodId\n )\n );\n });\n await Promise.all(createdPromises.map((p) => p.catch((e) => e))).then(\n (responses) => {\n responses.forEach((response) => {\n if (response.status === 200) {\n const entityBusinessKey = response.data.entityBusinessKey;\n const matchingReminderFiledFor =\n reminderFiledForToCreate.find(\n (nftc) => nftc.value === entityBusinessKey\n );\n if (!matchingReminderFiledFor) {\n console.warn(\n `Reminder Filed For not created for all file to entities`\n );\n }\n }\n });\n }\n );\n setExistingReminderFiledFor(values?.fileTo);\n } else {\n handleErrorSnackbar(\n null,\n 'Create Reminder Filed For Method Not Promoted'\n );\n }\n\n if (updateReminderFiledForApiMethod) {\n const updatedPromises = [];\n values?.fileTo?.forEach((nftu) => {\n const data = {\n requestBody: {\n reminderId: reminderdIdToFileFor,\n entityBusinessKey: nftu.value,\n domainObject: nftu.domainObject,\n type: values?.fileToType?.value || 1\n }\n };\n data['{reminderID}'] = reminderdIdToFileFor;\n data['{entityBusinessKey}'] = nftu.value;\n updatedPromises.push(\n executeQueryWithParameters(\n { data },\n updateReminderFiledForApiMethod.apiMethodId\n )\n );\n });\n await Promise.all(updatedPromises.map((p) => p.catch((e) => e))).then(\n (responses) => {\n responses.forEach((response) => {\n if (response.status === 200) {\n const entityBusinessKey = response.data.entityBusinessKey;\n const matchingReminderFiledFor = values?.fileTo?.find(\n (nftu) => nftu.value === entityBusinessKey\n );\n if (!matchingReminderFiledFor) {\n console.warn(\n `Reminder Filed For not updated for all file to entities`\n );\n }\n }\n });\n }\n );\n setExistingReminderFiledFor(values?.fileTo);\n } else {\n handleErrorSnackbar(\n null,\n 'Update Reminder Filed For Method Not Promoted'\n );\n }\n }\n },\n [\n createReminderFiledForApiMethod,\n updateReminderFiledForApiMethod,\n deleteReminderFiledForApiMethod,\n handleErrorSnackbar,\n existingReminderFiledFor,\n setExistingReminderFiledFor\n ]\n );\n\n const handleOnSubmit = useCallback(\n async (values) => {\n if (onSubmit) {\n onSubmit({ reminder, ...values });\n } else {\n const reminderdIdToFileFor = await handleSaveReminder({\n reminder,\n ...values\n });\n await handleReminderFiledFor(\n { reminder, ...values },\n reminderdIdToFileFor\n );\n }\n },\n [reminder, onSubmit, handleSaveReminder, handleReminderFiledFor]\n );\n\n const handleTextEditorChange = (reminder) => {\n setReminder(reminder);\n };\n\n const onTemplateChange = useCallback(\n (value) => {\n formRef?.current?.form?.change('subject', value?.subject || '');\n const type = typeOptions.find((option) => option.code === value.typeCode);\n formRef?.current?.form?.change('type', type || null);\n formRef?.current?.form?.change(\n 'reminderDate',\n value.reminderDate === '0001-01-01T00:00:00'\n ? new Date()\n : new Date(value.reminderDate)\n );\n setReminder(value?.content || '');\n },\n [setReminder, formRef, typeOptions]\n );\n\n const handleShortcutOnSelect = useCallback(\n (shortcutContent) => {\n editorRef?.current?.model?.change((writer) => {\n const insertPosition =\n editorRef?.current?.model?.document?.selection?.getFirstPosition();\n writer.remove(\n editorRef?.current?.model?.document?.selection?.getFirstRange()\n );\n writer.insertText(shortcutContent, insertPosition);\n });\n\n setReminder(editorRef?.current?.getData());\n },\n [editorRef, setReminder]\n );\n\n const fileToOptions = useMemo(() => {\n let options = [];\n if (selectedMenu) {\n options = constructBusinessObjectArrFromTree(selectedMenu);\n }\n return options;\n }, [selectedMenu]);\n\n useEffect(() => {\n // TODO: update to use getAll reminderTypes\n const getTypeOptions = async () => {\n let options = [];\n if (reminderTypeSearchApiMethod) {\n const filterElements = [];\n const searchObject = getSearchObject(filterElements, 1, 200, true);\n const data = { data: searchObject };\n const typesResponse = await executeQueryAdHoc(\n data,\n reminderTypeSearchApiMethod.apiMethodId\n );\n if (typesResponse?.status === 200) {\n options = typesResponse.data?.pageList || [];\n }\n }\n setTypeOptions(options);\n };\n getTypeOptions();\n }, [reminderTypeSearchApiMethod, setTypeOptions, user]);\n\n useEffect(() => {\n // TODO: update to use getAll reminderTemplates\n const getTemplateOptions = async () => {\n let options = [];\n if (reminderTemplateSearchApiMethod) {\n const filterElements = [];\n const searchObject = getSearchObject(filterElements, 1, 200, true);\n const data = { data: searchObject };\n const templatesResponse = await executeQueryAdHoc(\n data,\n reminderTemplateSearchApiMethod.apiMethodId\n );\n if (templatesResponse?.status === 200) {\n options = templatesResponse.data?.pageList || [];\n }\n }\n setTemplateOptions(options);\n };\n getTemplateOptions();\n }, [reminderTemplateSearchApiMethod, setTemplateOptions, user]);\n\n useEffect(() => {\n const getExistingReminder = async () => {\n let existingReminderObj = null;\n const data = {};\n if (reminderGetFullApiMethod) {\n setLoading(true);\n data['{iD}'] = id;\n const reminderResponse = await executeQueryWithParameters(\n { data },\n reminderGetFullApiMethod.apiMethodId\n ).catch((e) => {\n console.error(e);\n setLoading(false);\n });\n if (reminderResponse?.status === 200) {\n existingReminderObj = reminderResponse.data;\n }\n }\n setExistingReminderObj(existingReminderObj);\n setReminder(existingReminderObj?.content);\n setLoading(false);\n };\n if (id) {\n getExistingReminder();\n }\n }, [id, reminderGetFullApiMethod]);\n\n useEffect(() => {\n if (!existingReminderObj || !fileToOptions?.length) {\n return;\n }\n const initialFileTos = fileToOptions.filter((option) => {\n return existingReminderObj.reminderFiledFor.find(\n (nff) => option.value === nff.entityBusinessKey\n );\n });\n setExistingReminderFiledFor(initialFileTos);\n formRef?.current?.form?.change('fileTo', initialFileTos);\n }, [existingReminderObj, fileToOptions, formRef]);\n\n useEffect(() => {\n if (!existingReminderObj || !typeOptions?.length) {\n return;\n }\n const initialType = typeOptions.find(\n (option) => option.code === existingReminderObj.typeCode\n );\n formRef?.current?.form?.change('type', initialType || null);\n }, [existingReminderObj, typeOptions, formRef]);\n\n useEffect(() => {\n if (!existingReminderObj) {\n return;\n }\n formRef?.current?.form?.change(\n 'subject',\n existingReminderObj?.subject || ''\n );\n }, [existingReminderObj, formRef]);\n\n useEffect(() => {\n if (!existingReminderObj?.reminderDate) {\n return;\n }\n formRef?.current?.form?.change(\n 'reminderDate',\n new Date(existingReminderObj.reminderDate)\n );\n }, [existingReminderObj, formRef]);\n\n useEffect(() => {\n if (!existingReminderObj) {\n return;\n }\n const matchingReminderFiledFor = existingReminderObj.reminderFiledFor?.find(\n (rff) =>\n rff.domainObject === selectedNode?.properties?.catalogReturnObject\n );\n const initialFileToType = FILE_TO_TYPES.find(\n (option) => option.value === matchingReminderFiledFor?.type\n );\n formRef?.current?.form?.change('fileToType', initialFileToType || null);\n }, [existingReminderObj, typeOptions, formRef, selectedNode]);\n\n return (\n <div className={classes.root}>\n {loading && <LinearProgress color='secondary' />}\n <AmbientCard fullWidth={true} header={true}>\n <Form onSubmit={handleOnSubmit} ref={formRef}>\n <Field\n component={FluentTextFieldAutoComplete}\n label={t('File To')}\n name='fileTo'\n id='fileTo'\n fullWidth\n variant='outlined'\n margin='dense'\n size='small'\n options={fileToOptions || []}\n optionKey={'label'}\n required={true}\n limitTags={!viewOnly ? 2 : -1}\n isMultiple={true}\n disabled={disabled}\n />\n <Field\n component={FluentTextFieldAutoComplete}\n label={t('File To Type')}\n name='fileToType'\n id='fileToType'\n fullWidth\n variant='outlined'\n margin='dense'\n size='small'\n options={FILE_TO_TYPES || []}\n optionKey={'label'}\n required={true}\n disabled={disabled}\n />\n <div className={classes.row}>\n <div style={{ width: '100%' }}>\n <Field\n component={FluentTextFieldAutoComplete}\n label={t('Type')}\n name='type'\n id='type'\n fullWidth\n variant='outlined'\n margin='dense'\n size='small'\n options={typeOptions || []}\n optionKey={'name'}\n required={true}\n disabled={disabled}\n />\n </div>\n {!viewOnly && (\n <div style={{ width: '100%', marginLeft: 8 }}>\n <Field\n component={FluentTextFieldAutoComplete}\n label={t('Template')}\n name='template'\n id='template'\n fullWidth\n variant='outlined'\n margin='dense'\n size='small'\n options={templateOptions || []}\n optionKey={'name'}\n additionalOnChangeAction={onTemplateChange}\n />\n </div>\n )}\n </div>\n <Field\n component={FluentDatePicker}\n label={t('Reminder Date')}\n name='reminderDate'\n id='reminderDate'\n fullWidth\n variant='outlined'\n size='small'\n margin='dense'\n required\n disabled={disabled}\n />\n <Field\n component={TextField}\n label={t('Subject')}\n name='subject'\n id='subject'\n fullWidth\n variant='outlined'\n size='small'\n margin='dense'\n required\n disabled={disabled}\n InputProps={{\n classes: {\n root: classes?.input,\n input: classes?.formTextInput\n }\n }}\n InputLabelProps={{\n classes: {\n root: classes?.labelRoot\n }\n }}\n />\n <LayoutUnit unit='nudge' />\n <CkRichEditor\n handleChange={handleTextEditorChange}\n classes={{ editor: classes.editor }}\n data={reminder}\n editorRef={editorRef}\n isUsingRef={true}\n readOnly={disabled}\n />\n </Form>\n </AmbientCard>\n <LayoutUnit unit='nudge' />\n {shortcutContentFinderEnabled && (\n <AmbientCard\n fullWidth={true}\n header={true}\n lastChildBottomPadding={'0px'}\n cardContentHeight={`calc(100vh - ${shellHidden ? '568px' : '623px'})`}\n >\n <ShortcutContentFinder onSelect={handleShortcutOnSelect} />\n </AmbientCard>\n )}\n </div>\n );\n};\n"],"mappings":"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"}
@@ -8,7 +8,7 @@ import { t as useActionState } from "./useActions-CBGNxEKr.js";
8
8
  import { n as getSearchIdentifiers, r as getSearchObject } from "./SearchUtilities-Df1gkDw9.js";
9
9
  import { a as getBaseMethod, i as executeQueryWithParameters, t as executeQueryAdHoc } from "./methodUtils-DEk9B4A8.js";
10
10
  import { t as WidgetCard_default } from "./WidgetCard-DZYTvG7e.js";
11
- import { t as RemindersCard } from "./RemindersCard-D1M4Z5Tm.js";
11
+ import { t as RemindersCard } from "./RemindersCard-BVT2iuT4.js";
12
12
  import React, { forwardRef, useCallback, useEffect, useMemo, useState } from "react";
13
13
  import { CircularProgress, FormControlLabel, Switch, makeStyles } from "@material-ui/core";
14
14
  import { SortIcon } from "@fluentui/react-icons";
@@ -335,4 +335,4 @@ var RemindersWidget_exports = /* @__PURE__ */ __export({
335
335
 
336
336
  //#endregion
337
337
  export { RemindersWidget as n, RemindersWidget_default as r, RemindersWidget_exports as t };
338
- //# sourceMappingURL=RemindersWidget-DBgk6Ibq.js.map
338
+ //# sourceMappingURL=RemindersWidget-cUps1X7r.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RemindersWidget-DBgk6Ibq.js","names":["uuid","reminders","WidgetCard"],"sources":["../src/UI/widgets/library/RemindersWidget/RemindersWidget.jsx","../src/UI/widgets/library/RemindersWidget/index.ts"],"sourcesContent":["import React, {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useState\n} from 'react';\nimport WidgetCard from '../../WidgetCard';\nimport { RemindersCard } from '../../../../reminders/RemindersCard';\nimport { FluentButton } from '../../../inputs/buttons/FluentButton';\nimport {\n CircularProgress,\n makeStyles,\n FormControlLabel,\n Switch\n} from '@material-ui/core';\nimport { useTranslation } from 'react-i18next';\nimport { useUser } from '../../../../utilities/auth/useUser';\nimport {\n getSearchIdentifiers,\n getSearchObject\n} from '../../../../utilities/search/SearchUtilities';\nimport {\n executeQueryAdHoc,\n executeQueryWithParameters,\n getBaseMethod\n} from '../../../../udp/utilities/methodUtils';\nimport {\n LogicalSearchOperatorEnums,\n UdpEnums,\n UdpReminderFiledForType\n} from '../../../../enums/unitySystemEnums';\nimport { useActionState } from '../../../../hooks/useActions';\nimport { useHandleAxiosSnackbar } from '../../../../utilities/apiHelpers';\nimport { FluentIconButton } from '../../../inputs/buttons/FluentIconButton';\nimport { SortIcon } from '@fluentui/react-icons';\nimport { Alert } from '@material-ui/lab';\nimport { v4 as uuid } from 'uuid';\n\n// export const layout = {\n// w: { default: 2, min: 0, max: 4 },\n// h: { default: 2, min: 0, max: 4 }\n// };\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n actions: {\n display: 'flex',\n alignItems: 'center',\n width: '100%',\n justifyContent: 'flex-end'\n },\n actionButton: {\n marginRight: theme.spacing(0.25),\n position: 'relative'\n },\n fabProgress: {\n position: 'absolute',\n top: 4,\n left: '35%',\n zIndex: 1\n }\n}));\n\nexport const RemindersWidget = (props, ref) => {\n const { children, params, setParam, ...other } = props;\n const { onLoadedNodeClick, hideWidgetName, tree, catalogObjects } = params;\n\n const [sortDirection, setSortDirection] = useState(null);\n const [reminders, setReminders] = useState(null);\n const [loading, setLoading] = useState(false);\n const [allRemindersRequested, setAllRemindersRequested] = useState(false);\n const [buttonProgress, setButtonProgress] = useState(false);\n const [alertWarnings, setAlertWarnings] = useState([]);\n\n const classes = useStyles(props);\n const actionState = useActionState();\n const { catalogPromotedEntities } = actionState;\n const { handleErrorSnackbar } = useHandleAxiosSnackbar();\n const { t } = useTranslation();\n const user = useUser();\n\n const reminderFiledForSearchApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Reminder_Filed_For,\n 'unityBaseSearchMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const updateReminderApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Reminder,\n 'unityBaseUpdateMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const currentSortDirection = useMemo(() => {\n if (sortDirection === 'asc') {\n return 'desc';\n } else if (sortDirection === 'desc') {\n return 'asc';\n } else {\n return null;\n }\n }, [sortDirection]);\n\n const getNodeToLoad = useCallback(\n (reminder) => {\n const nodeToLoad = {};\n const domainObject = reminder?.domainObject;\n const entityBusinessKey = reminder?.entityBusinessKey || '';\n let treeStructureId = '';\n let apiMethodId = '';\n const matchingNode = tree?.treeStructure?.find(\n (node) => node.properties?.catalogReturnObject === domainObject\n );\n\n if (matchingNode) {\n treeStructureId = matchingNode.id;\n if (!matchingNode.parentId) {\n apiMethodId = tree.apiMethodInstance.apiMethodId;\n } else {\n const associatedInquiryTree =\n matchingNode.properties?.associatedInquiryTree;\n if (associatedInquiryTree) {\n apiMethodId =\n associatedInquiryTree.apiMethodInstance?.apiMethodId || '';\n }\n }\n }\n nodeToLoad.apiMethodId = apiMethodId;\n\n const searchIdentifiers = getSearchIdentifiers(\n catalogObjects,\n domainObject\n );\n const filterElements = [];\n const searchValue = entityBusinessKey.split('|')?.[1];\n const values = searchValue.split(',');\n\n searchIdentifiers.forEach((searchIdentifier, index) => {\n const searchField = searchIdentifier\n ? searchIdentifier.charAt(0).toUpperCase() + searchIdentifier.slice(1)\n : '';\n filterElements.push({\n searchField: searchField,\n searchOperator: '=',\n searchValue: values[index]\n });\n });\n\n nodeToLoad.queryPayload = getSearchObject(\n filterElements,\n 1,\n 50,\n true,\n LogicalSearchOperatorEnums.And\n );\n\n nodeToLoad.nodeDetails = {\n catalogReturnObject: domainObject,\n treeStructureId: treeStructureId\n };\n\n return nodeToLoad;\n },\n [tree, catalogObjects]\n );\n\n const getIcon = useCallback(\n (reminder) => {\n const domainObject = reminder?.domainObject;\n const matchingNode = tree?.treeStructure?.find(\n (node) => node.properties?.catalogReturnObject === domainObject\n );\n return matchingNode?.properties?.defaultIcon || {};\n },\n [tree]\n );\n\n const sortByDate = useCallback((reminderList, direction) => {\n const sortedReminders = [...reminderList];\n if (direction === 'asc') {\n sortedReminders.sort(\n (a, b) => new Date(b.reminderDate) - new Date(a.reminderDate)\n );\n } else if (direction === 'desc') {\n sortedReminders.sort(\n (a, b) => new Date(a.reminderDate) - new Date(b.reminderDate)\n );\n }\n setReminders(sortedReminders);\n }, []);\n\n const sort = useCallback(() => {\n sortByDate(reminders, sortDirection || 'desc');\n if (sortDirection === 'desc' || !sortDirection) {\n setSortDirection('asc');\n } else if (sortDirection === 'asc') {\n setSortDirection('desc');\n }\n }, [reminders, sortByDate, sortDirection]);\n\n const getReminders = useCallback(\n async (allRequested = false, rffSearchApiMethod) => {\n let remindersList = [];\n const warnings = [];\n\n if (!reminders) {\n setLoading(true);\n }\n\n let filterElements = [\n {\n searchField: 'Reminder.Acknowledged',\n searchValue: false,\n searchOperator: '=',\n groupId: 1\n },\n {\n searchField: 'Reminder.ReminderDate',\n searchValue: new Date(),\n searchOperator: '<=',\n groupId: 1\n },\n {\n searchField: 'Type',\n searchValue: UdpReminderFiledForType.System,\n searchOperator: '=',\n groupId: 2\n },\n {\n searchField: 'Type',\n searchValue: UdpReminderFiledForType.User,\n searchOperator: '=',\n groupId: 3\n },\n\n {\n searchField: 'Reminder.UnityUserID',\n searchValue: user.id,\n searchOperator: '=',\n groupId: 3\n }\n ];\n\n let filterGroups = [\n {\n groupId: 1,\n logicalSearchOperator: LogicalSearchOperatorEnums.And,\n parentGroupId: null\n },\n {\n groupId: 2,\n logicalSearchOperator: LogicalSearchOperatorEnums.Or,\n parentGroupId: null\n },\n {\n groupId: 3,\n logicalSearchOperator: LogicalSearchOperatorEnums.And,\n parentGroupId: 2\n }\n ];\n\n if (allRequested) {\n filterElements = [\n {\n searchField: 'Type',\n searchValue: UdpReminderFiledForType.System,\n searchOperator: '=',\n groupId: 2\n },\n {\n searchField: 'Type',\n searchValue: UdpReminderFiledForType.User,\n searchOperator: '=',\n groupId: 3\n },\n {\n searchField: 'Reminder.UnityUserID',\n searchValue: user.id,\n searchOperator: '=',\n groupId: 3\n }\n ];\n\n filterGroups = [\n {\n groupId: 2,\n logicalSearchOperator: LogicalSearchOperatorEnums.Or,\n parentGroupId: null\n },\n {\n groupId: 3,\n logicalSearchOperator: LogicalSearchOperatorEnums.And,\n parentGroupId: 2\n }\n ];\n }\n\n const searchObject = getSearchObject(\n filterElements,\n 1,\n 200,\n true,\n LogicalSearchOperatorEnums.And,\n filterGroups\n );\n const data = { data: searchObject };\n\n if (rffSearchApiMethod) {\n if (!rffSearchApiMethod.apiMethodId) {\n warnings.push({\n id: uuid(),\n severity: 'warning',\n message: t('Search ReminderFiledFor Method Not Promoted')\n });\n } else {\n const response = await executeQueryAdHoc(\n data,\n rffSearchApiMethod.apiMethodId\n ).catch((e) => {\n setLoading(false);\n });\n\n if (response?.status === 200) {\n const pageList = response.data.pageList;\n if (pageList?.length) {\n remindersList = pageList.map((item) => ({\n ...item.reminder,\n domainObject: item.domainObject,\n filedToType: item.type,\n entityBusinessKey: item.entityBusinessKey\n }));\n }\n } else {\n warnings.push({\n id: uuid(),\n severity: 'error',\n message: t('Could not retrieve reminders')\n });\n }\n }\n }\n // Filter for reminders that belong to any of the domains within the tree\n const treeDomains = tree?.treeStructure.map(\n (node) => node.properties?.catalogReturnObject\n );\n if (treeDomains.length) {\n remindersList = remindersList.filter((reminder) =>\n treeDomains.includes(reminder.domainObject)\n );\n } else {\n remindersList = [];\n }\n setAlertWarnings(warnings);\n setLoading(false);\n sortByDate(remindersList, currentSortDirection);\n },\n [t, user, reminders, sortByDate, currentSortDirection, tree]\n );\n\n const updateRemindersAcknowledgement = useCallback(\n async (reminders) => {\n if (updateReminderApiMethod) {\n const updatedPromises = [];\n reminders.forEach((reminder) => {\n reminder.acknowledged = reminder.checked;\n const data = {\n requestBody: {\n ...reminder\n }\n };\n data['{iD}'] = reminder.id;\n updatedPromises.push(\n executeQueryWithParameters(\n { data },\n updateReminderApiMethod.apiMethodId\n )\n );\n });\n await Promise.all(updatedPromises.map((p) => p.catch((e) => e))).then(\n (responses) => {\n responses.forEach((response) => {\n if (response.status === 200) {\n const entityBusinessKey = response.data.entityBusinessKey;\n const matchingReminder = reminders?.find(\n (nftu) => nftu.value === entityBusinessKey\n );\n if (!matchingReminder) {\n console.warn(`Reminder not updated for all file to entities`);\n }\n }\n });\n }\n );\n } else {\n handleErrorSnackbar(null, 'Update Reminder Method Not Promoted');\n }\n },\n [updateReminderApiMethod, handleErrorSnackbar]\n );\n\n const handleAcknowledgeClick = useCallback(async () => {\n const acknowledgedReminders = reminders?.filter((r) => r.checked);\n if (acknowledgedReminders.length) {\n setButtonProgress(true);\n await updateRemindersAcknowledgement(acknowledgedReminders);\n setButtonProgress(false);\n getReminders(allRemindersRequested, reminderFiledForSearchApiMethod);\n }\n }, [\n reminders,\n getReminders,\n updateRemindersAcknowledgement,\n allRemindersRequested,\n reminderFiledForSearchApiMethod\n ]);\n\n const handleSwitchChange = useCallback(\n async (event) => {\n setLoading(true);\n if (event.target.checked) {\n setAllRemindersRequested(event.target.checked);\n await getReminders(true, reminderFiledForSearchApiMethod);\n } else {\n setAllRemindersRequested(false);\n await getReminders(false, reminderFiledForSearchApiMethod);\n }\n setLoading(false);\n },\n [getReminders, reminderFiledForSearchApiMethod]\n );\n\n // no dependencies in the array because we only want getReminders to run once\n useEffect(() => {\n if (reminderFiledForSearchApiMethod) {\n getReminders(false, reminderFiledForSearchApiMethod);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [reminderFiledForSearchApiMethod]);\n\n return (\n <WidgetCard\n ref={ref}\n // title={'Reminders'}\n hideWidgetName={hideWidgetName}\n headerActions={\n <div className={classes.actions}>\n <FormControlLabel\n control={\n <Switch\n id='udpRecord-RemindersWidget-Switch'\n udprecordid='udpRecord-RemindersWidget-Switch'\n size='small'\n onChange={handleSwitchChange}\n />\n }\n label='All'\n style={{ marginRight: 8 }}\n />\n <FluentIconButton\n id='udpRecord-RemindersWidget-Sort'\n udprecordid='udpRecord-RemindersWidget-Sort'\n icon={SortIcon}\n onClick={sort}\n style={{ marginRight: 4 }}\n />\n <div className={classes.actionButton}>\n <FluentButton\n id='udpRecord-RemindersWidget-Complete'\n udprecordid='udpRecord-RemindersWidget-Complete'\n variant='contained'\n color='secondary'\n onClick={handleAcknowledgeClick}\n >\n {buttonProgress && (\n <CircularProgress\n size={24}\n color='primary'\n className={classes.fabProgress}\n />\n )}\n {t('Complete')}\n </FluentButton>\n </div>\n </div>\n }\n {...other}\n >\n {alertWarnings.length ? (\n alertWarnings.map((warning) => (\n <Alert severity={warning.severity || 'warning'}>\n {warning.message || ''}\n </Alert>\n ))\n ) : (\n <RemindersCard\n reminders={reminders}\n setReminders={setReminders}\n loading={loading}\n onLoadedNodeClick={onLoadedNodeClick}\n getNodeToLoad={getNodeToLoad}\n getIcon={getIcon}\n updateRemindersAcknowledgement={updateRemindersAcknowledgement}\n />\n )}\n\n {children}\n </WidgetCard>\n );\n};\n\nexport default forwardRef(RemindersWidget);\n","export * from './RemindersWidget';\nexport {default} from './RemindersWidget';\n"],"mappings":"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"}
1
+ {"version":3,"file":"RemindersWidget-cUps1X7r.js","names":["uuid","reminders","WidgetCard"],"sources":["../src/UI/widgets/library/RemindersWidget/RemindersWidget.jsx","../src/UI/widgets/library/RemindersWidget/index.ts"],"sourcesContent":["import React, {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useState\n} from 'react';\nimport WidgetCard from '../../WidgetCard';\nimport { RemindersCard } from '../../../../reminders/RemindersCard';\nimport { FluentButton } from '../../../inputs/buttons/FluentButton';\nimport {\n CircularProgress,\n makeStyles,\n FormControlLabel,\n Switch\n} from '@material-ui/core';\nimport { useTranslation } from 'react-i18next';\nimport { useUser } from '../../../../utilities/auth/useUser';\nimport {\n getSearchIdentifiers,\n getSearchObject\n} from '../../../../utilities/search/SearchUtilities';\nimport {\n executeQueryAdHoc,\n executeQueryWithParameters,\n getBaseMethod\n} from '../../../../udp/utilities/methodUtils';\nimport {\n LogicalSearchOperatorEnums,\n UdpEnums,\n UdpReminderFiledForType\n} from '../../../../enums/unitySystemEnums';\nimport { useActionState } from '../../../../hooks/useActions';\nimport { useHandleAxiosSnackbar } from '../../../../utilities/apiHelpers';\nimport { FluentIconButton } from '../../../inputs/buttons/FluentIconButton';\nimport { SortIcon } from '@fluentui/react-icons';\nimport { Alert } from '@material-ui/lab';\nimport { v4 as uuid } from 'uuid';\n\n// export const layout = {\n// w: { default: 2, min: 0, max: 4 },\n// h: { default: 2, min: 0, max: 4 }\n// };\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n actions: {\n display: 'flex',\n alignItems: 'center',\n width: '100%',\n justifyContent: 'flex-end'\n },\n actionButton: {\n marginRight: theme.spacing(0.25),\n position: 'relative'\n },\n fabProgress: {\n position: 'absolute',\n top: 4,\n left: '35%',\n zIndex: 1\n }\n}));\n\nexport const RemindersWidget = (props, ref) => {\n const { children, params, setParam, ...other } = props;\n const { onLoadedNodeClick, hideWidgetName, tree, catalogObjects } = params;\n\n const [sortDirection, setSortDirection] = useState(null);\n const [reminders, setReminders] = useState(null);\n const [loading, setLoading] = useState(false);\n const [allRemindersRequested, setAllRemindersRequested] = useState(false);\n const [buttonProgress, setButtonProgress] = useState(false);\n const [alertWarnings, setAlertWarnings] = useState([]);\n\n const classes = useStyles(props);\n const actionState = useActionState();\n const { catalogPromotedEntities } = actionState;\n const { handleErrorSnackbar } = useHandleAxiosSnackbar();\n const { t } = useTranslation();\n const user = useUser();\n\n const reminderFiledForSearchApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Reminder_Filed_For,\n 'unityBaseSearchMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const updateReminderApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Reminder,\n 'unityBaseUpdateMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const currentSortDirection = useMemo(() => {\n if (sortDirection === 'asc') {\n return 'desc';\n } else if (sortDirection === 'desc') {\n return 'asc';\n } else {\n return null;\n }\n }, [sortDirection]);\n\n const getNodeToLoad = useCallback(\n (reminder) => {\n const nodeToLoad = {};\n const domainObject = reminder?.domainObject;\n const entityBusinessKey = reminder?.entityBusinessKey || '';\n let treeStructureId = '';\n let apiMethodId = '';\n const matchingNode = tree?.treeStructure?.find(\n (node) => node.properties?.catalogReturnObject === domainObject\n );\n\n if (matchingNode) {\n treeStructureId = matchingNode.id;\n if (!matchingNode.parentId) {\n apiMethodId = tree.apiMethodInstance.apiMethodId;\n } else {\n const associatedInquiryTree =\n matchingNode.properties?.associatedInquiryTree;\n if (associatedInquiryTree) {\n apiMethodId =\n associatedInquiryTree.apiMethodInstance?.apiMethodId || '';\n }\n }\n }\n nodeToLoad.apiMethodId = apiMethodId;\n\n const searchIdentifiers = getSearchIdentifiers(\n catalogObjects,\n domainObject\n );\n const filterElements = [];\n const searchValue = entityBusinessKey.split('|')?.[1];\n const values = searchValue.split(',');\n\n searchIdentifiers.forEach((searchIdentifier, index) => {\n const searchField = searchIdentifier\n ? searchIdentifier.charAt(0).toUpperCase() + searchIdentifier.slice(1)\n : '';\n filterElements.push({\n searchField: searchField,\n searchOperator: '=',\n searchValue: values[index]\n });\n });\n\n nodeToLoad.queryPayload = getSearchObject(\n filterElements,\n 1,\n 50,\n true,\n LogicalSearchOperatorEnums.And\n );\n\n nodeToLoad.nodeDetails = {\n catalogReturnObject: domainObject,\n treeStructureId: treeStructureId\n };\n\n return nodeToLoad;\n },\n [tree, catalogObjects]\n );\n\n const getIcon = useCallback(\n (reminder) => {\n const domainObject = reminder?.domainObject;\n const matchingNode = tree?.treeStructure?.find(\n (node) => node.properties?.catalogReturnObject === domainObject\n );\n return matchingNode?.properties?.defaultIcon || {};\n },\n [tree]\n );\n\n const sortByDate = useCallback((reminderList, direction) => {\n const sortedReminders = [...reminderList];\n if (direction === 'asc') {\n sortedReminders.sort(\n (a, b) => new Date(b.reminderDate) - new Date(a.reminderDate)\n );\n } else if (direction === 'desc') {\n sortedReminders.sort(\n (a, b) => new Date(a.reminderDate) - new Date(b.reminderDate)\n );\n }\n setReminders(sortedReminders);\n }, []);\n\n const sort = useCallback(() => {\n sortByDate(reminders, sortDirection || 'desc');\n if (sortDirection === 'desc' || !sortDirection) {\n setSortDirection('asc');\n } else if (sortDirection === 'asc') {\n setSortDirection('desc');\n }\n }, [reminders, sortByDate, sortDirection]);\n\n const getReminders = useCallback(\n async (allRequested = false, rffSearchApiMethod) => {\n let remindersList = [];\n const warnings = [];\n\n if (!reminders) {\n setLoading(true);\n }\n\n let filterElements = [\n {\n searchField: 'Reminder.Acknowledged',\n searchValue: false,\n searchOperator: '=',\n groupId: 1\n },\n {\n searchField: 'Reminder.ReminderDate',\n searchValue: new Date(),\n searchOperator: '<=',\n groupId: 1\n },\n {\n searchField: 'Type',\n searchValue: UdpReminderFiledForType.System,\n searchOperator: '=',\n groupId: 2\n },\n {\n searchField: 'Type',\n searchValue: UdpReminderFiledForType.User,\n searchOperator: '=',\n groupId: 3\n },\n\n {\n searchField: 'Reminder.UnityUserID',\n searchValue: user.id,\n searchOperator: '=',\n groupId: 3\n }\n ];\n\n let filterGroups = [\n {\n groupId: 1,\n logicalSearchOperator: LogicalSearchOperatorEnums.And,\n parentGroupId: null\n },\n {\n groupId: 2,\n logicalSearchOperator: LogicalSearchOperatorEnums.Or,\n parentGroupId: null\n },\n {\n groupId: 3,\n logicalSearchOperator: LogicalSearchOperatorEnums.And,\n parentGroupId: 2\n }\n ];\n\n if (allRequested) {\n filterElements = [\n {\n searchField: 'Type',\n searchValue: UdpReminderFiledForType.System,\n searchOperator: '=',\n groupId: 2\n },\n {\n searchField: 'Type',\n searchValue: UdpReminderFiledForType.User,\n searchOperator: '=',\n groupId: 3\n },\n {\n searchField: 'Reminder.UnityUserID',\n searchValue: user.id,\n searchOperator: '=',\n groupId: 3\n }\n ];\n\n filterGroups = [\n {\n groupId: 2,\n logicalSearchOperator: LogicalSearchOperatorEnums.Or,\n parentGroupId: null\n },\n {\n groupId: 3,\n logicalSearchOperator: LogicalSearchOperatorEnums.And,\n parentGroupId: 2\n }\n ];\n }\n\n const searchObject = getSearchObject(\n filterElements,\n 1,\n 200,\n true,\n LogicalSearchOperatorEnums.And,\n filterGroups\n );\n const data = { data: searchObject };\n\n if (rffSearchApiMethod) {\n if (!rffSearchApiMethod.apiMethodId) {\n warnings.push({\n id: uuid(),\n severity: 'warning',\n message: t('Search ReminderFiledFor Method Not Promoted')\n });\n } else {\n const response = await executeQueryAdHoc(\n data,\n rffSearchApiMethod.apiMethodId\n ).catch((e) => {\n setLoading(false);\n });\n\n if (response?.status === 200) {\n const pageList = response.data.pageList;\n if (pageList?.length) {\n remindersList = pageList.map((item) => ({\n ...item.reminder,\n domainObject: item.domainObject,\n filedToType: item.type,\n entityBusinessKey: item.entityBusinessKey\n }));\n }\n } else {\n warnings.push({\n id: uuid(),\n severity: 'error',\n message: t('Could not retrieve reminders')\n });\n }\n }\n }\n // Filter for reminders that belong to any of the domains within the tree\n const treeDomains = tree?.treeStructure.map(\n (node) => node.properties?.catalogReturnObject\n );\n if (treeDomains.length) {\n remindersList = remindersList.filter((reminder) =>\n treeDomains.includes(reminder.domainObject)\n );\n } else {\n remindersList = [];\n }\n setAlertWarnings(warnings);\n setLoading(false);\n sortByDate(remindersList, currentSortDirection);\n },\n [t, user, reminders, sortByDate, currentSortDirection, tree]\n );\n\n const updateRemindersAcknowledgement = useCallback(\n async (reminders) => {\n if (updateReminderApiMethod) {\n const updatedPromises = [];\n reminders.forEach((reminder) => {\n reminder.acknowledged = reminder.checked;\n const data = {\n requestBody: {\n ...reminder\n }\n };\n data['{iD}'] = reminder.id;\n updatedPromises.push(\n executeQueryWithParameters(\n { data },\n updateReminderApiMethod.apiMethodId\n )\n );\n });\n await Promise.all(updatedPromises.map((p) => p.catch((e) => e))).then(\n (responses) => {\n responses.forEach((response) => {\n if (response.status === 200) {\n const entityBusinessKey = response.data.entityBusinessKey;\n const matchingReminder = reminders?.find(\n (nftu) => nftu.value === entityBusinessKey\n );\n if (!matchingReminder) {\n console.warn(`Reminder not updated for all file to entities`);\n }\n }\n });\n }\n );\n } else {\n handleErrorSnackbar(null, 'Update Reminder Method Not Promoted');\n }\n },\n [updateReminderApiMethod, handleErrorSnackbar]\n );\n\n const handleAcknowledgeClick = useCallback(async () => {\n const acknowledgedReminders = reminders?.filter((r) => r.checked);\n if (acknowledgedReminders.length) {\n setButtonProgress(true);\n await updateRemindersAcknowledgement(acknowledgedReminders);\n setButtonProgress(false);\n getReminders(allRemindersRequested, reminderFiledForSearchApiMethod);\n }\n }, [\n reminders,\n getReminders,\n updateRemindersAcknowledgement,\n allRemindersRequested,\n reminderFiledForSearchApiMethod\n ]);\n\n const handleSwitchChange = useCallback(\n async (event) => {\n setLoading(true);\n if (event.target.checked) {\n setAllRemindersRequested(event.target.checked);\n await getReminders(true, reminderFiledForSearchApiMethod);\n } else {\n setAllRemindersRequested(false);\n await getReminders(false, reminderFiledForSearchApiMethod);\n }\n setLoading(false);\n },\n [getReminders, reminderFiledForSearchApiMethod]\n );\n\n // no dependencies in the array because we only want getReminders to run once\n useEffect(() => {\n if (reminderFiledForSearchApiMethod) {\n getReminders(false, reminderFiledForSearchApiMethod);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [reminderFiledForSearchApiMethod]);\n\n return (\n <WidgetCard\n ref={ref}\n // title={'Reminders'}\n hideWidgetName={hideWidgetName}\n headerActions={\n <div className={classes.actions}>\n <FormControlLabel\n control={\n <Switch\n id='udpRecord-RemindersWidget-Switch'\n udprecordid='udpRecord-RemindersWidget-Switch'\n size='small'\n onChange={handleSwitchChange}\n />\n }\n label='All'\n style={{ marginRight: 8 }}\n />\n <FluentIconButton\n id='udpRecord-RemindersWidget-Sort'\n udprecordid='udpRecord-RemindersWidget-Sort'\n icon={SortIcon}\n onClick={sort}\n style={{ marginRight: 4 }}\n />\n <div className={classes.actionButton}>\n <FluentButton\n id='udpRecord-RemindersWidget-Complete'\n udprecordid='udpRecord-RemindersWidget-Complete'\n variant='contained'\n color='secondary'\n onClick={handleAcknowledgeClick}\n >\n {buttonProgress && (\n <CircularProgress\n size={24}\n color='primary'\n className={classes.fabProgress}\n />\n )}\n {t('Complete')}\n </FluentButton>\n </div>\n </div>\n }\n {...other}\n >\n {alertWarnings.length ? (\n alertWarnings.map((warning) => (\n <Alert severity={warning.severity || 'warning'}>\n {warning.message || ''}\n </Alert>\n ))\n ) : (\n <RemindersCard\n reminders={reminders}\n setReminders={setReminders}\n loading={loading}\n onLoadedNodeClick={onLoadedNodeClick}\n getNodeToLoad={getNodeToLoad}\n getIcon={getIcon}\n updateRemindersAcknowledgement={updateRemindersAcknowledgement}\n />\n )}\n\n {children}\n </WidgetCard>\n );\n};\n\nexport default forwardRef(RemindersWidget);\n","export * from './RemindersWidget';\nexport {default} from './RemindersWidget';\n"],"mappings":"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"}
@@ -3,12 +3,12 @@ import { t as useInquiryStore } from "./inquiryStore-BMYKf5MP.js";
3
3
  import { n as useShellStore, t as useSetInitialShellVisibility } from "./shellStore-C8zfPsZ-.js";
4
4
  import { n as useBuildEnvironment, t as APP_RIBBON_SPACE } from "./useBuildEnvironment-2gdqpmBX.js";
5
5
  import { t as UtilitySideBar } from "./UtilitySideBar-XdGlkgZz.js";
6
- import { t as PageActionWrapper } from "./PageActionWrapper-5hXS8BiL.js";
6
+ import { t as PageActionWrapper } from "./PageActionWrapper-BBCjuj8x.js";
7
7
  import { l as NavigationSidebar_default, r as SiteHeader_default } from "./FluentProfileMenuCard-BMGWsjyD.js";
8
8
  import { t as UtilityBar } from "./UtilityBar-CFZSv0NA.js";
9
9
  import { t as FUIAppSwitcher_default } from "./FUIAppSwitcher-I94rugM_.js";
10
10
  import { t as getMenuItemsRecursively } from "./menuUtilities-CSvVMMpu.js";
11
- import { t as ActionProvider } from "./ActionProvider-Bac2QDAs.js";
11
+ import { t as ActionProvider } from "./ActionProvider-CXHkH2mP.js";
12
12
  import { t as ChatBotProvider } from "./ChatBotProvider-E-wyZLY_.js";
13
13
  import React, { useCallback, useEffect, useMemo, useState } from "react";
14
14
  import { Drawer, makeStyles, useMediaQuery, useTheme } from "@material-ui/core";
@@ -266,4 +266,4 @@ Shell.propTypes = {
266
266
 
267
267
  //#endregion
268
268
  export { Shell as t };
269
- //# sourceMappingURL=Shell-DtiGFd4z.js.map
269
+ //# sourceMappingURL=Shell-DbVTLfw8.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Shell-DtiGFd4z.js","names":["menus","SiteHeader","NavigationSidebar","FUIAppSwitcher"],"sources":["../src/shell/Shell.jsx"],"sourcesContent":["import React, { useState, useEffect, useMemo, useCallback } from 'react';\nimport { makeStyles, Drawer, useMediaQuery, useTheme } from '@material-ui/core';\nimport NavigationSidebar from './ui/NavigationSidebar';\nimport SiteHeader from './ui/SiteHeader';\nimport { UtilityBar } from '../UI/utilityDisplay/UtilityBar';\nimport { useTranslation } from 'react-i18next';\nimport FUIAppSwitcher from './ui/appSwitcher/FUIAppSwitcher';\nimport { getMenuItemsRecursively } from '../utilities/menus/menuUtilities';\nimport clsx from 'clsx';\nimport { UtilitySideBar } from '../UI/utilityDisplay/UtilitySideBar';\nimport PropTypes from 'prop-types';\nimport { useUser } from '../utilities/auth/useUser';\nimport { ActionProvider } from '../utilities/provider/ActionProvider';\nimport { PageActionWrapper } from '../actions/PageActionWrapper';\nimport { useInquiryStore } from '../stores/inquiryStore';\nimport {\n useSetInitialShellVisibility,\n useShellStore\n} from '../stores/shellStore';\n\nimport { useBuildEnvironment, APP_RIBBON_SPACE } from './ui/useBuildEnvironment';\nimport { ChatBotProvider } from '../utilities/chatBot/ChatBotProvider';\n//import { usePreloadPages } from '../hooks/usePreloadPages';\n\n// load the page container module so its loaded when we need it\nvoid import('../page/PageContainer');\nconst MenuTypeEnums = {\n Left_Menu: 1,\n Application_Menu: 2,\n Builders_Menu: 3,\n Favorites_Menu: 4\n};\n\nconst useStyles = makeStyles(\n (theme) => ({\n '@global': {\n html: {\n minHeight: '100%'\n },\n 'html, body, #root': {\n display: 'flex',\n flexDirection: 'column'\n },\n 'body, #root': {\n flex: 1\n }\n },\n root: {\n flex: 1,\n minHeight: '100vh',\n display: 'grid',\n gridTemplateAreas: ['sidebar header', 'sidebar content']\n .map((line) => `\"${line}\"`)\n .join(' '),\n gridTemplateColumns: 'auto 1fr',\n gridTemplateRows: 'auto 1fr'\n },\n header: {\n gridArea: 'header'\n },\n sidebar: {\n gridArea: 'sidebar'\n },\n content: {\n gridArea: 'content',\n display: 'flex',\n flexDirection: 'column',\n position: 'relative',\n zIndex: 1,\n height: ({ appRibbonSpace }) => `calc(100vh - ${56 + appRibbonSpace}px)`,\n overflowY: 'auto'\n },\n paper: {\n width: '100%',\n [theme.breakpoints.up('sm')]: {\n width: (props) => props.drawerWidth || 520\n }\n }\n }),\n { name: 'Layout' }\n);\n\n/**\n * Core site layout common to all pages\n */\nexport const Shell = (props) => {\n\n const buildEnv = useBuildEnvironment();\n const classes = useStyles({\n ...props,\n ribbonSpace: buildEnv ? APP_RIBBON_SPACE : 0\n });\n const {\n children,\n userAvatar,\n appContent,\n leftMenu,\n appSelectorMenus,\n siteName,\n className,\n navRoot,\n hideToggle,\n useMockData,\n mockMenus,\n user: passedInUser,\n unityUrl,\n expander,\n sidebarTitle,\n navMenuHoverOn = true,\n secondExtended,\n toggleOne,\n toggleTwo,\n closePrimary,\n closeSecondary,\n panelExpanded,\n panelExpandedSecondary,\n setPanelExpanded = false,\n setPanelExpandedSecondary = false,\n breadCrumbAltLabelList = [],\n currentLocation,\n utilitySidebarResizable,\n utilitySidebarToggleOverride,\n onUtilitySidebarToggleExpandClick,\n hideLayout = false,\n getAccessToken,\n switcherData,\n selectedItem,\n switcherWidth,\n languages,\n utilityBarHasTabsOpen,\n projectSwitcherColor,\n getWidget,\n isValidWidget,\n appSwitcherHeader,\n hamburgerMenuAccessRole\n } = props;\n const contextUser = useUser();\n const user = passedInUser ?? contextUser;\n const { setGetWidget, setIsValidWidget, shellHidden } = useShellStore();\n const [appSwitcherMobile, setAppSwitcherMobile] = useState(false);\n const [appSwitcherDesktop, setAppSwitcherDesktop] = useState(false);\n const { i18n } = useTranslation();\n const inquiryTitle = useInquiryStore((state) => state.title);\n useSetInitialShellVisibility();\n\n //usePreloadPages();\n\n useEffect(() => {\n setGetWidget(getWidget);\n return () => setGetWidget(null);\n }, [getWidget, setGetWidget]);\n\n useEffect(() => {\n setIsValidWidget(isValidWidget);\n return () => setIsValidWidget(null);\n }, [isValidWidget, setIsValidWidget]);\n\n const getMenuItems = useCallback(\n (menuTypeId, menus) => {\n if (!menus && !useMockData) {\n return [];\n }\n const menusToFilter = useMockData ? mockMenus : menus;\n\n const foundMenus = menusToFilter.filter(\n (menu) => menu.menuTypeId === menuTypeId && menu.active\n );\n\n if (foundMenus) {\n return foundMenus.reduce((menuItemInstanceStructureViews, menu) => {\n return [\n ...menuItemInstanceStructureViews,\n ...menu.menuItemInstanceStructureViews\n ];\n }, []);\n } else {\n return [];\n }\n },\n [useMockData, mockMenus]\n );\n\n const menus = useMemo(() => {\n const menuItems = getMenuItems(1, leftMenu);\n return getMenuItemsRecursively(menuItems, true, user, getAccessToken);\n }, [getMenuItems, user, leftMenu, getAccessToken]);\n\n const theme = useTheme();\n const mobile = useMediaQuery(theme.breakpoints.up('sm'));\n\n const handleAppSwitcher = (type, bool) => {\n if (type === 'mobile') {\n setAppSwitcherMobile(bool);\n } else {\n setAppSwitcherDesktop(bool);\n }\n };\n\n const builderMenu = useMemo(() => {\n const menuItems = getMenuItems(\n MenuTypeEnums.Builders_Menu,\n appSelectorMenus\n );\n return getMenuItemsRecursively(menuItems, true, user, getAccessToken);\n }, [getMenuItems, user, appSelectorMenus, getAccessToken]);\n\n const favoriteMenu = useMemo(() => {\n const menuItems = getMenuItems(\n MenuTypeEnums.Favorites_Menu,\n appSelectorMenus\n );\n return getMenuItemsRecursively(menuItems, true, user, getAccessToken);\n }, [getMenuItems, user, appSelectorMenus, getAccessToken]);\n\n const appMenu = useMemo(() => {\n const menuItems = getMenuItems(\n MenuTypeEnums.Application_Menu,\n appSelectorMenus\n );\n return getMenuItemsRecursively(menuItems, true, user, getAccessToken);\n }, [getMenuItems, user, appSelectorMenus, getAccessToken]);\n\n const hideAppMenu = useMemo(\n () =>\n !appSelectorMenus ||\n (hamburgerMenuAccessRole &&\n !user?.roleNames.includes(hamburgerMenuAccessRole)),\n [user, appSelectorMenus, hamburgerMenuAccessRole]\n );\n\n useEffect(() => {\n i18n.changeLanguage('en-US');\n }, [i18n]);\n\n if (hideLayout) {\n return <div>{children}</div>;\n }\n\n return (\n <ChatBotProvider>\n <ActionProvider>\n <div className={classes.root}>\n {!shellHidden && (\n <SiteHeader\n className={classes.header}\n siteName={siteName}\n appContent={appContent}\n userAvatar={userAvatar}\n breadCrumbRoot={navRoot}\n setAppSwitcherOpen={(type, bool) => handleAppSwitcher(type, bool)}\n breadCrumbAltLabelList={breadCrumbAltLabelList}\n currentLocation={currentLocation}\n switcherData={switcherData}\n selectedItem={selectedItem}\n switcherWidth={switcherWidth}\n hideAppLaunch={hideAppMenu}\n languages={languages}\n backgroundColor={projectSwitcherColor}\n />\n )}\n\n <div style={{ display: 'flex' }} className={classes.sidebar}>\n {!shellHidden && mobile && (\n <NavigationSidebar\n className={classes.sidebar}\n data={menus}\n navMenuHoverOn={navMenuHoverOn}\n user={user}\n useGlobalState={true}\n />\n )}\n {expander && (\n <div>\n <UtilitySideBar\n title={inquiryTitle || sidebarTitle}\n resizable={utilitySidebarResizable}\n utilitySidebarToggleOverride={utilitySidebarToggleOverride}\n onUtilitySidebarToggleExpandClick={\n onUtilitySidebarToggleExpandClick\n }\n sidebarHidden={shellHidden}\n {...props}\n />\n </div>\n )}\n </div>\n\n <div className={classes.content}>\n <UtilityBar\n className={clsx(className)}\n gutters={false}\n hideToggle={hideToggle}\n expander={expander}\n secondExtended={secondExtended}\n toggleOne={toggleOne}\n toggleTwo={toggleTwo}\n closePrimary={closePrimary}\n closeSecondary={closeSecondary}\n expanded={panelExpanded}\n expandedSecondary={panelExpandedSecondary}\n setExpanded={setPanelExpanded}\n setExpandedSecondary={setPanelExpandedSecondary}\n />\n <PageActionWrapper>{children}</PageActionWrapper>\n </div>\n <Drawer\n variant='temporary'\n anchor='left'\n open={appSwitcherDesktop}\n classes={\n !mobile ? {} : !appSelectorMenus ? {} : { paper: classes.paper }\n }\n onClose={() => handleAppSwitcher('desktop', false)}\n >\n {mobile && appSelectorMenus && (\n <FUIAppSwitcher\n onClose={() => handleAppSwitcher('desktop', false)}\n favoriteMenu={favoriteMenu}\n builderMenu={builderMenu}\n appMenu={appMenu}\n unityUrl={unityUrl}\n user={user}\n header={appSwitcherHeader}\n />\n )}\n {(!mobile || (mobile && !appSelectorMenus)) && (\n <NavigationSidebar\n toggle={false}\n className={classes.sidebar}\n data={menus}\n navMenuHoverOn={navMenuHoverOn}\n user={user}\n useGlobalState={true}\n />\n )}\n </Drawer>\n\n <Drawer\n variant='temporary'\n anchor='right'\n open={appSwitcherMobile}\n classes={{ paper: classes.paper }}\n onClose={() => handleAppSwitcher('mobile', false)}\n >\n <FUIAppSwitcher\n onClose={() => handleAppSwitcher('mobile', false)}\n favoriteMenu={favoriteMenu}\n builderMenu={builderMenu}\n appMenu={appMenu}\n unityUrl={unityUrl}\n user={user}\n header={appSwitcherHeader}\n />\n </Drawer>\n </div>\n </ActionProvider>\n </ChatBotProvider>\n );\n};\n\nShell.propTypes = {\n /**\n * The newest propTypes have been added but older ones are missing @todo: add missing propTypes for Shell.\n */\n\n /**\n * The array used to map for label and functions to list items.\n */\n switcherData: PropTypes.array,\n /**\n * The active label displayed.\n */\n selectedItem: PropTypes.string,\n /**\n * Provides a method set the selector width. Default is 100.\n */\n switcherWidth: PropTypes.number,\n /**\n * Children nodes\n */\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node\n ]).isRequired,\n\n /**\n * Name of site\n */\n siteName: PropTypes.string,\n\n /**\n * Component to render for the user Avatar\n */\n userAvatar: PropTypes.element,\n\n appContent: PropTypes.element,\n\n leftMenu: PropTypes.array,\n\n appSelectorMenus: PropTypes.array,\n\n className: PropTypes.object,\n\n navRoot: PropTypes.oneOfType([PropTypes.string, PropTypes.element, PropTypes.node]),\n\n /**\n * Should the shell use mock data\n */\n useMockData: PropTypes.bool,\n\n mockMenus: PropTypes.array,\n\n unityUrl: PropTypes.string,\n\n expander: PropTypes.bool,\n\n sidebarTitle: PropTypes.string,\n\n navMenuHoverOn: PropTypes.bool,\n\n toggleOne: PropTypes.bool,\n\n toggleTwo: PropTypes.bool,\n\n closePrimary: PropTypes.bool,\n\n closeSecondary: PropTypes.bool,\n\n panelExpanded: PropTypes.bool,\n\n panelExpandedSecondary: PropTypes.bool,\n\n setPanelExpanded: PropTypes.func,\n\n setPanelExpandedSecondary: PropTypes.func,\n\n breadCrumbAltLabelList: PropTypes.array,\n\n currentLocation: PropTypes.object,\n\n utilitySidebarResizable: PropTypes.bool,\n\n utilitySidebarToggleOverride: PropTypes.bool,\n\n onUtilitySidebarToggleExpandClick: PropTypes.func,\n\n hideLayout: PropTypes.bool,\n\n languages: PropTypes.arrayOf(PropTypes.object),\n\n utilityBarHasTabsOpen: PropTypes.bool,\n /**\n * Passes the background color on the project switcher (default: theme secondary)\n */\n projectSwitcherColor: PropTypes.string,\n getWidget: PropTypes.func,\n isValidWidget: PropTypes.func,\n currentTenant: PropTypes.object,\n hamburgerMenuAccessRole: PropTypes.string\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"Shell-DbVTLfw8.js","names":["menus","SiteHeader","NavigationSidebar","FUIAppSwitcher"],"sources":["../src/shell/Shell.jsx"],"sourcesContent":["import React, { useState, useEffect, useMemo, useCallback } from 'react';\nimport { makeStyles, Drawer, useMediaQuery, useTheme } from '@material-ui/core';\nimport NavigationSidebar from './ui/NavigationSidebar';\nimport SiteHeader from './ui/SiteHeader';\nimport { UtilityBar } from '../UI/utilityDisplay/UtilityBar';\nimport { useTranslation } from 'react-i18next';\nimport FUIAppSwitcher from './ui/appSwitcher/FUIAppSwitcher';\nimport { getMenuItemsRecursively } from '../utilities/menus/menuUtilities';\nimport clsx from 'clsx';\nimport { UtilitySideBar } from '../UI/utilityDisplay/UtilitySideBar';\nimport PropTypes from 'prop-types';\nimport { useUser } from '../utilities/auth/useUser';\nimport { ActionProvider } from '../utilities/provider/ActionProvider';\nimport { PageActionWrapper } from '../actions/PageActionWrapper';\nimport { useInquiryStore } from '../stores/inquiryStore';\nimport {\n useSetInitialShellVisibility,\n useShellStore\n} from '../stores/shellStore';\n\nimport { useBuildEnvironment, APP_RIBBON_SPACE } from './ui/useBuildEnvironment';\nimport { ChatBotProvider } from '../utilities/chatBot/ChatBotProvider';\n//import { usePreloadPages } from '../hooks/usePreloadPages';\n\n// load the page container module so its loaded when we need it\nvoid import('../page/PageContainer');\nconst MenuTypeEnums = {\n Left_Menu: 1,\n Application_Menu: 2,\n Builders_Menu: 3,\n Favorites_Menu: 4\n};\n\nconst useStyles = makeStyles(\n (theme) => ({\n '@global': {\n html: {\n minHeight: '100%'\n },\n 'html, body, #root': {\n display: 'flex',\n flexDirection: 'column'\n },\n 'body, #root': {\n flex: 1\n }\n },\n root: {\n flex: 1,\n minHeight: '100vh',\n display: 'grid',\n gridTemplateAreas: ['sidebar header', 'sidebar content']\n .map((line) => `\"${line}\"`)\n .join(' '),\n gridTemplateColumns: 'auto 1fr',\n gridTemplateRows: 'auto 1fr'\n },\n header: {\n gridArea: 'header'\n },\n sidebar: {\n gridArea: 'sidebar'\n },\n content: {\n gridArea: 'content',\n display: 'flex',\n flexDirection: 'column',\n position: 'relative',\n zIndex: 1,\n height: ({ appRibbonSpace }) => `calc(100vh - ${56 + appRibbonSpace}px)`,\n overflowY: 'auto'\n },\n paper: {\n width: '100%',\n [theme.breakpoints.up('sm')]: {\n width: (props) => props.drawerWidth || 520\n }\n }\n }),\n { name: 'Layout' }\n);\n\n/**\n * Core site layout common to all pages\n */\nexport const Shell = (props) => {\n\n const buildEnv = useBuildEnvironment();\n const classes = useStyles({\n ...props,\n ribbonSpace: buildEnv ? APP_RIBBON_SPACE : 0\n });\n const {\n children,\n userAvatar,\n appContent,\n leftMenu,\n appSelectorMenus,\n siteName,\n className,\n navRoot,\n hideToggle,\n useMockData,\n mockMenus,\n user: passedInUser,\n unityUrl,\n expander,\n sidebarTitle,\n navMenuHoverOn = true,\n secondExtended,\n toggleOne,\n toggleTwo,\n closePrimary,\n closeSecondary,\n panelExpanded,\n panelExpandedSecondary,\n setPanelExpanded = false,\n setPanelExpandedSecondary = false,\n breadCrumbAltLabelList = [],\n currentLocation,\n utilitySidebarResizable,\n utilitySidebarToggleOverride,\n onUtilitySidebarToggleExpandClick,\n hideLayout = false,\n getAccessToken,\n switcherData,\n selectedItem,\n switcherWidth,\n languages,\n utilityBarHasTabsOpen,\n projectSwitcherColor,\n getWidget,\n isValidWidget,\n appSwitcherHeader,\n hamburgerMenuAccessRole\n } = props;\n const contextUser = useUser();\n const user = passedInUser ?? contextUser;\n const { setGetWidget, setIsValidWidget, shellHidden } = useShellStore();\n const [appSwitcherMobile, setAppSwitcherMobile] = useState(false);\n const [appSwitcherDesktop, setAppSwitcherDesktop] = useState(false);\n const { i18n } = useTranslation();\n const inquiryTitle = useInquiryStore((state) => state.title);\n useSetInitialShellVisibility();\n\n //usePreloadPages();\n\n useEffect(() => {\n setGetWidget(getWidget);\n return () => setGetWidget(null);\n }, [getWidget, setGetWidget]);\n\n useEffect(() => {\n setIsValidWidget(isValidWidget);\n return () => setIsValidWidget(null);\n }, [isValidWidget, setIsValidWidget]);\n\n const getMenuItems = useCallback(\n (menuTypeId, menus) => {\n if (!menus && !useMockData) {\n return [];\n }\n const menusToFilter = useMockData ? mockMenus : menus;\n\n const foundMenus = menusToFilter.filter(\n (menu) => menu.menuTypeId === menuTypeId && menu.active\n );\n\n if (foundMenus) {\n return foundMenus.reduce((menuItemInstanceStructureViews, menu) => {\n return [\n ...menuItemInstanceStructureViews,\n ...menu.menuItemInstanceStructureViews\n ];\n }, []);\n } else {\n return [];\n }\n },\n [useMockData, mockMenus]\n );\n\n const menus = useMemo(() => {\n const menuItems = getMenuItems(1, leftMenu);\n return getMenuItemsRecursively(menuItems, true, user, getAccessToken);\n }, [getMenuItems, user, leftMenu, getAccessToken]);\n\n const theme = useTheme();\n const mobile = useMediaQuery(theme.breakpoints.up('sm'));\n\n const handleAppSwitcher = (type, bool) => {\n if (type === 'mobile') {\n setAppSwitcherMobile(bool);\n } else {\n setAppSwitcherDesktop(bool);\n }\n };\n\n const builderMenu = useMemo(() => {\n const menuItems = getMenuItems(\n MenuTypeEnums.Builders_Menu,\n appSelectorMenus\n );\n return getMenuItemsRecursively(menuItems, true, user, getAccessToken);\n }, [getMenuItems, user, appSelectorMenus, getAccessToken]);\n\n const favoriteMenu = useMemo(() => {\n const menuItems = getMenuItems(\n MenuTypeEnums.Favorites_Menu,\n appSelectorMenus\n );\n return getMenuItemsRecursively(menuItems, true, user, getAccessToken);\n }, [getMenuItems, user, appSelectorMenus, getAccessToken]);\n\n const appMenu = useMemo(() => {\n const menuItems = getMenuItems(\n MenuTypeEnums.Application_Menu,\n appSelectorMenus\n );\n return getMenuItemsRecursively(menuItems, true, user, getAccessToken);\n }, [getMenuItems, user, appSelectorMenus, getAccessToken]);\n\n const hideAppMenu = useMemo(\n () =>\n !appSelectorMenus ||\n (hamburgerMenuAccessRole &&\n !user?.roleNames.includes(hamburgerMenuAccessRole)),\n [user, appSelectorMenus, hamburgerMenuAccessRole]\n );\n\n useEffect(() => {\n i18n.changeLanguage('en-US');\n }, [i18n]);\n\n if (hideLayout) {\n return <div>{children}</div>;\n }\n\n return (\n <ChatBotProvider>\n <ActionProvider>\n <div className={classes.root}>\n {!shellHidden && (\n <SiteHeader\n className={classes.header}\n siteName={siteName}\n appContent={appContent}\n userAvatar={userAvatar}\n breadCrumbRoot={navRoot}\n setAppSwitcherOpen={(type, bool) => handleAppSwitcher(type, bool)}\n breadCrumbAltLabelList={breadCrumbAltLabelList}\n currentLocation={currentLocation}\n switcherData={switcherData}\n selectedItem={selectedItem}\n switcherWidth={switcherWidth}\n hideAppLaunch={hideAppMenu}\n languages={languages}\n backgroundColor={projectSwitcherColor}\n />\n )}\n\n <div style={{ display: 'flex' }} className={classes.sidebar}>\n {!shellHidden && mobile && (\n <NavigationSidebar\n className={classes.sidebar}\n data={menus}\n navMenuHoverOn={navMenuHoverOn}\n user={user}\n useGlobalState={true}\n />\n )}\n {expander && (\n <div>\n <UtilitySideBar\n title={inquiryTitle || sidebarTitle}\n resizable={utilitySidebarResizable}\n utilitySidebarToggleOverride={utilitySidebarToggleOverride}\n onUtilitySidebarToggleExpandClick={\n onUtilitySidebarToggleExpandClick\n }\n sidebarHidden={shellHidden}\n {...props}\n />\n </div>\n )}\n </div>\n\n <div className={classes.content}>\n <UtilityBar\n className={clsx(className)}\n gutters={false}\n hideToggle={hideToggle}\n expander={expander}\n secondExtended={secondExtended}\n toggleOne={toggleOne}\n toggleTwo={toggleTwo}\n closePrimary={closePrimary}\n closeSecondary={closeSecondary}\n expanded={panelExpanded}\n expandedSecondary={panelExpandedSecondary}\n setExpanded={setPanelExpanded}\n setExpandedSecondary={setPanelExpandedSecondary}\n />\n <PageActionWrapper>{children}</PageActionWrapper>\n </div>\n <Drawer\n variant='temporary'\n anchor='left'\n open={appSwitcherDesktop}\n classes={\n !mobile ? {} : !appSelectorMenus ? {} : { paper: classes.paper }\n }\n onClose={() => handleAppSwitcher('desktop', false)}\n >\n {mobile && appSelectorMenus && (\n <FUIAppSwitcher\n onClose={() => handleAppSwitcher('desktop', false)}\n favoriteMenu={favoriteMenu}\n builderMenu={builderMenu}\n appMenu={appMenu}\n unityUrl={unityUrl}\n user={user}\n header={appSwitcherHeader}\n />\n )}\n {(!mobile || (mobile && !appSelectorMenus)) && (\n <NavigationSidebar\n toggle={false}\n className={classes.sidebar}\n data={menus}\n navMenuHoverOn={navMenuHoverOn}\n user={user}\n useGlobalState={true}\n />\n )}\n </Drawer>\n\n <Drawer\n variant='temporary'\n anchor='right'\n open={appSwitcherMobile}\n classes={{ paper: classes.paper }}\n onClose={() => handleAppSwitcher('mobile', false)}\n >\n <FUIAppSwitcher\n onClose={() => handleAppSwitcher('mobile', false)}\n favoriteMenu={favoriteMenu}\n builderMenu={builderMenu}\n appMenu={appMenu}\n unityUrl={unityUrl}\n user={user}\n header={appSwitcherHeader}\n />\n </Drawer>\n </div>\n </ActionProvider>\n </ChatBotProvider>\n );\n};\n\nShell.propTypes = {\n /**\n * The newest propTypes have been added but older ones are missing @todo: add missing propTypes for Shell.\n */\n\n /**\n * The array used to map for label and functions to list items.\n */\n switcherData: PropTypes.array,\n /**\n * The active label displayed.\n */\n selectedItem: PropTypes.string,\n /**\n * Provides a method set the selector width. Default is 100.\n */\n switcherWidth: PropTypes.number,\n /**\n * Children nodes\n */\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node\n ]).isRequired,\n\n /**\n * Name of site\n */\n siteName: PropTypes.string,\n\n /**\n * Component to render for the user Avatar\n */\n userAvatar: PropTypes.element,\n\n appContent: PropTypes.element,\n\n leftMenu: PropTypes.array,\n\n appSelectorMenus: PropTypes.array,\n\n className: PropTypes.object,\n\n navRoot: PropTypes.oneOfType([PropTypes.string, PropTypes.element, PropTypes.node]),\n\n /**\n * Should the shell use mock data\n */\n useMockData: PropTypes.bool,\n\n mockMenus: PropTypes.array,\n\n unityUrl: PropTypes.string,\n\n expander: PropTypes.bool,\n\n sidebarTitle: PropTypes.string,\n\n navMenuHoverOn: PropTypes.bool,\n\n toggleOne: PropTypes.bool,\n\n toggleTwo: PropTypes.bool,\n\n closePrimary: PropTypes.bool,\n\n closeSecondary: PropTypes.bool,\n\n panelExpanded: PropTypes.bool,\n\n panelExpandedSecondary: PropTypes.bool,\n\n setPanelExpanded: PropTypes.func,\n\n setPanelExpandedSecondary: PropTypes.func,\n\n breadCrumbAltLabelList: PropTypes.array,\n\n currentLocation: PropTypes.object,\n\n utilitySidebarResizable: PropTypes.bool,\n\n utilitySidebarToggleOverride: PropTypes.bool,\n\n onUtilitySidebarToggleExpandClick: PropTypes.func,\n\n hideLayout: PropTypes.bool,\n\n languages: PropTypes.arrayOf(PropTypes.object),\n\n utilityBarHasTabsOpen: PropTypes.bool,\n /**\n * Passes the background color on the project switcher (default: theme secondary)\n */\n projectSwitcherColor: PropTypes.string,\n getWidget: PropTypes.func,\n isValidWidget: PropTypes.func,\n currentTenant: PropTypes.object,\n hamburgerMenuAccessRole: PropTypes.string\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAyBK,OAAO;AACZ,MAAM,gBAAgB;CACpB,WAAW;CACX,kBAAkB;CAClB,eAAe;CACf,gBAAgB;CACjB;AAED,MAAM,YAAY,YACf,WAAW;CACV,WAAW;EACT,MAAM,EACJ,WAAW,QACZ;EACD,qBAAqB;GACnB,SAAS;GACT,eAAe;GAChB;EACD,eAAe,EACb,MAAM,GACP;EACF;CACD,MAAM;EACJ,MAAM;EACN,WAAW;EACX,SAAS;EACT,mBAAmB,CAAC,kBAAkB,kBAAkB,CACrD,KAAK,SAAS,IAAI,KAAK,GAAG,CAC1B,KAAK,IAAI;EACZ,qBAAqB;EACrB,kBAAkB;EACnB;CACD,QAAQ,EACN,UAAU,UACX;CACD,SAAS,EACP,UAAU,WACX;CACD,SAAS;EACP,UAAU;EACV,SAAS;EACT,eAAe;EACf,UAAU;EACV,QAAQ;EACR,SAAS,EAAE,qBAAqB,gBAAgB,KAAK,eAAe;EACpE,WAAW;EACZ;CACD,OAAO;EACL,OAAO;GACN,MAAM,YAAY,GAAG,KAAK,GAAG,EAC5B,QAAQ,UAAU,MAAM,eAAe,KACxC;EACF;CACF,GACD,EAAE,MAAM,UAAU,CACnB;;;;AAKD,MAAa,SAAS,UAAU;CAE9B,MAAM,WAAW,qBAAqB;CACtC,MAAM,UAAU,UAAU;EACxB,GAAG;EACH,aAAa,WAAW,mBAAmB;EAC5C,CAAC;CACF,MAAM,EACJ,UACA,YACA,YACA,UACA,kBACA,UACA,WACA,SACA,YACA,aACA,WACA,MAAM,cACN,UACA,UACA,cACA,iBAAiB,MACjB,gBACA,WACA,WACA,cACA,gBACA,eACA,wBACA,mBAAmB,OACnB,4BAA4B,OAC5B,yBAAyB,EAAE,EAC3B,iBACA,yBACA,8BACA,mCACA,aAAa,OACb,gBACA,cACA,cACA,eACA,WACA,uBACA,sBACA,WACA,eACA,mBACA,4BACE;CACJ,MAAM,cAAc,SAAS;CAC7B,MAAM,OAAO,gBAAgB;CAC7B,MAAM,EAAE,cAAc,kBAAkB,gBAAgB,eAAe;CACvE,MAAM,CAAC,mBAAmB,wBAAwB,SAAS,MAAM;CACjE,MAAM,CAAC,oBAAoB,yBAAyB,SAAS,MAAM;CACnE,MAAM,EAAE,SAAS,gBAAgB;CACjC,MAAM,eAAe,iBAAiB,UAAU,MAAM,MAAM;AAC5D,+BAA8B;AAI9B,iBAAgB;AACd,eAAa,UAAU;AACvB,eAAa,aAAa,KAAK;IAC9B,CAAC,WAAW,aAAa,CAAC;AAE7B,iBAAgB;AACd,mBAAiB,cAAc;AAC/B,eAAa,iBAAiB,KAAK;IAClC,CAAC,eAAe,iBAAiB,CAAC;CAErC,MAAM,eAAe,aAClB,YAAY,YAAU;AACrB,MAAI,CAACA,WAAS,CAAC,YACb,QAAO,EAAE;EAIX,MAAM,cAFgB,cAAc,YAAYA,SAEf,QAC9B,SAAS,KAAK,eAAe,cAAc,KAAK,OAClD;AAED,MAAI,WACF,QAAO,WAAW,QAAQ,gCAAgC,SAAS;AACjE,UAAO,CACL,GAAG,gCACH,GAAG,KAAK,+BACT;KACA,EAAE,CAAC;MAEN,QAAO,EAAE;IAGb,CAAC,aAAa,UAAU,CACzB;CAED,MAAM,QAAQ,cAAc;AAE1B,SAAO,wBADW,aAAa,GAAG,SAAS,EACD,MAAM,MAAM,eAAe;IACpE;EAAC;EAAc;EAAM;EAAU;EAAe,CAAC;CAGlD,MAAM,SAAS,cADD,UAAU,CACW,YAAY,GAAG,KAAK,CAAC;CAExD,MAAM,qBAAqB,MAAM,SAAS;AACxC,MAAI,SAAS,SACX,sBAAqB,KAAK;MAE1B,uBAAsB,KAAK;;CAI/B,MAAM,cAAc,cAAc;AAKhC,SAAO,wBAJW,aAChB,cAAc,eACd,iBACD,EACyC,MAAM,MAAM,eAAe;IACpE;EAAC;EAAc;EAAM;EAAkB;EAAe,CAAC;CAE1D,MAAM,eAAe,cAAc;AAKjC,SAAO,wBAJW,aAChB,cAAc,gBACd,iBACD,EACyC,MAAM,MAAM,eAAe;IACpE;EAAC;EAAc;EAAM;EAAkB;EAAe,CAAC;CAE1D,MAAM,UAAU,cAAc;AAK5B,SAAO,wBAJW,aAChB,cAAc,kBACd,iBACD,EACyC,MAAM,MAAM,eAAe;IACpE;EAAC;EAAc;EAAM;EAAkB;EAAe,CAAC;CAE1D,MAAM,cAAc,cAEhB,CAAC,oBACA,2BACC,CAAC,MAAM,UAAU,SAAS,wBAAwB,EACtD;EAAC;EAAM;EAAkB;EAAwB,CAClD;AAED,iBAAgB;AACd,OAAK,eAAe,QAAQ;IAC3B,CAAC,KAAK,CAAC;AAEV,KAAI,WACF,QAAO,oCAAC,aAAK,SAAe;AAG9B,QACE,oCAAC,uBACC,oCAAC,sBACC,oCAAC,SAAI,WAAW,QAAQ,QACrB,CAAC,eACA,oCAACC;EACC,WAAW,QAAQ;EACT;EACE;EACA;EACZ,gBAAgB;EAChB,qBAAqB,MAAM,SAAS,kBAAkB,MAAM,KAAK;EACzC;EACP;EACH;EACA;EACC;EACf,eAAe;EACJ;EACX,iBAAiB;GACjB,EAGJ,oCAAC;EAAI,OAAO,EAAE,SAAS,QAAQ;EAAE,WAAW,QAAQ;IACjD,CAAC,eAAe,UACf,oCAACC;EACC,WAAW,QAAQ;EACnB,MAAM;EACU;EACV;EACN,gBAAgB;GAChB,EAEH,YACC,oCAAC,aACC,oCAAC;EACC,OAAO,gBAAgB;EACvB,WAAW;EACmB;EAE5B;EAEF,eAAe;EACf,GAAI;GACJ,CACE,CAEJ,EAEN,oCAAC,SAAI,WAAW,QAAQ,WACtB,oCAAC;EACC,WAAW,KAAK,UAAU;EAC1B,SAAS;EACG;EACF;EACM;EACL;EACA;EACG;EACE;EAChB,UAAU;EACV,mBAAmB;EACnB,aAAa;EACb,sBAAsB;GACtB,EACF,oCAAC,yBAAmB,SAA6B,CAC7C,EACN,oCAAC;EACC,SAAQ;EACR,QAAO;EACP,MAAM;EACN,SACE,CAAC,SAAS,EAAE,GAAG,CAAC,mBAAmB,EAAE,GAAG,EAAE,OAAO,QAAQ,OAAO;EAElE,eAAe,kBAAkB,WAAW,MAAM;IAEjD,UAAU,oBACT,oCAACC;EACC,eAAe,kBAAkB,WAAW,MAAM;EACpC;EACD;EACJ;EACC;EACJ;EACN,QAAQ;GACR,GAEF,CAAC,UAAW,UAAU,CAAC,qBACvB,oCAACD;EACC,QAAQ;EACR,WAAW,QAAQ;EACnB,MAAM;EACU;EACV;EACN,gBAAgB;GAChB,CAEG,EAET,oCAAC;EACC,SAAQ;EACR,QAAO;EACP,MAAM;EACN,SAAS,EAAE,OAAO,QAAQ,OAAO;EACjC,eAAe,kBAAkB,UAAU,MAAM;IAEjD,oCAACC;EACC,eAAe,kBAAkB,UAAU,MAAM;EACnC;EACD;EACJ;EACC;EACJ;EACN,QAAQ;GACR,CACK,CACL,CACS,CACD;;AAItB,MAAM,YAAY;CAQhB,cAAc,UAAU;CAIxB,cAAc,UAAU;CAIxB,eAAe,UAAU;CAIzB,UAAU,UAAU,UAAU,CAC5B,UAAU,QAAQ,UAAU,KAAK,EACjC,UAAU,KACX,CAAC,CAAC;CAKH,UAAU,UAAU;CAKpB,YAAY,UAAU;CAEtB,YAAY,UAAU;CAEtB,UAAU,UAAU;CAEpB,kBAAkB,UAAU;CAE5B,WAAW,UAAU;CAErB,SAAS,UAAU,UAAU;EAAC,UAAU;EAAQ,UAAU;EAAS,UAAU;EAAK,CAAC;CAKnF,aAAa,UAAU;CAEvB,WAAW,UAAU;CAErB,UAAU,UAAU;CAEpB,UAAU,UAAU;CAEpB,cAAc,UAAU;CAExB,gBAAgB,UAAU;CAE1B,WAAW,UAAU;CAErB,WAAW,UAAU;CAErB,cAAc,UAAU;CAExB,gBAAgB,UAAU;CAE1B,eAAe,UAAU;CAEzB,wBAAwB,UAAU;CAElC,kBAAkB,UAAU;CAE5B,2BAA2B,UAAU;CAErC,wBAAwB,UAAU;CAElC,iBAAiB,UAAU;CAE3B,yBAAyB,UAAU;CAEnC,8BAA8B,UAAU;CAExC,mCAAmC,UAAU;CAE7C,YAAY,UAAU;CAEtB,WAAW,UAAU,QAAQ,UAAU,OAAO;CAE9C,uBAAuB,UAAU;CAIjC,sBAAsB,UAAU;CAChC,WAAW,UAAU;CACrB,eAAe,UAAU;CACzB,eAAe,UAAU;CACzB,yBAAyB,UAAU;CACpC"}
@@ -1,7 +1,7 @@
1
1
  import { t as FluentButton } from "./FluentButton-3xMbN_Vs.js";
2
2
  import { t as FluentIcon } from "./FluentIcon-DjE8A5DC.js";
3
3
  import { t as FluentIconButton } from "./FluentIconButton-CtN4xdO_.js";
4
- import { S as getIconFromName } from "./TreeUtilities-BnHT4nq0.js";
4
+ import { S as getIconFromName } from "./TreeUtilities-DWgARig7.js";
5
5
  import { t as Adornment } from "./Adornment-Ciq1X7he.js";
6
6
  import { t as FluentCheckbox } from "./FluentCheckbox-0r5fG2yi.js";
7
7
  import { t as CompactDataListItem } from "./CompactDataListItem-Dx6_rBb2.js";
@@ -320,4 +320,4 @@ const Statistic = (props) => {
320
320
 
321
321
  //#endregion
322
322
  export { CheckboxGroup as i, PopoverCard as n, CheckboxList as r, Statistic as t };
323
- //# sourceMappingURL=Statistic-CdpPX5KV.js.map
323
+ //# sourceMappingURL=Statistic-BMkpqkol.js.map