@topconsultnpm/sdkui-react 6.22.0-dev2.8 → 6.22.0-dev3.10

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 (311) hide show
  1. package/lib/components/NewComponents/ContextMenu/TMContextMenu.js +3 -3
  2. package/lib/components/NewComponents/ContextMenu/hooks.d.ts +1 -1
  3. package/lib/components/NewComponents/ContextMenu/styles.d.ts +14 -14
  4. package/lib/components/NewComponents/FloatingMenuBar/TMFloatingMenuBar.js +6 -6
  5. package/lib/components/NewComponents/FloatingMenuBar/styles.d.ts +35 -35
  6. package/lib/components/base/Styled.d.ts +5 -5
  7. package/lib/components/base/Styled.js +7 -5
  8. package/lib/components/base/TMAccordionNew.js +7 -7
  9. package/lib/components/base/TMAlert.d.ts +32 -32
  10. package/lib/components/base/TMAreaManager.js +1 -1
  11. package/lib/components/base/TMButton.js +4 -4
  12. package/lib/components/base/TMClosableList.js +3 -3
  13. package/lib/components/base/TMCounterBar.d.ts +2 -2
  14. package/lib/components/base/TMCounterContainer.d.ts +1 -2
  15. package/lib/components/base/TMCustomButton.d.ts +1 -1
  16. package/lib/components/base/TMCustomButton.js +1 -1
  17. package/lib/components/base/TMDataGrid.d.ts +4 -0
  18. package/lib/components/base/TMDataGrid.js +292 -12
  19. package/lib/components/base/TMDataGridExportForm.d.ts +1 -2
  20. package/lib/components/base/TMDropDownMenu.js +1 -1
  21. package/lib/components/base/TMEditorBase.d.ts +2 -0
  22. package/lib/components/base/TMFileManager.d.ts +1 -2
  23. package/lib/components/base/TMFileManager.js +5 -3
  24. package/lib/components/base/TMFileManagerDataGridView.d.ts +1 -2
  25. package/lib/components/base/TMFileManagerDataGridView.js +12 -3
  26. package/lib/components/base/TMFileManagerThumbnailItems.d.ts +1 -1
  27. package/lib/components/base/TMFileManagerThumbnailItems.js +20 -10
  28. package/lib/components/base/TMFileManagerThumbnailsView.d.ts +1 -1
  29. package/lib/components/base/TMFileManagerUtils.d.ts +4 -2
  30. package/lib/components/base/TMFileManagerUtils.js +37 -1
  31. package/lib/components/base/TMLayout.d.ts +6 -6
  32. package/lib/components/base/TMLayout.js +3 -3
  33. package/lib/components/base/TMList.d.ts +1 -2
  34. package/lib/components/base/TMList.js +1 -1
  35. package/lib/components/base/TMListView.d.ts +1 -1
  36. package/lib/components/base/TMListView.js +3 -3
  37. package/lib/components/base/TMModal.d.ts +11 -0
  38. package/lib/components/base/TMModal.js +47 -13
  39. package/lib/components/base/TMPanel.d.ts +6 -0
  40. package/lib/components/base/TMPanel.js +141 -28
  41. package/lib/components/base/TMPopUp.js +5 -2
  42. package/lib/components/base/TMResizableMenu.js +2 -2
  43. package/lib/components/base/TMRightSidebar.js +1 -1
  44. package/lib/components/base/TMShowAllOrMaxItemsButton.js +1 -1
  45. package/lib/components/base/TMSpinner.d.ts +1 -2
  46. package/lib/components/base/TMSpinner.js +2 -2
  47. package/lib/components/base/TMTab.d.ts +3 -4
  48. package/lib/components/base/TMTab.js +2 -2
  49. package/lib/components/base/TMTabControl.d.ts +101 -0
  50. package/lib/components/base/TMTabControl.js +653 -0
  51. package/lib/components/base/TMToggleButton.js +2 -2
  52. package/lib/components/base/TMToolbarCard.js +3 -3
  53. package/lib/components/base/TMTooltip.d.ts +2 -1
  54. package/lib/components/base/TMTooltip.js +24 -8
  55. package/lib/components/base/TMTreeView.d.ts +1 -1
  56. package/lib/components/base/TMTreeView.js +123 -70
  57. package/lib/components/base/TMUserAvatar.d.ts +1 -2
  58. package/lib/components/base/TMVilViewer.d.ts +1 -2
  59. package/lib/components/base/TMWaitPanel.d.ts +2 -3
  60. package/lib/components/base/TMWaitPanel.js +2 -2
  61. package/lib/components/choosers/TMCultureIDPicker.js +2 -2
  62. package/lib/components/choosers/TMDataListItemChooser.js +1 -1
  63. package/lib/components/choosers/TMDataListItemPicker.js +2 -2
  64. package/lib/components/choosers/TMDcmtTypeChooser.js +5 -4
  65. package/lib/components/choosers/TMDiskChooser.js +1 -1
  66. package/lib/components/choosers/TMDistinctValues.d.ts +9 -7
  67. package/lib/components/choosers/TMDistinctValues.js +157 -141
  68. package/lib/components/choosers/TMDynDataListItemChooser.d.ts +1 -1
  69. package/lib/components/choosers/TMDynDataListItemChooser.js +1 -1
  70. package/lib/components/choosers/TMImageIDChooser.js +1 -1
  71. package/lib/components/choosers/TMInvoiceRetrieveFormats.d.ts +1 -2
  72. package/lib/components/choosers/TMMetadataChooser.js +3 -3
  73. package/lib/components/choosers/TMOrderRetrieveFormats.d.ts +1 -2
  74. package/lib/components/choosers/TMQuickSearchInfo.d.ts +12 -0
  75. package/lib/components/choosers/TMQuickSearchInfo.js +279 -0
  76. package/lib/components/choosers/TMQuickSearchSettingsForm.d.ts +16 -0
  77. package/lib/components/choosers/TMQuickSearchSettingsForm.js +94 -0
  78. package/lib/components/choosers/TMRelationChooser.d.ts +3 -3
  79. package/lib/components/choosers/TMRelationChooser.js +1 -1
  80. package/lib/components/choosers/TMSelectedValuesSummary.d.ts +13 -0
  81. package/lib/components/choosers/TMSelectedValuesSummary.js +89 -0
  82. package/lib/components/choosers/TMUserChooser.d.ts +2 -2
  83. package/lib/components/choosers/TMUserChooser.js +1 -1
  84. package/lib/components/editors/TMCheckBox.js +1 -1
  85. package/lib/components/editors/TMDropDown.d.ts +3 -0
  86. package/lib/components/editors/TMDropDown.js +197 -5
  87. package/lib/components/editors/TMEditorStyled.d.ts +10 -10
  88. package/lib/components/editors/TMFormulaEditor.d.ts +1 -1
  89. package/lib/components/editors/TMFormulaEditor.js +1 -1
  90. package/lib/components/editors/TMHtmlContentDisplay.d.ts +1 -2
  91. package/lib/components/editors/TMHtmlContentDisplay.js +1 -1
  92. package/lib/components/editors/TMHtmlEditor.d.ts +1 -2
  93. package/lib/components/editors/TMLocalizedTextBox.js +1 -1
  94. package/lib/components/editors/TMMetadataEditor.d.ts +5 -1
  95. package/lib/components/editors/TMMetadataEditor.js +8 -3
  96. package/lib/components/editors/TMMetadataValues.js +6 -6
  97. package/lib/components/editors/TMRadioButton.js +2 -2
  98. package/lib/components/editors/TMSummary.js +3 -3
  99. package/lib/components/editors/TMTextArea.js +3 -3
  100. package/lib/components/editors/TMTextBox.js +3 -3
  101. package/lib/components/editors/TMTextExpression.js +1 -1
  102. package/lib/components/editors/TMTreeDropDown.d.ts +1 -1
  103. package/lib/components/features/archive/TMArchive.js +17 -3
  104. package/lib/components/features/assistant/TMToppyDraggableHelpCenter.d.ts +1 -1
  105. package/lib/components/features/assistant/TMToppyDraggableHelpCenter.js +2 -2
  106. package/lib/components/features/assistant/TMToppySpeechBubble.js +1 -1
  107. package/lib/components/features/blog/TMBlogCommentForm.d.ts +1 -2
  108. package/lib/components/features/documents/TMBatchUpdateForm.js +20 -6
  109. package/lib/components/features/documents/TMCopyToFolderForm.js +61 -22
  110. package/lib/components/features/documents/TMDcmtBlog.d.ts +3 -0
  111. package/lib/components/features/documents/TMDcmtBlog.js +4 -4
  112. package/lib/components/features/documents/TMDcmtForm.d.ts +7 -0
  113. package/lib/components/features/documents/TMDcmtForm.js +181 -54
  114. package/lib/components/features/documents/TMDcmtFormActionButtons.d.ts +12 -1
  115. package/lib/components/features/documents/TMDcmtFormActionButtons.js +79 -9
  116. package/lib/components/features/documents/TMDcmtIcon.d.ts +1 -2
  117. package/lib/components/features/documents/TMDcmtIcon.js +5 -3
  118. package/lib/components/features/documents/TMDcmtPreview.d.ts +1 -1
  119. package/lib/components/features/documents/TMDcmtPreview.js +12 -8
  120. package/lib/components/features/documents/TMDcmtTasks.d.ts +1 -2
  121. package/lib/components/features/documents/TMDownloadRelationViewerSection.js +1 -1
  122. package/lib/components/features/documents/TMDragDropOverlay.d.ts +1 -1
  123. package/lib/components/features/documents/TMFileUploader.js +3 -3
  124. package/lib/components/features/documents/TMMasterDetailDcmts.js +116 -34
  125. package/lib/components/features/documents/TMMasterInfoFields.d.ts +19 -0
  126. package/lib/components/features/documents/TMMasterInfoFields.js +184 -0
  127. package/lib/components/features/documents/TMMergeToPdfForm.d.ts +2 -4
  128. package/lib/components/features/documents/TMMergeToPdfForm.js +42 -10
  129. package/lib/components/features/documents/TMMultiMasterDetailDcmtsForm.d.ts +45 -0
  130. package/lib/components/features/documents/TMMultiMasterDetailDcmtsForm.js +321 -0
  131. package/lib/components/features/documents/TMMultiMasterDetailDcmtsUtils.d.ts +370 -0
  132. package/lib/components/features/documents/TMMultiMasterDetailDcmtsUtils.js +283 -0
  133. package/lib/components/features/documents/TMRelationViewer.d.ts +24 -3
  134. package/lib/components/features/documents/TMRelationViewer.js +110 -52
  135. package/lib/components/features/documents/copyAndMergeDcmtsShared.d.ts +1 -1
  136. package/lib/components/features/search/TMDcmtCheckoutInfoForm.d.ts +1 -2
  137. package/lib/components/features/search/TMMetadataOutputForm.d.ts +1 -2
  138. package/lib/components/features/search/TMMetadataOutputForm.js +1 -1
  139. package/lib/components/features/search/TMMetadataSorterForm.d.ts +1 -2
  140. package/lib/components/features/search/TMMetadataSorterForm.js +1 -1
  141. package/lib/components/features/search/TMSavedQuerySelector.d.ts +2 -2
  142. package/lib/components/features/search/TMSavedQuerySelector.js +2 -2
  143. package/lib/components/features/search/TMSearch.d.ts +1 -2
  144. package/lib/components/features/search/TMSearch.js +146 -21
  145. package/lib/components/features/search/TMSearchQueryEditor.js +7 -5
  146. package/lib/components/features/search/TMSearchQueryPanel.d.ts +4 -0
  147. package/lib/components/features/search/TMSearchQueryPanel.js +142 -68
  148. package/lib/components/features/search/TMSearchResult.d.ts +16 -0
  149. package/lib/components/features/search/TMSearchResult.js +439 -110
  150. package/lib/components/features/search/TMSearchResultFloatingActionButton.d.ts +1 -1
  151. package/lib/components/features/search/TMSignatureInfoContent.d.ts +1 -2
  152. package/lib/components/features/search/TMSignatureInfoContent.js +1 -1
  153. package/lib/components/features/search/TMTreeSelector.js +121 -70
  154. package/lib/components/features/search/TMViewHistoryDcmt.d.ts +1 -2
  155. package/lib/components/features/tasks/TMTaskForm.d.ts +1 -1
  156. package/lib/components/features/tasks/TMTaskForm.js +1 -1
  157. package/lib/components/features/tasks/TMTaskFormUtils.d.ts +10 -10
  158. package/lib/components/features/tasks/TMTaskFormUtils.js +3 -3
  159. package/lib/components/features/tasks/TMTasksAgenda.d.ts +1 -1
  160. package/lib/components/features/tasks/TMTasksAgenda.js +1 -1
  161. package/lib/components/features/tasks/TMTasksCalendar.d.ts +1 -1
  162. package/lib/components/features/tasks/TMTasksCalendar.js +1 -1
  163. package/lib/components/features/tasks/TMTasksHeader.d.ts +1 -1
  164. package/lib/components/features/tasks/TMTasksHeader.js +1 -1
  165. package/lib/components/features/tasks/TMTasksPanelContent.d.ts +1 -1
  166. package/lib/components/features/tasks/TMTasksUtilsView.d.ts +5 -5
  167. package/lib/components/features/tasks/TMTasksUtilsView.js +1 -1
  168. package/lib/components/features/tasks/TMTasksView.d.ts +1 -1
  169. package/lib/components/features/tasks/TMTasksView.js +7 -13
  170. package/lib/components/features/wg/TMWGsCopyMoveForm.d.ts +2 -3
  171. package/lib/components/features/wg/TMWGsCopyMoveForm.js +1 -1
  172. package/lib/components/features/workflow/TMWorkflowPopup.d.ts +17 -8
  173. package/lib/components/features/workflow/TMWorkflowPopup.js +9 -5
  174. package/lib/components/features/workflow/diagram/ConnectionComponent.js +3 -3
  175. package/lib/components/features/workflow/diagram/DiagramItemComponent.js +3 -3
  176. package/lib/components/features/workflow/diagram/DiagramItemForm.js +1 -1
  177. package/lib/components/features/workflow/diagram/DiagramItemSvgContent.js +1 -1
  178. package/lib/components/features/workflow/diagram/RecipientList.js +1 -1
  179. package/lib/components/features/workflow/diagram/WFDiagram.js +4 -4
  180. package/lib/components/forms/Login/Chooser.d.ts +2 -2
  181. package/lib/components/forms/Login/Menu.js +1 -1
  182. package/lib/components/forms/Login/OTPReader.js +1 -1
  183. package/lib/components/forms/Login/PasswordStrengthChecker.js +1 -1
  184. package/lib/components/forms/Login/RapidAccessLogin.js +2 -2
  185. package/lib/components/forms/Login/RecoverPasswordFlow.js +2 -2
  186. package/lib/components/forms/Login/SelectBox.js +1 -1
  187. package/lib/components/forms/Login/StepIndicator.js +1 -1
  188. package/lib/components/forms/Login/TMLoginForm.js +7 -7
  189. package/lib/components/forms/Login/TextBox.js +1 -1
  190. package/lib/components/forms/TMApplyForm.js +3 -3
  191. package/lib/components/forms/TMChooserForm.d.ts +1 -2
  192. package/lib/components/forms/TMChooserForm.js +1 -1
  193. package/lib/components/forms/TMSaveForm.d.ts +4 -4
  194. package/lib/components/forms/TMSaveForm.js +3 -3
  195. package/lib/components/grids/TMBlogAttachments.d.ts +1 -2
  196. package/lib/components/grids/TMBlogAttachments.js +14 -3
  197. package/lib/components/grids/TMBlogHeader.d.ts +1 -1
  198. package/lib/components/grids/TMBlogHeader.js +5 -1
  199. package/lib/components/grids/TMBlogsPost.d.ts +3 -1
  200. package/lib/components/grids/TMBlogsPost.js +31 -4
  201. package/lib/components/grids/TMBlogsPostUtils.d.ts +10 -9
  202. package/lib/components/grids/TMBlogsPostUtils.js +15 -4
  203. package/lib/components/grids/TMRecentsManager.js +4 -4
  204. package/lib/components/grids/TMValidationItemsList.d.ts +1 -2
  205. package/lib/components/grids/TMValidationItemsList.js +1 -1
  206. package/lib/components/index.d.ts +2 -0
  207. package/lib/components/index.js +2 -0
  208. package/lib/components/layout/panelManager/TMPanelManagerContainer.d.ts +2 -2
  209. package/lib/components/layout/panelManager/TMPanelManagerContainer.js +25 -15
  210. package/lib/components/layout/panelManager/TMPanelManagerContext.d.ts +2 -2
  211. package/lib/components/layout/panelManager/TMPanelManagerContext.js +68 -93
  212. package/lib/components/layout/panelManager/TMPanelManagerToolbar.d.ts +3 -3
  213. package/lib/components/layout/panelManager/TMPanelManagerToolbar.js +1 -1
  214. package/lib/components/layout/panelManager/TMPanelManagerWithPersistenceProvider.d.ts +2 -2
  215. package/lib/components/layout/panelManager/TMPanelWrapper.d.ts +2 -2
  216. package/lib/components/layout/panelManager/TMPanelWrapper.js +3 -3
  217. package/lib/components/layout/panelManager/types.d.ts +3 -0
  218. package/lib/components/layout/panelManager/utils.js +13 -11
  219. package/lib/components/pages/TMPage.d.ts +1 -1
  220. package/lib/components/pages/TMPage.js +1 -1
  221. package/lib/components/query/TMQueryCountButton.js +1 -1
  222. package/lib/components/query/TMQueryEditor.js +7 -7
  223. package/lib/components/settings/SettingsAppearance.d.ts +1 -2
  224. package/lib/components/sidebar/TMAboutApp.d.ts +1 -2
  225. package/lib/components/sidebar/TMCommandsPanel.js +1 -1
  226. package/lib/components/sidebar/TMHeader.d.ts +3 -3
  227. package/lib/components/sidebar/TMHeader.js +36 -26
  228. package/lib/components/sidebar/TMSidebar.js +1 -1
  229. package/lib/components/sidebar/TMSidebarItem.js +1 -1
  230. package/lib/components/viewers/TMDataListItemViewer.d.ts +2 -3
  231. package/lib/components/viewers/TMDataUserIdItemViewer.d.ts +2 -3
  232. package/lib/components/viewers/TMMidViewer.d.ts +2 -2
  233. package/lib/components/viewers/TMMidViewer.js +6 -3
  234. package/lib/components/viewers/TMTidViewer.d.ts +2 -2
  235. package/lib/components/viewers/TMTidViewer.js +89 -28
  236. package/lib/components/wizard/TMStepIndicator.js +3 -3
  237. package/lib/css/tm-sdkui.css +1 -1
  238. package/lib/devextreme-license.d.ts +1 -0
  239. package/lib/devextreme-license.js +3 -0
  240. package/lib/helper/Enum_Localizator.d.ts +4 -4
  241. package/lib/helper/Globalization.d.ts +1 -1
  242. package/lib/helper/SDKUI_Globals.d.ts +110 -0
  243. package/lib/helper/SDKUI_Globals.js +151 -0
  244. package/lib/helper/SDKUI_Localizator.d.ts +735 -687
  245. package/lib/helper/SDKUI_Localizator.js +480 -0
  246. package/lib/helper/TMAppUpdatedModal.d.ts +1 -0
  247. package/lib/helper/TMAppUpdatedModal.js +134 -0
  248. package/lib/helper/TMCommandsContextMenu.d.ts +1 -1
  249. package/lib/helper/TMIcons.d.ts +280 -279
  250. package/lib/helper/TMIcons.js +4 -3
  251. package/lib/helper/TMPdfViewer.d.ts +1 -2
  252. package/lib/helper/TMPdfViewer.js +1 -1
  253. package/lib/helper/TMToppyMessage.d.ts +2 -2
  254. package/lib/helper/TMToppyMessage.js +1 -1
  255. package/lib/helper/TMUtils.d.ts +14 -1
  256. package/lib/helper/TMUtils.js +25 -3
  257. package/lib/helper/checkinCheckoutManager.d.ts +1 -1
  258. package/lib/helper/checkinCheckoutManager.js +1 -1
  259. package/lib/helper/dataGridSearchHelper.d.ts +28 -0
  260. package/lib/helper/dataGridSearchHelper.js +51 -0
  261. package/lib/helper/dcmtsHelper.d.ts +20 -0
  262. package/lib/helper/dcmtsHelper.js +58 -1
  263. package/lib/helper/helpers.d.ts +13 -2
  264. package/lib/helper/helpers.js +27 -3
  265. package/lib/helper/index.d.ts +2 -0
  266. package/lib/helper/index.js +2 -0
  267. package/lib/helper/queryHelper.d.ts +6 -1
  268. package/lib/helper/queryHelper.js +8 -3
  269. package/lib/hooks/tmDistinctValuesGridHelper.d.ts +16 -0
  270. package/lib/hooks/tmDistinctValuesGridHelper.js +31 -0
  271. package/lib/hooks/useArchiveListForm.d.ts +39 -0
  272. package/lib/hooks/useArchiveListForm.js +46 -0
  273. package/lib/hooks/useCaseFlowApprove.d.ts +56 -0
  274. package/lib/hooks/useCaseFlowApprove.js +157 -0
  275. package/lib/hooks/useDataUserIdItem.d.ts +1 -0
  276. package/lib/hooks/useDataUserIdItem.js +1 -0
  277. package/lib/hooks/useDcmtOperations.d.ts +7 -0
  278. package/lib/hooks/useDcmtOperations.js +141 -71
  279. package/lib/hooks/useDocumentOperations.d.ts +4 -0
  280. package/lib/hooks/useDocumentOperations.js +53 -11
  281. package/lib/hooks/useInputDialog.d.ts +1 -2
  282. package/lib/hooks/useInputDialog.js +1 -1
  283. package/lib/hooks/useMultiMasterDetailDcmts.d.ts +113 -0
  284. package/lib/hooks/useMultiMasterDetailDcmts.js +760 -0
  285. package/lib/hooks/useQueryParametersDialog.js +1 -1
  286. package/lib/hooks/useRelatedDocuments.d.ts +1 -0
  287. package/lib/hooks/useRelatedDocuments.js +22 -27
  288. package/lib/hooks/useShowDossiersV5.d.ts +12 -0
  289. package/lib/hooks/useShowDossiersV5.js +37 -0
  290. package/lib/hooks/useTMDistinctValuesMetadataDisplay.d.ts +18 -0
  291. package/lib/hooks/useTMDistinctValuesMetadataDisplay.js +103 -0
  292. package/lib/hooks/useTMDistinctValuesQuickSearch.d.ts +49 -0
  293. package/lib/hooks/useTMDistinctValuesQuickSearch.js +307 -0
  294. package/lib/hooks/useTMDistinctValuesSelection.d.ts +42 -0
  295. package/lib/hooks/useTMDistinctValuesSelection.js +103 -0
  296. package/lib/hooks/useTMDistinctValuesSource.d.ts +29 -0
  297. package/lib/hooks/useTMDistinctValuesSource.js +105 -0
  298. package/lib/index.d.ts +2 -0
  299. package/lib/index.js +5 -2
  300. package/lib/services/caseflow/CaseFlowService.d.ts +247 -0
  301. package/lib/services/caseflow/CaseFlowService.js +720 -0
  302. package/lib/services/caseflow/CaseFlowTemplateCacheService.d.ts +28 -0
  303. package/lib/services/caseflow/CaseFlowTemplateCacheService.js +121 -0
  304. package/lib/services/caseflow/caseFlowNameCache.d.ts +32 -0
  305. package/lib/services/caseflow/caseFlowNameCache.js +116 -0
  306. package/lib/services/caseflow/caseFlowWorkItemUtils.d.ts +61 -0
  307. package/lib/services/caseflow/caseFlowWorkItemUtils.js +113 -0
  308. package/lib/services/index.d.ts +4 -0
  309. package/lib/services/index.js +4 -0
  310. package/lib/services/platform_services.d.ts +6 -7
  311. package/package.json +16 -13
