@topconsultnpm/sdkui-react 6.22.0-t1 → 6.22.0-t3

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 (286) 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 +92 -76
  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/TMAlert.js +6 -8
  11. package/lib/components/base/TMAreaManager.js +53 -55
  12. package/lib/components/base/TMButton.d.ts +13 -0
  13. package/lib/components/base/TMButton.js +139 -7
  14. package/lib/components/base/TMClosableList.js +3 -3
  15. package/lib/components/base/TMCustomButton.js +40 -48
  16. package/lib/components/base/TMDataGrid.d.ts +4 -0
  17. package/lib/components/base/TMDataGrid.js +292 -12
  18. package/lib/components/base/TMDataGridExportForm.js +39 -30
  19. package/lib/components/base/TMDropDownMenu.js +1 -1
  20. package/lib/components/base/TMEditorBase.d.ts +2 -0
  21. package/lib/components/base/TMFileManager.js +5 -3
  22. package/lib/components/base/TMFileManagerDataGridView.js +12 -3
  23. package/lib/components/base/TMFileManagerThumbnailItems.js +20 -10
  24. package/lib/components/base/TMFileManagerUtils.d.ts +6 -6
  25. package/lib/components/base/TMFileManagerUtils.js +37 -1
  26. package/lib/components/base/TMLayout.d.ts +2 -2
  27. package/lib/components/base/TMLayout.js +3 -3
  28. package/lib/components/base/TMList.js +1 -1
  29. package/lib/components/base/TMListView.js +3 -3
  30. package/lib/components/base/TMModal.d.ts +11 -0
  31. package/lib/components/base/TMModal.js +47 -13
  32. package/lib/components/base/TMPanel.d.ts +6 -0
  33. package/lib/components/base/TMPanel.js +141 -28
  34. package/lib/components/base/TMPopUp.js +5 -2
  35. package/lib/components/base/TMResizableMenu.js +2 -2
  36. package/lib/components/base/TMRightSidebar.js +1 -1
  37. package/lib/components/base/TMShowAllOrMaxItemsButton.js +1 -1
  38. package/lib/components/base/TMSpinner.d.ts +2 -1
  39. package/lib/components/base/TMSpinner.js +9 -7
  40. package/lib/components/base/TMTab.js +2 -2
  41. package/lib/components/base/TMTabControl.d.ts +106 -0
  42. package/lib/components/base/TMTabControl.js +664 -0
  43. package/lib/components/base/TMToggleButton.js +2 -2
  44. package/lib/components/base/TMToolbarCard.js +3 -3
  45. package/lib/components/base/TMTooltip.d.ts +2 -1
  46. package/lib/components/base/TMTooltip.js +24 -8
  47. package/lib/components/base/TMTreeView.d.ts +13 -7
  48. package/lib/components/base/TMTreeView.js +143 -70
  49. package/lib/components/base/TMWaitPanel.js +3 -3
  50. package/lib/components/base/waitPanel/TMWaitPanelConfirm.d.ts +12 -0
  51. package/lib/components/base/waitPanel/TMWaitPanelConfirm.js +185 -0
  52. package/lib/components/base/waitPanel/TMWaitPanelManager.d.ts +169 -0
  53. package/lib/components/base/waitPanel/TMWaitPanelManager.js +320 -0
  54. package/lib/components/base/waitPanel/TMWaitPanelView.d.ts +53 -0
  55. package/lib/components/base/waitPanel/TMWaitPanelView.js +274 -0
  56. package/lib/components/base/waitPanel/index.d.ts +1 -0
  57. package/lib/components/base/waitPanel/index.js +1 -0
  58. package/lib/components/choosers/TMCultureIDPicker.js +2 -2
  59. package/lib/components/choosers/TMDataListItemChooser.js +1 -1
  60. package/lib/components/choosers/TMDataListItemPicker.js +2 -2
  61. package/lib/components/choosers/TMDcmtTypeChooser.js +5 -4
  62. package/lib/components/choosers/TMDiskChooser.js +1 -1
  63. package/lib/components/choosers/TMDistinctValues.d.ts +9 -7
  64. package/lib/components/choosers/TMDistinctValues.js +157 -141
  65. package/lib/components/choosers/TMDynDataListItemChooser.js +1 -1
  66. package/lib/components/choosers/TMImageIDChooser.js +1 -1
  67. package/lib/components/choosers/TMMetadataChooser.js +3 -3
  68. package/lib/components/choosers/TMPathChooser.js +17 -34
  69. package/lib/components/choosers/TMQuickSearchInfo.d.ts +13 -0
  70. package/lib/components/choosers/TMQuickSearchInfo.js +279 -0
  71. package/lib/components/choosers/TMQuickSearchSettingsForm.d.ts +16 -0
  72. package/lib/components/choosers/TMQuickSearchSettingsForm.js +94 -0
  73. package/lib/components/choosers/TMRelationChooser.js +1 -1
  74. package/lib/components/choosers/TMSelectedValuesSummary.d.ts +13 -0
  75. package/lib/components/choosers/TMSelectedValuesSummary.js +89 -0
  76. package/lib/components/choosers/TMUserChooser.js +1 -1
  77. package/lib/components/editors/TMCheckBox.js +1 -1
  78. package/lib/components/editors/TMDateBox.d.ts +16 -1
  79. package/lib/components/editors/TMDateBox.js +90 -22
  80. package/lib/components/editors/TMDropDown.d.ts +3 -0
  81. package/lib/components/editors/TMDropDown.js +197 -5
  82. package/lib/components/editors/TMEditorStyled.d.ts +21 -43
  83. package/lib/components/editors/TMFormulaEditor.js +1 -1
  84. package/lib/components/editors/TMHtmlContentDisplay.js +1 -1
  85. package/lib/components/editors/TMLocalizedTextBox.js +1 -1
  86. package/lib/components/editors/TMMetadataEditor.d.ts +5 -1
  87. package/lib/components/editors/TMMetadataEditor.js +27 -23
  88. package/lib/components/editors/TMMetadataValues.js +6 -6
  89. package/lib/components/editors/TMRadioButton.js +2 -2
  90. package/lib/components/editors/TMSummary.js +3 -3
  91. package/lib/components/editors/TMTextArea.d.ts +1 -0
  92. package/lib/components/editors/TMTextArea.js +25 -17
  93. package/lib/components/editors/TMTextBox.d.ts +2 -0
  94. package/lib/components/editors/TMTextBox.js +32 -21
  95. package/lib/components/editors/TMTextExpression.js +1 -1
  96. package/lib/components/features/archive/TMArchive.js +24 -5
  97. package/lib/components/features/assistant/TMHelpOnLineChat.d.ts +29 -0
  98. package/lib/components/features/assistant/TMHelpOnLineChat.js +1384 -0
  99. package/lib/components/features/assistant/TMToppyDraggableHelpCenter.js +4 -4
  100. package/lib/components/features/assistant/TMToppySpeechBubble.js +1 -1
  101. package/lib/components/features/assistant/dataset/Designer-Suggested-Questions.json +102 -0
  102. package/lib/components/features/assistant/dataset/Login-Suggested-Questions.json +32 -0
  103. package/lib/components/features/assistant/dataset/Surfer-Suggested-Questions.json +102 -0
  104. package/lib/components/features/documents/TMBatchUpdateForm.js +22 -9
  105. package/lib/components/features/documents/TMCopyToFolderForm.js +50 -42
  106. package/lib/components/features/documents/TMDcmtBlog.d.ts +3 -0
  107. package/lib/components/features/documents/TMDcmtBlog.js +4 -4
  108. package/lib/components/features/documents/TMDcmtForm.d.ts +7 -0
  109. package/lib/components/features/documents/TMDcmtForm.js +281 -113
  110. package/lib/components/features/documents/TMDcmtFormActionButtons.d.ts +11 -0
  111. package/lib/components/features/documents/TMDcmtFormActionButtons.js +79 -9
  112. package/lib/components/features/documents/TMDcmtIcon.d.ts +1 -3
  113. package/lib/components/features/documents/TMDcmtIcon.js +8 -8
  114. package/lib/components/features/documents/TMDcmtPreview.d.ts +7 -5
  115. package/lib/components/features/documents/TMDcmtPreview.js +16 -10
  116. package/lib/components/features/documents/TMDcmtTasks.js +2 -9
  117. package/lib/components/features/documents/TMDownloadRelationViewerSection.js +1 -1
  118. package/lib/components/features/documents/TMFileUploader.js +7 -7
  119. package/lib/components/features/documents/TMMasterDetailDcmts.d.ts +2 -0
  120. package/lib/components/features/documents/TMMasterDetailDcmts.js +95 -108
  121. package/lib/components/features/documents/TMMasterInfoFields.d.ts +20 -0
  122. package/lib/components/features/documents/TMMasterInfoFields.js +185 -0
  123. package/lib/components/features/documents/TMMergeToPdfForm.d.ts +1 -2
  124. package/lib/components/features/documents/TMMergeToPdfForm.js +83 -56
  125. package/lib/components/features/documents/TMMultiMasterDetailDcmtsForm.d.ts +46 -0
  126. package/lib/components/features/documents/TMMultiMasterDetailDcmtsForm.js +320 -0
  127. package/lib/components/features/documents/TMMultiMasterDetailDcmtsUtils.d.ts +370 -0
  128. package/lib/components/features/documents/TMMultiMasterDetailDcmtsUtils.js +283 -0
  129. package/lib/components/features/documents/TMRelationViewer.d.ts +29 -9
  130. package/lib/components/features/documents/TMRelationViewer.js +310 -208
  131. package/lib/components/features/documents/copyAndMergeDcmtsShared.d.ts +1 -1
  132. package/lib/components/features/documents/relationTreeState.d.ts +32 -0
  133. package/lib/components/features/documents/relationTreeState.js +89 -0
  134. package/lib/components/features/search/TMMetadataOutputForm.js +1 -1
  135. package/lib/components/features/search/TMMetadataSorterForm.js +1 -1
  136. package/lib/components/features/search/TMSavedQuerySelector.js +2 -2
  137. package/lib/components/features/search/TMSearch.d.ts +1 -1
  138. package/lib/components/features/search/TMSearch.js +172 -34
  139. package/lib/components/features/search/TMSearchQueryEditor.js +7 -5
  140. package/lib/components/features/search/TMSearchQueryPanel.d.ts +14 -4
  141. package/lib/components/features/search/TMSearchQueryPanel.js +153 -62
  142. package/lib/components/features/search/TMSearchResult.d.ts +21 -0
  143. package/lib/components/features/search/TMSearchResult.js +461 -152
  144. package/lib/components/features/search/TMSignatureInfoContent.js +1 -1
  145. package/lib/components/features/search/TMTreeSelector.js +130 -83
  146. package/lib/components/features/search/TMViewHistoryDcmt.js +14 -25
  147. package/lib/components/features/tasks/TMTaskForm.js +1 -1
  148. package/lib/components/features/tasks/TMTaskFormUtils.js +3 -3
  149. package/lib/components/features/tasks/TMTasksAgenda.js +1 -1
  150. package/lib/components/features/tasks/TMTasksCalendar.js +1 -1
  151. package/lib/components/features/tasks/TMTasksHeader.js +1 -1
  152. package/lib/components/features/tasks/TMTasksUtilsView.js +1 -1
  153. package/lib/components/features/tasks/TMTasksView.js +97 -102
  154. package/lib/components/features/wg/TMWGsCopyMoveForm.js +92 -92
  155. package/lib/components/features/workflow/TMWorkflowPopup.d.ts +10 -0
  156. package/lib/components/features/workflow/TMWorkflowPopup.js +9 -5
  157. package/lib/components/features/workflow/diagram/ConnectionComponent.js +3 -3
  158. package/lib/components/features/workflow/diagram/DiagramItemComponent.js +3 -3
  159. package/lib/components/features/workflow/diagram/DiagramItemForm.js +1 -1
  160. package/lib/components/features/workflow/diagram/DiagramItemSvgContent.js +1 -1
  161. package/lib/components/features/workflow/diagram/RecipientList.js +1 -1
  162. package/lib/components/features/workflow/diagram/WFDiagram.js +4 -4
  163. package/lib/components/features/workflow/diagram/WorkitemRecipientsEditor.d.ts +3 -1
  164. package/lib/components/forms/Login/ChangePasswordInputs.d.ts +3 -1
  165. package/lib/components/forms/Login/Menu.js +1 -1
  166. package/lib/components/forms/Login/OTPReader.js +1 -1
  167. package/lib/components/forms/Login/PasswordStrengthChecker.js +1 -1
  168. package/lib/components/forms/Login/RapidAccessLogin.js +2 -2
  169. package/lib/components/forms/Login/RecoverPasswordFlow.js +2 -2
  170. package/lib/components/forms/Login/SelectBox.js +1 -1
  171. package/lib/components/forms/Login/StepIndicator.js +1 -1
  172. package/lib/components/forms/Login/TMLoginForm.js +7 -7
  173. package/lib/components/forms/Login/TextBox.js +1 -1
  174. package/lib/components/forms/TMApplyForm.js +3 -3
  175. package/lib/components/forms/TMChooserForm.js +1 -1
  176. package/lib/components/forms/TMResultDialog.js +1 -1
  177. package/lib/components/forms/TMSaveForm.js +3 -3
  178. package/lib/components/grids/TMBlogAttachments.js +14 -3
  179. package/lib/components/grids/TMBlogHeader.js +5 -1
  180. package/lib/components/grids/TMBlogsPost.d.ts +2 -0
  181. package/lib/components/grids/TMBlogsPost.js +122 -99
  182. package/lib/components/grids/TMBlogsPostUtils.d.ts +1 -0
  183. package/lib/components/grids/TMBlogsPostUtils.js +15 -4
  184. package/lib/components/grids/TMRecentsManager.js +4 -4
  185. package/lib/components/grids/TMValidationItemsList.js +1 -1
  186. package/lib/components/index.d.ts +6 -0
  187. package/lib/components/index.js +5 -0
  188. package/lib/components/layout/panelManager/TMPanelManagerContainer.d.ts +1 -0
  189. package/lib/components/layout/panelManager/TMPanelManagerContainer.js +25 -15
  190. package/lib/components/layout/panelManager/TMPanelManagerContext.js +68 -93
  191. package/lib/components/layout/panelManager/TMPanelManagerToolbar.d.ts +4 -5
  192. package/lib/components/layout/panelManager/TMPanelManagerToolbar.js +1 -1
  193. package/lib/components/layout/panelManager/TMPanelWrapper.js +3 -3
  194. package/lib/components/layout/panelManager/types.d.ts +3 -0
  195. package/lib/components/layout/panelManager/utils.js +13 -11
  196. package/lib/components/pages/TMPage.js +30 -32
  197. package/lib/components/query/TMQueryCountButton.js +1 -1
  198. package/lib/components/query/TMQueryEditor.d.ts +17 -10
  199. package/lib/components/query/TMQueryEditor.js +9 -8
  200. package/lib/components/sidebar/TMCommandsPanel.d.ts +4 -4
  201. package/lib/components/sidebar/TMCommandsPanel.js +1 -1
  202. package/lib/components/sidebar/TMHeader.d.ts +1 -0
  203. package/lib/components/sidebar/TMHeader.js +37 -27
  204. package/lib/components/sidebar/TMSidebar.js +1 -1
  205. package/lib/components/sidebar/TMSidebarItem.js +1 -1
  206. package/lib/components/viewers/TMMidViewer.js +6 -3
  207. package/lib/components/viewers/TMTidViewer.js +89 -28
  208. package/lib/components/wizard/TMStepIndicator.js +3 -3
  209. package/lib/css/tm-sdkui.css +1 -1
  210. package/lib/devextreme-license.d.ts +1 -0
  211. package/lib/devextreme-license.js +3 -0
  212. package/lib/helper/Enum_Localizator.d.ts +4 -4
  213. package/lib/helper/Enum_Localizator.js +1 -0
  214. package/lib/helper/Globalization.d.ts +1 -1
  215. package/lib/helper/SDKUI_Globals.d.ts +110 -0
  216. package/lib/helper/SDKUI_Globals.js +151 -0
  217. package/lib/helper/SDKUI_Localizator.d.ts +756 -677
  218. package/lib/helper/SDKUI_Localizator.js +790 -0
  219. package/lib/helper/TMAppUpdatedModal.d.ts +2 -0
  220. package/lib/helper/TMAppUpdatedModal.js +134 -0
  221. package/lib/helper/TMIcons.d.ts +1 -0
  222. package/lib/helper/TMIcons.js +4 -3
  223. package/lib/helper/TMPdfViewer.js +1 -1
  224. package/lib/helper/TMToppyMessage.js +1 -1
  225. package/lib/helper/TMUtils.d.ts +51 -4
  226. package/lib/helper/TMUtils.js +273 -12
  227. package/lib/helper/ZipManager.d.ts +1 -1
  228. package/lib/helper/ZipManager.js +2 -1
  229. package/lib/helper/checkinCheckoutManager.d.ts +1 -1
  230. package/lib/helper/checkinCheckoutManager.js +1 -1
  231. package/lib/helper/dataGridSearchHelper.d.ts +28 -0
  232. package/lib/helper/dataGridSearchHelper.js +51 -0
  233. package/lib/helper/dcmtsHelper.d.ts +22 -0
  234. package/lib/helper/dcmtsHelper.js +60 -1
  235. package/lib/helper/helpers.d.ts +24 -2
  236. package/lib/helper/helpers.js +59 -3
  237. package/lib/helper/index.d.ts +2 -0
  238. package/lib/helper/index.js +2 -0
  239. package/lib/helper/queryHelper.d.ts +6 -1
  240. package/lib/helper/queryHelper.js +8 -3
  241. package/lib/hooks/tmDistinctValuesGridHelper.d.ts +16 -0
  242. package/lib/hooks/tmDistinctValuesGridHelper.js +31 -0
  243. package/lib/hooks/useArchiveListForm.d.ts +39 -0
  244. package/lib/hooks/useArchiveListForm.js +46 -0
  245. package/lib/hooks/useCaseFlowApprove.d.ts +56 -0
  246. package/lib/hooks/useCaseFlowApprove.js +157 -0
  247. package/lib/hooks/useCheckInOutOperations.d.ts +0 -6
  248. package/lib/hooks/useCheckInOutOperations.js +14 -34
  249. package/lib/hooks/useDataUserIdItem.d.ts +1 -0
  250. package/lib/hooks/useDataUserIdItem.js +1 -0
  251. package/lib/hooks/useDcmtOperations.d.ts +3 -12
  252. package/lib/hooks/useDcmtOperations.js +187 -179
  253. package/lib/hooks/useDocumentOperations.d.ts +5 -0
  254. package/lib/hooks/useDocumentOperations.js +64 -33
  255. package/lib/hooks/useInputDialog.js +1 -1
  256. package/lib/hooks/useMultiMasterDetailDcmts.d.ts +98 -0
  257. package/lib/hooks/useMultiMasterDetailDcmts.js +758 -0
  258. package/lib/hooks/usePreventFileDrop.js +9 -0
  259. package/lib/hooks/useQueryParametersDialog.js +1 -1
  260. package/lib/hooks/useRelatedDocuments.d.ts +1 -0
  261. package/lib/hooks/useRelatedDocuments.js +22 -27
  262. package/lib/hooks/useShowDossiersV5.d.ts +12 -0
  263. package/lib/hooks/useShowDossiersV5.js +37 -0
  264. package/lib/hooks/useTMDistinctValuesMetadataDisplay.d.ts +18 -0
  265. package/lib/hooks/useTMDistinctValuesMetadataDisplay.js +103 -0
  266. package/lib/hooks/useTMDistinctValuesQuickSearch.d.ts +49 -0
  267. package/lib/hooks/useTMDistinctValuesQuickSearch.js +307 -0
  268. package/lib/hooks/useTMDistinctValuesSelection.d.ts +42 -0
  269. package/lib/hooks/useTMDistinctValuesSelection.js +103 -0
  270. package/lib/hooks/useTMDistinctValuesSource.d.ts +29 -0
  271. package/lib/hooks/useTMDistinctValuesSource.js +105 -0
  272. package/lib/hooks/useWorkflowApprove.js +33 -17
  273. package/lib/index.d.ts +2 -0
  274. package/lib/index.js +5 -2
  275. package/lib/services/caseflow/CaseFlowService.d.ts +277 -0
  276. package/lib/services/caseflow/CaseFlowService.js +761 -0
  277. package/lib/services/caseflow/CaseFlowTemplateCacheService.d.ts +28 -0
  278. package/lib/services/caseflow/CaseFlowTemplateCacheService.js +121 -0
  279. package/lib/services/caseflow/caseFlowNameCache.d.ts +32 -0
  280. package/lib/services/caseflow/caseFlowNameCache.js +116 -0
  281. package/lib/services/caseflow/caseFlowWorkItemUtils.d.ts +61 -0
  282. package/lib/services/caseflow/caseFlowWorkItemUtils.js +113 -0
  283. package/lib/services/index.d.ts +4 -0
  284. package/lib/services/index.js +4 -0
  285. package/lib/services/platform_services.d.ts +4 -4
  286. package/package.json +16 -13
