@topconsultnpm/sdkui-react 6.19.0-dev1.6 → 6.19.0-dev1.61

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 (95) hide show
  1. package/lib/components/base/Styled.d.ts +1 -0
  2. package/lib/components/base/Styled.js +40 -0
  3. package/lib/components/base/TMCustomButton.d.ts +11 -0
  4. package/lib/components/base/TMCustomButton.js +63 -0
  5. package/lib/components/base/TMFileManagerDataGridView.js +4 -1
  6. package/lib/components/base/TMLayout.d.ts +2 -1
  7. package/lib/components/base/TMLayout.js +2 -2
  8. package/lib/components/base/TMTreeView.js +3 -2
  9. package/lib/components/editors/TMHtmlEditor.d.ts +5 -0
  10. package/lib/components/editors/TMHtmlEditor.js +72 -12
  11. package/lib/components/editors/TMMetadataValues.js +90 -40
  12. package/lib/components/features/archive/TMArchive.d.ts +10 -0
  13. package/lib/components/features/archive/TMArchive.js +56 -25
  14. package/lib/components/features/blog/TMBlogCommentForm.d.ts +4 -4
  15. package/lib/components/features/blog/TMBlogCommentForm.js +76 -51
  16. package/lib/components/features/documents/TMDcmtBlog.d.ts +15 -0
  17. package/lib/components/features/documents/TMDcmtBlog.js +21 -33
  18. package/lib/components/features/documents/TMDcmtForm.d.ts +17 -3
  19. package/lib/components/features/documents/TMDcmtForm.js +205 -46
  20. package/lib/components/features/documents/TMDcmtTasks.d.ts +13 -0
  21. package/lib/components/features/documents/TMDcmtTasks.js +24 -0
  22. package/lib/components/features/documents/TMDragDropOverlay.js +2 -1
  23. package/lib/components/features/documents/TMMasterDetailDcmts.d.ts +8 -1
  24. package/lib/components/features/documents/TMMasterDetailDcmts.js +6 -6
  25. package/lib/components/features/documents/TMRelationViewer.d.ts +53 -3
  26. package/lib/components/features/documents/TMRelationViewer.js +232 -85
  27. package/lib/components/features/search/TMSearch.d.ts +10 -1
  28. package/lib/components/features/search/TMSearch.js +14 -5
  29. package/lib/components/features/search/TMSearchQueryPanel.d.ts +1 -1
  30. package/lib/components/features/search/TMSearchQueryPanel.js +36 -7
  31. package/lib/components/features/search/TMSearchResult.d.ts +10 -1
  32. package/lib/components/features/search/TMSearchResult.js +139 -333
  33. package/lib/components/features/search/TMSearchResultsMenuItems.d.ts +2 -2
  34. package/lib/components/features/search/TMSearchResultsMenuItems.js +33 -8
  35. package/lib/components/features/tasks/TMTaskForm.d.ts +37 -0
  36. package/lib/components/features/tasks/TMTaskForm.js +361 -0
  37. package/lib/components/features/tasks/TMTasksAgenda.d.ts +17 -0
  38. package/lib/components/features/tasks/TMTasksAgenda.js +107 -0
  39. package/lib/components/features/tasks/TMTasksCalendar.d.ts +21 -0
  40. package/lib/components/features/tasks/TMTasksCalendar.js +240 -0
  41. package/lib/components/features/tasks/TMTasksHeader.d.ts +14 -0
  42. package/lib/components/features/tasks/TMTasksHeader.js +37 -0
  43. package/lib/components/features/tasks/TMTasksPanelContent.d.ts +20 -0
  44. package/lib/components/features/tasks/TMTasksPanelContent.js +65 -0
  45. package/lib/components/features/tasks/TMTasksUtils.d.ts +132 -0
  46. package/lib/components/features/tasks/TMTasksUtils.js +634 -0
  47. package/lib/components/features/tasks/TMTasksUtilsView.d.ts +32 -0
  48. package/lib/components/features/tasks/TMTasksUtilsView.js +107 -0
  49. package/lib/components/features/tasks/TMTasksView.d.ts +40 -0
  50. package/lib/components/features/tasks/TMTasksView.js +560 -0
  51. package/lib/components/features/workflow/TMWorkflowPopup.d.ts +3 -1
  52. package/lib/components/features/workflow/TMWorkflowPopup.js +19 -6
  53. package/lib/components/forms/TMChooserForm.d.ts +1 -1
  54. package/lib/components/forms/TMChooserForm.js +2 -2
  55. package/lib/components/grids/TMBlogAttachments.d.ts +42 -0
  56. package/lib/components/grids/TMBlogAttachments.js +43 -0
  57. package/lib/components/grids/TMBlogHeader.d.ts +31 -0
  58. package/lib/components/grids/TMBlogHeader.js +41 -0
  59. package/lib/components/grids/{TMBlogs.d.ts → TMBlogsPost.d.ts} +42 -58
  60. package/lib/components/grids/TMBlogsPost.js +628 -0
  61. package/lib/components/grids/{TMBlogsUtils.d.ts → TMBlogsPostUtils.d.ts} +61 -47
  62. package/lib/components/grids/{TMBlogsUtils.js → TMBlogsPostUtils.js} +143 -124
  63. package/lib/components/index.d.ts +14 -1
  64. package/lib/components/index.js +15 -1
  65. package/lib/components/viewers/TMTidViewer.js +28 -3
  66. package/lib/css/tm-sdkui.css +1 -1
  67. package/lib/helper/SDKUI_Globals.d.ts +2 -1
  68. package/lib/helper/SDKUI_Globals.js +1 -0
  69. package/lib/helper/SDKUI_Localizator.d.ts +61 -4
  70. package/lib/helper/SDKUI_Localizator.js +608 -25
  71. package/lib/helper/TMCustomSearchBar.d.ts +8 -0
  72. package/lib/helper/TMCustomSearchBar.js +54 -0
  73. package/lib/helper/TMIcons.d.ts +2 -0
  74. package/lib/helper/TMIcons.js +6 -0
  75. package/lib/helper/TMImageLibrary.d.ts +3 -2
  76. package/lib/helper/TMImageLibrary.js +230 -230
  77. package/lib/helper/TMToppyMessage.d.ts +7 -0
  78. package/lib/helper/TMToppyMessage.js +42 -0
  79. package/lib/helper/TMUtils.d.ts +10 -1
  80. package/lib/helper/TMUtils.js +42 -1
  81. package/lib/helper/dcmtsHelper.d.ts +2 -0
  82. package/lib/helper/dcmtsHelper.js +18 -0
  83. package/lib/helper/index.d.ts +1 -0
  84. package/lib/helper/index.js +1 -0
  85. package/lib/hooks/useRelatedDocuments.d.ts +72 -0
  86. package/lib/hooks/useRelatedDocuments.js +655 -0
  87. package/lib/index.d.ts +1 -0
  88. package/lib/index.js +1 -0
  89. package/lib/stories/TMSDKUI_Localizator.stories.js +1 -1
  90. package/lib/ts/types.d.ts +14 -0
  91. package/lib/ts/types.js +15 -0
  92. package/lib/utils/theme.d.ts +1 -0
  93. package/lib/utils/theme.js +1 -0
  94. package/package.json +2 -2
  95. package/lib/components/grids/TMBlogs.js +0 -721
@@ -1,11 +1,12 @@
1
1
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import React, { useCallback, useEffect, useMemo, useState } from 'react';
3
- import { SDK_Globals, DataColumnTypes, MetadataDataDomains, DataListViewModes, MetadataFormats, LayoutModes, TemplateTIDs, DcmtTypeListCacheService, AccessLevels, SystemMIDsAsNumber, RelationCacheService, RelationTypes } from '@topconsultnpm/sdk-ts';
3
+ import { SDK_Globals, DataColumnTypes, MetadataDataDomains, DataListViewModes, MetadataFormats, LayoutModes, TemplateTIDs, DcmtTypeListCacheService, AccessLevels, SystemMIDsAsNumber, RetrieveFileOptions, DcmtOpers, GeneralRetrieveFormats, AccessLevelsEx } from '@topconsultnpm/sdk-ts';
4
4
  import styled from 'styled-components';
5
5
  import { getCommandsMenuItems, getSelectedDcmtsOrFocused } from './TMSearchResultsMenuItems';
6
6
  import { genUniqueId, IconShow, IconBoard, IconDcmtTypeSys, IconDetailDcmts, SDKUI_Localizator, IconDelete, IconRefresh, IconMenuVertical, IconDownload, deepCompare, getDataColumnName, searchResultDescriptorToSimpleArray, searchResultToMetadataValues, IconSearchCheck, TMCommandsContextMenu } from '../../../helper';
7
7
  import { useDcmtOperations } from '../../../hooks/useDcmtOperations';
8
8
  import { useInputAttachmentsDialog, useInputCvtFormatDialog } from '../../../hooks/useInputDialog';
9
+ import { useRelatedDocuments } from '../../../hooks/useRelatedDocuments';
9
10
  import { DcmtOperationTypes, FormModes, SearchResultContext, DownloadTypes } from '../../../ts';
10
11
  import { Gutters, TMColors } from '../../../utils/theme';
11
12
  import { StyledModalContainer, StyledBadge, StyledMultiViewPanel } from '../../base/Styled';
@@ -21,7 +22,6 @@ import TMMetadataValues from '../../editors/TMMetadataValues';
21
22
  import { TMSaveFormButtonPrevious, TMSaveFormButtonNext } from '../../forms/TMSaveForm';
22
23
  import TMDataListItemViewer from '../../viewers/TMDataListItemViewer';
23
24
  import TMTidViewer from '../../viewers/TMTidViewer';
24
- import { hasDetailRelations, hasMasterRelations } from '../../../helper/dcmtsHelper';
25
25
  import TMDcmtPreview from '../documents/TMDcmtPreview';
