@topconsultnpm/sdkui-react 6.22.0-dev2.9 → 6.22.0-dev3.11

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 (314) 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 +45 -43
  4. package/lib/components/NewComponents/FloatingMenuBar/TMFloatingMenuBar.js +6 -6
  5. package/lib/components/NewComponents/FloatingMenuBar/styles.d.ts +80 -73
  6. package/lib/components/base/Styled.d.ts +93 -77
  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 +2 -1
  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 +2 -1
  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 +2 -1
  23. package/lib/components/base/TMFileManager.js +5 -3
  24. package/lib/components/base/TMFileManagerDataGridView.d.ts +2 -1
  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 +6 -6
  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 +2 -1
  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 +224 -111
  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 +2 -1
  46. package/lib/components/base/TMSpinner.js +2 -2
  47. package/lib/components/base/TMTab.d.ts +4 -3
  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 +14 -8
  56. package/lib/components/base/TMTreeView.js +123 -70
  57. package/lib/components/base/TMUserAvatar.d.ts +2 -1
  58. package/lib/components/base/TMVilViewer.d.ts +2 -1
  59. package/lib/components/base/TMWaitPanel.d.ts +3 -2
  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 +2 -1
  72. package/lib/components/choosers/TMMetadataChooser.js +3 -3
  73. package/lib/components/choosers/TMOrderRetrieveFormats.d.ts +2 -1
  74. package/lib/components/choosers/TMQuickSearchInfo.d.ts +13 -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 +21 -43
  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 +2 -1
  91. package/lib/components/editors/TMHtmlContentDisplay.js +1 -1
  92. package/lib/components/editors/TMHtmlEditor.d.ts +2 -1
  93. package/lib/components/editors/TMLocalizedTextBox.js +1 -1
  94. package/lib/components/editors/TMMetadataValues.js +6 -6
  95. package/lib/components/editors/TMRadioButton.js +2 -2
  96. package/lib/components/editors/TMSummary.js +3 -3
  97. package/lib/components/editors/TMTextArea.js +3 -3
  98. package/lib/components/editors/TMTextBox.js +3 -3
  99. package/lib/components/editors/TMTextExpression.js +1 -1
  100. package/lib/components/editors/TMTreeDropDown.d.ts +1 -1
  101. package/lib/components/features/archive/TMArchive.js +17 -3
  102. package/lib/components/features/assistant/TMToppyDraggableHelpCenter.d.ts +1 -1
  103. package/lib/components/features/assistant/TMToppyDraggableHelpCenter.js +2 -2
  104. package/lib/components/features/assistant/TMToppySpeechBubble.js +1 -1
  105. package/lib/components/features/blog/TMBlogCommentForm.d.ts +2 -1
  106. package/lib/components/features/documents/TMBatchUpdateForm.js +20 -6
  107. package/lib/components/features/documents/TMCopyToFolderForm.js +61 -22
  108. package/lib/components/features/documents/TMDcmtBlog.d.ts +3 -0
  109. package/lib/components/features/documents/TMDcmtBlog.js +4 -4
  110. package/lib/components/features/documents/TMDcmtForm.d.ts +7 -0
  111. package/lib/components/features/documents/TMDcmtForm.js +181 -54
  112. package/lib/components/features/documents/TMDcmtFormActionButtons.d.ts +12 -1
  113. package/lib/components/features/documents/TMDcmtFormActionButtons.js +79 -9
  114. package/lib/components/features/documents/TMDcmtIcon.d.ts +2 -1
  115. package/lib/components/features/documents/TMDcmtIcon.js +5 -3
  116. package/lib/components/features/documents/TMDcmtPreview.d.ts +8 -6
  117. package/lib/components/features/documents/TMDcmtPreview.js +12 -8
  118. package/lib/components/features/documents/TMDcmtTasks.d.ts +2 -1
  119. package/lib/components/features/documents/TMDownloadRelationViewerSection.js +1 -1
  120. package/lib/components/features/documents/TMDragDropOverlay.d.ts +1 -1
  121. package/lib/components/features/documents/TMFileUploader.js +28 -28
  122. package/lib/components/features/documents/TMMasterDetailDcmts.js +116 -34
  123. package/lib/components/features/documents/TMMasterInfoFields.d.ts +20 -0
  124. package/lib/components/features/documents/TMMasterInfoFields.js +184 -0
  125. package/lib/components/features/documents/TMMergeToPdfForm.d.ts +3 -3
  126. package/lib/components/features/documents/TMMergeToPdfForm.js +42 -10
  127. package/lib/components/features/documents/TMMultiMasterDetailDcmtsForm.d.ts +46 -0
  128. package/lib/components/features/documents/TMMultiMasterDetailDcmtsForm.js +321 -0
  129. package/lib/components/features/documents/TMMultiMasterDetailDcmtsUtils.d.ts +370 -0
  130. package/lib/components/features/documents/TMMultiMasterDetailDcmtsUtils.js +283 -0
  131. package/lib/components/features/documents/TMRelationViewer.d.ts +24 -3
  132. package/lib/components/features/documents/TMRelationViewer.js +110 -52
  133. package/lib/components/features/documents/copyAndMergeDcmtsShared.d.ts +1 -1
  134. package/lib/components/features/search/TMDcmtCheckoutInfoForm.d.ts +2 -1
  135. package/lib/components/features/search/TMMetadataOutputForm.d.ts +2 -1
  136. package/lib/components/features/search/TMMetadataOutputForm.js +1 -1
  137. package/lib/components/features/search/TMMetadataSorterForm.d.ts +2 -1
  138. package/lib/components/features/search/TMMetadataSorterForm.js +1 -1
  139. package/lib/components/features/search/TMSavedQuerySelector.d.ts +2 -2
  140. package/lib/components/features/search/TMSavedQuerySelector.js +2 -2
  141. package/lib/components/features/search/TMSearch.d.ts +1 -1
  142. package/lib/components/features/search/TMSearch.js +146 -21
  143. package/lib/components/features/search/TMSearchQueryEditor.js +7 -5
  144. package/lib/components/features/search/TMSearchQueryPanel.d.ts +13 -3
  145. package/lib/components/features/search/TMSearchQueryPanel.js +142 -68
  146. package/lib/components/features/search/TMSearchResult.d.ts +16 -0
  147. package/lib/components/features/search/TMSearchResult.js +517 -188
  148. package/lib/components/features/search/TMSearchResultFloatingActionButton.d.ts +1 -1
  149. package/lib/components/features/search/TMSignatureInfoContent.d.ts +2 -1
  150. package/lib/components/features/search/TMSignatureInfoContent.js +1 -1
  151. package/lib/components/features/search/TMTreeSelector.js +121 -70
  152. package/lib/components/features/search/TMViewHistoryDcmt.d.ts +2 -1
  153. package/lib/components/features/tasks/TMTaskForm.d.ts +1 -1
  154. package/lib/components/features/tasks/TMTaskForm.js +1 -1
  155. package/lib/components/features/tasks/TMTaskFormUtils.d.ts +10 -10
  156. package/lib/components/features/tasks/TMTaskFormUtils.js +3 -3
  157. package/lib/components/features/tasks/TMTasksAgenda.d.ts +1 -1
  158. package/lib/components/features/tasks/TMTasksAgenda.js +1 -1
  159. package/lib/components/features/tasks/TMTasksCalendar.d.ts +1 -1
  160. package/lib/components/features/tasks/TMTasksCalendar.js +1 -1
  161. package/lib/components/features/tasks/TMTasksHeader.d.ts +1 -1
  162. package/lib/components/features/tasks/TMTasksHeader.js +1 -1
  163. package/lib/components/features/tasks/TMTasksPanelContent.d.ts +1 -1
  164. package/lib/components/features/tasks/TMTasksUtilsView.d.ts +5 -5
  165. package/lib/components/features/tasks/TMTasksUtilsView.js +1 -1
  166. package/lib/components/features/tasks/TMTasksView.d.ts +1 -1
  167. package/lib/components/features/tasks/TMTasksView.js +7 -13
  168. package/lib/components/features/wg/TMWGsCopyMoveForm.d.ts +3 -2
  169. package/lib/components/features/wg/TMWGsCopyMoveForm.js +1 -1
  170. package/lib/components/features/workflow/TMWorkflowPopup.d.ts +18 -7
  171. package/lib/components/features/workflow/TMWorkflowPopup.js +9 -5
  172. package/lib/components/features/workflow/diagram/ConnectionComponent.js +3 -3
  173. package/lib/components/features/workflow/diagram/DiagramItemComponent.js +3 -3
  174. package/lib/components/features/workflow/diagram/DiagramItemForm.js +1 -1
  175. package/lib/components/features/workflow/diagram/DiagramItemSvgContent.js +1 -1
  176. package/lib/components/features/workflow/diagram/RecipientList.js +1 -1
  177. package/lib/components/features/workflow/diagram/WFDiagram.js +4 -4
  178. package/lib/components/features/workflow/diagram/WorkitemRecipientsEditor.d.ts +3 -1
  179. package/lib/components/forms/Login/ChangePasswordInputs.d.ts +3 -1
  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 +2 -1
  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 +2 -1
  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 +2 -1
  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 +3 -1
  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 +5 -6
  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.d.ts +14 -10
  223. package/lib/components/query/TMQueryEditor.js +7 -7
  224. package/lib/components/settings/SettingsAppearance.d.ts +2 -1
  225. package/lib/components/sidebar/TMAboutApp.d.ts +2 -1
  226. package/lib/components/sidebar/TMCommandsPanel.d.ts +4 -4
  227. package/lib/components/sidebar/TMCommandsPanel.js +1 -1
  228. package/lib/components/sidebar/TMHeader.d.ts +3 -3
  229. package/lib/components/sidebar/TMHeader.js +36 -26
  230. package/lib/components/sidebar/TMSidebar.js +1 -1
  231. package/lib/components/sidebar/TMSidebarItem.js +1 -1
  232. package/lib/components/viewers/TMDataListItemViewer.d.ts +3 -2
  233. package/lib/components/viewers/TMDataUserIdItemViewer.d.ts +3 -2
  234. package/lib/components/viewers/TMMidViewer.d.ts +2 -2
  235. package/lib/components/viewers/TMMidViewer.js +6 -3
  236. package/lib/components/viewers/TMTidViewer.d.ts +2 -2
  237. package/lib/components/viewers/TMTidViewer.js +89 -28
  238. package/lib/components/wizard/TMStepIndicator.js +3 -3
  239. package/lib/css/tm-sdkui.css +1 -1
  240. package/lib/devextreme-license.d.ts +1 -0
  241. package/lib/devextreme-license.js +3 -0
  242. package/lib/helper/Enum_Localizator.d.ts +4 -4
  243. package/lib/helper/Enum_Localizator.js +1 -0
  244. package/lib/helper/Globalization.d.ts +1 -1
  245. package/lib/helper/SDKUI_Globals.d.ts +110 -0
  246. package/lib/helper/SDKUI_Globals.js +151 -0
  247. package/lib/helper/SDKUI_Localizator.d.ts +735 -687
  248. package/lib/helper/SDKUI_Localizator.js +480 -0
  249. package/lib/helper/TMAppUpdatedModal.d.ts +2 -0
  250. package/lib/helper/TMAppUpdatedModal.js +134 -0
  251. package/lib/helper/TMCommandsContextMenu.d.ts +1 -1
  252. package/lib/helper/TMIcons.d.ts +280 -279
  253. package/lib/helper/TMIcons.js +4 -3
  254. package/lib/helper/TMPdfViewer.d.ts +2 -1
  255. package/lib/helper/TMPdfViewer.js +1 -1
  256. package/lib/helper/TMToppyMessage.d.ts +2 -2
  257. package/lib/helper/TMToppyMessage.js +1 -1
  258. package/lib/helper/TMUtils.d.ts +23 -4
  259. package/lib/helper/TMUtils.js +25 -3
  260. package/lib/helper/checkinCheckoutManager.d.ts +1 -1
  261. package/lib/helper/checkinCheckoutManager.js +1 -1
  262. package/lib/helper/dataGridSearchHelper.d.ts +28 -0
  263. package/lib/helper/dataGridSearchHelper.js +51 -0
  264. package/lib/helper/dcmtsHelper.d.ts +20 -0
  265. package/lib/helper/dcmtsHelper.js +58 -1
  266. package/lib/helper/helpers.d.ts +13 -2
  267. package/lib/helper/helpers.js +27 -3
  268. package/lib/helper/index.d.ts +2 -0
  269. package/lib/helper/index.js +2 -0
  270. package/lib/helper/queryHelper.d.ts +6 -1
  271. package/lib/helper/queryHelper.js +8 -3
  272. package/lib/hooks/tmDistinctValuesGridHelper.d.ts +16 -0
  273. package/lib/hooks/tmDistinctValuesGridHelper.js +31 -0
  274. package/lib/hooks/useArchiveListForm.d.ts +39 -0
  275. package/lib/hooks/useArchiveListForm.js +46 -0
  276. package/lib/hooks/useCaseFlowApprove.d.ts +56 -0
  277. package/lib/hooks/useCaseFlowApprove.js +157 -0
  278. package/lib/hooks/useDataUserIdItem.d.ts +1 -0
  279. package/lib/hooks/useDataUserIdItem.js +1 -0
  280. package/lib/hooks/useDcmtOperations.d.ts +7 -0
  281. package/lib/hooks/useDcmtOperations.js +141 -71
  282. package/lib/hooks/useDocumentOperations.d.ts +4 -0
  283. package/lib/hooks/useDocumentOperations.js +53 -11
  284. package/lib/hooks/useInputDialog.d.ts +2 -1
  285. package/lib/hooks/useInputDialog.js +1 -1
  286. package/lib/hooks/useMultiMasterDetailDcmts.d.ts +113 -0
  287. package/lib/hooks/useMultiMasterDetailDcmts.js +760 -0
  288. package/lib/hooks/useQueryParametersDialog.js +1 -1
  289. package/lib/hooks/useRelatedDocuments.d.ts +1 -0
  290. package/lib/hooks/useRelatedDocuments.js +22 -27
  291. package/lib/hooks/useShowDossiersV5.d.ts +12 -0
  292. package/lib/hooks/useShowDossiersV5.js +37 -0
  293. package/lib/hooks/useTMDistinctValuesMetadataDisplay.d.ts +18 -0
  294. package/lib/hooks/useTMDistinctValuesMetadataDisplay.js +103 -0
  295. package/lib/hooks/useTMDistinctValuesQuickSearch.d.ts +49 -0
  296. package/lib/hooks/useTMDistinctValuesQuickSearch.js +307 -0
  297. package/lib/hooks/useTMDistinctValuesSelection.d.ts +42 -0
  298. package/lib/hooks/useTMDistinctValuesSelection.js +103 -0
  299. package/lib/hooks/useTMDistinctValuesSource.d.ts +29 -0
  300. package/lib/hooks/useTMDistinctValuesSource.js +105 -0
  301. package/lib/index.d.ts +2 -0
  302. package/lib/index.js +5 -2
  303. package/lib/services/caseflow/CaseFlowService.d.ts +247 -0
  304. package/lib/services/caseflow/CaseFlowService.js +720 -0
  305. package/lib/services/caseflow/CaseFlowTemplateCacheService.d.ts +28 -0
  306. package/lib/services/caseflow/CaseFlowTemplateCacheService.js +121 -0
  307. package/lib/services/caseflow/caseFlowNameCache.d.ts +32 -0
  308. package/lib/services/caseflow/caseFlowNameCache.js +116 -0
  309. package/lib/services/caseflow/caseFlowWorkItemUtils.d.ts +61 -0
  310. package/lib/services/caseflow/caseFlowWorkItemUtils.js +113 -0
  311. package/lib/services/index.d.ts +4 -0
  312. package/lib/services/index.js +4 -0
  313. package/lib/services/platform_services.d.ts +7 -6
  314. package/package.json +16 -13