@@ -86,6 +86,8 @@ interface TMBlogsPostProps {
86
86
  addTaskCallback?: (task: TaskDescriptor) => Promise<void>;
87
87
  handleNavigateToWGs?: (value: HomeBlogPost | number) => Promise<void>;
88
88
  handleNavigateToDossiers?: (value: HomeBlogPost | number) => Promise<void>;
89
+ /** Apre la pratica CaseFlow di una notizia con `classID === 'CF'` (bacheca Home V6). */
90
+ handleNavigateToCaseflows?: (value: HomeBlogPost | number) => Promise<void>;
89
91
  }
90
92
  declare const TMBlogsPost: (props: TMBlogsPostProps) => React.JSX.Element;
91
93
  export default TMBlogsPost;
@@ -5,12 +5,14 @@ import { ContextMenu as TMContextMenu } from "../NewComponents/ContextMenu";
5
5
  import { SDKUI_Localizator, Globalization, getExceptionMessage, TMConditionalWrapper, getMoreInfoTasksForDocument, taskModalSizes } from "../../helper";
6
6
  import TMToppyMessage from "../../helper/TMToppyMessage";
7
7
  import { useDcmtOperations } from "../../hooks/useDcmtOperations";
8
+ import { CaseFlowService } from "../../services/caseflow/CaseFlowService";
8
9
  import { DownloadTypes, FormModes } from "../../ts";