@@ -11,5 +11,5 @@ interface TMToppyDraggableHelpCenterProps {
11
11
  /** Callback chiamato quando si clicca sull'immagine di Toppy */
12
12
  onToppyImageClick?: () => void;
13
13
  }
14
- declare const TMToppyDraggableHelpCenter: (props: TMToppyDraggableHelpCenterProps) => React.JSX.Element;
14
+ declare const TMToppyDraggableHelpCenter: (props: TMToppyDraggableHelpCenterProps) => import("react/jsx-runtime").JSX.Element;
15
15
  export default TMToppyDraggableHelpCenter;
@@ -1,4 +1,4 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useEffect, useMemo, useRef, useState } from 'react';
3
3
  import ReactDOM from 'react-dom';
4
4
  import styled from 'styled-components';
@@ -433,7 +433,7 @@ const TMToppyDraggableHelpCenter = (props) => {
433
433
  window.removeEventListener('resize', handleResize);
434
434
  };
435
435
  }, []);
436
- const toppyContent = (_jsxs(_Fragment, { children: [isDragging && _jsx(DragOverlay, {}), _jsxs(TMToppyButton, { ref: toppyButtonRef, "$align": align, "$isDragging": isDragging, "$isVisible": isVisible, "$isCollapsed": isCollapsed, "$isMobile": isMobile, "$usePortal": usePortal, onContextMenu: (e) => e.preventDefault(), onMouseDown: !isMobile ? handleMouseDown : undefined, onTouchStart: isMobile ? handleTouchStart : undefined, onDoubleClick: !isMobile ? toggleCollapse : undefined, "$x": position?.x, "$y": position?.y, children: [(content && !isCollapsed) && _jsx(TMToppySpeechBubble, { ref: bubbleRef, align: align, onClose: toggleCollapse, children: content }), (content && isCollapsed) && (_jsx(ExpandButton, { onMouseDown: (e) => {
436
+ const toppyContent = (_jsxs(_Fragment, { children: [isDragging && _jsx(DragOverlay, {}), _jsxs(TMToppyButton, { ref: toppyButtonRef, $align: align, $isDragging: isDragging, $isVisible: isVisible, $isCollapsed: isCollapsed, $isMobile: isMobile, $usePortal: usePortal, onContextMenu: (e) => e.preventDefault(), onMouseDown: !isMobile ? handleMouseDown : undefined, onTouchStart: isMobile ? handleTouchStart : undefined, onDoubleClick: !isMobile ? toggleCollapse : undefined, $x: position?.x, $y: position?.y, children: [(content && !isCollapsed) && _jsx(TMToppySpeechBubble, { ref: bubbleRef, align: align, onClose: toggleCollapse, children: content }), (content && isCollapsed) && (_jsx(ExpandButton, { onMouseDown: (e) => {
437
437
  isExpandButtonDraggingRef.current = false;
438
438
  expandButtonMouseDownPosRef.current = { x: e.clientX, y: e.clientY };
439
439
  }, onMouseMove: (e) => {
@@ -120,7 +120,7 @@ const TMToppySpeechBubble = forwardRef((props, ref) => {
120
120
  e.stopPropagation();
121
121
  onClose?.();
122
122
  };
123
- return (_jsx(BubbleContainer, { "$align": align, children: _jsxs(BubbleWrapper, { ref: ref, "$hasCloseButton": !!onClose, children: [onClose && (_jsx(CloseButton, { onMouseDown: handleMouseDown, onMouseMove: handleMouseMove, onMouseUp: handleMouseUp, onClick: handleClick, "aria-label": SDKUI_Localizator.Minimize, title: SDKUI_Localizator.Minimize, type: "button", children: _jsx(IconWindowMinimize, {}) })), _jsx(Bubble, { "$align": align, children: _jsx(Content, { children: children }) })] }) }));
123
+ return (_jsx(BubbleContainer, { $align: align, children: _jsxs(BubbleWrapper, { ref: ref, $hasCloseButton: !!onClose, children: [onClose && (_jsx(CloseButton, { onMouseDown: handleMouseDown, onMouseMove: handleMouseMove, onMouseUp: handleMouseUp, onClick: handleClick, "aria-label": SDKUI_Localizator.Minimize, title: SDKUI_Localizator.Minimize, type: "button", children: _jsx(IconWindowMinimize, {}) })), _jsx(Bubble, { $align: align, children: _jsx(Content, { children: children }) })] }) }));
124
124
  });
125
125
  TMToppySpeechBubble.displayName = 'TMToppySpeechBubble';
126
126
  export default TMToppySpeechBubble;
@@ -1,4 +1,3 @@
1
- import React from 'react';
2
1
  import { BlogPost, UserDescriptor } from "@topconsultnpm/sdk-ts";
3
2
  import { FileItem } from '../../base/TMFileManagerUtils';
4
3
  import { TMBlogContextDescriptor } from '../../grids/TMBlogsPostUtils';
@@ -19,5 +18,5 @@ interface TMBlogCommentFormProps {
19
18
  /** External save handler - when provided, bypasses internal engine logic */
20
19
  onCustomSave?: (blogPost: BlogPost) => Promise<void>;
21
20
  }
22
- declare const TMBlogCommentForm: (props: TMBlogCommentFormProps) => React.JSX.Element;
21
+ declare const TMBlogCommentForm: (props: TMBlogCommentFormProps) => import("react/jsx-runtime").JSX.Element;
23
22
  export default TMBlogCommentForm;
@@ -1,4 +1,4 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useEffect, useState } from 'react';
3
3
  import { AccessLevels, DcmtTypeListCacheService, LayoutModes, MetadataDataDomains, ResultTypes, SDK_Globals, ValidationItem } from '@topconsultnpm/sdk-ts';
4
4
  import { searchResultToMetadataValues, getSystemMetadata, calcIsModified, getListMaxItems, SDKUI_Localizator, SDKUI_Globals } from '../../../helper';
@@ -7,7 +7,7 @@ import { DcmtOperationTypes, FormModes } from '../../../ts';
7
7
  import { StyledToolbarCardContainer, StyledFormButtonsContainer } from '../../base/Styled';
8
8
  import { useDeviceType, DeviceType } from '../../base/TMDeviceProvider';
9
9
  import { TMSplitterLayout } from '../../base/TMLayout';
10
- import { TMExceptionBoxManager } from '../../base/TMPopUp';
10
+ import { TMExceptionBoxManager, TMMessageBoxManager, ButtonNames } from '../../base/TMPopUp';
11
11
  import TMShowAllOrMaxItemsButton from '../../base/TMShowAllOrMaxItemsButton';
12
12
  import TMSpinner from '../../base/TMSpinner';
13
13
  import { TMLayoutWaitingContainer } from '../../base/TMWaitPanel';
@@ -114,10 +114,24 @@ const TMBatchUpdateForm = ({ inputDcmts, TID, DID, isExpertMode = SDKUI_Globals.
114
114
  const totalItems = metadataValues.filter(o => o.mid && o.mid > 100).length;
115
115
  const metadataValuesSource = metadataValues.filter(o => o.mid && o.mid > 100).slice(0, showAll ? metadataValues.filter(o => o.mid && o.mid > 100).length : listMaxItems);
116
116
  const metadataValuesSourceOrig = metadataValuesOrig.filter(o => o.mid && o.mid > 100).slice(0, showAll ? metadataValuesOrig.filter(o => o.mid && o.mid > 100).length : listMaxItems);
117
+ /**
118
+ * Chiusura del form: con modifiche pendenti chiede conferma prima di scartarle.
119
+ * Il TMModal è montato con askClosingConfirm, quindi non si auto-nasconde: la chiusura
120
+ * effettiva avviene solo quando onBack smonta il componente.
121
+ */
122
+ const handleClose = () => {
123
+ if (!isModified) {
124
+ onBack?.();
125
+ return;
126
+ }
127
+ TMMessageBoxManager.show({
128
+ title: SDKUI_Localizator.Cancel, message: SDKUI_Localizator.ConfirmOnCancel, buttons: [ButtonNames.YES, ButtonNames.NO],
129
+ onButtonClick: (e) => { if (e === ButtonNames.YES)
130
+ onBack?.(); }
131
+ });
132
+ };
117
133
  const renderContent = () => {
118
- return (_jsx(TMLayoutWaitingContainer, { showWaitPanel: showWaitPanel, showWaitPanelPrimary: showPrimary, waitPanelTitle: waitPanelTitle, waitPanelTextPrimary: waitPanelTextPrimary, waitPanelValuePrimary: waitPanelValuePrimary, waitPanelMaxValuePrimary: waitPanelMaxValuePrimary, isCancelable: true, abortController: abortController, children: _jsxs(TMSplitterLayout, { direction: 'horizontal', overflow: 'visible', separatorSize: Gutters.getGutters(), separatorColor: 'transparent', separatorActiveColor: 'transparent', showSeparator: showFormulaEditor, start: showFormulaEditor ? ['50%', '50%'] : ['100%', '0%'], min: ['0', '0'], children: [_jsx(TMPanel, { title: isModal ? 'Modifica i metadati' : `${SDKUI_Localizator.BatchUpdate} (${inputDcmts.length} documenti selezionati)`, onBack: deviceType === DeviceType.MOBILE ? onBack : undefined,
119
- // onClose={deviceType !== DeviceType.MOBILE ? onBack : undefined}
120
- allowMaximize: !isModal, showHeader: !isModal, children: _jsxs(StyledToolbarCardContainer, { children: [_jsx(TMMetadataValues, { TID: TID, isExpertMode: isExpertMode, showCheckBoxes: ShowCheckBoxesMode.Always, showNullValueCheckBoxes: true, metadataValues: metadataValuesSource, metadataValuesOrig: metadataValuesSourceOrig, validationItems: validationItems, isOpenDistinctValues: showDistinctValuesPanel, selectedMID: focusedMetadataValue?.mid, onFocusedItemChanged: (item) => { setFocusedMetadataValue(item); }, onValueChanged: (newItems) => {
134
+ return (_jsx(TMLayoutWaitingContainer, { showWaitPanel: showWaitPanel, showWaitPanelPrimary: showPrimary, waitPanelTitle: waitPanelTitle, waitPanelTextPrimary: waitPanelTextPrimary, waitPanelValuePrimary: waitPanelValuePrimary, waitPanelMaxValuePrimary: waitPanelMaxValuePrimary, isCancelable: true, abortController: abortController, children: _jsxs(TMSplitterLayout, { direction: 'horizontal', overflow: 'visible', separatorSize: Gutters.getGutters(), separatorColor: 'transparent', separatorActiveColor: 'transparent', showSeparator: showFormulaEditor, start: showFormulaEditor ? ['50%', '50%'] : ['100%', '0%'], min: ['0', '0'], children: [_jsx(TMPanel, { title: isModal ? 'Modifica i metadati' : `${SDKUI_Localizator.BatchUpdate} (${inputDcmts.length} documenti selezionati)`, onBack: deviceType === DeviceType.MOBILE ? handleClose : undefined, allowMaximize: !isModal, showHeader: !isModal, children: _jsxs(StyledToolbarCardContainer, { children: [_jsx(TMMetadataValues, { TID: TID, isExpertMode: isExpertMode, showCheckBoxes: ShowCheckBoxesMode.Always, showNullValueCheckBoxes: true, metadataValues: metadataValuesSource, metadataValuesOrig: metadataValuesSourceOrig, validationItems: validationItems, isOpenDistinctValues: showDistinctValuesPanel, selectedMID: focusedMetadataValue?.mid, onFocusedItemChanged: (item) => { setFocusedMetadataValue(item); }, onValueChanged: (newItems) => {
121
135
  setMetadataValues((prevItems) => prevItems.map((item) => {
122
136
  const newItem = newItems.find((newItem) => newItem.tid === item.tid && newItem.mid === item.mid);
123
137
  return newItem ? { ...item, ...newItem } : item;
@@ -153,7 +167,7 @@ const TMBatchUpdateForm = ({ inputDcmts, TID, DID, isExpertMode = SDKUI_Globals.
153
167
  } })] }) })] }) }));
154
168
  };
155
169
  return (_jsx(_Fragment, { children: (isModal && onBack)
156
- ? _jsx(TMModal, { title: titleModal, onClose: onBack, width: widthModal ?? '100%', height: heightModal ?? '100%', hidePopup: false, askClosingConfirm: true, children: _jsx("div", { style: { width: "100%", height: "100%", display: 'block', padding: "4px" }, children: renderContent() }) })
170
+ ? _jsx(TMModal, { title: titleModal, onClose: handleClose, width: widthModal ?? '100%', height: heightModal ?? '100%', hidePopup: false, askClosingConfirm: true, children: _jsx("div", { style: { width: "100%", height: "100%", display: 'block', padding: "4px" }, children: renderContent() }) })
157
171
  : renderContent() }));
158
172
  };
159
173
  export default TMBatchUpdateForm;
@@ -20,6 +20,12 @@ import ShowAlert from '../../base/TMAlert';
20
20
  import { TMColors } from '../../../utils/theme';
21
21
  import TMDownloadRelationViewerSection from './TMDownloadRelationViewerSection';
22
22
  import { buildInitialDownloadSettings, fileExists, generateTargetFileName, generateUniqueFileName, getDcmtInfosToDownload, getFloatingLabelStyle, isDirectoryPickerSupported, } from './copyAndMergeDcmtsShared';
23
+ /**
24
+ * Numero di documenti scaricati in parallelo.
25
+ * I file vengono consumati via callback (scrittura su cartella o raccolta per lo ZIP),
26
+ * quindi il parallelismo è sicuro; l'ordine finale è garantito a valle del download.
27
+ */
28
+ const COPY_DOWNLOAD_CONCURRENCY = 5;
23
29
  /**
24
30
  * Form per la copia/zip dei documenti in una cartella locale.
25
31
  * Logica condivisa con TMMergeToPdfForm è esternalizzata in copyAndMergeDcmtsShared
@@ -111,10 +117,24 @@ const TMCopyToFolderForm = ({ mode, selectedDcmtInfos, onClose, showTMRelationVi
111
117
  const handleSeparatorChange = (e) => {
112
118
  updateSettings('separatorChar', e.target.value.slice(0, 1));
113
119
  };
120
+ // ---- Serializzazione delle scritture su filesystem ----
121
+ // I download sono paralleli, le scritture no: fileExists/generateUniqueFileName/
122
+ // getFileHandle sono check-then-act sulla stessa cartella e due scritture contemporanee
123
+ // potrebbero sovrascriversi o calcolare lo stesso nome "univoco".
124
+ const writeChainRef = useRef(Promise.resolve());
125
+ const runExclusive = (action) => {
126
+ const result = writeChainRef.current.then(action);
127
+ // La catena non deve interrompersi se una scrittura fallisce: l'errore viene
128
+ // comunque propagato al chiamante tramite il promise restituito.
129
+ writeChainRef.current = result.catch(() => undefined);
130
+ return result;
131
+ };
114
132
  // ---- Scrittura file nel filesystem locale ----
115
133
  const writeFileToFolder = async (file, dcmtInfo) => {
116
134
  try {
117
- let targetFileName = await generateTargetFileName(file, dcmtInfo, {
135
+ // Fuori dal lock: con la denominazione da metadati questa fa una chiamata al
136
+ // server per documento e deve poter andare in parallelo agli altri download.
137
+ const baseFileName = await generateTargetFileName(file, dcmtInfo, {
118
138
  fileNamingMode: settings.fileNamingMode,
119
139
  separatorChar: settings.separatorChar,
120
140
  });
@@ -123,7 +143,7 @@ const TMCopyToFolderForm = ({ mode, selectedDcmtInfos, onClose, showTMRelationVi
123
143
  const url = URL.createObjectURL(file);
124
144
  const a = document.createElement('a');
125
145
  a.href = url;
126
- a.download = targetFileName;
146
+ a.download = baseFileName;
127
147
  document.body.appendChild(a);
128
148
  a.target = '_blank';
129
149
  a.rel = 'noreferrer';
@@ -132,23 +152,29 @@ const TMCopyToFolderForm = ({ mode, selectedDcmtInfos, onClose, showTMRelationVi
132
152
  URL.revokeObjectURL(url);
133
153
  return;
134
154
  }
135
- const exists = await fileExists(folderHandleRef.current, targetFileName);
136
- if (exists) {
137
- switch (settings.fileExistsMode) {
138
- case 'skip':
139
- return;
140
- case 'rename':
141
- targetFileName = await generateUniqueFileName(folderHandleRef.current, targetFileName);
142
- break;
143
- case 'overwrite':
144
- default:
145
- break;
155
+ // Dentro il lock: controllo esistenza, calcolo del nome univoco e scrittura
156
+ // devono restare un'unica operazione atomica sulla cartella.
157
+ const folderHandle = folderHandleRef.current;
158
+ await runExclusive(async () => {
159
+ let targetFileName = baseFileName;
160
+ const exists = await fileExists(folderHandle, targetFileName);
161
+ if (exists) {
162
+ switch (settings.fileExistsMode) {
163
+ case 'skip':
164
+ return;
165
+ case 'rename':
166
+ targetFileName = await generateUniqueFileName(folderHandle, targetFileName);
167
+ break;
168
+ case 'overwrite':
169
+ default:
170
+ break;
171
+ }
146
172
  }
147
- }
148
- const fileHandle = await folderHandleRef.current.getFileHandle(targetFileName, { create: true });
149
- const writable = await fileHandle.createWritable();
150
- await writable.write(file);
151
- await writable.close();
173
+ const fileHandle = await folderHandle.getFileHandle(targetFileName, { create: true });
174
+ const writable = await fileHandle.createWritable();
175
+ await writable.write(file);
176
+ await writable.close();
177
+ });
152
178
  }
153
179
  catch (err) {
154
180
  console.error('Errore nella scrittura del file:', err);
@@ -176,10 +202,12 @@ const TMCopyToFolderForm = ({ mode, selectedDcmtInfos, onClose, showTMRelationVi
176
202
  retrieveOptions.invoiceRetrieveFormat = settings.invoiceFormat ?? SDKUI_Globals.userSettings.searchSettings.invoiceRetrieveFormat;
177
203
  retrieveOptions.orderRetrieveFormat = settings.orderFormat ?? SDKUI_Globals.userSettings.searchSettings.orderRetrieveFormat;
178
204
  if (settings.exportMode === 'copy') {
179
- await downloadDcmtsAsync({ inputDcmts: dcmtInfosToDownload, downloadType: DownloadTypes.Dcmt, downloadMode: 'download', onFileDownloaded: writeFileToFolder, skipConfirmation: true, retrieveOptions, useCache: false });
205
+ // Senza handle della cartella ogni file viene salvato con un click su <a download>:
206
+ // in quel caso si resta sequenziali, perché il browser blocca i click ravvicinati.
207
+ const copyConcurrency = folderHandleRef.current ? COPY_DOWNLOAD_CONCURRENCY : 1;
208
+ await downloadDcmtsAsync({ inputDcmts: dcmtInfosToDownload, downloadType: DownloadTypes.Dcmt, downloadMode: 'download', onFileDownloaded: writeFileToFolder, skipConfirmation: true, retrieveOptions, useCache: false, downloadConcurrency: copyConcurrency });
180
209
  }
181
210
  else if (settings.exportMode === 'zip') {
182
- const zipEntries = [];
183
211
  const fileNameCounts = new Map();
184
212
  const getUniqueZipFileName = (fileName) => {
185
213
  const lowerName = fileName.toLowerCase();
@@ -192,14 +220,25 @@ const TMCopyToFolderForm = ({ mode, selectedDcmtInfos, onClose, showTMRelationVi
192
220
  const ext = dotIndex > 0 ? fileName.substring(dotIndex) : '';
193
221
  return `${baseName} (${count})${ext}`;
194
222
  };
223
+ // Con i download paralleli i file arrivano in ordine di completamento: si raccolgono
224
+ // in mappa (nome incluso, calcolato in parallelo) e l'archivio viene costruito dopo
225
+ // nell'ordine di selezione, così i suffissi di deduplica restano quelli sequenziali.
226
+ const downloadedEntries = new Map();
195
227
  const collectFileForZip = async (file, dcmtInfo) => {
196
228
  const targetFileName = await generateTargetFileName(file, dcmtInfo, {
197
229
  fileNamingMode: settings.fileNamingMode,
198
230
  separatorChar: settings.separatorChar,
199
231
  });
200
- zipEntries.push({ filename: getUniqueZipFileName(targetFileName), data: file });
232
+ downloadedEntries.set(`${dcmtInfo.TID}_${dcmtInfo.DID}`, { file, targetFileName });
201
233
  };
202
- await downloadDcmtsAsync({ inputDcmts: dcmtInfosToDownload, downloadType: DownloadTypes.Dcmt, downloadMode: 'download', onFileDownloaded: collectFileForZip, skipConfirmation: true, retrieveOptions, useCache: false });
234
+ await downloadDcmtsAsync({ inputDcmts: dcmtInfosToDownload, downloadType: DownloadTypes.Dcmt, downloadMode: 'download', onFileDownloaded: collectFileForZip, skipConfirmation: true, retrieveOptions, useCache: false, downloadConcurrency: COPY_DOWNLOAD_CONCURRENCY });
235
+ const zipEntries = [];
236
+ for (const dcmtInfo of dcmtInfosToDownload) {
237
+ const entry = downloadedEntries.get(`${dcmtInfo.TID}_${dcmtInfo.DID}`);
238
+ if (!entry)
239
+ continue;
240
+ zipEntries.push({ filename: getUniqueZipFileName(entry.targetFileName), data: entry.file });
241
+ }
203
242
  if (zipEntries.length > 0) {
204
243
  const zipFileName = settings.zipFileName.trim().toLowerCase().endsWith('.zip')
205
244
  ? settings.zipFileName.trim()
@@ -3,7 +3,10 @@ import { HomeBlogPost, TaskDescriptor } from '@topconsultnpm/sdk-ts';
3
3
  interface ITMDcmtBlogProps {
4
4
  tid: number | undefined;
5
5
  did: number | undefined;
6
+ /** Il pannello è aperto. La inietta TMPanelWrapper, non va passata dal chiamante */
6
7
  isVisible?: boolean;
8
+ /** La pagina che contiene il pannello è a video: quelle in secondo piano restano montate e non devono caricare */
9
+ isPageVisible?: boolean;
7
10
  fetchBlogDataTrigger?: number;
8
11
  onRefreshBlogDatagrid?: () => Promise<void>;
9
12
  showFloatingCommentButton?: boolean;
@@ -8,7 +8,7 @@ import TMBlogCommentForm from '../blog/TMBlogCommentForm';
8
8
  import TMBlogsPost from '../../grids/TMBlogsPost';
9
9
  import TMSpinner from '../../base/TMSpinner';
10
10
  import { TMExceptionBoxManager } from '../../base/TMPopUp';
11
- const TMDcmtBlog = ({ tid, did, isVisible, fetchBlogDataTrigger, onRefreshBlogDatagrid, showFloatingCommentButton = true, allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTaskCallback, editTaskCallback, handleNavigateToWGs, handleNavigateToDossiers }) => {
11
+ const TMDcmtBlog = ({ tid, did, isVisible, isPageVisible = true, fetchBlogDataTrigger, onRefreshBlogDatagrid, showFloatingCommentButton = true, allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTaskCallback, editTaskCallback, handleNavigateToWGs, handleNavigateToDossiers }) => {
12
12
  const [blogsDatasource, setBlogsDatasource] = useState([]);
13
13
  const [hasLoadedDataOnce, setHasLoadedDataOnce] = useState(false); //traccia se *qualsiasi* dato è stato caricato per la prima volta
14
14
  const [lastLoadedDid, setLastLoadedDid] = useState(undefined); // `lastLoadedDid` tiene traccia dell'ultimo `did` per cui abbiamo caricato i dati
@@ -47,15 +47,15 @@ const TMDcmtBlog = ({ tid, did, isVisible, fetchBlogDataTrigger, onRefreshBlogDa
47
47
  return;
48
48
  }
49
49
  // Condizione per eseguire il fetch:
50
- // 1. Il pannello è visibile
50
+ // 1. Il pannello è visibile in una pagina a video
51
51
  // 2. E (non abbiamo ancora caricato dati o il `did` è cambiato rispetto all'ultima volta)
52
- const shouldFetch = isVisible && (!hasLoadedDataOnce || did !== lastLoadedDid);
52
+ const shouldFetch = isVisible && isPageVisible && (!hasLoadedDataOnce || did !== lastLoadedDid);
53
53
  // Esegui la chiamata API solo se il pannello è visibile E i dati non sono già stati caricati
54
54
  // O, se vuoi ricaricare ogni volta che diventa visibile (ma è meno efficiente per "pesante")
55
55
  if (shouldFetch) {
56
56
  fetchBlogDataAsync(tid, did);
57
57
  }
58
- }, [tid, did, isVisible, hasLoadedDataOnce, lastLoadedDid]);
58
+ }, [tid, did, isVisible, isPageVisible, hasLoadedDataOnce, lastLoadedDid]);
59
59
  const refreshCallback = async () => {
60
60
  await fetchBlogDataAsync(tid, did);
61
61
  await onRefreshBlogDatagrid?.();
@@ -2,6 +2,7 @@ import React from 'react';
2
2
  import { DcmtTypeDescriptor, HomeBlogPost, LayoutModes, ObjectRef, SearchResultDescriptor, TaskDescriptor, ValidationItem } from '@topconsultnpm/sdk-ts';
3
3
  import { DcmtInfo, FormModes, MetadataValueDescriptorEx, TaskContext, IGraphometricManagerProp } from '../../../ts';
4
4
  import { IntesiCertificateData } from '../../../helper';
5
+ import { ArchiveListMode } from '../../../hooks/useArchiveListForm';
5
6
  /**
6
7
  * Definisce il contesto da cui è stato invocato il TMDcmtForm.
7
8
  * Permette di gestire logiche diverse in base alla provenienza.
@@ -77,6 +78,12 @@ interface ITMDcmtFormProps {
77
78
  mid: number;
78
79
  value: string;
79
80
  }>, tid?: number) => void;
81
+ /**
82
+ * Modalità "aggiungi a elenco" (es. archiviazione dettagli multipli): se valorizzata, in layout di archiviazione
83
+ * il form non archivia ma emette i metadati compilati al chiamante (pulsanti "Aggiungi"/"Modifica" + "Pulisci").
84
+ * Tutta la logica è incapsulata in useArchiveListForm; usata solo da TMMultiMasterDetailDcmts.
85
+ */
86
+ archiveListMode?: ArchiveListMode;
80
87
  fetchRemoteCertificates?: (email: string) => Promise<IntesiCertificateData[]>;
81
88
  datagridUtility?: {
82
89
  onRefreshSearchAsyncDatagrid?: () => Promise<void>;