26
26
  import TMFloatingToolbar from '../../base/TMFloatingToolbar';
27
27
  import { WorkFlowApproveRejectPopUp, WorkFlowMoreInfoPopUp, WorkFlowOperationButtons, WorkFlowReAssignPopUp } from '../workflow/TMWorkflowPopup';
@@ -40,6 +40,8 @@ import ShowAlert from '../../base/TMAlert';
40
40
  import TMSpinner from '../../base/TMSpinner';
41
41
  import TMChooserForm from '../../forms/TMChooserForm';
42
42
  import TMModal from '../../base/TMModal';
43
+ import TMSearch from './TMSearch';
44
+ import TMArchive from '../archive/TMArchive';
43
45
  //#region Helper Methods
44
46
  export const getSearchResultCountersSingleCategory = (searchResults) => {
45
47
  // let totDcmtTypes = searchResults.length;
@@ -57,7 +59,7 @@ const orderByName = (array) => {
57
59
  return 1;
58
60
  } return 0; });
59
61
  };
60
- const TMSearchResult = ({ context = SearchResultContext.METADATA_SEARCH, isVisible = true, allowRelations = true, openDcmtFormAsModal = false, searchResults = [], showSearchResultSidebar = true, showSelector = false, groupId, title, isClosable = false, allowFloatingBar = true, showToolbarHeader = true, selectedSearchResultTID, workingGroupContext = undefined, disableAccordionIfSingleCategory = false, floatingActionConfig, openInOffice, onRefreshAfterAddDcmtToFavs, onRefreshSearchAsync, onSelectedTIDChanged, onWFOperationCompleted, onClose, onFileOpened, onTaskCreateRequest, openWGsCopyMoveForm, openEditPdf, openCommentFormCallback, openAddDocumentForm, openS4TViewer = false, onOpenS4TViewerRequest, passToArchiveCallback, showTodoDcmtForm = false }) => {
62
+ const TMSearchResult = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTaskCallback, editTaskCallback, handleNavigateToWGs, handleNavigateToDossiers, context = SearchResultContext.METADATA_SEARCH, isVisible = true, allowRelations = true, openDcmtFormAsModal = false, searchResults = [], showSearchResultSidebar = true, showSelector = false, groupId, title, isClosable = false, allowFloatingBar = true, showToolbarHeader = true, showBackButton = true, selectedSearchResultTID, workingGroupContext = undefined, disableAccordionIfSingleCategory = false, floatingActionConfig, openInOffice, onRefreshAfterAddDcmtToFavs, onRefreshSearchAsync, onSelectedTIDChanged, onWFOperationCompleted, onClose, onFileOpened, onTaskCreateRequest, openWGsCopyMoveForm, openEditPdf, openCommentFormCallback, openAddDocumentForm, openS4TViewer = false, onOpenS4TViewerRequest, passToArchiveCallback, showTodoDcmtForm = false, onReferenceClick, }) => {
61
63
  const [id, setID] = useState('');
62
64
  const [showApprovePopup, setShowApprovePopup] = useState(false);
63
65
  const [showRejectPopup, setShowRejectPopup] = useState(false);
@@ -70,29 +72,11 @@ const TMSearchResult = ({ context = SearchResultContext.METADATA_SEARCH, isVisib
70
72
  const [selectedSearchResult, setSelectedSearchResult] = useState();
71
73
  const [currentSearchResults, setCurrentSearchResults] = useState(searchResults || []);
72
74
  const [showSearch, setShowSearch] = useState(false);
73
- // States for Related Documents
74
- const [relatedDcmts, setRelatedDcmts] = useState(undefined);
75
- const [showRelatedDcmtsChooser, setShowRelatedDcmtsChooser] = useState(false);
76
- const [archiveType, setArchiveType] = useState(undefined);
77
- const [isOpenDetails, setIsOpenDetails] = useState(false);
78
- const [isOpenMaster, setIsOpenMaster] = useState(false);
79
- const [isOpenArchiveRelationForm, setIsOpenArchiveRelationForm] = useState(false);
80
- const [archiveRelatedDcmtFormTID, setArchiveRelatedDcmtFormTID] = useState(undefined);
81
- const [archiveRelatedDcmtFormMids, setArchiveRelatedDcmtFormMids] = useState([]);
82
- const [relatedDcmtsChooserDataSource, setRelatedDcmtsChooserDataSource] = useState(undefined);
83
- const [showPairDcmtsModal, setShowPairDcmtsModal] = useState(false);
84
- const [isPairingManyToMany, setIsPairingManyToMany] = useState(false);
85
- const [pairedSearchResults, setPairedSearchResults] = useState([]);
86
- const [manyToManyRelations, setManyToManyRelations] = useState(undefined);
87
- const [showManyToManyChooser, setShowManyToManyChooser] = useState(false);
88
- const [manyToManyChooserDataSource, setManyToManyChooserDataSource] = useState(undefined);
75
+ const [sharedDcmtSearchResults, setSharedDcmtSearchResults] = useState([]);
89
76
  const [secondaryMasterDcmts, setSecondaryMasterDcmts] = useState([]);
90
77
  const [isOpenDcmtForm, setIsOpenDcmtForm] = useState(false);
91
- const [currentTIDHasDetailRelations, setCurrentTIDHasDetailRelations] = useState();
92
- const [currentTIDHasMasterRelations, setCurrentTIDHasMasterRelations] = useState();
93
- const [canArchiveMasterRelation, setCanArchiveMasterRelation] = useState(false);
94
- const [canArchiveDetailRelation, setCanArchiveDetailRelation] = useState(false);
95
78
  const [isOpenBatchUpdate, setIsOpenBatchUpdate] = useState(false);
79
+ const [isOpenSharedArchive, setIsOpenSharedArchive] = useState(false);
96
80
  const [visibleItems, setVisibleItems] = useState([]);
97
81
  const [focusedItem, setFocusedItem] = useState();
98
82
  const [selectedItems, setSelectedItems] = useState([]);
@@ -100,20 +84,27 @@ const TMSearchResult = ({ context = SearchResultContext.METADATA_SEARCH, isVisib
100
84
  const [currentMetadataValues, setCurrentMetadataValues] = useState([]);
101
85
  const [dcmtFormLayoutMode, setDcmtFormLayoutMode] = useState(LayoutModes.Update);
102
86
  const [isModifiedBatchUpdate, setIsModifiedBatchUpdate] = useState(false);
87
+ const [sharedDcmtFile, setSharedDcmtFile] = useState(undefined);
103
88
  // State to control whether the export form (for exporting to Excel/CSV/txt and others) should be shown
104
89
  const [showExportForm, setShowExportForm] = useState(false);
105
90
  const [confirmFormat, ConfirmFormatDialog] = useInputCvtFormatDialog();
106
91
  const { openConfirmAttachmentsDialog, ConfirmAttachmentsDialog } = useInputAttachmentsDialog();
107
- const { abortController, showWaitPanel, waitPanelTitle, showPrimary, waitPanelTextPrimary, waitPanelValuePrimary, waitPanelMaxValuePrimary, showSecondary, waitPanelTextSecondary, waitPanelValueSecondary, waitPanelMaxValueSecondary, downloadDcmtsAsync, runOperationAsync } = useDcmtOperations();
92
+ const { abortController, showWaitPanel, waitPanelTitle, showPrimary, waitPanelTextPrimary, waitPanelValuePrimary, waitPanelMaxValuePrimary, showSecondary, waitPanelTextSecondary, waitPanelValueSecondary, waitPanelMaxValueSecondary, downloadDcmtsAsync, runOperationAsync, getDcmtFileAsync } = useDcmtOperations();
93
+ const relatedDocuments = useRelatedDocuments({ selectedSearchResult, focusedItem, currentSearchResults });
94
+ const { relatedDcmts, showRelatedDcmtsChooser, archiveType, isOpenDetails, isOpenMaster, isOpenArchiveRelationForm, archiveRelatedDcmtFormTID, archiveRelatedDcmtFormMids, relatedDcmtsChooserDataSource, showPairDcmtsModal, isPairingManyToMany, pairedSearchResults, manyToManyRelations, selectedManyToManyRelation, showManyToManyChooser, manyToManyChooserDataSource, showPairSearchModal, pairSearchModalTargetTID, pairSearchModalParentTID, pairSearchModalParentDID, pairSearchModalRelation, pairSearchModalInputMids, currentTIDHasDetailRelations, currentTIDHasMasterRelations, canArchiveMasterRelation, canArchiveDetailRelation, hasManyToManyRelation, setIsOpenDetails, setIsOpenMaster, setShowRelatedDcmtsChooser, setShowManyToManyChooser, setShowPairDcmtsModal, setShowPairSearchModal, setIsOpenArchiveRelationForm, setArchiveType, setArchiveRelatedDcmtFormTID, setArchiveRelatedDcmtFormMids, pairFloatingActionConfig, pairSearchModalFloatingActionConfig, archiveMasterDocuments, archiveDetailDocuments, pairManyToMany, checkRelatedDcmtsArchiveCapability, checkManyToManyCapability, archiveRelatedDcmtHandler, executeManyToManyPairing, } = relatedDocuments;
108
95
  const deviceType = useDeviceType();
109
96
  const isMobile = deviceType === DeviceType.MOBILE;
110
- const disable = getSelectedDcmtsOrFocused(selectedItems, focusedItem).length === 0;
97
+ const selectedDocs = getSelectedDcmtsOrFocused(selectedItems, focusedItem);
111
98
  // Disable the "Sign/Approve" button if:
112
99
  // 1. No document or multiple documents are selected, OR
113
100
  // 2. Exactly one document is selected but its FILEEXT property is null
114
- const disableSignApproveDisable = getSelectedDcmtsOrFocused(selectedItems, focusedItem).length !== 1 || (getSelectedDcmtsOrFocused(selectedItems, focusedItem).length === 1 && getSelectedDcmtsOrFocused(selectedItems, focusedItem)[0].FILEEXT === null);
101
+ const disableSignApproveDisable = selectedDocs.length !== 1 || (selectedDocs.length === 1 && selectedDocs[0].FILEEXT === null);
115
102
  const dcmtsReturned = (searchResults?.length > 1 ? selectedSearchResult?.dcmtsReturned : searchResults[0]?.dcmtsReturned ?? 0);
116
103
  const dcmtsFound = (searchResults?.length > 1 ? selectedSearchResult?.dcmtsFound : searchResults[0]?.dcmtsFound ?? 0);
104
+ // Dcmt Blog states
105
+ const [blogsDatasource, setBlogsDatasource] = useState([]);
106
+ const [hasLoadedDataOnce, setHasLoadedDataOnce] = useState(false); //traccia se *qualsiasi* dato è stato caricato per la prima volta
107
+ const [lastLoadedDid, setLastLoadedDid] = useState(undefined); // `lastLoadedDid` tiene traccia dell'ultimo `did` per cui abbiamo caricato i dati
117
108
  useEffect(() => { setID(genUniqueId()); }, []);
118
109
  useEffect(() => {
119
110
  setSelectedItems([]);
@@ -134,15 +125,13 @@ const TMSearchResult = ({ context = SearchResultContext.METADATA_SEARCH, isVisib
134
125
  DcmtTypeListCacheService.GetWithNotGrantedAsync(selectedSearchResult?.fromTID, Number(selectedSearchResult?.dtdResult?.rows?.[0]?.[1])).then((dtd) => {
135
126
  setFromDTD(dtd);
136
127
  });
137
- hasDetailRelations(selectedSearchResult?.fromTID).then((value) => setCurrentTIDHasDetailRelations(value));
138
- hasMasterRelations(selectedSearchResult?.fromTID).then((value) => setCurrentTIDHasMasterRelations(value));
139
128
  checkRelatedDcmtsArchiveCapability();
129
+ checkManyToManyCapability();
140
130
  // Ricava il nuovo dataSource
141
131
  const newDataSource = searchResultDescriptorToSimpleArray(selectedSearchResult);
142
132
  // Se esiste almeno una riga, seleziona la prima
143
133
  setFocusedItem(newDataSource && newDataSource.length > 0 ? newDataSource[0] : undefined);
144
- setSelectedItems([]);
145
- }, [selectedSearchResult]);
134
+ }, [selectedSearchResult, checkRelatedDcmtsArchiveCapability, checkManyToManyCapability]);
146
135
  useEffect(() => {
147
136
  if (!focusedItem)
148
137
  return;
@@ -165,7 +154,59 @@ const TMSearchResult = ({ context = SearchResultContext.METADATA_SEARCH, isVisib
165
154
  fileExt: currentMetadataValues.find(o => o.mid == SystemMIDsAsNumber.FileExt)?.value
166
155
  });
167
156
  }, [currentMetadataValues]);
168
- const openFormHandler = (layoutMode) => { setIsOpenDcmtForm(true); setDcmtFormLayoutMode(layoutMode); };
157
+ const openFormHandler = (layoutMode) => {
158
+ setIsOpenDcmtForm(true);
159
+ setDcmtFormLayoutMode(layoutMode);
160
+ };
161
+ const openSharedArchiveHandler = async () => {
162
+ const dcmts = getSelectedDcmtsOrFocused(selectedItems, focusedItem);
163
+ if (dcmts.length === 0) {
164
+ ShowAlert({ message: "Nessun documento selezionato", mode: "warning", title: 'Archivio Condivisa', duration: 3000 });
165
+ return;
166
+ }
167
+ if (fromDTD?.perm?.canArchive !== AccessLevelsEx.Yes && fromDTD?.perm?.canArchive !== AccessLevelsEx.Mixed) {
168
+ ShowAlert({
169
+ message: "Non hai i permessi per archiviare documenti di questo tipo.",
170
+ mode: 'warning',
171
+ title: 'Archivio Condivisa',
172
+ duration: 5000
173
+ });
174
+ return;
175
+ }
176
+ try {
177
+ const rfo = new RetrieveFileOptions();
178
+ rfo.retrieveReason = DcmtOpers.None;
179
+ rfo.generalRetrieveFormat = GeneralRetrieveFormats.OriginalUnsigned;
180
+ let dcmtFile = await getDcmtFileAsync({ TID: focusedItem?.TID, DID: focusedItem?.DID }, rfo, 'Archiviazione Condivisa', false, true);
181
+ if (dcmtFile) {
182
+ setSharedDcmtFile(dcmtFile?.file);
183
+ }
184
+ setIsOpenSharedArchive(true);
185
+ }
186
+ catch (e) {
187
+ TMExceptionBoxManager.show({ exception: e });
188
+ }
189
+ };
190
+ const showSharedDcmtsHandler = async () => {
191
+ try {
192
+ TMSpinner.show({ description: "Caricamento documenti condivisi..." });
193
+ const se = SDK_Globals.tmSession?.NewSearchEngine();
194
+ const sharedDcmts = await se?.GetSharedDcmtsAsync(getSelectedDcmtsOrFocused(selectedItems, focusedItem)[0].TID, getSelectedDcmtsOrFocused(selectedItems, focusedItem)[0].DID);
195
+ if (sharedDcmts && sharedDcmts.length > 0) {
196
+ console.log(sharedDcmts);
197
+ setSharedDcmtSearchResults(sharedDcmts);
198
+ }
199
+ else {
200
+ ShowAlert({ message: "Nessun documento condiviso trovato.", mode: "info", title: 'Documenti Condivisi', duration: 5000 });
201
+ }
202
+ }
203
+ catch (e) {
204
+ TMExceptionBoxManager.show({ exception: e });
205
+ }
206
+ finally {
207
+ TMSpinner.hide();
208
+ }
209
+ };
169
210
  const openTaskFormHandler = (onTaskCreated) => {
170
211
  if (selectedItems.length > 1)
171
212
  return;
@@ -260,7 +301,7 @@ const TMSearchResult = ({ context = SearchResultContext.METADATA_SEARCH, isVisib
260
301
  return;
261
302
  if (e.target === 'content') {
262
303
  e.items = e.items || [];
263
- const menuItems = getCommandsMenuItems(isMobile, fromDTD, selectedItems, focusedItem, context, showFloatingBar, workingGroupContext, showSearch, setShowFloatingBar, openFormHandler, downloadDcmtsAsync, runOperationAsync, onRefreshSearchAsync, refreshSelectionDataRowsAsync, onRefreshAfterAddDcmtToFavs, confirmFormat, openConfirmAttachmentsDialog, openTaskFormHandler, openDetailDcmtsFormHandler, openMasterDcmtsFormHandler, openBatchUpdateFormHandler, openExportForm, handleToggleSearch, handleSignApprove, openWGsCopyMoveForm, openCommentFormCallback, openEditPdf, openAddDocumentForm, passToArchiveCallback, archiveMasterDocuments, archiveDetailDocuments, currentTIDHasMasterRelations, currentTIDHasDetailRelations, canArchiveMasterRelation, canArchiveDetailRelation, pairManyToMany);
304
+ const menuItems = getCommandsMenuItems(isMobile, fromDTD, selectedItems, focusedItem, context, showFloatingBar, workingGroupContext, showSearch, setShowFloatingBar, openFormHandler, openSharedArchiveHandler, showSharedDcmtsHandler, downloadDcmtsAsync, runOperationAsync, onRefreshSearchAsync, refreshSelectionDataRowsAsync, onRefreshAfterAddDcmtToFavs, confirmFormat, openConfirmAttachmentsDialog, openTaskFormHandler, openDetailDcmtsFormHandler, openMasterDcmtsFormHandler, openBatchUpdateFormHandler, openExportForm, handleToggleSearch, handleSignApprove, openWGsCopyMoveForm, openCommentFormCallback, openEditPdf, openAddDocumentForm, passToArchiveCallback, archiveMasterDocuments, archiveDetailDocuments, currentTIDHasMasterRelations, currentTIDHasDetailRelations, canArchiveMasterRelation, canArchiveDetailRelation, pairManyToMany, hasManyToManyRelation);
264
305
  e.items.push(...menuItems);
265
306
  }
266
307
  };
@@ -424,297 +465,8 @@ const TMSearchResult = ({ context = SearchResultContext.METADATA_SEARCH, isVisib
424
465
  break;
425
466
  }
426
467
  };
427
- //#region Related Documents Archive Section
428
- const getAllRelationsAsync = async () => {
429
- const tmSession = SDK_Globals.tmSession;
430
- try {
431
- TMSpinner.show({ description: SDKUI_Localizator.Loading });
432
- let relations = await RelationCacheService.GetAllAsync(tmSession);
433
- if (!relations)
434
- throw new Error("Impossibile caricare le relazioni.");
435
- return relations;
436
- }
437
- catch (error) {
438
- TMExceptionBoxManager.show({ exception: error });
439
- return undefined;
440
- }
441
- finally {
442
- TMSpinner.hide();
443
- }
444
- };
445
- const checkRelatedDcmtsArchiveCapability = async () => {
446
- const tid = selectedSearchResult?.fromTID;
447
- if (!tid) {
448
- setCanArchiveMasterRelation(false);
449
- setCanArchiveDetailRelation(false);
450
- return;
451
- }
452
- try {
453
- const relations = await getAllRelationsAsync();
454
- if (!relations) {
455
- setCanArchiveMasterRelation(false);
456
- setCanArchiveDetailRelation(false);
457
- return;
458
- }
459
- const detailRelations = relations.filter(r => r.detailTID === tid);
460
- const hasMasterWithAssociations = detailRelations.some(rel => rel.associations && rel.associations.length > 0);
461
- setCanArchiveMasterRelation(hasMasterWithAssociations);
462
- const masterRelations = relations.filter(r => r.masterTID === tid);
463
- const hasDetailWithAssociations = masterRelations.some(rel => rel.associations && rel.associations.length > 0);
464
- setCanArchiveDetailRelation(hasDetailWithAssociations);
465
- }
466
- catch (error) {
467
- console.error("Error checking archive capability:", error);
468
- setCanArchiveMasterRelation(false);
469
- setCanArchiveDetailRelation(false);
470
- }
471
- };
472
- const getFocusedItem = () => {
473
- if (!focusedItem || currentSearchResults.length !== 1)
474
- return undefined;
475
- return { mdList: currentSearchResults[0].dtdResult?.rows?.[focusedItem?.rowIndex ?? 0], mids: currentSearchResults[0].selectMIDs ?? [] };
476
- };
477
- const fetchAssociatedValues = (mid) => {
478
- let mdList = getFocusedItem();
479
- if (!mdList)
480
- return;
481
- let index = mdList.mids.findIndex(m => m == mid);
482
- if (index === -1)
483
- return;
484
- return mdList.mdList?.[index];
485
- };
486
- const filterRelationsByType = (relations, tid, type) => {
487
- return type === 'detail'
488
- ? relations.filter(r => r.masterTID == tid)
489
- : relations.filter(r => r.detailTID == tid);
490
- };
491
- const filterRelationsWithAssociations = (relations) => {
492
- return relations.filter(rel => rel.associations && rel.associations.length > 0);
493
- };
494
- const getRelatedDcmt = async (relation, type) => {
495
- return await DcmtTypeListCacheService.GetAsync(type === 'detail' ? relation.detailTID : relation.masterTID);
496
- };
497
- const showNoRelationsAlert = (type) => {
498
- ShowAlert({
499
- message: type === 'detail'
500
- ? "Nessun documento di dettaglio trovato per l'archiviazione."
501
- : "Nessun documento di master trovato per l'archiviazione.",
502
- mode: 'info',
503
- title: type === 'detail' ? SDKUI_Localizator.DcmtsDetail : SDKUI_Localizator.DcmtsMaster,
504
- duration: 5000
505
- });
506
- };
507
- const showNoAssociationsAlert = (type) => {
508
- ShowAlert({
509
- message: type === 'detail'
510
- ? "Nessuna associazione trovata per i documenti di dettaglio."
511
- : "Nessuna associazione trovata per i documenti di master.",
512
- mode: 'info',
513
- title: type === 'detail' ? SDKUI_Localizator.DcmtsDetail : SDKUI_Localizator.DcmtsMaster,
514
- duration: 5000
515
- });
516
- };
517
- const mapAssociationsToMids = (relation, type) => {
518
- return relation.associations?.map(assoc => ({
519
- mid: type === 'detail' ? (assoc.item2 ?? 0) : (assoc.item1 ?? 0),
520
- value: fetchAssociatedValues(type === 'detail' ? (assoc.item1 ?? 0) : (assoc.item2 ?? 0)) ?? ''
521
- })) ?? [];
522
- };
523
- const archiveRelatedDcmtHandler = (relation, type) => {
524
- const targetTID = type === 'detail' ? relation.detailTID : relation.masterTID;
525
- if (!targetTID)
526
- return;
527
- const mids = mapAssociationsToMids(relation, type);
528
- setArchiveType(type);
529
- setArchiveRelatedDcmtFormTID(targetTID);
530
- setArchiveRelatedDcmtFormMids(mids);
531
- setIsOpenArchiveRelationForm(true);
532
- };
533
- const archiveRelatedDocuments = async (tid, type) => {
534
- try {
535
- TMSpinner.show({ description: SDKUI_Localizator.Loading });
536
- const relations = await getAllRelationsAsync();
537
- if (!relations || !tid)
538
- return;
539
- const filteredRelations = filterRelationsByType(relations, tid, type);
540
- if (!filteredRelations || filteredRelations.length === 0) {
541
- showNoRelationsAlert(type);
542
- return;
543
- }
544
- const withAssociations = filterRelationsWithAssociations(filteredRelations);
545
- if (withAssociations.length === 0) {
546
- showNoAssociationsAlert(type);
547
- return;
548
- }
549
- setRelatedDcmts(withAssociations);
550
- if (withAssociations.length > 1) {
551
- const dataSourcePromises = withAssociations.map(async (rel) => {
552
- const relatedDcmt = await getRelatedDcmt(rel, type);
553
- return { id: rel?.id, name: relatedDcmt?.name };
554
- });
555
- const dataSource = await Promise.all(dataSourcePromises);
556
- setRelatedDcmtsChooserDataSource(dataSource);
557
- setArchiveType(type);
558
- setShowRelatedDcmtsChooser(true);
559
- }
560
- else {
561
- archiveRelatedDcmtHandler(withAssociations[0], type);
562
- }
563
- }
564
- catch (error) {
565
- TMExceptionBoxManager.show({ exception: error });
566
- }
567
- finally {
568
- TMSpinner.hide();
569
- }
570
- };
571
- const archiveDetailDocuments = async (tid) => {
572
- await archiveRelatedDocuments(tid, 'detail');
573
- };
574
- const archiveMasterDocuments = async (tid) => {
575
- await archiveRelatedDocuments(tid, 'master');
576
- };
577
- const executeManyToManyPairing = async (relation, isPairing) => {
578
- const searchEngine = SDK_Globals.tmSession?.NewSearchEngine();
579
- if (!focusedItem?.TID || !focusedItem?.DID) {
580
- alert("Seleziona un documento per eseguire la ricerca molti-a-molti.");
581
- return;
582
- }
583
- let qd;
584
- if (relation.detailTID === selectedSearchResult?.fromTID) {
585
- qd = relation.retrieveMastersQuery;
586
- }
587
- if (relation.masterTID === selectedSearchResult?.fromTID) {
588
- qd = relation.retrieveDetailsQuery;
589
- }
590
- if (!qd) {
591
- alert("La relazione molti-a-molti selezionata non ha una query di ricerca definita.");
592
- return;
593
- }
594
- qd = structuredClone(qd);
595
- if (qd.select) {
596
- for (const s of qd.select) {
597
- s.visibility = 1;
598
- }
599
- }
600
- const qdRetrieveParamsValue = {
601
- from: { tid: focusedItem.TID },
602
- select: [],
603
- where: [
604
- {
605
- tid: focusedItem.TID,
606
- mid: 5,
607
- leftBrackets: "(",
608
- rightBrackets: ")",
609
- operator: 0,
610
- value1: focusedItem.DID.toString()
611
- }
612
- ]
613
- };
614
- let notMappedMIDs = false;
615
- if (qd.params && qd.params.length > 0) {
616
- for (const param of qd.params) {
617
- if (!param.mappedMID)
618
- continue;
619
- qdRetrieveParamsValue.select.push({
620
- tid: param.mappedTID ?? focusedItem.TID,
621
- mid: param.mappedMID,
622
- visibility: 1
623
- });
624
- const currentRowValue = currentSearchResults[0]?.dtdResult?.rows?.[focusedItem.rowIndex];
625
- const midIndex = currentSearchResults[0]?.selectMIDs?.indexOf(param.mappedMID);
626
- if (currentRowValue && midIndex !== undefined && midIndex >= 0) {
627
- const value = currentRowValue[midIndex];
628
- param.value = value ?? '';
629
- if (param.value === null || param.value === '')
630
- notMappedMIDs = true;
631
- }
632
- else {
633
- notMappedMIDs = true;
634
- }
635
- }
636
- if (notMappedMIDs && qdRetrieveParamsValue.select && qdRetrieveParamsValue.select.length > 0) {
637
- const paramMetadata = await searchEngine.SearchByIDAsync(qdRetrieveParamsValue);
638
- if (paramMetadata?.dtdResult?.rows?.[0]) {
639
- for (const param of qd.params) {
640
- if (!param.mappedMID)
641
- continue;
642
- const colIndex = paramMetadata.selectMIDs?.indexOf(param.mappedMID);
643
- if (colIndex !== undefined && colIndex >= 0) {
644
- const value = paramMetadata.dtdResult.rows[0][colIndex];
645
- param.value = value ?? '';
646
- }
647
- }
648
- }
649
- }
650
- if (qd.where && qd.where.length > 0) {
651
- for (const whereItem of qd.where) {
652
- for (const param of qd.params) {
653
- if (!param.name)
654
- continue;
655
- param.value ??= '';
656
- const paramValue = param.value.toString();
657
- if (whereItem.value1) {
658
- whereItem.value1 = whereItem.value1.replace(param.name, paramValue);
659
- }
660
- if (whereItem.value2) {
661
- whereItem.value2 = whereItem.value2.replace(param.name, paramValue);
662
- }
663
- }
664
- }
665
- }
666
- }
667
- const sq = await searchEngine.SearchByIDAsync(qd);
668
- if (!sq?.dtdResult?.rows || sq.dtdResult.rows.length === 0) {
669
- alert("Nessun documento trovato.");
670
- return;
671
- }
672
- setPairedSearchResults([sq]);
673
- setIsPairingManyToMany(isPairing);
674
- setShowPairDcmtsModal(true);
675
- };
676
- const pairManyToMany = async (isPairing) => {
677
- try {
678
- TMSpinner.show({ description: SDKUI_Localizator.Loading });
679
- const relations = await getAllRelationsAsync();
680
- if (!relations)
681
- return;
682
- if (!relations.some(r => r.relationType === RelationTypes.ManyToMany)) {
683
- alert("Nessuna relazione molti-a-molti definita nel sistema.");
684
- return;
685
- }
686
- const manyToManyRels = relations.filter(r => r.relationType === RelationTypes.ManyToMany);
687
- if (!manyToManyRels.some(r => r.masterTID === selectedSearchResult?.fromTID || r.detailTID === selectedSearchResult?.fromTID)) {
688
- alert("Nessuna relazione molti-a-molti definita per il tipo di documento selezionato.");
689
- return;
690
- }
691
- const relsManyToMany = manyToManyRels.filter(r => r.masterTID === selectedSearchResult?.fromTID || r.detailTID === selectedSearchResult?.fromTID);
692
- setManyToManyRelations(relsManyToMany);
693
- if (relsManyToMany.length > 1) {
694
- const dataSourcePromises = relsManyToMany.map(async (rel) => {
695
- const targetTID = rel.masterTID === selectedSearchResult?.fromTID ? rel.detailTID : rel.masterTID;
696
- const relatedDcmt = await DcmtTypeListCacheService.GetAsync(targetTID);
697
- return { id: rel?.id, name: relatedDcmt?.name };
698
- });
699
- const dataSource = await Promise.all(dataSourcePromises);
700
- setManyToManyChooserDataSource(dataSource);
701
- setIsPairingManyToMany(isPairing);
702
- setShowManyToManyChooser(true);
703
- }
704
- else {
705
- await executeManyToManyPairing(relsManyToMany[0], isPairing);
706
- }
707
- }
708
- catch (error) {
709
- TMExceptionBoxManager.show({ exception: error });
710
- }
711
- finally {
712
- TMSpinner.hide();
713
- }
714
- };
715
- //#endregion Related Documents Archive Section
716
468
  const searchResutlToolbar = _jsxs(_Fragment, { children: [(dcmtsReturned != dcmtsFound) && _jsx("p", { style: { backgroundColor: `white`, color: TMColors.primaryColor, textAlign: 'center', padding: '1px 4px', borderRadius: '3px', display: 'flex' }, children: `${dcmtsReturned}/${dcmtsFound} restituiti` }), context === SearchResultContext.FAVORITES_AND_RECENTS &&
717
- _jsx("div", { style: { display: 'flex', alignItems: 'center', gap: '5px' }, children: _jsx(TMButton, { btnStyle: 'icon', icon: _jsx(IconDelete, { color: 'white' }), caption: "Rimuovi da " + (selectedSearchResult?.category === "Favorites" ? '"Preferiti"' : '"Recenti"'), disabled: getSelectedDcmtsOrFocused(selectedItems, focusedItem).length <= 0, onClick: removeDcmtFromFavsOrRecents }) }), _jsx(TMButton, { btnStyle: 'icon', icon: _jsx(IconRefresh, { color: 'white' }), caption: SDKUI_Localizator.Refresh, onClick: onRefreshSearchAsync }), _jsx(IconMenuVertical, { id: `commands-header-${id}`, color: 'white', cursor: 'pointer' }), _jsx(TMCommandsContextMenu, { target: `#commands-header-${id}`, showEvent: "click", menuItems: getCommandsMenuItems(isMobile, fromDTD, selectedItems, focusedItem, context, showFloatingBar, workingGroupContext, showSearch, setShowFloatingBar, openFormHandler, downloadDcmtsAsync, runOperationAsync, onRefreshSearchAsync, refreshSelectionDataRowsAsync, onRefreshAfterAddDcmtToFavs, confirmFormat, openConfirmAttachmentsDialog, openTaskFormHandler, openDetailDcmtsFormHandler, openMasterDcmtsFormHandler, openBatchUpdateFormHandler, openExportForm, handleToggleSearch, handleSignApprove, openWGsCopyMoveForm, openCommentFormCallback, openEditPdf, openAddDocumentForm, passToArchiveCallback, archiveMasterDocuments, archiveDetailDocuments, currentTIDHasMasterRelations, currentTIDHasDetailRelations, canArchiveMasterRelation, canArchiveDetailRelation, pairManyToMany) })] });
469
+ _jsx("div", { style: { display: 'flex', alignItems: 'center', gap: '5px' }, children: _jsx(TMButton, { btnStyle: 'icon', icon: _jsx(IconDelete, { color: 'white' }), caption: "Rimuovi da " + (selectedSearchResult?.category === "Favorites" ? '"Preferiti"' : '"Recenti"'), disabled: getSelectedDcmtsOrFocused(selectedItems, focusedItem).length <= 0, onClick: removeDcmtFromFavsOrRecents }) }), _jsx(TMButton, { btnStyle: 'icon', icon: _jsx(IconRefresh, { color: 'white' }), caption: SDKUI_Localizator.Refresh, onClick: onRefreshSearchAsync }), _jsx(IconMenuVertical, { id: `commands-header-${id}`, color: 'white', cursor: 'pointer' }), _jsx(TMCommandsContextMenu, { target: `#commands-header-${id}`, showEvent: "click", menuItems: getCommandsMenuItems(isMobile, fromDTD, selectedItems, focusedItem, context, showFloatingBar, workingGroupContext, showSearch, setShowFloatingBar, openFormHandler, openSharedArchiveHandler, showSharedDcmtsHandler, downloadDcmtsAsync, runOperationAsync, onRefreshSearchAsync, refreshSelectionDataRowsAsync, onRefreshAfterAddDcmtToFavs, confirmFormat, openConfirmAttachmentsDialog, openTaskFormHandler, openDetailDcmtsFormHandler, openMasterDcmtsFormHandler, openBatchUpdateFormHandler, openExportForm, handleToggleSearch, handleSignApprove, openWGsCopyMoveForm, openCommentFormCallback, openEditPdf, openAddDocumentForm, passToArchiveCallback, archiveMasterDocuments, archiveDetailDocuments, currentTIDHasMasterRelations, currentTIDHasDetailRelations, canArchiveMasterRelation, canArchiveDetailRelation, pairManyToMany, hasManyToManyRelation) })] });
718
470
  const middlePanelToolbar = _jsxs("div", { style: { width: 'max-content', display: 'flex', alignItems: 'center', gap: '10px' }, children: [_jsx(TMSaveFormButtonPrevious, { btnStyle: 'icon', isModified: false, iconColor: TMColors.default_background, formMode: FormModes.ReadOnly, canPrev: canNavigateHandler('prev'), onPrev: () => onNavigateHandler('prev') }), _jsx(TMSaveFormButtonNext, { btnStyle: 'icon', isModified: false, iconColor: TMColors.default_background, formMode: FormModes.ReadOnly, canNext: canNavigateHandler('next'), onNext: () => onNavigateHandler('next') })] });
719
471
  const handleAddItem = (tid, did) => {
720
472
  let newItem = { TID: tid ?? 0, DID: did ?? 0 };
@@ -723,6 +475,22 @@ const TMSearchResult = ({ context = SearchResultContext.METADATA_SEARCH, isVisib
723
475
  const handleRemoveItem = (tid, did) => {
724
476
  setSecondaryMasterDcmts((prevItems) => prevItems.filter(item => item.TID !== tid && item.DID !== did));
725
477
  };
478
+ const fetchBlogDataAsync = useCallback(async (tid, did) => {
479
+ try {
480
+ TMSpinner.show({ description: 'Caricamento - Bacheca...' });
481
+ const res = await SDK_Globals.tmSession?.NewSearchEngine().BlogRetrieveAsync(tid, did);
482
+ setBlogsDatasource(res ?? []);
483
+ setHasLoadedDataOnce(true);
484
+ setLastLoadedDid(did);
485
+ }
486
+ catch (e) {
487
+ let err = e;
488
+ TMExceptionBoxManager.show({ exception: err });
489
+ }
490
+ finally {
491
+ TMSpinner.hide();
492
+ }
493
+ }, []);
726
494
  const showToppyForApprove = (isVisible && fromDTD?.templateTID === TemplateTIDs.WF_WIApprView && !isOpenDcmtForm && !isOpenDetails && !isOpenMaster);
727
495
  const tmSearchResult = useMemo(() => (!searchResults || searchResults.length <= 0)
728
496
  ? _jsxs("div", { style: { display: 'flex', flexDirection: 'column', alignItems: 'center', justifyContent: 'center', height: '100%', width: '100%' }, children: [_jsx(IconBoard, { fontSize: 96 }), _jsx("div", { style: { fontSize: "15px", marginTop: "10px" }, children: SDKUI_Localizator.NoDcmtFound }), openAddDocumentForm && _jsx("div", { style: { marginTop: "10px" }, children: _jsx(TMButton, { fontSize: "15px", icon: _jsx("i", { className: 'dx-icon-share' }), caption: SDKUI_Localizator.Share, onClick: openAddDocumentForm }) })] })
@@ -731,14 +499,24 @@ const TMSearchResult = ({ context = SearchResultContext.METADATA_SEARCH, isVisib
731
499
  _jsx(TMLayoutItem, { children: _jsx(TMSearchResultSelector, { searchResults: currentSearchResults, disableAccordionIfSingleCategory: disableAccordionIfSingleCategory, selectedTID: selectedSearchResultTID, onSelectionChanged: onSearchResultSelectionChanged }) })
732
500
  :
733
501
  _jsx(_Fragment, {}), _jsxs(TMLayoutItem, { children: [_jsx(TMSearchResultGrid, { showSearch: showSearch, inputFocusedItem: focusedItem, inputSelectedItems: selectedItems, searchResult: searchResults.length > 1 ? selectedSearchResult : searchResults[0], lastUpdateSearchTime: lastUpdateSearchTime, openInOffice: openInOffice, onDblClick: () => openFormHandler(LayoutModes.Update), onContextMenuPreparing: onContextMenuPreparing, onSelectionChanged: (items) => { setSelectedItems(items); }, onVisibleItemChanged: setVisibleItems, onFocusedItemChanged: setFocusedItem, onDownloadDcmtsAsync: async (inputDcmts, downloadType, downloadMode, _y, confirmAttachments) => await downloadDcmtsAsync(inputDcmts, downloadType, downloadMode, onFileOpened, confirmAttachments), showExportForm: showExportForm, onCloseExportForm: onCloseExportForm }), allowFloatingBar && showFloatingBar && deviceType !== DeviceType.MOBILE &&
734
- _jsxs(TMFloatingToolbar, { backgroundColor: TMColors.primaryColor, initialLeft: '10px', initialTop: 'calc(100% - 75px)', children: [fromDTD?.perm?.canRetrieveFile === AccessLevels.Yes && _jsx(TMButton, { btnStyle: 'icon', caption: "Download file", disabled: fromDTD?.perm?.canRetrieveFile !== AccessLevels.Yes || !focusedItem?.DID, icon: _jsx(IconDownload, { color: 'white' }), onClick: () => { downloadDcmtsAsync(getSelectedDcmtsOrFocused(selectedItems, focusedItem), DownloadTypes.Dcmt, "download"); } }), allowRelations && _jsx(TMButton, { btnStyle: 'icon', disabled: !currentTIDHasDetailRelations || !focusedItem?.DID, icon: _jsx(IconDetailDcmts, { color: 'white' }), caption: SDKUI_Localizator.DcmtsDetail, onClick: () => setIsOpenDetails(true) }), allowRelations && _jsx(TMButton, { btnStyle: 'icon', disabled: !currentTIDHasMasterRelations || !focusedItem?.DID, icon: _jsx(IconDetailDcmts, { color: 'white', transform: 'scale(-1, 1)' }), caption: SDKUI_Localizator.DcmtsMaster, onClick: () => setIsOpenMaster(true) }), _jsx(IconMenuVertical, { id: `commands-floating-${id}`, color: 'white', cursor: 'pointer' }), _jsx(TMCommandsContextMenu, { target: `#commands-floating-${id}`, showEvent: "click", menuItems: getCommandsMenuItems(isMobile, fromDTD, selectedItems, focusedItem, context, showFloatingBar, workingGroupContext, showSearch, setShowFloatingBar, openFormHandler, downloadDcmtsAsync, runOperationAsync, onRefreshSearchAsync, refreshSelectionDataRowsAsync, onRefreshAfterAddDcmtToFavs, confirmFormat, openConfirmAttachmentsDialog, openTaskFormHandler, openDetailDcmtsFormHandler, openMasterDcmtsFormHandler, openBatchUpdateFormHandler, openExportForm, handleToggleSearch, handleSignApprove, openWGsCopyMoveForm, openCommentFormCallback, openEditPdf, openAddDocumentForm, passToArchiveCallback, archiveMasterDocuments, archiveDetailDocuments, currentTIDHasMasterRelations, currentTIDHasDetailRelations, canArchiveMasterRelation, canArchiveDetailRelation, pairManyToMany) })] })] })] }), showApprovePopup && _jsx(WorkFlowApproveRejectPopUp, { deviceType: deviceType, onCompleted: onWFOperationCompleted, selectedItems: getSelectedDcmtsOrFocused(selectedItems, focusedItem), isReject: 0, onClose: () => setShowApprovePopup(false) }), showRejectPopup && _jsx(WorkFlowApproveRejectPopUp, { deviceType: deviceType, onCompleted: onWFOperationCompleted, selectedItems: getSelectedDcmtsOrFocused(selectedItems, focusedItem), isReject: 1, onClose: () => setShowRejectPopup(false) }), showReAssignPopup && _jsx(WorkFlowReAssignPopUp, { deviceType: deviceType, onCompleted: onWFOperationCompleted, selectedItems: getSelectedDcmtsOrFocused(selectedItems, focusedItem), onClose: () => setShowReAssignPopup(false) }), showMoreInfoPopup && _jsx(WorkFlowMoreInfoPopUp, { TID: focusedItem?.TID, DID: focusedItem?.DID, deviceType: deviceType, onCompleted: onWFOperationCompleted, onClose: () => setShowMoreInfoPopup(false) }), isOpenBatchUpdate && _jsx(TMBatchUpdateForm, { isModal: true, titleModal: `${SDKUI_Localizator.BatchUpdate} (${getSelectionDcmtInfo().length} documenti selezionati)`, inputDcmts: getSelectionDcmtInfo(), TID: focusedItem ? focusedItem?.TID : selectedItems[0]?.TID, DID: focusedItem ? focusedItem?.DID : selectedItems[0]?.DID, onBack: () => {
502
+ _jsxs(TMFloatingToolbar, { backgroundColor: TMColors.primaryColor, initialLeft: '10px', initialTop: 'calc(100% - 75px)', children: [fromDTD?.perm?.canRetrieveFile === AccessLevels.Yes && _jsx(TMButton, { btnStyle: 'icon', caption: "Download file", disabled: fromDTD?.perm?.canRetrieveFile !== AccessLevels.Yes || !focusedItem?.DID, icon: _jsx(IconDownload, { color: 'white' }), onClick: () => { downloadDcmtsAsync(getSelectedDcmtsOrFocused(selectedItems, focusedItem), DownloadTypes.Dcmt, "download"); } }), allowRelations && _jsx(TMButton, { btnStyle: 'icon', disabled: !currentTIDHasDetailRelations || !focusedItem?.DID, icon: _jsx(IconDetailDcmts, { color: 'white' }), caption: SDKUI_Localizator.DcmtsDetail, onClick: () => setIsOpenDetails(true) }), allowRelations && _jsx(TMButton, { btnStyle: 'icon', disabled: !currentTIDHasMasterRelations || !focusedItem?.DID, icon: _jsx(IconDetailDcmts, { color: 'white', transform: 'scale(-1, 1)' }), caption: SDKUI_Localizator.DcmtsMaster, onClick: () => setIsOpenMaster(true) }), _jsx(IconMenuVertical, { id: `commands-floating-${id}`, color: 'white', cursor: 'pointer' }), _jsx(TMCommandsContextMenu, { target: `#commands-floating-${id}`, showEvent: "click", menuItems: getCommandsMenuItems(isMobile, fromDTD, selectedItems, focusedItem, context, showFloatingBar, workingGroupContext, showSearch, setShowFloatingBar, openFormHandler, openSharedArchiveHandler, showSharedDcmtsHandler, downloadDcmtsAsync, runOperationAsync, onRefreshSearchAsync, refreshSelectionDataRowsAsync, onRefreshAfterAddDcmtToFavs, confirmFormat, openConfirmAttachmentsDialog, openTaskFormHandler, openDetailDcmtsFormHandler, openMasterDcmtsFormHandler, openBatchUpdateFormHandler, openExportForm, handleToggleSearch, handleSignApprove, openWGsCopyMoveForm, openCommentFormCallback, openEditPdf, openAddDocumentForm, passToArchiveCallback, archiveMasterDocuments, archiveDetailDocuments, currentTIDHasMasterRelations, currentTIDHasDetailRelations, canArchiveMasterRelation, canArchiveDetailRelation, pairManyToMany, hasManyToManyRelation) })] })] })] }), showApprovePopup && _jsx(WorkFlowApproveRejectPopUp, { deviceType: deviceType, onCompleted: onWFOperationCompleted, selectedItems: getSelectedDcmtsOrFocused(selectedItems, focusedItem), isReject: 0, onClose: () => setShowApprovePopup(false) }), showRejectPopup && _jsx(WorkFlowApproveRejectPopUp, { deviceType: deviceType, onCompleted: onWFOperationCompleted, selectedItems: getSelectedDcmtsOrFocused(selectedItems, focusedItem), isReject: 1, onClose: () => setShowRejectPopup(false) }), showReAssignPopup && _jsx(WorkFlowReAssignPopUp, { deviceType: deviceType, onCompleted: onWFOperationCompleted, selectedItems: getSelectedDcmtsOrFocused(selectedItems, focusedItem), onClose: () => setShowReAssignPopup(false) }), showMoreInfoPopup && _jsx(WorkFlowMoreInfoPopUp, { TID: focusedItem?.TID, DID: focusedItem?.DID, deviceType: deviceType, onCompleted: onWFOperationCompleted, onClose: () => setShowMoreInfoPopup(false) }), isOpenBatchUpdate && _jsx(TMBatchUpdateForm, { isModal: true, titleModal: `${SDKUI_Localizator.BatchUpdate} (${getSelectionDcmtInfo().length} documenti selezionati)`, inputDcmts: getSelectionDcmtInfo(), TID: focusedItem ? focusedItem?.TID : selectedItems[0]?.TID, DID: focusedItem ? focusedItem?.DID : selectedItems[0]?.DID, onBack: () => {
735
503
  setIsOpenBatchUpdate(false);
736
504
  }, onSavedCallbackAsync: async () => {
737
505
  setIsOpenBatchUpdate(false);
738
506
  setIsModifiedBatchUpdate(false);
739
507
  await refreshSelectionDataRowsAsync();
740
508
  }, onStatusChanged: (isModified) => { setIsModifiedBatchUpdate(isModified); } }), (showToppyForApprove && !showApprovePopup && !showRejectPopup && !showReAssignPopup && !showMoreInfoPopup && !openS4TViewer && !showTodoDcmtForm) &&
741
- _jsx(ToppyHelpCenter, { deviceType: deviceType, content: _jsx("div", { style: { display: 'flex', flexDirection: 'column', gap: '10px' }, children: _jsx(WorkFlowOperationButtons, { deviceType: deviceType, onApprove: () => setShowApprovePopup(true), onSignApprove: handleSignApprove, onReject: () => setShowRejectPopup(true), onReAssign: () => setShowReAssignPopup(true), onMoreInfo: () => setShowMoreInfoPopup(true), approveDisable: disable, signApproveDisable: disableSignApproveDisable, rejectDisable: disable, reassignDisable: disable, infoDisable: getSelectedDcmtsOrFocused(selectedItems, focusedItem).length !== 1 }) }) })] }), _jsx(ConfirmFormatDialog, {}), _jsx(ConfirmAttachmentsDialog, {}), showRelatedDcmtsChooser &&
509
+ _jsx(ToppyHelpCenter, { deviceType: deviceType, content: _jsx("div", { style: { display: 'flex', flexDirection: 'column', gap: '10px' }, children: _jsx(WorkFlowOperationButtons, { deviceType: deviceType, onApprove: () => {
510
+ setShowApprovePopup(true);
511
+ }, onSignApprove: () => {
512
+ handleSignApprove();
513
+ }, onReject: () => {
514
+ setShowRejectPopup(true);
515
+ }, onReAssign: () => {
516
+ setShowReAssignPopup(true);
517
+ }, onMoreInfo: () => {
518
+ setShowMoreInfoPopup(true);
519
+ }, approveDisable: selectedDocs.length === 0, signApproveDisable: disableSignApproveDisable, rejectDisable: selectedDocs.length === 0, reassignDisable: selectedDocs.length === 0, infoDisable: selectedDocs.length !== 1, dtd: fromDTD }) }) })] }), _jsx(ConfirmFormatDialog, {}), _jsx(ConfirmAttachmentsDialog, {}), showRelatedDcmtsChooser &&
742
520
  _jsx(TMChooserForm, { dataSource: relatedDcmtsChooserDataSource, onChoose: async (selectedRelation) => {
743
521
  try {
744
522
  setShowRelatedDcmtsChooser(false);
@@ -746,7 +524,7 @@ const TMSearchResult = ({ context = SearchResultContext.METADATA_SEARCH, isVisib
746
524
  const relation = relatedDcmts?.find(r => r.id === selectedRelation[0]);
747
525
  if (!relation || !archiveType)
748
526
  return;
749
- archiveRelatedDcmtHandler(relation, archiveType);
527
+ await archiveRelatedDcmtHandler(relation, archiveType);
750
528
  }
751
529
  catch (error) {
752
530
  TMExceptionBoxManager.show({ exception: error });
@@ -771,7 +549,16 @@ const TMSearchResult = ({ context = SearchResultContext.METADATA_SEARCH, isVisib
771
549
  TMSpinner.hide();
772
550
  }
773
551
  }, onClose: () => setShowManyToManyChooser(false), manageUseLocalizedName: false }), showPairDcmtsModal &&
774
- _jsx(TMModal, { title: (isPairingManyToMany ? "Abbina" : "Disabbina") + " documenti", onClose: () => setShowPairDcmtsModal(false), children: _jsx(TMSearchResult, { searchResults: pairedSearchResults, onRefreshAfterAddDcmtToFavs: onRefreshAfterAddDcmtToFavs, onRefreshSearchAsync: onRefreshSearchAsync, onFileOpened: onFileOpened, onTaskCreateRequest: onTaskCreateRequest, openWGsCopyMoveForm: openWGsCopyMoveForm, openEditPdf: openEditPdf, openS4TViewer: openS4TViewer, onOpenS4TViewerRequest: onOpenS4TViewerRequest, passToArchiveCallback: passToArchiveCallback, showTodoDcmtForm: showTodoDcmtForm }) }), (floatingActionConfig && floatingActionConfig.isVisible) && _jsx(TMSearchResultFloatingActionButton, { selectedDcmtsOrFocused: getSelectedDcmtsOrFocused(selectedItems, focusedItem), config: floatingActionConfig })] }), [
552
+ _jsx(TMModal, { title: (isPairingManyToMany ? "Abbina" : "Disabbina") + " documenti", onClose: () => setShowPairDcmtsModal(false), width: isMobile ? '90%' : '50%', height: isMobile ? '90%' : '70%', children: _jsx(TMSearchResult, { searchResults: pairedSearchResults, onRefreshAfterAddDcmtToFavs: onRefreshAfterAddDcmtToFavs, onRefreshSearchAsync: onRefreshSearchAsync, onFileOpened: onFileOpened, onTaskCreateRequest: onTaskCreateRequest, openWGsCopyMoveForm: openWGsCopyMoveForm, openEditPdf: openEditPdf, openS4TViewer: openS4TViewer, onOpenS4TViewerRequest: onOpenS4TViewerRequest, passToArchiveCallback: passToArchiveCallback, showTodoDcmtForm: showTodoDcmtForm, allowFloatingBar: false, floatingActionConfig: pairFloatingActionConfig, showBackButton: false, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers }) }), showPairSearchModal &&
553
+ _jsx(TMModal, { title: "Ricerca documenti", onClose: () => setShowPairSearchModal(false), width: isMobile ? '90%' : '50%', height: isMobile ? '90%' : '70%', children: _jsx(TMSearch, { onlyShowSearchQueryPanel: true, inputTID: pairSearchModalTargetTID, inputMids: pairSearchModalInputMids, floatingActionConfig: pairSearchModalFloatingActionConfig, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers }) }), isOpenSharedArchive && _jsx(TMModal, { title: "Archiviazione condivisa", onClose: () => {
554
+ setIsOpenSharedArchive(false);
555
+ }, width: isMobile ? '90%' : '60%', height: isMobile ? '90%' : '80%', children: _jsx(TMArchive, { inputDID: focusedItem?.DID, inputTID: focusedItem?.TID, inputMids: currentMetadataValues.filter(md => md.mid && md.mid > 100).map(md => ({ mid: md.mid, value: md.value ?? '' })), isSharedArchive: true, inputFile: sharedDcmtFile, onSavedAsyncCallback: async (tid, did) => {
556
+ setIsOpenSharedArchive(false);
557
+ await onRefreshSearchAsync?.();
558
+ }, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers }) }), sharedDcmtSearchResults.length > 0 &&
559
+ _jsx(TMModal, { title: "Documenti condivisi", onClose: () => {
560
+ setSharedDcmtSearchResults([]);
561
+ }, width: isMobile ? '90%' : '60%', height: isMobile ? '90%' : '80%', children: _jsx(TMSearchResult, { searchResults: sharedDcmtSearchResults, allowFloatingBar: false, showSelector: true, showBackButton: false, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers }) }), (floatingActionConfig && floatingActionConfig.isVisible) && _jsx(TMSearchResultFloatingActionButton, { selectedDcmtsOrFocused: getSelectedDcmtsOrFocused(selectedItems, focusedItem), config: floatingActionConfig })] }), [
775
562
  searchResults,
776
563
  selectedSearchResult,
777
564
  lastUpdateSearchTime,
@@ -806,8 +593,25 @@ const TMSearchResult = ({ context = SearchResultContext.METADATA_SEARCH, isVisib
806
593
  showPairDcmtsModal,
807
594
  isPairingManyToMany,
808
595
  pairedSearchResults,
596
+ selectedManyToManyRelation,
597
+ pairFloatingActionConfig,
598
+ hasManyToManyRelation,
599
+ showPairSearchModal,
600
+ pairSearchModalFloatingActionConfig,
601
+ pairSearchModalTargetTID,
602
+ pairSearchModalParentTID,
603
+ pairSearchModalParentDID,
604
+ pairSearchModalRelation,
605
+ pairSearchModalInputMids,
606
+ isOpenSharedArchive,
607
+ sharedDcmtSearchResults,
608
+ showBackButton,
609
+ isMobile,
610
+ currentMetadataValues,
611
+ sharedDcmtFile,
612
+ onRefreshSearchAsync
809
613
  ]);
810
- const tmBlog = useMemo(() => _jsx(TMDcmtBlog, { tid: focusedItem?.TID, did: focusedItem?.DID }), [focusedItem]);
614
+ const tmBlog = useMemo(() => _jsx(TMDcmtBlog, { blogsDatasource: blogsDatasource, hasLoadedDataOnce: hasLoadedDataOnce, lastLoadedDid: lastLoadedDid, setBlogsDatasource: setBlogsDatasource, setHasLoadedDataOnce: setHasLoadedDataOnce, setLastLoadedDid: setLastLoadedDid, fetchBlogDataAsync: fetchBlogDataAsync, tid: focusedItem?.TID, did: focusedItem?.DID, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers }), [focusedItem, allTasks]);
811
615
  const tmSysMetadata = useMemo(() => _jsx(TMMetadataValues, { layoutMode: LayoutModes.Update, openChooserBySingleClick: true, TID: focusedItem?.TID, isReadOnly: true, deviceType: deviceType, metadataValues: currentMetadataValues.filter(o => (o.mid != undefined && o.mid <= 100)), metadataValuesOrig: currentMetadataValues.filter(o => (o.mid != undefined && o.mid <= 100)), validationItems: [] }), [focusedItem, currentMetadataValues, deviceType]);
812
616
  const tmDcmtPreview = useMemo(() => _jsx(TMDcmtPreviewWrapper, { currentDcmt: currentDcmt }), [currentDcmt]);
813
617
  const allInitialPanelVisibility = {
@@ -832,7 +636,9 @@ const TMSearchResult = ({ context = SearchResultContext.METADATA_SEARCH, isVisib
832
636
  title: getTitleHeader(),
833
637
  showHeader: showToolbarHeader,
834
638
  allowMaximize: !isMobile,
835
- onBack: (!isClosable && context === SearchResultContext.METADATA_SEARCH) || (isMobile && context !== SearchResultContext.METADATA_SEARCH && splitterSize[1] === '100%') ? onBack : undefined,
639
+ onBack: showBackButton !== undefined
640
+ ? (showBackButton ? onBack : undefined)
641
+ : ((!isClosable && context === SearchResultContext.METADATA_SEARCH) || (isMobile && context !== SearchResultContext.METADATA_SEARCH && splitterSize[1] === '100%') ? onBack : undefined),
836
642
  onClose: isClosable ? onBack : undefined,
837
643
  toolbar: searchResutlToolbar
838
644
  },
@@ -868,11 +674,11 @@ const TMSearchResult = ({ context = SearchResultContext.METADATA_SEARCH, isVisib
868
674
  }, children: _jsx(TMLayoutWaitingContainer, { direction: 'vertical', showWaitPanel: showWaitPanel, showWaitPanelPrimary: showPrimary, showWaitPanelSecondary: showSecondary, waitPanelTitle: waitPanelTitle, waitPanelTextPrimary: waitPanelTextPrimary, waitPanelValuePrimary: waitPanelValuePrimary, waitPanelMaxValuePrimary: waitPanelMaxValuePrimary, waitPanelTextSecondary: waitPanelTextSecondary, waitPanelValueSecondary: waitPanelValueSecondary, waitPanelMaxValueSecondary: waitPanelMaxValueSecondary, isCancelable: true, abortController: abortController, children: (groupId && groupId.length > 0) ?
869
675
  _jsx(TMPanelManagerContainer, { panels: initialPanels, direction: "horizontal", parentId: groupId, showToolbar: showSearchResultSidebar })
870
676
  :
871
- _jsx(TMPanelManagerProvider, { panels: initialPanels, initialVisibility: allInitialPanelVisibility, defaultDimensions: initialPanelDimensions, initialDimensions: initialPanelDimensions, initialMobilePanelId: 'tmSearchResult', children: _jsx(TMPanelManagerContainer, { panels: initialPanels, direction: "horizontal", parentId: groupId, showToolbar: showSearchResultSidebar }) }) }) }), _jsx(StyledMultiViewPanel, { "$isVisible": isOpenDetails, children: isOpenDetails && _jsx(TMMasterDetailDcmts, { deviceType: deviceType, isForMaster: false, inputDcmts: getSelectionDcmtInfo(), allowNavigation: focusedItem && selectedItems.length <= 0, canNext: canNavigateHandler('next'), canPrev: canNavigateHandler('prev'), onNext: () => onNavigateHandler('next'), onPrev: () => onNavigateHandler('prev'), onBack: () => setIsOpenDetails(false) }) }), _jsxs(StyledMultiViewPanel, { "$isVisible": isOpenMaster, children: [isOpenMaster && _jsx(TMMasterDetailDcmts, { deviceType: deviceType, inputDcmts: getSelectionDcmtInfo(), isForMaster: true, allowNavigation: focusedItem && selectedItems.length <= 0, canNext: canNavigateHandler('next'), canPrev: canNavigateHandler('prev'), onNext: () => onNavigateHandler('next'), onPrev: () => onNavigateHandler('prev'), onBack: () => setIsOpenMaster(false), appendMasterDcmts: handleAddItem }), secondaryMasterDcmts.length > 0 && secondaryMasterDcmts.map((dcmt, index) => {
872
- return (_jsx(StyledModalContainer, { style: { backgroundColor: 'white' }, children: _jsx(TMMasterDetailDcmts, { deviceType: deviceType, inputDcmts: [dcmt], isForMaster: true, allowNavigation: false, onBack: () => handleRemoveItem(dcmt.TID, dcmt.DID), appendMasterDcmts: handleAddItem }) }, `${index}-${dcmt.DID}`));
873
- })] }), _jsx(StyledMultiViewPanel, { "$isVisible": isOpenDcmtForm, children: isOpenDcmtForm && _jsx(TMDcmtForm, { isModal: openDcmtFormAsModal || (dcmtFormLayoutMode === LayoutModes.Ark && focusedItem?.DID), titleModal: fromDTD?.name ?? '', TID: focusedItem?.TID, DID: focusedItem?.DID, layoutMode: dcmtFormLayoutMode, count: visibleItems.length, itemIndex: visibleItems.findIndex(o => o.rowIndex === focusedItem?.rowIndex) + 1, canNext: canNavigateHandler('next'), canPrev: canNavigateHandler('prev'), onNext: () => onNavigateHandler('next'), onPrev: () => onNavigateHandler('prev'), onClose: () => { setIsOpenDcmtForm(false); }, onWFOperationCompleted: onWFOperationCompleted, onTaskCreateRequest: onTaskCreateRequest, onSavedAsyncCallback: async (tid, did, metadataResult) => {
677
+ _jsx(TMPanelManagerProvider, { panels: initialPanels, initialVisibility: allInitialPanelVisibility, defaultDimensions: initialPanelDimensions, initialDimensions: initialPanelDimensions, initialMobilePanelId: 'tmSearchResult', children: _jsx(TMPanelManagerContainer, { panels: initialPanels, direction: "horizontal", parentId: groupId, showToolbar: showSearchResultSidebar }) }) }) }), _jsx(StyledMultiViewPanel, { "$isVisible": isOpenDetails, children: isOpenDetails && _jsx(TMMasterDetailDcmts, { deviceType: deviceType, isForMaster: false, inputDcmts: getSelectionDcmtInfo(), allowNavigation: focusedItem && selectedItems.length <= 0, canNext: canNavigateHandler('next'), canPrev: canNavigateHandler('prev'), onNext: () => onNavigateHandler('next'), onPrev: () => onNavigateHandler('prev'), onBack: () => setIsOpenDetails(false), allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers }) }), _jsxs(StyledMultiViewPanel, { "$isVisible": isOpenMaster, children: [isOpenMaster && _jsx(TMMasterDetailDcmts, { deviceType: deviceType, inputDcmts: getSelectionDcmtInfo(), isForMaster: true, allowNavigation: focusedItem && selectedItems.length <= 0, canNext: canNavigateHandler('next'), canPrev: canNavigateHandler('prev'), onNext: () => onNavigateHandler('next'), onPrev: () => onNavigateHandler('prev'), onBack: () => setIsOpenMaster(false), appendMasterDcmts: handleAddItem, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers }), secondaryMasterDcmts.length > 0 && secondaryMasterDcmts.map((dcmt, index) => {
678
+ return (_jsx(StyledModalContainer, { style: { backgroundColor: 'white' }, children: _jsx(TMMasterDetailDcmts, { deviceType: deviceType, inputDcmts: [dcmt], isForMaster: true, allowNavigation: false, onBack: () => handleRemoveItem(dcmt.TID, dcmt.DID), appendMasterDcmts: handleAddItem, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers }) }, `${index}-${dcmt.DID}`));
679
+ })] }), _jsx(StyledMultiViewPanel, { "$isVisible": isOpenDcmtForm, children: isOpenDcmtForm && _jsx(TMDcmtForm, { isModal: openDcmtFormAsModal || (dcmtFormLayoutMode === LayoutModes.Ark && focusedItem?.DID), titleModal: fromDTD?.name ?? '', TID: focusedItem?.TID, DID: focusedItem?.DID, allowButtonsRefs: true, layoutMode: dcmtFormLayoutMode, count: visibleItems.length, itemIndex: visibleItems.findIndex(o => o.rowIndex === focusedItem?.rowIndex) + 1, canNext: canNavigateHandler('next'), canPrev: canNavigateHandler('prev'), onNext: () => onNavigateHandler('next'), onPrev: () => onNavigateHandler('prev'), onClose: () => { setIsOpenDcmtForm(false); }, onWFOperationCompleted: onWFOperationCompleted, onTaskCreateRequest: onTaskCreateRequest, onSavedAsyncCallback: async (tid, did, metadataResult) => {
874
680
  await refreshFocusedDataRowAsync(tid, did, true, metadataResult);
875
- }, onOpenS4TViewerRequest: onOpenS4TViewerRequest }) }), isOpenArchiveRelationForm && _jsx(TMDcmtForm, { isModal: true, titleModal: SDKUI_Localizator.Archive + ' - ' + (archiveType === 'detail' ? SDKUI_Localizator.DcmtsDetail : SDKUI_Localizator.DcmtsMaster), TID: archiveRelatedDcmtFormTID, layoutMode: LayoutModes.Ark, inputMids: archiveRelatedDcmtFormMids, onClose: () => {
681
+ }, onOpenS4TViewerRequest: onOpenS4TViewerRequest, onReferenceClick: onReferenceClick, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers }) }), isOpenArchiveRelationForm && _jsx(TMDcmtForm, { isModal: true, titleModal: SDKUI_Localizator.Archive + ' - ' + (archiveType === 'detail' ? SDKUI_Localizator.DcmtsDetail : SDKUI_Localizator.DcmtsMaster), TID: archiveRelatedDcmtFormTID, layoutMode: LayoutModes.Ark, inputMids: archiveRelatedDcmtFormMids, showBackButton: false, allowButtonsRefs: false, onClose: () => {
876
682
  setIsOpenArchiveRelationForm(false);
877
683
  setArchiveType(undefined);
878
684
  setArchiveRelatedDcmtFormTID(undefined);
@@ -883,7 +689,7 @@ const TMSearchResult = ({ context = SearchResultContext.METADATA_SEARCH, isVisib
883
689
  setArchiveRelatedDcmtFormTID(undefined);
884
690
  setArchiveRelatedDcmtFormMids([]);
885
691
  await onRefreshSearchAsync?.();
886
- } })] }));
692
+ }, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers })] }));
887
693
  };
888
694
  export default TMSearchResult;
889
695
  const renderDcmtIcon = (cellData, onDownloadDcmtsAsync, openInOffice) => _jsx(TMDcmtIcon, { tid: cellData.data.TID, did: cellData.data.DID, fileExtension: cellData.data.FILEEXT, fileCount: cellData.data.FILECOUNT, isLexProt: cellData.data.IsLexProt, isMail: cellData.data.ISMAIL, isShared: cellData.data.ISSHARED, isSigned: cellData.data.ISSIGNED, downloadMode: 'openInNewWindow', onDownloadDcmtsAsync: onDownloadDcmtsAsync, openInOffice: openInOffice });