9
10
  import { TMColors } from "../../utils/theme";
10
11
  import ShowAlert from "../base/TMAlert";
11
12
  import { TMMessageBoxManager, ButtonNames } from "../base/TMPopUp";
12
13
  import TMTooltip from "../base/TMTooltip";
13
- import { TMLayoutWaitingContainer } from "../base/TMWaitPanel";
14
+ import TMLayoutContainer from "../base/TMLayout";
15
+ import TMWaitPanelManager from "../base/waitPanel/TMWaitPanelManager";
14
16
  import TMHtmlContentDisplay from "../editors/TMHtmlContentDisplay";
15
17
  import TMDcmtForm from "../features/documents/TMDcmtForm";
16
18
  import { TMResultManager } from "../forms/TMResultDialog";
@@ -21,7 +23,11 @@ import TMTaskForm from "../features/tasks/TMTaskForm";
21
23
  import { useDeviceType } from "../base/TMDeviceProvider";
22
24
  let localAbortController = new AbortController();
23
25
  const TMBlogsPost = (props) => {
24
- const { scrollToSelected, id, posts, displayMode = "stacked", height = "100%", width = "100%", scrollToBottom = true, header, showExtendedAttachments = true, treeFs, draftLatestInfoMap, archivedDocumentMap, context, participants, contextMenuParams = {
26
+ const { scrollToSelected, id,
27
+ // Difensivo: `posts` e' obbligatoria nei tipi, ma a runtime puo' arrivare
28
+ // undefined (dato non ancora caricato o risposta parziale del server):
29
+ // il default evita i crash su filter/length.
30
+ posts = [], displayMode = "stacked", height = "100%", width = "100%", scrollToBottom = true, header, showExtendedAttachments = true, treeFs, draftLatestInfoMap, archivedDocumentMap, context, participants, contextMenuParams = {
25
31
  isShowHideFilterEnabled: true,
26
32
  isShowHideIDEnaled: true,
27
33
  isCommentEnabled: false,
@@ -32,8 +38,8 @@ const TMBlogsPost = (props) => {
32
38
  isRestoreEnabled: false,
33
39
  isRefreshEnabled: false,
34
40
  isCreateContextualTask: false,
35
- }, showFloatingCommentButton = false, showCommentFormCallback, refreshCallback, showId, setShowId, refreshHomePageNews, markBlogAsRead, externalBlogPost, resetExternalBlogPost, visible = true, allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTaskCallback, editTaskCallback, afterTaskSaved, handleNavigateToWGs, handleNavigateToDossiers, } = props;
36
- const { abortController, showWaitPanel, waitPanelTitle, showPrimary, waitPanelTextPrimary, waitPanelValuePrimary, waitPanelMaxValuePrimary, showSecondary, waitPanelTextSecondary, waitPanelValueSecondary, waitPanelMaxValueSecondary, downloadDcmtsAsync } = useDcmtOperations();
41
+ }, showFloatingCommentButton = false, showCommentFormCallback, refreshCallback, showId, setShowId, refreshHomePageNews, markBlogAsRead, externalBlogPost, resetExternalBlogPost, visible = true, allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTaskCallback, editTaskCallback, afterTaskSaved, handleNavigateToWGs, handleNavigateToDossiers, handleNavigateToCaseflows, } = props;
42
+ const { downloadDcmtsAsync } = useDcmtOperations();
37
43
  // Get the current device type (e.g., mobile, tablet, desktop) using a custom hook.
38
44
  const deviceType = useDeviceType();
39
45
  const bottomRef = useRef(null);
@@ -72,12 +78,6 @@ const TMBlogsPost = (props) => {
72
78
  const [menuVisible, setMenuVisible] = useState(false);
73
79
  const [menuPosition, setMenuPosition] = useState({ x: 0, y: 0 });
74
80
  const [menuItems, setMenuItems] = useState([]);
75
- const [localShowWaitPanel, setLocalShowWaitPanel] = useState(false);
76
- const [localWaitPanelTitle, setLocalWaitPanelTitle] = useState('');
77
- const [localShowPrimary, setLocalShowPrimary] = useState(false);
78
- const [localWaitPanelTextPrimary, setLocalWaitPanelTextPrimary] = useState('');
79
- const [localWaitPanelValuePrimary, setLocalWaitPanelValuePrimary] = useState(0);
80
- const [localWaitPanelMaxValuePrimary, setLocalWaitPanelMaxValuePrimary] = useState(0);
81
81
  const handleFocusedItem = (item) => {
82
82
  setFocusedAttachment(undefined);
83
83
  setFocusedItem(item);
@@ -292,6 +292,8 @@ const TMBlogsPost = (props) => {
292
292
  handleNavigateToWGs(blogPost);
293
293
  if (handleNavigateToDossiers && id && blogPost.classID === 'DS')
294
294
  handleNavigateToDossiers(blogPost);
295
+ if (handleNavigateToCaseflows && id && blogPost.classID === 'CF')
296
+ handleNavigateToCaseflows(blogPost);
295
297
  };
296
298
  const handleKeyDown = (event) => {
297
299
  if (!selectedItem.length)
@@ -324,6 +326,9 @@ const TMBlogsPost = (props) => {
324
326
  if (handleNavigateToDossiers && item.id && classItemID === 'DS') {
325
327
  handleNavigateToDossiers(item);
326
328
  }
329
+ if (handleNavigateToCaseflows && item.id && classItemID === 'CF') {
330
+ handleNavigateToCaseflows(item);
331
+ }
327
332
  break;
328
333
  default:
329
334
  break;
@@ -367,6 +372,17 @@ const TMBlogsPost = (props) => {
367
372
  result.push({ rowIndex: currentBlog.id, id1: currentBlog.id, id2: currentBlog.id, resultType: ResultTypes.ERROR, description: getExceptionMessage(err) });
368
373
  });
369
374
  break;
375
+ case 'CF':
376
+ // La notizia porta il solo CFIID: il template (cftid) che l'API
377
+ // richiede lo risolve CaseFlowService.setFollow.
378
+ await CaseFlowService.setFollow(currentBlog.id, false).then(async () => {
379
+ result.push({ rowIndex: currentBlog.id, id1: currentBlog.id, id2: currentBlog.id, description: SDKUI_Localizator.OperationSuccess, resultType: ResultTypes.SUCCESS });
380
+ refreshHomePageNews?.();
381
+ })
382
+ .catch((err) => {
383
+ result.push({ rowIndex: currentBlog.id, id1: currentBlog.id, id2: currentBlog.id, resultType: ResultTypes.ERROR, description: getExceptionMessage(err) });
384
+ });
385
+ break;
370
386
  default:
371
387
  ShowAlert({ message: 'TODO', mode: 'warning', title: SDKUI_Localizator.Unfollow, duration: 3000 });
372
388
  break;
@@ -409,18 +425,22 @@ const TMBlogsPost = (props) => {
409
425
  || (context.engine === 'DossierEngine' && !context.object.id)) {
410
426
  return Promise.resolve();
411
427
  }
412
- setLocalWaitPanelTitle(del ? SDKUI_Localizator.Delete : SDKUI_Localizator.Restore);
413
- setLocalShowWaitPanel(true);
414
- setLocalShowPrimary(true);
428
+ const operationTitle = del ? SDKUI_Localizator.Delete : SDKUI_Localizator.Restore;
415
429
  localAbortController = new AbortController();
430
+ const panel = TMWaitPanelManager.show({
431
+ title: operationTitle,
432
+ max: 1,
433
+ showCounters: false,
434
+ cancelable: true,
435
+ onAbort: () => localAbortController.abort(),
436
+ });
416
437
  let result = [];
417
438
  let i = 0;
418
- setLocalWaitPanelMaxValuePrimary(1);
419
439
  if (localAbortController.signal.aborted) {
420
440
  result.push({ rowIndex: i, id1: currentBlog.id, id2: currentBlog.id, resultType: ResultTypes.WARNING, description: `Operazione interrotta. Elaborate ${i}` });
421
441
  }
422
442
  else {
423
- setLocalWaitPanelTextPrimary(del ? SDKUI_Localizator.Delete : SDKUI_Localizator.Restore);
443
+ panel.setSubtitle(operationTitle);
424
444
  if (context.engine === 'WorkingGroupEngine' && context.object.id) {
425
445
  const workingGroupEngine = new WorkingGroupEngine(SDK_Globals.tmSession);
426
446
  await workingGroupEngine.BlogPostDeleteOrUndeleteAsync(context.object.id, currentBlog.id, del)
@@ -458,10 +478,7 @@ const TMBlogsPost = (props) => {
458
478
  });
459
479
  }
460
480
  }
461
- setLocalWaitPanelTextPrimary('');
462
- setLocalWaitPanelMaxValuePrimary(0);
463
- setLocalWaitPanelValuePrimary(0);
464
- setLocalShowWaitPanel(false);
481
+ panel.close();
465
482
  }
466
483
  });
467
484
  };