@@ -1,18 +1,34 @@
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 { useCallback, useMemo, useRef, useState } from "react";
3
3
  import { ObjectClasses, SDK_Globals } from "@topconsultnpm/sdk-ts";
4
- import { TASK_MORE_INFO_PREFIX_NAME, SDKUI_Localizator, PDGS_COLORS, calcResponsiveSizes } from "../../../helper";
4
+ import { TASK_MORE_INFO_PREFIX_NAME, SDKUI_Localizator, PDGS_COLORS, calcResponsiveSizes, isSign4TopEnabled } from "../../../helper";
5
5
  import { TMColors } from "../../../utils/theme";
6
6
  import { StyledReferenceButton } from "../../base/Styled";
7
7
  import TMButton from "../../base/TMButton";
8
8
  import TMModal from "../../base/TMModal";
9
9
  import TMTooltip from "../../base/TMTooltip";
10
10
  import { WorkFlowOperationButtons } from "../workflow/TMWorkflowPopup";
11
+ import { getWorkItemActionName, isSignatureWorkItem } from "../../../services/caseflow/caseFlowWorkItemUtils";
11
12
  const TMDcmtFormActionButtons = (props) => {
12
- const { showToppyForApprove, workItems, deviceType, isMobile, handleSignApprove, updateShowApprovePopup, updateShowRejectPopup, updateShowReAssignPopup, updateShowMoreInfoPopup, fromDTD, showToppyForCompleteMoreInfo, moreInfoTasks, setShowCommentForm, showToppyForReferences, dcmtReferences, referenceActionMap, handleNavigateToReference, setShowMoreInfoTaskPopup, setShowMoreInfoTaskTask } = props;
13
+ const { showToppyForApprove, workItems, caseFlowWorkItems, onCompleteCaseFlowWorkItem, onRejectCaseFlowWorkItem, deviceType, isMobile, handleSignApprove, updateShowApprovePopup, updateShowRejectPopup, updateShowReAssignPopup, updateShowMoreInfoPopup, fromDTD, showToppyForCompleteMoreInfo, moreInfoTasks, setShowCommentForm, showToppyForReferences, dcmtReferences, referenceActionMap, handleNavigateToReference, setShowMoreInfoTaskPopup, setShowMoreInfoTaskTask } = props;
13
14
  const [showAllMoreInfoModal, setShowAllMoreInfoModal] = useState(false);
14
15
  const [showAllDossiersModal, setShowAllDossiersModal] = useState(false);
15
16
  const [showAllWorkingGroupsModal, setShowAllWorkingGroupsModal] = useState(false);
17
+ // Rifiuto di un'attività di pratica: il motivo è obbligatorio, quindi si passa
18
+ // da un dialogo. `busyItemId` disabilita i pulsanti dell'attività in corso.
19
+ const [rejectingItem, setRejectingItem] = useState(null);
20
+ const [rejectReason, setRejectReason] = useState('');
21
+ const [busyItemId, setBusyItemId] = useState(null);
22
+ const cfItems = useMemo(() => caseFlowWorkItems ?? [], [caseFlowWorkItems]);
23
+ const runCaseFlowAction = useCallback(async (item, action) => {
24
+ setBusyItemId(item.workItem.id ?? null);
25
+ try {
26
+ await action();
27
+ }
28
+ finally {
29
+ setBusyItemId(null);
30
+ }
31
+ }, []);
16
32
  const tasksNumber = useMemo(() => moreInfoTasks?.length ?? 0, [moreInfoTasks]);
17
33
  const firstTask = useMemo(() => {
18
34
  if (!moreInfoTasks || moreInfoTasks.length === 0)
@@ -31,19 +47,66 @@ const TMDcmtFormActionButtons = (props) => {
31
47
  return false;
32
48
  return true;
33
49
  }, [firstTask]);
34
- const { hasMoreInfo, hasApprove, hasReferences } = useMemo(() => {
50
+ const { hasMoreInfo, hasApprove, hasReferences, hasCaseFlow } = useMemo(() => {
35
51
  const referencesExist = showToppyForReferences && dcmtReferences?.some(ref => ref.objClass === ObjectClasses.Dossier || ref.objClass === ObjectClasses.WorkingGroup);
36
52
  return {
37
53
  hasMoreInfo: Boolean(showToppyForCompleteMoreInfo),
38
54
  hasApprove: Boolean(showToppyForApprove),
39
- hasReferences: Boolean(referencesExist)
55
+ hasReferences: Boolean(referencesExist),
56
+ hasCaseFlow: cfItems.length > 0
40
57
  };
41
58
  }, [
42
59
  showToppyForCompleteMoreInfo,
43
60
  showToppyForApprove,
44
61
  showToppyForReferences,
45
- dcmtReferences
62
+ dcmtReferences,
63
+ cfItems
46
64
  ]);
65
+ /**
66
+ * Attività di pratica: contesto (pratica + testo dell'attività) e gli STESSI
67
+ * pulsanti dei work item del workflow (`WorkFlowOperationButtons`), così le due
68
+ * provenienze si comportano allo stesso modo davanti all'utente.
69
+ *
70
+ * La forma dei pulsanti la decide la CATEGORIA dell'attività, non il tipo
71
+ * documento: un'approvazione su un tipo abilitato alla firma non deve mostrare
72
+ * "Firma e approva" (per questo si passa `signFlow`). La firma richiede comunque
73
+ * il widget Sign4Top sul tipo, altrimenti il viewer non avrebbe come aprirsi.
74
+ *
75
+ * Per la FIRMA il pulsante apre il viewer (`handleSignApprove`, lo stesso del
76
+ * workflow) e il completamento avviene lì a firma riuscita: il form non sa
77
+ * firmare, e completare qui "a fiducia" chiuderebbe l'attività su un documento
78
+ * non firmato.
79
+ */
80
+ const renderCaseFlowWorkItemCard = (item) => {
81
+ const { caseflow, workItem } = item;
82
+ const isBusy = busyItemId === workItem.id;
83
+ const canSign = !!fromDTD?.widgets && isSign4TopEnabled(fromDTD.widgets);
84
+ const requiresSignature = isSignatureWorkItem(workItem) && canSign;
85
+ const description = workItem.description || getWorkItemActionName(caseflow, workItem);
86
+ return (_jsxs("div", { style: {
87
+ display: 'flex',
88
+ flexDirection: 'column',
89
+ alignItems: 'center',
90
+ textAlign: 'center',
91
+ gap: '10px',
92
+ cursor: 'default',
93
+ }, children: [description && (_jsx("div", { style: {
94
+ maxWidth: '240px',
95
+ paddingBottom: '8px',
96
+ borderBottom: '1px solid rgba(255,255,255,0.25)',
97
+ color: '#FFFFFF',
98
+ fontSize: '0.95rem',
99
+ fontWeight: 600,
100
+ lineHeight: 1.3,
101
+ letterSpacing: '0.2px',
102
+ textShadow: '0 1px 2px rgba(0,0,0,0.35)',
103
+ whiteSpace: 'pre-line',
104
+ }, children: description })), _jsx(WorkFlowOperationButtons, { dtd: fromDTD, deviceType: deviceType, signFlow: requiresSignature, approveDisable: isBusy, signApproveDisable: isBusy, rejectDisable: isBusy, onSignApprove: handleSignApprove, onApprove: onCompleteCaseFlowWorkItem
105
+ ? () => void runCaseFlowAction(item, () => onCompleteCaseFlowWorkItem(item))
106
+ : undefined, onReject: onRejectCaseFlowWorkItem
107
+ ? () => { setRejectReason(''); setRejectingItem(item); }
108
+ : undefined })] }, workItem.id));
109
+ };
47
110
  // Raggruppa references per categoria
48
111
  const { dossierRefs, workingGroupRefs } = useMemo(() => {
49
112
  const dossiers = dcmtReferences?.filter(ref => ref.objClass === ObjectClasses.Dossier) ?? [];
@@ -144,7 +207,7 @@ const TMDcmtFormActionButtons = (props) => {
144
207
  return (_jsxs("div", { style: { position: 'relative', display: 'inline-flex' }, children: [_jsxs(StyledReferenceButton, { onMouseDown: handleRefButtonMouseDown, onMouseMove: handleRefButtonMouseMove, onClick: () => {
145
208
  handleRefButtonClick(ref);
146
209
  onClickRef?.();
147
- }, onDoubleClick: (e) => { e.preventDefault(); e.stopPropagation(); }, "$bgColor": backgroundColor, children: [_jsx("span", { children: label }), _jsx("span", { children: `"${ref.objName}"` })] }), showOthersIndicator && othersCount > 0 && (_jsx("div", { onClick: (e) => { e.stopPropagation(); onShowAll(); }, onMouseDown: e => e.stopPropagation(), style: {
210
+ }, onDoubleClick: (e) => { e.preventDefault(); e.stopPropagation(); }, $bgColor: backgroundColor, children: [_jsx("span", { children: label }), _jsx("span", { children: `"${ref.objName}"` })] }), showOthersIndicator && othersCount > 0 && (_jsx("div", { onClick: (e) => { e.stopPropagation(); onShowAll(); }, onMouseDown: e => e.stopPropagation(), style: {
148
211
  position: 'absolute',
149
212
  right: '-36px',
150
213
  top: '50%',
@@ -171,10 +234,17 @@ const TMDcmtFormActionButtons = (props) => {
171
234
  e.currentTarget.style.transform = 'translateY(-50%)';
172
235
  }, children: formatBadgeCount(othersCount) }))] }));
173
236
  };
174
- return (_jsxs(_Fragment, { children: [_jsxs("div", { style: { display: 'flex', flexDirection: 'column', gap: '10px' }, children: [hasMoreInfo && firstTask && isMoreInfoCardVisible && (_jsx("div", { style: { display: 'flex', gap: "10px", flexDirection: 'column', alignItems: 'center', paddingRight: tasksNumber > 1 ? '36px' : '0' }, children: renderMoreInfoCard(firstTask, tasksNumber > 1) })), hasMoreInfo && isMoreInfoCardVisible && hasApprove && _jsx(Divider, {}), hasApprove && (workItems.length === 1 ?
237
+ return (_jsxs(_Fragment, { children: [_jsxs("div", { style: { display: 'flex', flexDirection: 'column', gap: '10px' }, children: [hasMoreInfo && firstTask && isMoreInfoCardVisible && (_jsx("div", { style: { display: 'flex', gap: "10px", flexDirection: 'column', alignItems: 'center', paddingRight: tasksNumber > 1 ? '36px' : '0' }, children: renderMoreInfoCard(firstTask, tasksNumber > 1) })), hasMoreInfo && isMoreInfoCardVisible && hasCaseFlow && _jsx(Divider, {}), hasCaseFlow && (_jsx("div", { style: { display: 'flex', flexDirection: 'column', gap: '10px', alignItems: 'center' }, children: cfItems.map(item => renderCaseFlowWorkItemCard(item)) })), hasCaseFlow && hasApprove && _jsx(Divider, {}), hasMoreInfo && isMoreInfoCardVisible && !hasCaseFlow && hasApprove && _jsx(Divider, {}), hasApprove && (workItems.length === 1 ?
175
238
  _jsx(WorkFlowOperationButtons, { dtd: fromDTD, deviceType: deviceType, onApprove: () => updateShowApprovePopup(true), onSignApprove: handleSignApprove, onReject: () => updateShowRejectPopup(true), onReAssign: () => updateShowReAssignPopup(true), onMoreInfo: () => updateShowMoreInfoPopup(true) })
176
239
  :
177
- _jsxs("div", { style: { padding: 10, color: 'white', maxWidth: '180px', borderRadius: 10, background: '#1B1464 0% 0% no-repeat padding-box', border: '1px solid #FFFFFF' }, children: [`Questo documento è associato a ${workItems.length} workitem.`, _jsx("br", {}), `Per approvare, vai alla pagina "Approvazione workflow".`] })), (hasApprove && hasReferences) || (hasMoreInfo && isMoreInfoCardVisible && !hasApprove && hasReferences) ? (_jsx(Divider, {})) : null, hasReferences && (_jsxs("div", { style: { display: 'flex', flexDirection: 'column', gap: '10px', alignItems: 'center' }, children: [dossierRefs.length > 0 && (_jsx("div", { style: { paddingRight: dossierRefs.length > 1 ? '36px' : '0' }, children: renderReferenceCard(dossierRefs[0], dossierRefs, dossierRefs.length > 1, () => setShowAllDossiersModal(true)) })), workingGroupRefs.length > 0 && (_jsx("div", { style: { paddingRight: workingGroupRefs.length > 1 ? '36px' : '0' }, children: renderReferenceCard(workingGroupRefs[0], workingGroupRefs, workingGroupRefs.length > 1, () => setShowAllWorkingGroupsModal(true)) }))] }))] }), showAllMoreInfoModal && moreInfoTasks && moreInfoTasks.length > 1 && (_jsx(TMModal, { title: `Altre richieste maggiori informazioni (${moreInfoTasks.length - 1})`, onClose: () => setShowAllMoreInfoModal(false), width: calcResponsiveSizes(deviceType, '450px', '450px', '95%'), height: 'auto', children: _jsx("div", { style: {
240
+ _jsxs("div", { style: { padding: 10, color: 'white', maxWidth: '180px', borderRadius: 10, background: '#1B1464 0% 0% no-repeat padding-box', border: '1px solid #FFFFFF' }, children: [`Questo documento è associato a ${workItems.length} workitem.`, _jsx("br", {}), `Per approvare, vai alla pagina "Approvazione workflow".`] })), (hasApprove && hasReferences) || (hasMoreInfo && isMoreInfoCardVisible && !hasApprove && hasReferences) ? (_jsx(Divider, {})) : null, hasReferences && (_jsxs("div", { style: { display: 'flex', flexDirection: 'column', gap: '10px', alignItems: 'center' }, children: [dossierRefs.length > 0 && (_jsx("div", { style: { paddingRight: dossierRefs.length > 1 ? '36px' : '0' }, children: renderReferenceCard(dossierRefs[0], dossierRefs, dossierRefs.length > 1, () => setShowAllDossiersModal(true)) })), workingGroupRefs.length > 0 && (_jsx("div", { style: { paddingRight: workingGroupRefs.length > 1 ? '36px' : '0' }, children: renderReferenceCard(workingGroupRefs[0], workingGroupRefs, workingGroupRefs.length > 1, () => setShowAllWorkingGroupsModal(true)) }))] }))] }), rejectingItem && onRejectCaseFlowWorkItem && (_jsx(TMModal, { title: rejectingItem.workItem.rejectLabel || SDKUI_Localizator.Reject, onClose: () => { setRejectingItem(null); setRejectReason(''); }, width: calcResponsiveSizes(deviceType, '450px', '450px', '95%'), height: 'auto', children: _jsxs("div", { style: { display: 'flex', flexDirection: 'column', gap: 12, padding: 15 }, children: [_jsx("div", { style: { fontSize: 13, color: '#555' }, children: `${SDKUI_Localizator.Description}:` }), _jsx("textarea", { value: rejectReason, onChange: (e) => setRejectReason(e.target.value), rows: 4, style: { width: '100%', resize: 'vertical', fontFamily: 'inherit', fontSize: 13, padding: 8 } }), _jsxs("div", { style: { display: 'flex', justifyContent: 'flex-end', gap: 8 }, children: [_jsx(TMButton, { caption: SDKUI_Localizator.Cancel, showTooltip: false, onClick: () => { setRejectingItem(null); setRejectReason(''); } }), _jsx(TMButton, { caption: rejectingItem.workItem.rejectLabel || SDKUI_Localizator.Reject, color: 'error', showTooltip: false, disabled: !rejectReason.trim() || busyItemId === rejectingItem.workItem.id, onClick: () => {
241
+ const item = rejectingItem;
242
+ void runCaseFlowAction(item, async () => {
243
+ await onRejectCaseFlowWorkItem(item, rejectReason.trim());
244
+ setRejectingItem(null);
245
+ setRejectReason('');
246
+ });
247
+ } })] })] }) })), showAllMoreInfoModal && moreInfoTasks && moreInfoTasks.length > 1 && (_jsx(TMModal, { title: `Altre richieste maggiori informazioni (${moreInfoTasks.length - 1})`, onClose: () => setShowAllMoreInfoModal(false), width: calcResponsiveSizes(deviceType, '450px', '450px', '95%'), height: 'auto', children: _jsx("div", { style: {
178
248
  display: 'flex',
179
249
  flexDirection: 'column',
180
250
  gap: '8px',
@@ -1,3 +1,4 @@
1
+ import React from 'react';
1
2
  import { DcmtInfo, DownloadModes, DownloadTypes } from '../../../ts';
2
3
  import { FileDescriptor } from '@topconsultnpm/sdk-ts';
3
4
  interface ITMDcmtIconProps {
@@ -16,5 +17,5 @@ interface ITMDcmtIconProps {
16
17
  /** Se true, renderizza il wait panel nel body tramite Portal (centrato a schermo intero) */
17
18
  usePortal?: boolean;
18
19
  }
19
- declare const TMDcmtIcon: ({ fileExtension, fileCount, isLexProt, isSigned, isMail, isShared, tid, did, downloadMode, tooltipContent, openInOffice, onDownloadDcmtsAsync, usePortal }: ITMDcmtIconProps) => import("react/jsx-runtime").JSX.Element;
20
+ declare const TMDcmtIcon: ({ fileExtension, fileCount, isLexProt, isSigned, isMail, isShared, tid, did, downloadMode, tooltipContent, openInOffice, onDownloadDcmtsAsync, usePortal }: ITMDcmtIconProps) => React.JSX.Element;
20
21
  export default TMDcmtIcon;
@@ -54,9 +54,11 @@ const TMDcmtIcon = ({ fileExtension, fileCount, isLexProt, isSigned, isMail, isS
54
54
  cursor: isMobile
55
55
  ? (isDownloadable ? "pointer" : undefined)
56
56
  : (isDownloadable ? "default" : undefined)
57
- }, ...(deviceType === DeviceType.MOBILE
58
- ? { onClick: handleDownloadAction } // Su mobile, un singolo click sull'icona avvia il download
59
- : { onDoubleClick: handleDownloadAction } // Su desktop, un doppio click sull'icona avvia il download
57
+ }, ...(downloadMode === "none"
58
+ ? {}
59
+ : deviceType === DeviceType.MOBILE
60
+ ? { onClick: handleDownloadAction } // Su mobile, un singolo click sull'icona avvia il download
61
+ : { onDoubleClick: handleDownloadAction } // Su desktop, un doppio click sull'icona avvia il download
60
62
  ), children: [icon, isLexProt == 1 && _jsx("div", { style: { position: 'absolute', left: '-7px', top: isShared ? undefined : '2px' }, children: _jsx(TMTooltip, { content: "Protezione LEX", children: _jsx(IconLexProtLock, { color: 'blue', fontSize: 13 }) }) }), isShared == 1 && _jsx("div", { style: { position: 'absolute', top: '-7px', left: '-5px' }, children: _jsx(TMTooltip, { content: "Documento condiviso", children: _jsx(IconShared, { fontSize: 16 }) }) }), isSigned == 1 && _jsx("div", { style: { position: 'absolute', bottom: '-4px', right: '-7px' }, children: _jsx(TMTooltip, { content: "Documento firmato", children: _jsx(IconSignature, { fontSize: 28 }) }) }), showWaitPanel && (usePortal ? createPortal(_jsx(TMWaitPanel, { title: waitPanelTitle, showSecondary: showSecondary, textSecondary: waitPanelTextSecondary, valueSecondary: waitPanelValueSecondary, maxValueSecondary: waitPanelMaxValueSecondary, isCancelable: true, abortController: abortController, onAbortClick: (abortController) => { setTimeout(() => { abortController?.abort(); }, 1000); }, useHighZIndex: true }), document.body) : (_jsx(TMWaitPanel, { title: waitPanelTitle, showSecondary: showSecondary, textSecondary: waitPanelTextSecondary, valueSecondary: waitPanelValueSecondary, maxValueSecondary: waitPanelMaxValueSecondary, isCancelable: true, abortController: abortController, onAbortClick: (abortController) => { setTimeout(() => { abortController?.abort(); }, 1000); } })))] }));
61
63
  };
62
64
  export default TMDcmtIcon;
@@ -25,10 +25,12 @@ export declare const TMNothingToShow: ({ text, secondText, fileExt, icon }: {
25
25
  secondText?: any;
26
26
  fileExt?: string;
27
27
  icon?: any;
28
- }) => import("react/jsx-runtime").JSX.Element;
29
- export declare const StyledHeaderIcon: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("styled-components").FastOmit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "$color"> & {
28
+ }) => React.JSX.Element;
29
+ export declare const StyledHeaderIcon: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Merged<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "style"> & {
30
+ style?: React.CSSProperties | import("styled-components/dist/types").CSSPropertiesWithVars | undefined;
31
+ }, {
30
32
  $color: string;
31
- }, never> & Partial<Pick<import("styled-components").FastOmit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "$color"> & {
32
- $color: string;
33
- }, never>>> & string;
34
- export declare const StyledPanelStatusContainer: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never> & Partial<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>>> & string;
33
+ }>> & string;
34
+ export declare const StyledPanelStatusContainer: import("styled-components/dist/types").IStyledComponentBase<"web", Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "style"> & {
35
+ style?: React.CSSProperties | import("styled-components/dist/types").CSSPropertiesWithVars | undefined;
36
+ }> & string;
@@ -50,13 +50,17 @@ const TMDcmtPreview = ({ dcmtData, isResizingActive, isVisible, canNext, canPrev
50
50
  return;
51
51
  }
52
52
  const currentCacheKey = isBasketMode ? `basket-${dcmtData.btid}-${dcmtData.bid}-${dcmtData.bfid}` : `${dcmtData.tid}-${dcmtData.did}`;
53
- const shouldFetch = isVisible && (!hasLoadedDataOnce || currentCacheKey !== lastLoadedDid);
53
+ // Fuori campo non si carica: l'anteprima nativa creata in una pagina non a video resta rotta
54
+ if (!isVisible)
55
+ return;
56
+ // Documento già caricato: ricaricarlo ricreerebbe il visualizzatore senza motivo
57
+ if (hasLoadedDataOnce && currentCacheKey === lastLoadedDid)
58
+ return;
54
59
  if (isDcmtFileInCache(currentCacheKey)) {
55
60
  isBasketMode ? loadBasketFile() : loadDocumentWithCache();
56
61
  setShowPreview(true);
57
- return;
58
62
  }
59
- if (shouldFetch) {
63
+ else {
60
64
  setDcmtBlob(undefined);
61
65
  setError('');
62
66
  setIsAbortError(false);
@@ -71,10 +75,10 @@ const TMDcmtPreview = ({ dcmtData, isResizingActive, isVisible, canNext, canPrev
71
75
  else {
72
76
  setShowPreview(false);
73
77
  }
74
- setHasLoadedDataOnce(true);
75
- setLastLoadedDid(currentCacheKey);
76
78
  }
77
- }, [dcmtData?.did, isVisible, hasLoadedDataOnce, lastLoadedDid]);
79
+ setHasLoadedDataOnce(true);
80
+ setLastLoadedDid(currentCacheKey);
81
+ }, [dcmtData?.tid, dcmtData?.did, isVisible, hasLoadedDataOnce, lastLoadedDid]);
78
82
  const loadBasketFile = async () => {
79
83
  try {
80
84
  // Check cache first
@@ -183,7 +187,7 @@ const TMDcmtPreview = ({ dcmtData, isResizingActive, isVisible, canNext, canPrev
183
187
  { icon: _jsx(IconCloseCircle, {}), name: SDKUI_Localizator.RemoveFromCache, onClick: () => { removeDcmtsFileCache(cacheKey); setIsFromCache(false); } },
184
188
  { icon: _jsx(IconClear, {}), name: SDKUI_Localizator.ClearCache, onClick: () => { clearDcmtsFileCache(); setIsFromCache(false); } },
185
189
  ], [cacheKey, removeDcmtsFileCache, clearDcmtsFileCache, setIsFromCache]);
186
- return (_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: _jsx(TMPanel, { padding: '0', title: titleHandler(), onClose: onClosePanel, onBack: onBack, allowMaximize: allowMaximize, onMaximize: onMaximizePanel, onHeaderDoubleClick: onMaximizePanel, toolbar: _jsxs("div", { style: { width: 'max-content', display: 'flex', alignItems: 'center', gap: '10px' }, children: [onPrev && _jsx(TMSaveFormButtonPrevious, { btnStyle: 'icon', isModified: false, formMode: FormModes.ReadOnly, canPrev: canPrev, onPrev: onPrev }), onNext && _jsx(TMSaveFormButtonNext, { btnStyle: 'icon', isModified: false, formMode: FormModes.ReadOnly, canNext: canNext, onNext: onNext }), _jsx(StyledHeaderIcon, { "$color": TMColors.primaryColor, children: _jsx(ContextMenu, { items: cacheMenuItems, trigger: "left", children: _jsx(IconMenuVertical, {}) }) }), _jsx(StyledHeaderIcon, { onClick: reOpenDcmt, "$color": TMColors.primaryColor, children: _jsx(TMTooltip, { content: SDKUI_Localizator.ReopenDocument, children: _jsx(IconRefresh, {}) }) })] }), children: error
190
+ return (_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: _jsx(TMPanel, { padding: '0', title: titleHandler(), onClose: onClosePanel, onBack: onBack, allowMaximize: allowMaximize, onMaximize: onMaximizePanel, onHeaderDoubleClick: onMaximizePanel, toolbar: _jsxs("div", { style: { width: 'max-content', display: 'flex', alignItems: 'center', gap: '10px' }, children: [onPrev && _jsx(TMSaveFormButtonPrevious, { btnStyle: 'icon', isModified: false, formMode: FormModes.ReadOnly, canPrev: canPrev, onPrev: onPrev }), onNext && _jsx(TMSaveFormButtonNext, { btnStyle: 'icon', isModified: false, formMode: FormModes.ReadOnly, canNext: canNext, onNext: onNext }), _jsx(StyledHeaderIcon, { $color: TMColors.primaryColor, children: _jsx(ContextMenu, { items: cacheMenuItems, trigger: "left", children: _jsx(IconMenuVertical, {}) }) }), _jsx(StyledHeaderIcon, { onClick: reOpenDcmt, $color: TMColors.primaryColor, children: _jsx(TMTooltip, { content: SDKUI_Localizator.ReopenDocument, children: _jsx(IconRefresh, {}) }) })] }), children: error
187
191
  ? _jsx(ErrorContent, { error: error, isAbortError: isAbortError, onRetry: reOpenDcmt })
188
192
  : renderedPreview(dcmtData?.tid, dcmtData?.did, dcmtData?.fileExt, dcmtData?.fileSize, dcmtData?.fileCount, extensionHandler(dcmtData?.fileExt), showPreview, isResizingActive, () => { isBasketMode ? loadBasketFile() : loadDocumentWithCache(); setShowPreview(true); }, dcmtBlob, isBasketMode) }) }));
189
193
  };
@@ -430,7 +434,7 @@ const ImageViewer = ({ fileBlob, alt = 'Image', className }) => {
430
434
  return 'default';
431
435
  return isDragging ? 'grabbing' : 'grab';
432
436
  }, [zoomFactor, isDragging]);
433
- return (_jsxs("div", { style: { position: 'relative', width: '100%', height: '100%', overflow: 'hidden' }, children: [_jsx(TopToolbar, { children: _jsxs(ToolbarCenter, { children: [_jsx(ToolbarIconButton, { title: 'Diminuisci lo zoom', onClick: handleZoomOut, disabled: zoomFactor <= 0.5, children: _jsx(IconZoomOutLinear, {}) }), _jsx(ToolbarIconButton, { title: 'Aumenta lo zoom', onClick: handleZoomIn, disabled: zoomFactor >= 3, children: _jsx(IconZoomInLinear, {}) }), _jsx(Divider, {}), _jsx(ToolbarIconButton, { title: 'Stampa', onClick: handlePrint, children: _jsx(IconPrintOutline, {}) })] }) }), _jsx(ImageContainer, { ref: containerRef, onMouseDown: onMouseDown, onTouchStart: onMouseDown, "$cursor": cursor, className: className, children: imageUrl && (_jsx(StyledImage, { ref: imageRef, src: imageUrl, alt: alt, "$scale": fullZoom, "$tx": translateX, "$ty": translateY, "$rotate": rotation })) })] }));
437
+ return (_jsxs("div", { style: { position: 'relative', width: '100%', height: '100%', overflow: 'hidden' }, children: [_jsx(TopToolbar, { children: _jsxs(ToolbarCenter, { children: [_jsx(ToolbarIconButton, { title: 'Diminuisci lo zoom', onClick: handleZoomOut, disabled: zoomFactor <= 0.5, children: _jsx(IconZoomOutLinear, {}) }), _jsx(ToolbarIconButton, { title: 'Aumenta lo zoom', onClick: handleZoomIn, disabled: zoomFactor >= 3, children: _jsx(IconZoomInLinear, {}) }), _jsx(Divider, {}), _jsx(ToolbarIconButton, { title: 'Stampa', onClick: handlePrint, children: _jsx(IconPrintOutline, {}) })] }) }), _jsx(ImageContainer, { ref: containerRef, onMouseDown: onMouseDown, onTouchStart: onMouseDown, $cursor: cursor, className: className, children: imageUrl && (_jsx(StyledImage, { ref: imageRef, src: imageUrl, alt: alt, $scale: fullZoom, $tx: translateX, $ty: translateY, $rotate: rotation })) })] }));
434
438
  };
435
439
  export const TMNothingToShow = ({ text = '', secondText, fileExt, icon = _jsx(IconPreview, { fontSize: 96 }) }) => {
436
440
  return (_jsx(StyledAnimatedComponentOpacity, { style: { width: '100%', height: '100%' }, children: _jsxs(StyledPanelStatusContainer, { children: [icon, _jsxs(StyledPreviewNotAvailable, { children: [text && _jsx("div", { children: text }), _jsxs("div", { children: [" ", secondText ?? SDKUI_Localizator.PreviewNotAvailable, fileExt && _jsx("b", { children: ` (*.${fileExt})` })] })] })] }) }));
@@ -1,3 +1,4 @@
1
+ import React from "react";
1
2
  import { FormModes, TaskContext } from "../../../ts";
2
3
  import { HomeBlogPost, TaskDescriptor } from "@topconsultnpm/sdk-ts";
3
4
  interface TMDcmtTasksProps {
@@ -12,5 +13,5 @@ interface TMDcmtTasksProps {
12
13
  handleNavigateToDossiers?: (value: HomeBlogPost | number) => Promise<void>;
13
14
  onBack?: () => void;
14
15
  }
15
- declare const TMDcmtTasks: (props: TMDcmtTasksProps) => import("react/jsx-runtime").JSX.Element;
16
+ declare const TMDcmtTasks: (props: TMDcmtTasksProps) => React.JSX.Element;
16
17
  export default TMDcmtTasks;
@@ -1,4 +1,4 @@
1
- import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useCallback, useRef, useState } from 'react';
3
3
  import TreeView from 'devextreme-react/tree-view';
4
4
  import { LayoutModes } from '@topconsultnpm/sdk-ts';
@@ -2,5 +2,5 @@ interface TMDragDropOverlayProps {
2
2
  handleFile: (file: File) => void;
3
3
  refocusAfterFileInput: () => void;
4
4
  }
5
- declare const TMDragDropOverlay: (props: TMDragDropOverlayProps) => import("react/jsx-runtime").JSX.Element;
5
+ declare const TMDragDropOverlay: (props: TMDragDropOverlayProps) => import("react").JSX.Element;
6
6
  export default TMDragDropOverlay;
@@ -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 { useCallback, useEffect, useMemo, useRef, useState } from 'react';
3
3
  import styled from 'styled-components';
4
4
  import { IconFolderOpen, IconScanner, SDKUI_Localizator, formatBytes, IconClear, extensionHandler, IconCloseOutline, IconMenuVertical, TMCommandsContextMenu, IconEdit, isPdfEditorAvailable, SDKUI_Globals } from '../../../helper';
@@ -29,6 +29,7 @@ const TMFileUploader = ({ fromDTD, deviceType = DeviceType.DESKTOP, onClose, onF
29
29
  const [fileSize, setFileSize] = useState(undefined);
30
30
  const [fileExt, setFileExt] = useState(undefined);
31
31
  const uploaderRef = useRef(null);
32
+ const fileInputRef = useRef(null);
32
33
  // Ref al TMPanel per chiamare focusPanel()
33
34
  const fileUploaderPanelRef = useRef(null);
34
35
  usePreventFileDrop([uploaderRef]);
@@ -85,19 +86,18 @@ const TMFileUploader = ({ fromDTD, deviceType = DeviceType.DESKTOP, onClose, onF
85
86
  setFileSize(undefined);
86
87
  setFileExt(undefined);
87
88
  onFileUpload?.(null);
88
- const fileInput = document.getElementById('fileInput');
89
- if (fileInput) {
90
- fileInput.value = '';
89
+ if (fileInputRef.current) {
90
+ fileInputRef.current.value = '';
91
91
  }
92
92
  //Rifocalizza dopo la cancellazione del file
93
93
  if (refocus)
94
94
  refocusAfterFileInput();
95
95
  }, [onFileUpload, refocusAfterFileInput]);
96
96
  const browseHandler = useCallback(() => {
97
- document.getElementById('fileInput')?.click();
97
+ fileInputRef.current?.click();
98
98
  }, []);
99
99
  let content = !uploadedFile ?
100
- _jsxs("div", { style: { display: 'flex', gap: 10, width: '100%', height: '100%' }, children: [_jsx(HiddenInput, { id: "fileInput", type: "file", onChange: handleInputChange }), _jsxs(UploadContainer, { ref: uploaderRef, tabIndex: 0, onDragOver: handleDragOver, onDragLeave: handleDragLeave, onDrop: handleDrop, style: { backgroundColor: dragOver ? '#76b1e6' : 'white' }, onDoubleClick: browseHandler, "$isRequired": isRequired, children: [_jsxs("div", { style: { display: 'flex', gap: '10px', flexDirection: 'column', position: 'absolute', right: 5, top: 5 }, children: [_jsx(TMButton, { btnStyle: 'icon', caption: 'Sfoglia', color: isRequired && !uploadedFile ? 'error' : 'primary', onClick: browseHandler, icon: _jsx(IconFolderOpen, { fontSize: 22 }) }), showScannerIcon && isScannerLicenseConfigured() && onScanRequest && _jsx(TMButton, { btnStyle: 'icon', caption: 'Scanner', color: 'primary', onClick: () => { onScanRequest((file) => { onFileUpload?.(file); }); }, icon: _jsx(IconScanner, { fontSize: 22 }) }), showScannerIcon && isScannerLicenseConfigured() && !onScanRequest && _jsx(TMButton, { btnStyle: 'icon', caption: 'Scanner', color: 'primary', onClick: () => { ShowAlert({ message: SDKUI_Localizator.ScanFeatureUnavailableInThisContext, mode: 'info', duration: 3000, title: 'Scanner' }); }, icon: _jsx(IconScanner, { fontSize: 22 }) })] }), _jsx("p", { style: { fontSize: '1.2rem', fontWeight: 'bold' }, children: deviceType === DeviceType.MOBILE ? SDKUI_Localizator.ClickToBrowseFile : SDKUI_Localizator.DragOrDoubleClickToBrowseFile }), isRequired && _jsxs("p", { style: { fontWeight: 'bold' }, children: [" ", SDKUI_Localizator.RequiredField, " "] })] })] }) :
100
+ _jsxs("div", { style: { display: 'flex', gap: 10, width: '100%', height: '100%' }, children: [_jsx(HiddenInput, { ref: fileInputRef, type: "file", onChange: handleInputChange }), _jsxs(UploadContainer, { ref: uploaderRef, tabIndex: 0, onDragOver: handleDragOver, onDragLeave: handleDragLeave, onDrop: handleDrop, style: { backgroundColor: dragOver ? '#76b1e6' : 'white' }, onDoubleClick: browseHandler, $isRequired: isRequired, children: [_jsxs("div", { style: { display: 'flex', gap: '10px', flexDirection: 'column', position: 'absolute', right: 5, top: 5 }, children: [_jsx(TMButton, { btnStyle: 'icon', caption: 'Sfoglia', color: isRequired && !uploadedFile ? 'error' : 'primary', onClick: browseHandler, icon: _jsx(IconFolderOpen, { fontSize: 22 }) }), showScannerIcon && isScannerLicenseConfigured() && onScanRequest && _jsx(TMButton, { btnStyle: 'icon', caption: 'Scanner', color: 'primary', onClick: () => { onScanRequest((file) => { onFileUpload?.(file); }); }, icon: _jsx(IconScanner, { fontSize: 22 }) }), showScannerIcon && isScannerLicenseConfigured() && !onScanRequest && _jsx(TMButton, { btnStyle: 'icon', caption: 'Scanner', color: 'primary', onClick: () => { ShowAlert({ message: SDKUI_Localizator.ScanFeatureUnavailableInThisContext, mode: 'info', duration: 3000, title: 'Scanner' }); }, icon: _jsx(IconScanner, { fontSize: 22 }) })] }), _jsx("p", { style: { fontSize: '1.2rem', fontWeight: 'bold' }, children: deviceType === DeviceType.MOBILE ? SDKUI_Localizator.ClickToBrowseFile : SDKUI_Localizator.DragOrDoubleClickToBrowseFile }), isRequired && _jsxs("p", { style: { fontWeight: 'bold' }, children: [" ", SDKUI_Localizator.RequiredField, " "] })] })] }) :
101
101
  _jsxs("div", { style: { display: 'flex', flexDirection: 'column', gap: 10, width: '100%', height: '100%' }, children: [_jsxs("div", { style: { backgroundColor: 'white', padding: '5px 10px', borderRadius: 8, display: 'flex', alignItems: 'center', justifyContent: 'space-between', color: TMColors.primaryColor }, children: [_jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: 5 }, children: [_jsx("p", { children: "File name:" }), _jsxs("div", { style: { fontWeight: 'bold' }, children: [fileName, " ", _jsxs("span", { children: [" ", ` (${formatBytes(fileSize)})`, " "] })] })] }), uploadedFile && _jsx(TMButton, { btnStyle: 'icon', color: 'error', caption: 'Pulisci', onClick: () => clearFile(true), icon: _jsx(IconClear, { fontSize: 22 }) })] }), extensionHandler(fileExt) === FileExtensionHandler.READY_TO_SHOW ? _jsx(TMFileViewer, { fileBlob: uploadedFile, isResizingActive: isResizingActive }) :
102
102
  _jsx("div", { style: { backgroundColor: '#f6dbdb', padding: '5px 10px', borderRadius: 8, display: 'flex', alignItems: 'center', justifyContent: 'space-between', color: TMColors.error }, children: _jsxs("div", { children: [" ", SDKUI_Localizator.PreviewNotAvailable, fileExt && _jsx("b", { children: ` (*.${fileExt})` })] }) })] });
103
103
  const innerContent = (_jsxs("div", { style: { width: '100%', height: '100%', padding: '2px', display: 'flex', flexDirection: 'column', gap: 10 }, children: [enableDragDropOverlay && _jsx(TMDragDropOverlay, { handleFile: handleFile, refocusAfterFileInput: refocusAfterFileInput }), content] }));
@@ -108,31 +108,31 @@ const TMFileUploader = ({ fromDTD, deviceType = DeviceType.DESKTOP, onClose, onF
108
108
  text: 'PDF Editor',
109
109
  onClick: () => openFileUploaderPdfEditor(fromDTD, uploadedFile, handleFile)
110
110
  }
111
- ], showEvent: "click", children: _jsx(IconMenuVertical, { id: "TMPanel-FileUploader-Commands-Header", color: "white", cursor: "pointer" }) })), deviceType !== DeviceType.MOBILE && (_jsx(StyledHeaderIcon, { onClick: onClose, "$color": "white", children: _jsx(TMTooltip, { content: SDKUI_Localizator.Close, children: _jsx(IconCloseOutline, {}) }) }))] }));
111
+ ], showEvent: "click", children: _jsx(IconMenuVertical, { id: "TMPanel-FileUploader-Commands-Header", color: "white", cursor: "pointer" }) })), deviceType !== DeviceType.MOBILE && (_jsx(StyledHeaderIcon, { onClick: onClose, $color: "white", children: _jsx(TMTooltip, { content: SDKUI_Localizator.Close, children: _jsx(IconCloseOutline, {}) }) }))] }));
112
112
  }, [deviceType, fromDTD, onClose]);
113
113
  return showTMPanel ? (_jsx(TMPanel, { ref: fileUploaderPanelRef, panelID: 'file-uploader-panel', title: SDKUI_Localizator.FileUpload, onBack: deviceType === DeviceType.MOBILE ? () => onClose?.() : undefined, toolbar: toolbar, children: innerContent })) : (innerContent);
114
114
  };
115
- const UploadContainer = styled.div `
116
- position: relative;
117
- display: flex;
118
- align-items: center;
119
- justify-content: center;
120
- flex-direction: column;
121
- gap: 5px;
122
- border: 2px dashed ${props => props.$isRequired ? () => TMColors.error : () => TMColors.primaryColor};
123
- /* max-height: 100px; */
124
- width: 100%;
125
- height: 100%;
126
- border-radius: 8px;
127
- padding: 30px;
128
- text-align: center;
129
- color: ${props => props.$isRequired ? () => TMColors.error : () => TMColors.primaryColor};
130
- transition: background-color 0.3s;
131
- &:hover {
132
- background-color: #658cab;
133
- }
115
+ const UploadContainer = styled.div `
116
+ position: relative;
117
+ display: flex;
118
+ align-items: center;
119
+ justify-content: center;
120
+ flex-direction: column;
121
+ gap: 5px;
122
+ border: 2px dashed ${props => props.$isRequired ? () => TMColors.error : () => TMColors.primaryColor};
123
+ /* max-height: 100px; */
124
+ width: 100%;
125
+ height: 100%;
126
+ border-radius: 8px;
127
+ padding: 30px;
128
+ text-align: center;
129
+ color: ${props => props.$isRequired ? () => TMColors.error : () => TMColors.primaryColor};
130
+ transition: background-color 0.3s;
131
+ &:hover {
132
+ background-color: #658cab;
133
+ }
134
134
  `;
135
- const HiddenInput = styled.input `
136
- display: none;
135
+ const HiddenInput = styled.input `
136
+ display: none;
137
137
  `;
138
138
  export default TMFileUploader;