@@ -570,7 +587,7 @@ const TMBlogsPost = (props) => {
570
587
  beginGroup: true
571
588
  });
572
589
  }
573
- if (targetItem && Boolean(classId && (classId === 'WG' || classId === 'DS'))) {
590
+ if (targetItem && Boolean(classId && (classId === 'WG' || classId === 'DS' || classId === 'CF'))) {
574
591
  menuItems.push({
575
592
  icon: _jsx("span", { className: "dx-icon-eyeclose" }),
576
593
  name: SDKUI_Localizator.Unfollow,
@@ -632,91 +649,97 @@ const TMBlogsPost = (props) => {
632
649
  else
633
650
  console.log("Working Group reference missing objID");
634
651
  break;
652
+ case ObjectClasses.CaseFlowInstance:
653
+ if (ref.objID)
654
+ handleNavigateToCaseflows?.(ref.objID);
655
+ else
656
+ console.log("CaseFlow instance reference missing objID");
657
+ break;
635
658
  // Handle other object types as needed
636
659
  default:
637
660
  console.warn(`Unhandled object type: ${ref.objClass}`);
638
661
  }
639
662
  };
640
- return _jsx("div", { ref: containerRef, style: { height: height, width: width }, children: _jsx(TMLayoutWaitingContainer, { direction: 'vertical', showWaitPanel: showWaitPanel, showWaitPanelPrimary: showPrimary, showWaitPanelSecondary: showSecondary, waitPanelTitle: waitPanelTitle, waitPanelTextPrimary: waitPanelTextPrimary, waitPanelValuePrimary: waitPanelValuePrimary, waitPanelMaxValuePrimary: waitPanelMaxValuePrimary, waitPanelTextSecondary: waitPanelTextSecondary, waitPanelValueSecondary: waitPanelValueSecondary, waitPanelMaxValueSecondary: waitPanelMaxValueSecondary, isCancelable: true, abortController: abortController, children: _jsxs(TMLayoutWaitingContainer, { direction: 'vertical', showWaitPanel: localShowWaitPanel, showWaitPanelPrimary: localShowPrimary, waitPanelTitle: localWaitPanelTitle, waitPanelTextPrimary: localWaitPanelTextPrimary, waitPanelValuePrimary: localWaitPanelValuePrimary, waitPanelMaxValuePrimary: localWaitPanelMaxValuePrimary, isCancelable: true, abortController: localAbortController, children: [_jsx(TMBlogHeader, { isVisible: currentHeader !== undefined && !isHeaderHidden, layoutMode: layoutMode, height: layoutMode === 'extended' ? "40px" : "70px", width: "100%", allPosts: posts, postsToShow: postsToShow, onPostsToShowChange: handlePostsToShowChange, categoryIdDataSource: categoryIdDataSource, appliedCategoryIdFilters: appliedCategoryIdFilters, setAppliedCategoryIdFilters: setAppliedCategoryIdFilters, searchText: searchText, onSearchChange: handleSearchChange }), _jsxs("div", { id: `${id}-blogs-wrapper`, onContextMenu: onContextMenu, style: {
641
- width: "100%",
642
- height: currentHeader !== undefined && !isHeaderHidden ? `calc(100% - ${layoutMode === 'extended' ? "40px" : "70px"})` : "100%",
643
- }, children: [blogPosts.length === 0 && _jsx(TMToppyMessage, { message: searchText.length > 0 ? SDKUI_Localizator.NoMessagesFound : SDKUI_Localizator.NoMessages }), blogPosts.length > 0 && _jsxs("div", { id: `${id}-blogs-container`, tabIndex: 0, onKeyDown: handleKeyDown, style: {
644
- height: '100%',
645
- width: '100%',
646
- outline: "none",
647
- display: "flex",
648
- flexDirection: "column",
649
- rowGap: "10px",
650
- overflowY: "auto",
651
- padding: "5px",
652
- backgroundColor: displayMode === 'stacked' ? "#e0e0e0" : "#fff"
653
- }, children: [blogPosts.map((blogPost) => {
654
- const isSelected = selectedItem.some(item => item.id === blogPost.id);
655
- const isFocused = focusedItem?.id === blogPost.id;
656
- const isHomeBlogPost = Boolean(blogPost.header?.trim());
657
- const isNew = Boolean(blogPost.newPosts ?? blogPost.customData1);
658
- const isOwnComment = blogPost.ownerID === SDK_Globals.tmSession?.SessionDescr?.userID;
659
- const isSys = blogPost.isSys === 1;
660
- return _jsxs(React.Fragment, { children: [(firstUnreadPost && blogPost.id === firstUnreadPost.id) && (_jsxs("div", { style: { display: 'flex', alignItems: 'center', width: '100%', color: TMColors.primary, fontWeight: '600', fontSize: '0.9rem', userSelect: 'none', marginTop: "12px", marginBottom: "12px" }, children: [_jsx("hr", { style: { flex: 1, border: 'none', borderTop: `1px solid ${TMColors.primary}`, marginRight: '15px' } }), _jsx("span", { children: SDKUI_Localizator.LastRead }), _jsx("hr", { style: { flex: 1, border: 'none', borderTop: `1px solid ${TMColors.primary}`, marginLeft: '15px' } })] })), _jsx(TMConditionalWrapper, { condition: displayMode === "chat", wrapper: children => _jsx("div", { style: {
661
- display: "flex",
662
- flexDirection: "row",
663
- alignItems: "flex-start",
664
- padding: "2px",
665
- borderRadius: "12px",
666
- cursor: "default",
667
- justifyContent: isOwnComment ? "flex-end" : "flex-start",
668
- }, children: _jsx("div", { style: {
669
- display: "flex",
670
- flexDirection: "column",
671
- alignItems: isOwnComment ? "flex-end" : "flex-start",
672
- textAlign: "left",
673
- maxWidth: '90%',
674
- borderRadius: '8px',
675
- }, children: children }) }), children: _jsxs("div", { id: `${id}-blogpost-${blogPost.id}`, onMouseEnter: () => handleMouseEnter(blogPost), onMouseLeave: handleMouseLeave, onClick: () => handleClick(blogPost), onDoubleClick: () => handleDoubleClick(blogPost), style: {
663
+ return _jsx("div", { ref: containerRef, style: { height: height, width: width }, children: _jsxs(TMLayoutContainer, { direction: 'vertical', children: [_jsx(TMBlogHeader, { isVisible: currentHeader !== undefined && !isHeaderHidden, layoutMode: layoutMode, height: layoutMode === 'extended' ? "40px" : "70px", width: "100%", allPosts: posts, postsToShow: postsToShow, onPostsToShowChange: handlePostsToShowChange, categoryIdDataSource: categoryIdDataSource, appliedCategoryIdFilters: appliedCategoryIdFilters, setAppliedCategoryIdFilters: setAppliedCategoryIdFilters, searchText: searchText, onSearchChange: handleSearchChange }), _jsxs("div", { id: `${id}-blogs-wrapper`, onContextMenu: onContextMenu, style: {
664
+ width: "100%",
665
+ height: currentHeader !== undefined && !isHeaderHidden ? `calc(100% - ${layoutMode === 'extended' ? "40px" : "70px"})` : "100%",
666
+ }, children: [blogPosts.length === 0 && _jsx(TMToppyMessage, { message: searchText.length > 0 ? SDKUI_Localizator.NoMessagesFound : SDKUI_Localizator.NoMessages }), blogPosts.length > 0 && _jsxs("div", { id: `${id}-blogs-container`, tabIndex: 0, onKeyDown: handleKeyDown, style: {
667
+ height: '100%',
668
+ width: '100%',
669
+ outline: "none",
670
+ display: "flex",
671
+ flexDirection: "column",
672
+ rowGap: "10px",
673
+ overflowY: "auto",
674
+ padding: "5px",
675
+ backgroundColor: displayMode === 'stacked' ? "#e0e0e0" : "#fff"
676
+ }, children: [blogPosts.map((blogPost) => {
677
+ const isSelected = selectedItem.some(item => item.id === blogPost.id);
678
+ const isFocused = focusedItem?.id === blogPost.id;
679
+ const isHomeBlogPost = Boolean(blogPost.header?.trim());
680
+ const isNew = Boolean(blogPost.newPosts ?? blogPost.customData1);
681
+ const isOwnComment = blogPost.ownerID === SDK_Globals.tmSession?.SessionDescr?.userID;
682
+ const isSys = blogPost.isSys === 1;
683
+ return _jsxs(React.Fragment, { children: [(firstUnreadPost && blogPost.id === firstUnreadPost.id) && (_jsxs("div", { style: { display: 'flex', alignItems: 'center', width: '100%', color: TMColors.primary, fontWeight: '600', fontSize: '0.9rem', userSelect: 'none', marginTop: "12px", marginBottom: "12px" }, children: [_jsx("hr", { style: { flex: 1, border: 'none', borderTop: `1px solid ${TMColors.primary}`, marginRight: '15px' } }), _jsx("span", { children: SDKUI_Localizator.LastRead }), _jsx("hr", { style: { flex: 1, border: 'none', borderTop: `1px solid ${TMColors.primary}`, marginLeft: '15px' } })] })), _jsx(TMConditionalWrapper, { condition: displayMode === "chat", wrapper: children => _jsx("div", { style: {
684
+ display: "flex",
685
+ flexDirection: "row",
686
+ alignItems: "flex-start",
687
+ padding: "2px",
688
+ borderRadius: "12px",
689
+ cursor: "default",
690
+ justifyContent: isOwnComment ? "flex-end" : "flex-start",
691
+ }, children: _jsx("div", { style: {
676
692
  display: "flex",
677
693
  flexDirection: "column",
678
- width: "100%",
679
- position: "relative",
680
- backgroundColor: isSelected ? "#135596"
681
- : displayMode === 'stacked' ? "#f9f9f9" : isOwnComment ? '#D9EFE0' : '#F3E6E6',
682
- transition: "all 0.2s ease",
683
- color: isSys ? "#ff0000" : isSelected ? "#ffffff" : TMColors.primary,
684
- borderRadius: "5px",
685
- padding: isHomeBlogPost ? '10px' : `10px ${isOwnComment ? '50px' : '10px'} 10px 10px`,
686
- borderLeft: "5px solid transparent",
687
- textDecoration: blogPost.isDel ? 'line-through' : 'none',
688
- boxShadow: isFocused ? "0 4px 12px rgba(19, 85, 150, 0.6)" : "none",
689
- cursor: 'pointer',
690
- }, children: [_jsx(BlogPostTitle, { displayMode: displayMode, layoutMode: layoutMode, blogPost: blogPost, isSelected: isSelected, isOwnComment: isOwnComment, searchText: searchText, isSys: isSys, isHomeBlogPost: isHomeBlogPost, showId: localShowId, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers }), isNew && _jsx(NewBadge, { layoutMode: layoutMode }), _jsx("div", { style: { fontSize: '1rem', color: "#000", marginTop: "10px", overflow: "hidden" }, children: _jsx(TMHtmlContentDisplay, { markup: blogPost.description ?? '-', searchText: searchText, isSelected: isSelected }) }), showExtendedAttachments && blogPost.attachments && blogPost.attachments.length > 0 && (_jsx(TMBlogAttachments, { attachments: blogPost.attachments, layoutMode: layoutMode, isSelected: isSelected, isLoading: !descriptorsLoaded, searchText: searchText, dcmtTypeDescriptors: dcmtTypeDescriptors, treeFs: treeFs, draftLatestInfoMap: draftLatestInfoMap, archivedDocumentMap: archivedDocumentMap, handleAttachmentFocus: handleFocusedAttachment, openDcmtForm: openDcmtForm }))] }, `${id}-blogpost-${blogPost.id}`) })] }, "blog-post-wrapper-" + id + "-" + blogPost.id);
691
- }), _jsx("div", { ref: bottomRef })] }), _jsx(TMContextMenu, { items: menuItems, target: `#${id}-blogs-wrapper`, externalControl: {
692
- visible: menuVisible,
693
- position: menuPosition,
694
- onClose: closeContextMenu,
695
- } }), (showTaskForm && handleNavigateToWGs && handleNavigateToDossiers && getAllTasks && deleteTaskByIdsCallback && addTaskCallback && editTaskCallback) && _jsx("div", { style: { height: "100%", width: "100%" }, children: _jsx(TMTaskForm, { id: -1, title: SDKUI_Localizator.ContextualTask, isModal: true, width: taskModalSizes(deviceType, FormModes.Create).width, height: taskModalSizes(deviceType, FormModes.Create).height, formMode: FormModes.Create, visualizedTasks: [], currentTask: currentTask, setCurrentTask: () => { }, selectedRowKeys: [], handleFocusedRowKeyChange: () => { }, onStatusChanged: () => { }, onSaved: onSavedTaskFormCallback, onClose: () => closeTaskFormCallback(), onCancel: () => closeTaskFormCallback(), usersList: participants, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers, isContextualCreate: true, taskContext: taskContext, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback }) }), (dcmtForm.dcmt && dcmtForm.dcmt.TID && dcmtForm.dcmt.DID) && _jsx(TMDcmtForm, { TID: Number(dcmtForm.dcmt.TID), DID: Number(dcmtForm.dcmt.DID), layoutMode: LayoutModes.Update, onClose: closeDcmtForm, isClosable: true, titleModal: SDKUI_Localizator.Attachment + ": " + dcmtForm.dcmt.fileName, isModal: true, widthModal: "95%", heightModal: "95%", allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers, onReferenceClick: handleNavigateToReference, moreInfoTasks: getMoreInfoTasksForDocument(allTasks, Number(dcmtForm.dcmt.TID), Number(dcmtForm.dcmt.DID)) }), (showFloatingCommentButton && showCommentFormCallback && !(context?.engine === 'WorkingGroupEngine' && context?.object?.customData1 === 1)) && _jsx("button", { style: {
696
- position: 'absolute',
697
- bottom: '18px',
698
- right: '20px',
699
- width: '40px',
700
- height: '40px',
701
- borderRadius: "50%",
702
- backgroundColor: "#C2388B",
703
- color: '#fff',
704
- border: 'none',
705
- cursor: 'pointer',
706
- boxShadow: '0 2px 6px rgba(0,0,0,0.2)',
707
- zIndex: 1000,
708
- transition: 'background-color 0.3s ease, transform 0.2s ease',
709
- display: 'flex',
710
- justifyContent: 'center',
711
- alignItems: 'center',
712
- }, onMouseEnter: (e) => {
713
- e.currentTarget.style.backgroundColor = '#D94A9F';
714
- e.currentTarget.style.transform = 'scale(1.1)';
715
- e.currentTarget.style.boxShadow = '0 4px 12px rgba(37, 89, 165, 0.6)';
716
- }, onMouseLeave: (e) => {
717
- e.currentTarget.style.backgroundColor = "#C2388B";
718
- e.currentTarget.style.transform = 'scale(1)';
719
- e.currentTarget.style.boxShadow = '0 2px 6px rgba(0,0,0,0.2)';
720
- }, onClick: () => { showCommentFormCallback(undefined); }, children: _jsx(TMTooltip, { content: SDKUI_Localizator.AddNewComment, children: _jsx("i", { className: "dx-icon-chat", style: { fontSize: '25px' } }) }) })] })] }) }) });
694
+ alignItems: isOwnComment ? "flex-end" : "flex-start",
695
+ textAlign: "left",
696
+ maxWidth: '90%',
697
+ borderRadius: '8px',
698
+ }, children: children }) }), children: _jsxs("div", { id: `${id}-blogpost-${blogPost.id}`, onMouseEnter: () => handleMouseEnter(blogPost), onMouseLeave: handleMouseLeave, onClick: () => handleClick(blogPost), onDoubleClick: () => handleDoubleClick(blogPost), style: {
699
+ display: "flex",
700
+ flexDirection: "column",
701
+ width: "100%",
702
+ position: "relative",
703
+ backgroundColor: isSelected ? "#135596"
704
+ : displayMode === 'stacked' ? "#f9f9f9" : isOwnComment ? '#D9EFE0' : '#F3E6E6',
705
+ transition: "all 0.2s ease",
706
+ color: isSys ? "#ff0000" : isSelected ? "#ffffff" : TMColors.primary,
707
+ borderRadius: "5px",
708
+ padding: isHomeBlogPost ? '10px' : `10px ${isOwnComment ? '50px' : '10px'} 10px 10px`,
709
+ borderLeft: "5px solid transparent",
710
+ textDecoration: blogPost.isDel ? 'line-through' : 'none',
711
+ boxShadow: isFocused ? "0 4px 12px rgba(19, 85, 150, 0.6)" : "none",
712
+ cursor: 'pointer',
713
+ }, children: [_jsx(BlogPostTitle, { displayMode: displayMode, layoutMode: layoutMode, blogPost: blogPost, isSelected: isSelected, isOwnComment: isOwnComment, searchText: searchText, isSys: isSys, isHomeBlogPost: isHomeBlogPost, showId: localShowId, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers, handleNavigateToCaseflows: handleNavigateToCaseflows }), isNew && _jsx(NewBadge, { layoutMode: layoutMode }), _jsx("div", { style: { fontSize: '1rem', color: "#000", marginTop: "10px", overflow: "hidden" }, children: _jsx(TMHtmlContentDisplay, { markup: blogPost.description ?? '-', searchText: searchText, isSelected: isSelected }) }), showExtendedAttachments && blogPost.attachments && blogPost.attachments.length > 0 && (_jsx(TMBlogAttachments, { attachments: blogPost.attachments, layoutMode: layoutMode, isSelected: isSelected, isLoading: !descriptorsLoaded, searchText: searchText, dcmtTypeDescriptors: dcmtTypeDescriptors, treeFs: treeFs, draftLatestInfoMap: draftLatestInfoMap, archivedDocumentMap: archivedDocumentMap, handleAttachmentFocus: handleFocusedAttachment, openDcmtForm: openDcmtForm }))] }, `${id}-blogpost-${blogPost.id}`) })] }, "blog-post-wrapper-" + id + "-" + blogPost.id);
714
+ }), _jsx("div", { ref: bottomRef })] }), _jsx(TMContextMenu, { items: menuItems, target: `#${id}-blogs-wrapper`, externalControl: {
715
+ visible: menuVisible,
716
+ position: menuPosition,
717
+ onClose: closeContextMenu,
718
+ } }), (showTaskForm && handleNavigateToWGs && handleNavigateToDossiers && getAllTasks && deleteTaskByIdsCallback && addTaskCallback && editTaskCallback) && _jsx("div", { style: { height: "100%", width: "100%" }, children: _jsx(TMTaskForm, { id: -1, title: SDKUI_Localizator.ContextualTask, isModal: true, width: taskModalSizes(deviceType, FormModes.Create).width, height: taskModalSizes(deviceType, FormModes.Create).height, formMode: FormModes.Create, visualizedTasks: [], currentTask: currentTask, setCurrentTask: () => { }, selectedRowKeys: [], handleFocusedRowKeyChange: () => { }, onStatusChanged: () => { }, onSaved: onSavedTaskFormCallback, onClose: () => closeTaskFormCallback(), onCancel: () => closeTaskFormCallback(), usersList: participants, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers, isContextualCreate: true, taskContext: taskContext, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback }) }), (dcmtForm.dcmt && dcmtForm.dcmt.TID && dcmtForm.dcmt.DID) && _jsx(TMDcmtForm, { TID: Number(dcmtForm.dcmt.TID), DID: Number(dcmtForm.dcmt.DID), layoutMode: LayoutModes.Update, onClose: closeDcmtForm, isClosable: true, titleModal: SDKUI_Localizator.Attachment + ": " + dcmtForm.dcmt.fileName, isModal: true, widthModal: "95%", heightModal: "95%", allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers, onReferenceClick: handleNavigateToReference, moreInfoTasks: getMoreInfoTasksForDocument(allTasks, Number(dcmtForm.dcmt.TID), Number(dcmtForm.dcmt.DID)) }), (showFloatingCommentButton && showCommentFormCallback && !(context?.engine === 'WorkingGroupEngine' && context?.object?.customData1 === 1)) && _jsx("button", { style: {
719
+ position: 'absolute',
720
+ bottom: '18px',
721
+ right: '20px',
722
+ width: '40px',
723
+ height: '40px',
724
+ borderRadius: "50%",
725
+ backgroundColor: "#C2388B",
726
+ color: '#fff',
727
+ border: 'none',
728
+ cursor: 'pointer',
729
+ boxShadow: '0 2px 6px rgba(0,0,0,0.2)',
730
+ zIndex: 1000,
731
+ transition: 'background-color 0.3s ease, transform 0.2s ease',
732
+ display: 'flex',
733
+ justifyContent: 'center',
734
+ alignItems: 'center',
735
+ }, onMouseEnter: (e) => {
736
+ e.currentTarget.style.backgroundColor = '#D94A9F';
737
+ e.currentTarget.style.transform = 'scale(1.1)';
738
+ e.currentTarget.style.boxShadow = '0 4px 12px rgba(37, 89, 165, 0.6)';
739
+ }, onMouseLeave: (e) => {
740
+ e.currentTarget.style.backgroundColor = "#C2388B";
741
+ e.currentTarget.style.transform = 'scale(1)';
742
+ e.currentTarget.style.boxShadow = '0 2px 6px rgba(0,0,0,0.2)';
743
+ }, onClick: () => { showCommentFormCallback(undefined); }, children: _jsx(TMTooltip, { content: SDKUI_Localizator.AddNewComment, children: _jsx("i", { className: "dx-icon-chat", style: { fontSize: '25px' } }) }) })] })] }) });
721
744
  };
722
745
  export default TMBlogsPost;
@@ -109,6 +109,7 @@ interface BlogPostTitleProps {
109
109
  showId: boolean;
110
110
  handleNavigateToWGs?: (blogPost: BlogPost | HomeBlogPost) => void;
111
111
  handleNavigateToDossiers?: (blogPost: BlogPost | HomeBlogPost) => void;
112
+ handleNavigateToCaseflows?: (blogPost: BlogPost | HomeBlogPost) => void;
112
113
  }
113
114
  export declare const BlogPostTitle: (props: BlogPostTitleProps) => React.JSX.Element;
114
115
  export declare const stripHtml: (html: string) => string;
@@ -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 { DcmtTypeListCacheService } from "@topconsultnpm/sdk-ts";
3
3
  import { getAvatarColor, extractInitialsFromName, SDKUI_Localizator, formatBytes, IconMenuCAWorkingGroups, IconCADossier, Globalization, PDGS_COLORS } from "../../helper";
4
4
  import { TMColors } from "../../utils/theme";
@@ -162,8 +162,16 @@ export const getDcmtTypeDescriptor = async (blogPosts) => {
162
162
  return dcmtTypeMap;
163
163
  };
164
164
  export const BlogPostHomeHeader = (header, classId, isSelected, searchText, headerClickCallback) => {
165
+ // 'CF' = istanza di CaseFlow (bacheca Home V6). Attenzione: nel mondo dei
166
+ // task PdGs.CF indica invece la pratica-dossier; qui il dominio e' il
167
+ // ClassID di HomeBlogPost, dove 'DS' e' la pratica e 'CF' la pratica CaseFlow.
165
168
  const isWorkGroup = classId === 'WG';
166
- const iconColor = isSelected ? '#ffffff' : isWorkGroup ? PDGS_COLORS.WORKING_GROUP : PDGS_COLORS.DOSSIER;
169
+ const isCaseFlow = classId === 'CF';
170
+ const iconColor = isSelected
171
+ ? '#ffffff'
172
+ : isWorkGroup ? PDGS_COLORS.WORKING_GROUP
173
+ : isCaseFlow ? PDGS_COLORS.CASEFLOW
174
+ : PDGS_COLORS.DOSSIER;
167
175
  return (_jsxs("div", { style: {
168
176
  display: "flex",
169
177
  alignItems: "center",
@@ -171,7 +179,7 @@ export const BlogPostHomeHeader = (header, classId, isSelected, searchText, head
171
179
  fontWeight: "bold",
172
180
  color: isSelected ? "#fff" : TMColors.primary,
173
181
  gap: "4px",
174
- }, children: [_jsx(TMTooltip, { content: isWorkGroup ? SDKUI_Localizator.WorkGroup : SDKUI_Localizator.Dossier, children: isWorkGroup ? (_jsx(IconMenuCAWorkingGroups, { color: iconColor, fontSize: 28, onClick: headerClickCallback })) : (_jsx(IconCADossier, { color: iconColor, fontSize: 28, onClick: headerClickCallback })) }), _jsx("div", { onClick: headerClickCallback, style: {
182
+ }, children: [_jsx(TMTooltip, { content: isWorkGroup ? SDKUI_Localizator.WorkGroup : isCaseFlow ? "CaseFlow" : SDKUI_Localizator.Dossier, children: isWorkGroup ? (_jsx(IconMenuCAWorkingGroups, { color: iconColor, fontSize: 28, onClick: headerClickCallback })) : isCaseFlow ? (_jsx(IconCADossier, { color: iconColor, fontSize: 28, onClick: headerClickCallback })) : (_jsx(IconCADossier, { color: iconColor, fontSize: 28, onClick: headerClickCallback })) }), _jsx("div", { onClick: headerClickCallback, style: {
175
183
  whiteSpace: "nowrap",
176
184
  overflow: "hidden",
177
185
  textOverflow: "ellipsis",
@@ -218,7 +226,7 @@ export const removeFileExtension = (filename) => {
218
226
  return filename.includes('.') ? filename.substring(0, filename.lastIndexOf('.')) : filename;
219
227
  };
220
228
  export const BlogPostTitle = (props) => {
221
- const { displayMode, layoutMode, blogPost, isSelected, isOwnComment, searchText, isSys, isHomeBlogPost, showId, handleNavigateToWGs, handleNavigateToDossiers } = props;
229
+ const { displayMode, layoutMode, blogPost, isSelected, isOwnComment, searchText, isSys, isHomeBlogPost, showId, handleNavigateToWGs, handleNavigateToDossiers, handleNavigateToCaseflows } = props;
222
230
  const showOwnerBadge = (displayMode === "stacked" || !isOwnComment) && layoutMode === "extended";
223
231
  let subtitle = "";
224
232
  if (isHomeBlogPost) {
@@ -239,6 +247,9 @@ export const BlogPostTitle = (props) => {
239
247
  if (handleNavigateToDossiers && blogPost.id && blogPost.classID === 'DS') {
240
248
  handleNavigateToDossiers(blogPost);
241
249
  }
250
+ if (handleNavigateToCaseflows && blogPost.id && blogPost.classID === 'CF') {
251
+ handleNavigateToCaseflows(blogPost);
252
+ }
242
253
  };
243
254
  return _jsxs("div", { style: { display: "flex", alignItems: "center", gap: "8px" }, children: [showOwnerBadge && (_jsx("div", { style: { width: "40px", height: "40px", flexShrink: 0 }, children: OwnerInitialsBadge(blogPost) })), _jsxs("div", { style: {
244
255
  display: "flex",
@@ -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 styled from 'styled-components';
3
3
  import { useCallback, useEffect, useState } from 'react';
4
4
  import { DcmtTypeListCacheService } from '@topconsultnpm/sdk-ts';
@@ -108,7 +108,7 @@ const TMRecentsManager = ({ deviceType, mruTIDs, currentMruTID, accessFilter = '
108
108
  setInfoDTD(undefined);
109
109
  });
110
110
  const isMobile = deviceType === DeviceType.MOBILE;
111
- return (_jsxs(_Fragment, { children: [_jsxs("div", { onContextMenu: (e) => e.preventDefault(), style: { overflowY: isMobile ? 'auto' : undefined, display: 'flex', flexDirection: 'column', padding: '5px', width: '100%' }, children: [_jsx(StyledRecentTidItem, { id: `tid-${0}`, "$isMobile": isMobile, onClick: () => { setShowDcmtTypeChooser(true); }, children: _jsx("div", { style: { display: 'flex', alignItems: 'center', justifyContent: 'center', width: '100%' }, children: _jsx("p", { style: {
111
+ return (_jsxs(_Fragment, { children: [_jsxs("div", { onContextMenu: (e) => e.preventDefault(), style: { overflowY: isMobile ? 'auto' : undefined, display: 'flex', flexDirection: 'column', padding: '5px', width: '100%' }, children: [_jsx(StyledRecentTidItem, { id: `tid-${0}`, $isMobile: isMobile, onClick: () => { setShowDcmtTypeChooser(true); }, children: _jsx("div", { style: { display: 'flex', alignItems: 'center', justifyContent: 'center', width: '100%' }, children: _jsx("p", { style: {
112
112
  color: TMColors.primaryColor,
113
113
  fontSize: '1rem',
114
114
  fontWeight: 600,
@@ -117,7 +117,7 @@ const TMRecentsManager = ({ deviceType, mruTIDs, currentMruTID, accessFilter = '
117
117
  textOverflow: 'ellipsis'
118
118
  }, children: `${SDKUI_Localizator.AllDcmtTypes} (${DcmtTypeListCacheService.CacheCount(true, accessFilter)})` }) }) }, 0), recentDcmtTypes.map((dtd) => {
119
119
  const isCurrent = currentMruTID == dtd.id;
120
- return (_jsxs(StyledRecentTidItem, { id: `tid-${dtd.id}`, "$isMobile": isMobile, onClick: () => { onSelectedTID?.(dtd.id ?? 0); }, onContextMenu: (e) => {
120
+ return (_jsxs(StyledRecentTidItem, { id: `tid-${dtd.id}`, $isMobile: isMobile, onClick: () => { onSelectedTID?.(dtd.id ?? 0); }, onContextMenu: (e) => {
121
121
  e.preventDefault();
122
122
  setContextMenuState({ visible: true, position: { x: e.clientX, y: e.clientY }, tid: dtd.id ?? null });
123
123
  }, children: [_jsxs(StyledDivHorizontal, { style: { alignItems: 'center', gap: 8, width: '100%' }, children: [!isMobile && (_jsx("span", { className: "info-icon", style: {
@@ -160,6 +160,6 @@ const TMRecentsManager = ({ deviceType, mruTIDs, currentMruTID, accessFilter = '
160
160
  onClose: () => setContextMenuState({ visible: false, position: { x: 0, y: 0 }, tid: null })
161
161
  } }))] }, dtd.id));
162
162
  })] }), showDcmtTypeChooser &&
163
- _jsx(TMDcmtTypeChooserForm, { accessFilter: accessFilter, onClose: () => setShowDcmtTypeChooser(false), onChoose: (tids) => { onSelectedTID?.(tids?.[0] ?? 0); } }), _jsxs(StyledOffCanvasPanel, { ref: panelRef, "$isOpen": isMobile && infoDTD !== undefined, children: [_jsxs(StyledDivHorizontal, { style: { gap: 10, padding: '10px 8px', width: '100%', alignItems: 'center' }, children: [_jsx("p", { style: { fontSize: '1.1rem', fontWeight: 'bold' }, children: `${SDKUI_Localizator.DcmtType} - ${SDKUI_Localizator.About}` }), _jsx(IconCloseOutline, { style: { marginLeft: 'auto', cursor: 'pointer' }, onClick: () => setInfoDTD(undefined) })] }), renderDTDTooltipContent(infoDTD)] })] }));
163
+ _jsx(TMDcmtTypeChooserForm, { accessFilter: accessFilter, onClose: () => setShowDcmtTypeChooser(false), onChoose: (tids) => { onSelectedTID?.(tids?.[0] ?? 0); } }), _jsxs(StyledOffCanvasPanel, { ref: panelRef, $isOpen: isMobile && infoDTD !== undefined, children: [_jsxs(StyledDivHorizontal, { style: { gap: 10, padding: '10px 8px', width: '100%', alignItems: 'center' }, children: [_jsx("p", { style: { fontSize: '1.1rem', fontWeight: 'bold' }, children: `${SDKUI_Localizator.DcmtType} - ${SDKUI_Localizator.About}` }), _jsx(IconCloseOutline, { style: { marginLeft: 'auto', cursor: 'pointer' }, onClick: () => setInfoDTD(undefined) })] }), renderDTDTooltipContent(infoDTD)] })] }));
164
164
  };
165
165
  export default TMRecentsManager;
@@ -81,7 +81,7 @@ const TMValidationItemsList = ({ validationItems = [] }) => {
81
81
  setCurrentValidationItems(validationItems.filter(item => item.ResultType !== 'Error'));
82
82
  }
83
83
  }, [selectedTab]);
84
- return (_jsxs("div", { style: { padding: "0px 1px" }, children: [_jsxs(StyledValidationItemsTabs, { children: [_jsx(StyledValidationTypeTab, { onClick: () => setSelectedTab(0), "$isSelected": selectedTab === 0, children: "All" }), _jsx(StyledValidationTypeTab, { onClick: () => setSelectedTab(1), "$isSelected": selectedTab === 1, children: "Errors" }), _jsx(StyledValidationTypeTab, { onClick: () => setSelectedTab(2), "$isSelected": selectedTab === 2, children: "Warnings" })] }), _jsx("div", { style: { padding: '0' }, children: currentValidationItems.map((item, index) => _jsxs(StyledMessageContainer, { children: [_jsx(StyledMessageIcon, { children: item.ResultType === 'Warning' ? _jsx(IconWarning, { color: 'orange', fontSize: 16 }) : _jsx(IconCloseCircle, { color: 'red', fontSize: 16 }) }), _jsx(StyledMessageResultType, { children: item.ResultType }), _jsx(StyledMessageElement, { children: item.PropertyName }), _jsx(StyledMessageText, { children: item.Message })] }, index)
84
+ return (_jsxs("div", { style: { padding: "0px 1px" }, children: [_jsxs(StyledValidationItemsTabs, { children: [_jsx(StyledValidationTypeTab, { onClick: () => setSelectedTab(0), $isSelected: selectedTab === 0, children: "All" }), _jsx(StyledValidationTypeTab, { onClick: () => setSelectedTab(1), $isSelected: selectedTab === 1, children: "Errors" }), _jsx(StyledValidationTypeTab, { onClick: () => setSelectedTab(2), $isSelected: selectedTab === 2, children: "Warnings" })] }), _jsx("div", { style: { padding: '0' }, children: currentValidationItems.map((item, index) => _jsxs(StyledMessageContainer, { children: [_jsx(StyledMessageIcon, { children: item.ResultType === 'Warning' ? _jsx(IconWarning, { color: 'orange', fontSize: 16 }) : _jsx(IconCloseCircle, { color: 'red', fontSize: 16 }) }), _jsx(StyledMessageResultType, { children: item.ResultType }), _jsx(StyledMessageElement, { children: item.PropertyName }), _jsx(StyledMessageText, { children: item.Message })] }, index)
85
85
  // <Message key={index} propertyName={item.PropertyName} message={item.Message} resultType={item.ResultType} theme={currentTheme} />
86
86
  ) })] }));
87
87
  };
@@ -7,8 +7,10 @@ export { default as TMList } from './base/TMList';
7
7
  export { default as TMModal } from './base/TMModal';
8
8
  export * from './base/TMPopUp';
9
9
  export * from './base/TMLayout';
10
+ export { default as TMLayoutContainer } from './base/TMLayout';
10
11
  export * from './base/Styled';
11
12
  export * from './base/TMWaitPanel';
13
+ export * from './base/waitPanel';
12
14
  export * from './base/TMToolbarCard';
13
15
  export * from './base/TMRightSidebar';
14
16
  export * from './base/TMTreeView';
@@ -21,6 +23,8 @@ export { default as TMProgressBar } from './base/TMProgressBar';
21
23
  export { default as TMSpinner } from './base/TMSpinner';
22
24
  export { Spinner } from './base/TMSpinner';
23
25
  export { default as TMToggleButton } from './base/TMToggleButton';
26
+ export { default as TMTabControl } from './base/TMTabControl';
27
+ export * from './base/TMTabControl';
24
28
  export { default as TMTooltip } from './base/TMTooltip';
25
29
  export { default as TMVilViewer } from './base/TMVilViewer';
26
30
  export { default as TMUserAvatar } from './base/TMUserAvatar';
@@ -64,6 +68,8 @@ export * from './query/TMQueryEditor';
64
68
  export * from './query/TMQuerySummary';
65
69
  export * from './query/TMQueryCountButton';
66
70
  export { default as TMToppyDraggableHelpCenter } from './features/assistant/TMToppyDraggableHelpCenter';
71
+ export { default as TMHelpOnLineChat, TMToppyHeaderButton } from './features/assistant/TMHelpOnLineChat';
72
+ export type { HolChatMessage, ITMHelpOnLineChatProps, ITMToppyHeaderButtonProps } from './features/assistant/TMHelpOnLineChat';
67
73
  export * from './features/documents/TMDcmtForm';
68
74
  export * from './features/documents/TMDcmtIcon';
69
75
  export * from './features/documents/TMDcmtPreview';
@@ -8,8 +8,10 @@ export { default as TMList } from './base/TMList';
8
8
  export { default as TMModal } from './base/TMModal';
9
9
  export * from './base/TMPopUp';
10
10
  export * from './base/TMLayout';
11
+ export { default as TMLayoutContainer } from './base/TMLayout';
11
12
  export * from './base/Styled';
12
13
  export * from './base/TMWaitPanel';
14
+ export * from './base/waitPanel';
13
15
  export * from './base/TMToolbarCard';
14
16
  export * from './base/TMRightSidebar';
15
17
  export * from './base/TMTreeView';
@@ -22,6 +24,8 @@ export { default as TMProgressBar } from './base/TMProgressBar';
22
24
  export { default as TMSpinner } from './base/TMSpinner';
23
25
  export { Spinner } from './base/TMSpinner';
24
26
  export { default as TMToggleButton } from './base/TMToggleButton';
27
+ export { default as TMTabControl } from './base/TMTabControl';
28
+ export * from './base/TMTabControl';
25
29
  export { default as TMTooltip } from './base/TMTooltip';
26
30
  export { default as TMVilViewer } from './base/TMVilViewer';
27
31
  export { default as TMUserAvatar } from './base/TMUserAvatar';
@@ -71,6 +75,7 @@ export * from './query/TMQuerySummary';
71
75
  export * from './query/TMQueryCountButton';
72
76
  //assistant
73
77
  export { default as TMToppyDraggableHelpCenter } from './features/assistant/TMToppyDraggableHelpCenter';
78
+ export { default as TMHelpOnLineChat, TMToppyHeaderButton } from './features/assistant/TMHelpOnLineChat';
74
79
  //documents
75
80
  export * from './features/documents/TMDcmtForm';
76
81
  export * from './features/documents/TMDcmtIcon';
@@ -6,6 +6,7 @@ interface TMPanelManagerContainerProps {
6
6
  direction: TMPanelDirection;
7
7
  parentId?: string;
8
8
  minPanelSizePx?: number;
9
+ gutterSizePx?: number;
9
10
  }
10
11
  declare const TMPanelManagerContainer: (props: TMPanelManagerContainerProps) => React.JSX.Element | null;
11
12
  export default TMPanelManagerContainer;