@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
@@ -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 { PlatformObjectValidator, QueryDescriptor, WhereItem, SDK_Localizator, SelectItemVisibilities, SDK_Globals, SavedQueryCacheService, SearchEngine, QueryOperators, AccessLevelsEx, AccessLevels } from '@topconsultnpm/sdk-ts';
4
4
  import styled from 'styled-components';
@@ -24,11 +24,9 @@ import TMToppyMessage from '../../../helper/TMToppyMessage';
24
24
  import TMMetadataSorterForm from './TMMetadataSorterForm';
25
25
  import TMMetadataOutputForm from './TMMetadataOutputForm';
26
26
  import TMTooltip from '../../base/TMTooltip';
27
- const TMSearchQueryPanel = ({ fromDTD, showBackToResultButton, isExpertMode = SDKUI_Globals.userSettings.advancedSettings.expertMode === 1, SQD, inputMids, onSearchCompleted, onSqdSaved, onBack, onClosePanel, allowMaximize = true, onMaximizePanel, onBackToResult, passToArchiveCallback, maxDcmtsToBeReturned }) => {
27
+ const TMSearchQueryPanel = ({ isSearchViewOnScreen = true, fromDTD, showBackToResultButton, isExpertMode = SDKUI_Globals.userSettings.advancedSettings.expertMode === 1, SQD, inputMids, onSearchCompleted, onSqdSaved, onBack, onClosePanel, allowMaximize = true, onMaximizePanel, onBackToResult, passToArchiveCallback, maxDcmtsToBeReturned, onRefreshRequested, onDcmtTypeReloaded }) => {
28
28
  const [confirmQueryParams, ConfirmQueryParamsDialog] = useQueryParametersDialog();
29
29
  const [qd, setQd] = useState();
30
- const [shouldSearch, setShouldSearch] = useState(false);
31
- const [isQueryPanelActive, setIsQueryPanelActive] = useState(false);
32
30
  const [lastQdParams, setLastQdParams] = useState([]);
33
31
  const [dcmtTypesList, setDcmtTypesList] = useState([]);
34
32
  const [showSqdForm, setShowSqdForm] = useState(false);
@@ -44,8 +42,32 @@ const TMSearchQueryPanel = ({ fromDTD, showBackToResultButton, isExpertMode = SD
44
42
  const deviceType = useDeviceType();
45
43
  const isMobile = deviceType === DeviceType.MOBILE;
46
44
  let initialMaxItems = deviceType === DeviceType.MOBILE ? 8 : 12;
45
+ const tmPanelRef = useRef(null);
46
+ // Contenitore del form: l'Invio avvia la ricerca solo se il focus si trova al suo interno
47
+ const contentRef = useRef(null);
48
+ // Passando nella vista risultati si prenota il focus, che verrà ripreso al rientro nella ricerca
49
+ const shouldRefocusOnReturnRef = useRef(false);
47
50
  const appliedInputMidsRef = useRef(null);
48
51
  const pendingMidsRef = useRef(null);
52
+ // Impedisce ricerche sovrapposte (doppio Invio, o Invio mentre la precedente e' ancora in corso)
53
+ const isSearchingRef = useRef(false);
54
+ // Snapshot letti da runSearch al momento dell'esecuzione: evitano di cercare con dati stantii
55
+ const qdRef = useRef(undefined);
56
+ const showAdvancedSearchRef = useRef(false);
57
+ const searchAsyncRef = useRef();
58
+ const reloadMetadataAsyncRef = useRef();
59
+ // Tornando dalla vista risultati il pannello dei metadati di ricerca riprende il focus,
60
+ // così è lui quello evidenziato: prendendo il focus gli altri pannelli ricevono l'onBlur e si disattivano
61
+ useEffect(() => {
62
+ if (!isSearchViewOnScreen) {
63
+ shouldRefocusOnReturnRef.current = true;
64
+ return;
65
+ }
66
+ if (!shouldRefocusOnReturnRef.current)
67
+ return;
68
+ shouldRefocusOnReturnRef.current = false;
69
+ tmPanelRef.current?.focusPanel();
70
+ }, [isSearchViewOnScreen]);
49
71
  useEffect(() => {
50
72
  if (!SQD)
51
73
  return;
@@ -118,36 +140,6 @@ const TMSearchQueryPanel = ({ fromDTD, showBackToResultButton, isExpertMode = SD
118
140
  setQd({ ...qd, where: newWhere });
119
141
  setShowAllMdWhere(true);
120
142
  }, [qd, fromDTD, inputMids]);
121
- // Eseguire la ricerca quando shouldSearch è true e qd è definito
122
- useEffect(() => {
123
- if (shouldSearch && qd) {
124
- const executeSearch = async () => {
125
- await searchAsync(qd, showAdvancedSearch);
126
- setShouldSearch(false); // Resetta il trigger dopo la ricerca
127
- };
128
- executeSearch();
129
- }
130
- }, [shouldSearch, qd, showAdvancedSearch]);
131
- // Se il pannello è attivo e non ci sono modali aperti, rimuove il focus e avvia la ricerca
132
- useEffect(() => {
133
- const handleKeyDown = (e) => {
134
- if (isQueryPanelActive && !modalIsOpen) {
135
- if (e.key === 'Enter') {
136
- e.preventDefault();
137
- // Disattiva l'elemento attivo per forzare l'onBlur
138
- if (document.activeElement instanceof HTMLElement) {
139
- document.activeElement.blur();
140
- }
141
- // Attiva il flag di ricerca. L'useEffect sopra gestirà l'attesa di qd.
142
- setShouldSearch(true);
143
- }
144
- }
145
- };
146
- window.addEventListener('keydown', handleKeyDown);
147
- return () => {
148
- window.removeEventListener('keydown', handleKeyDown);
149
- };
150
- }, [isQueryPanelActive, modalIsOpen]);
151
143
  const setDataAsync = async (sqd) => {
152
144
  let newSqd = (sqd?.id == 1) ? sqd : await SavedQueryCacheService.GetAsync(sqd?.id);
153
145
  let newQd = SearchEngine.NormalizeQueryDescriptor(newSqd?.qd);
@@ -167,8 +159,9 @@ const TMSearchQueryPanel = ({ fromDTD, showBackToResultButton, isExpertMode = SD
167
159
  });
168
160
  setQd({ ...qd, where: newWhere, orderBy: [] });
169
161
  };
170
- const searchAsync = async (qdInput, isAdvancedSearch) => {
171
- onSearchCompleted?.([], undefined); // reset results
162
+ const searchAsync = async (qdInput, isAdvancedSearch, append = false) => {
163
+ if (!append)
164
+ onSearchCompleted?.([], undefined); // reset results (solo in ricerca normale, non in accoda)
172
165
  let searchParams = { isAdvancedSearch: isAdvancedSearch, lastQdParams: lastQdParams, confirmQueryParams: confirmQueryParams, setLastQdParamsCallback: setLastQdParams };
173
166
  let searchResult = await searchByQdAsync(qdInput, searchParams);
174
167
  let dcmtsFound = searchResult?.result?.dcmtsFound ?? 0;
@@ -178,11 +171,92 @@ const TMSearchQueryPanel = ({ fromDTD, showBackToResultButton, isExpertMode = SD
178
171
  let results = [];
179
172
  if (searchResult?.result)
180
173
  results.push(searchResult?.result);
181
- // Before notifying onSearchComplete, let's set the panel to NOT active
182
- setIsQueryPanelActive(false);
183
- onSearchCompleted?.(results, searchResult?.qd);
174
+ onSearchCompleted?.(results, searchResult?.qd, append);
175
+ }
176
+ };
177
+ // Tra l'apertura della ricerca e il click su Ricerca la lista dei metadati del tipo documento può essere
178
+ // cambiata (metadati aggiunti o rimossi lato amministrazione): prima di cercare si rileggono dal server.
179
+ // I valori digitati restano, mentre i filtri sui metadati non più disponibili vengono scartati.
180
+ // Restituisce il qd con cui eseguire la ricerca.
181
+ const reloadMetadataAsync = async (qdInput) => {
182
+ if (!qdInput?.from?.tid)
183
+ return qdInput;
184
+ let dcmtTypes;
185
+ try {
186
+ TMSpinner.show({ description: `${SDKUI_Localizator.Loading} ...`, backgroundColor: 'transparent' });
187
+ dcmtTypes = await getDcmtTypesByQdAsync(qdInput, true);
188
+ }
189
+ finally {
190
+ TMSpinner.hide();
184
191
  }
192
+ // Rilettura non riuscita: si cerca con i metadati che si hanno, senza scartare nulla
193
+ if (dcmtTypes.length <= 0)
194
+ return qdInput;
195
+ setDcmtTypesList(dcmtTypes);
196
+ const reloadedFromDTD = dcmtTypes.find(o => o.id === qdInput.from?.tid);
197
+ if (reloadedFromDTD)
198
+ onDcmtTypeReloaded?.(reloadedFromDTD);
199
+ const { qd: newQd, removedCount } = dropUnavailableMetadataFromQd(qdInput, dcmtTypes);
200
+ if (removedCount <= 0)
201
+ return qdInput;
202
+ setQd(newQd);
203
+ return newQd;
185
204
  };
205
+ // Allineati a ogni render: runSearch li legge quando esegue, non quando viene creata
206
+ qdRef.current = qd;
207
+ showAdvancedSearchRef.current = showAdvancedSearch;
208
+ searchAsyncRef.current = searchAsync;
209
+ reloadMetadataAsyncRef.current = reloadMetadataAsync;
210
+ // Unico punto di avvio della ricerca: bottone Ricerca, Ricerca e accoda e tasto Invio passano tutti da qui
211
+ const runSearch = useCallback((append) => {
212
+ if (isSearchingRef.current)
213
+ return;
214
+ isSearchingRef.current = true;
215
+ // Toglie il focus per far committare il valore del campo in editing
216
+ if (document.activeElement instanceof HTMLElement)
217
+ document.activeElement.blur();
218
+ // Alcuni editor committano il valore in modo asincrono: si attende un tick prima di leggere il qd definitivo
219
+ setTimeout(async () => {
220
+ try {
221
+ // I metadati si rileggono a ogni ricerca: si cerca sempre sulla lista aggiornata
222
+ const qdToSearch = await reloadMetadataAsyncRef.current?.(qdRef.current) ?? qdRef.current;
223
+ await searchAsyncRef.current?.(qdToSearch, showAdvancedSearchRef.current, append);
224
+ }
225
+ catch (ex) {
226
+ TMExceptionBoxManager.show({ exception: ex });
227
+ }
228
+ finally {
229
+ isSearchingRef.current = false;
230
+ }
231
+ }, 0);
232
+ }, []);
233
+ // I dialoghi (TMModal/chooser) escono da contentRef perche' DevExtreme Popup li rende in un portale su document.body:
234
+ // il controllo di contenimento li esclude gia'. Questi flag coprono il caso in cui il focus sia sul contenitore del pannello.
235
+ // NB: si usano solo flag locali affidabili, non modalIsOpen, che resterebbe a true se un chooser venisse smontato senza onClose.
236
+ const isAnyDialogOpen = showFiltersConfig || showOutputConfig || showMetadataSorterForm || showSqdForm || showDistinctValuesPanel;
237
+ // L'Invio avvia SEMPRE la ricerca quando il focus e' nel form di ricerca (o sul pannello che lo contiene).
238
+ // Il criterio e' il contenimento nel DOM, non uno stato di "pannello attivo" che puo' desincronizzarsi.
239
+ useEffect(() => {
240
+ const handleKeyDown = (e) => {
241
+ if (e.key !== 'Enter' || e.repeat)
242
+ return;
243
+ if (isAnyDialogOpen)
244
+ return;
245
+ const content = contentRef.current;
246
+ const target = e.target;
247
+ if (!content || !target)
248
+ return;
249
+ const isInsideForm = content.contains(target);
250
+ // Al rientro dai risultati il focus e' sul contenitore del pannello, che e' antenato del form
251
+ const isPanelContainer = target !== document.body && target !== document.documentElement && target.contains(content);
252
+ if (!isInsideForm && !isPanelContainer)
253
+ return;
254
+ e.preventDefault();
255
+ runSearch(false);
256
+ };
257
+ window.addEventListener('keydown', handleKeyDown);
258
+ return () => { window.removeEventListener('keydown', handleKeyDown); };
259
+ }, [isAnyDialogOpen, runSearch]);
186
260
  const updateIsModalOpen = useCallback((isOpen) => {
187
261
  setModalIsOpen(isOpen);
188
262
  }, []);
@@ -209,21 +283,15 @@ const TMSearchQueryPanel = ({ fromDTD, showBackToResultButton, isExpertMode = SD
209
283
  }
210
284
  }
211
285
  };
212
- const handleSearchButtonClick = useCallback(async () => {
213
- // Propagazione blur
214
- if (document.activeElement instanceof HTMLElement) {
215
- document.activeElement.blur();
216
- }
217
- // Attiva il flag di ricerca anche per il click del bottone
218
- setShouldSearch(true);
219
- }, []);
286
+ const handleSearchButtonClick = useCallback(() => { runSearch(false); }, [runSearch]);
287
+ const handleSearchAndAppendClick = useCallback(() => { runSearch(true); }, [runSearch]);
288
+ const searchButtonSecondaryActions = useMemo(() => [{
289
+ name: SDKUI_Localizator.SearchAndAppend,
290
+ icon: _jsx(IconSearch, {}),
291
+ onClick: handleSearchAndAppendClick
292
+ }], [handleSearchAndAppendClick]);
220
293
  const handleQdChanged = useCallback((newQd) => {
221
- if (!deepCompare(qd, newQd)) {
222
- setQd(newQd);
223
- }
224
- }, []);
225
- const handlePanelActiveChanged = useCallback((isActive) => {
226
- setIsQueryPanelActive(isActive);
294
+ setQd(prev => deepCompare(prev, newQd) ? prev : newQd);
227
295
  }, []);
228
296
  const handleAdvancedMenuClick = useCallback((e) => {
229
297
  if (e.button === AdvancedMenuButtons.DistinctValues) {
@@ -270,7 +338,7 @@ const TMSearchQueryPanel = ({ fromDTD, showBackToResultButton, isExpertMode = SD
270
338
  }, [qd, fromDTD?.metadata, SQD?.masterTID]);
271
339
  const handleCloseOutputConfig = useCallback(() => setShowOutputConfig(false), []);
272
340
  const contextMenuItems = useMemo(() => [
273
- ...(showBackToResultButton ? [{ icon: _jsx(IconArrowRight, {}), name: "Vai a risultato", onClick: () => { onBackToResult?.(); } }] : []),
341
+ ...(showBackToResultButton ? [{ icon: _jsx(IconArrowRight, {}), name: SDKUI_Localizator.BackToResult, onClick: () => { onBackToResult?.(); } }] : []),
274
342
  { icon: _jsx(IconAddCircleOutline, {}), name: SDKUI_Localizator.SavedQueryNew, beginGroup: showBackToResultButton, onClick: () => { openSqdForm(FormModes.Create); } },
275
343
  { icon: _jsx(IconEdit, {}), name: SDKUI_Localizator.SavedQueryUpdate, disabled: (SQD && SQD.id == 1), onClick: () => { openSqdForm(FormModes.Update); } },
276
344
  { icon: showAdvancedSearch ? _jsx(IconEasy, {}) : _jsx(IconAdvanced, {}), beginGroup: true, name: showAdvancedSearch ? SDKUI_Localizator.Search_Easy : SDKUI_Localizator.Search_Advanced, onClick: () => { changeAdvancedSearchAsync(!showAdvancedSearch); } },
@@ -321,10 +389,10 @@ const TMSearchQueryPanel = ({ fromDTD, showBackToResultButton, isExpertMode = SD
321
389
  return false;
322
390
  return qd?.orderBy && qd.orderBy.length > 0;
323
391
  }, [showAdvancedSearch, qd?.orderBy]);
324
- return (_jsxs(_Fragment, { children: [_jsxs(TMPanel, { title: fromDTD?.nameLoc ?? SDKUI_Localizator.Search_Metadata, allowMaximize: allowMaximize, onMaximize: onMaximizePanel, onHeaderDoubleClick: onMaximizePanel, onBack: onBack, onActiveChanged: handlePanelActiveChanged, toolbar: _jsx(_Fragment, { children: (SQD && !showSqdForm) ?
325
- _jsx(ContextMenu, { items: contextMenuItems, trigger: "left", children: _jsx(TMButton, { btnStyle: 'icon', caption: 'Altro', icon: _jsx(IconMenuVertical, { color: 'white' }), showTooltip: false, onClick: () => setIsQueryPanelActive(true) }) })
392
+ return (_jsxs(_Fragment, { children: [_jsxs(TMPanel, { ref: tmPanelRef, title: fromDTD?.nameLoc ?? SDKUI_Localizator.Search_Metadata, allowMaximize: allowMaximize, onMaximize: onMaximizePanel, onHeaderDoubleClick: onMaximizePanel, onBack: onBack, onRefresh: (!SQD || showSqdForm) ? undefined : onRefreshRequested, toolbar: _jsx(_Fragment, { children: (SQD && !showSqdForm) ?
393
+ _jsx(ContextMenu, { items: contextMenuItems, trigger: "left", children: _jsx(TMButton, { btnStyle: 'icon', caption: 'Altro', icon: _jsx(IconMenuVertical, { color: 'white' }), showTooltip: false }) })
326
394
  : _jsx(_Fragment, {}) }), children: [_jsx(ConfirmQueryParamsDialog, {}), SQD
327
- ? _jsxs("div", { onContextMenu: (e) => e.preventDefault(), style: { height: '100%', width: '100%', position: 'relative', display: showSqdForm ? 'none' : 'flex', flexDirection: 'column', gap: 5 }, children: [showAdvancedSearch
395
+ ? _jsxs("div", { ref: contentRef, onContextMenu: (e) => e.preventDefault(), style: { height: '100%', width: '100%', position: 'relative', display: showSqdForm ? 'none' : 'flex', flexDirection: 'column', gap: 5 }, children: [showAdvancedSearch
328
396
  ? _jsx(TMQueryEditor, { formMode: FormModes.Update, showToolbar: false, inputData: qd, validateSelect: true, showApply: false, onQDChanged: handleQdChanged, updateIsModalOpen: updateIsModalOpen })
329
397
  : _jsx(TMSearchQueryEditor, { qd: qd, dcmtTypesList: dcmtTypesList, isExpertMode: isExpertMode, showAllMdWhere: showAllMdWhere, onQdChanged: handleQdChanged, onFocusedMetadataChanged: setFocusedTidMid, onAdvancedMenuClick: handleAdvancedMenuClick, updateIsModalOpen: updateIsModalOpen }), shouldShowOutputBadges && qd?.select && qd.select.length > 0 && (_jsxs(StyledSelectBadgesContainer, { children: [_jsxs(StyledSelectLabel, { children: [SDK_Localizator.QuerySelect, ":"] }), _jsx(StyledSelectBadgesWrapper, { children: (() => {
330
398
  const selectItems = qd.select ?? [];
@@ -353,7 +421,7 @@ const TMSearchQueryPanel = ({ fromDTD, showBackToResultButton, isExpertMode = SD
353
421
  alignItems: 'center',
354
422
  gap: '10px',
355
423
  width: '100%'
356
- }, children: [_jsx(TMButton, { btnStyle: 'advanced', icon: _jsx(IconSearch, {}), showTooltip: false, width: '90px', caption: SDKUI_Localizator.Search, advancedColor: '#4A96D2', onClick: handleSearchButtonClick }), _jsx(TMButton, { width: '90px', btnStyle: 'advanced', advancedType: 'primary', showTooltip: false, caption: SDKUI_Localizator.Clear, icon: _jsx(IconClear, {}), advancedColor: 'white', color: 'primaryOutline', onClick: clearFilters }), (!showAdvancedSearch && qd?.where && qd.where.length > initialMaxItems) && (_jsx(TMButton, { width: '120px', btnStyle: isMobile ? 'icon' : 'advanced', advancedColor: TMColors.button_primary, caption: captionText, showTooltip: false, icon: isMobile ? (_jsx("div", { children: _jsx("p", { children: showAllMdWhere ? `-${diff}` : `+${diff}` }) })) : (_jsx("p", { children: showAllMdWhere ? `-${diff}` : `+${diff}` })), onClick: () => setShowAllMdWhere(!showAllMdWhere) }))] }), showFiltersConfig &&
424
+ }, children: [_jsx(TMButton, { btnStyle: 'advanced', icon: _jsx(IconSearch, {}), showTooltip: false, width: '120px', caption: SDKUI_Localizator.Search, advancedColor: '#4A96D2', onClick: handleSearchButtonClick, secondaryActions: searchButtonSecondaryActions }), _jsx(TMButton, { width: '90px', btnStyle: 'advanced', advancedType: 'primary', showTooltip: false, caption: SDKUI_Localizator.Clear, icon: _jsx(IconClear, {}), advancedColor: 'white', color: 'primaryOutline', onClick: clearFilters }), (!showAdvancedSearch && qd?.where && qd.where.length > initialMaxItems) && (_jsx(TMButton, { width: '120px', btnStyle: isMobile ? 'icon' : 'advanced', advancedColor: TMColors.button_primary, caption: captionText, showTooltip: false, icon: isMobile ? (_jsx("div", { children: _jsx("p", { children: showAllMdWhere ? `-${diff}` : `+${diff}` }) })) : (_jsx("p", { children: showAllMdWhere ? `-${diff}` : `+${diff}` })), onClick: () => setShowAllMdWhere(!showAllMdWhere) }))] }), showFiltersConfig &&
357
425
  _jsx(TMMetadataChooserForm, { allowMultipleSelection: true, height: '500px', width: '600px', allowSysMetadata: true, filterMetadata: (o => o.perm?.canSearch === AccessLevels.Yes), qd: qd, selectedIDs: qd?.where?.map((w) => ({ tid: w.tid, mid: w.mid })), onClose: handleCloseFiltersConfig, onChoose: handleChooseFilters }), showOutputConfig &&
358
426
  _jsx(TMMetadataOutputForm, { qd: qd, selectedSelectItems: qd?.select, allowSysMetadata: true, filterMetadata: (o => o.perm?.canView === AccessLevels.Yes || o.perm?.canUpdate === AccessLevels.Yes), onClose: handleCloseOutputConfig, onChoose: (selectItems) => {
359
427
  setQd({ ...qd, select: selectItems });
@@ -382,6 +450,33 @@ const TMSearchQueryPanel = ({ fromDTD, showBackToResultButton, isExpertMode = SD
382
450
  } })] }));
383
451
  };
384
452
  export default TMSearchQueryPanel;
453
+ /** Scarta dal qd filtri, colonne e ordinamenti sui metadati non più esistenti o non più accessibili, in base
454
+ * alla lista dei metadati appena riletta dal server. I valori digitati su quelli ancora presenti si mantengono. */
455
+ const dropUnavailableMetadataFromQd = (qdInput, dcmtTypes) => {
456
+ const metadataOf = (tid) => dcmtTypes.find(o => o.id === tid)?.metadata;
457
+ // Un tipo documento non riletto non è verificabile: i suoi item si mantengono così come sono.
458
+ // Sui metadati di sistema si verifica solo l'esistenza: i loro permessi non li rendono inutilizzabili.
459
+ const isStillAvailable = (tid, mid, isUsable) => {
460
+ const metadata = metadataOf(tid);
461
+ if (!metadata || metadata.length <= 0 || mid == undefined)
462
+ return true;
463
+ const md = metadata.find(o => o.id === mid);
464
+ if (!md)
465
+ return false;
466
+ return md.isSystem == 1 || isUsable(md);
467
+ };
468
+ const canSearch = (md) => md.perm?.canSearch != AccessLevels.No;
469
+ const canOutput = (md) => !(md.perm?.canView == AccessLevels.No && md.perm?.canUpdate == AccessLevels.No);
470
+ const where = qdInput.where?.filter(o => isStillAvailable(o.tid, o.mid, canSearch)) ?? [];
471
+ const select = qdInput.select?.filter(o => isStillAvailable(o.tid, o.mid, canOutput)) ?? [];
472
+ const orderBy = qdInput.orderBy?.filter(o => isStillAvailable(o.tid, o.mid, canOutput)) ?? [];
473
+ const removedCount = ((qdInput.where?.length ?? 0) - where.length)
474
+ + ((qdInput.select?.length ?? 0) - select.length)
475
+ + ((qdInput.orderBy?.length ?? 0) - orderBy.length);
476
+ let qd = new QueryDescriptor();
477
+ qd.init({ ...qdInput, where: where, select: select, orderBy: orderBy });
478
+ return { qd: qd, removedCount: removedCount };
479
+ };
385
480
  const searchByQdAsync = async (qdInput, searchParams) => {
386
481
  let result;
387
482
  let qdSearch;
@@ -420,7 +515,6 @@ export const refreshLastSearch = async (qd) => {
420
515
  return;
421
516
  let searchResults = [];
422
517
  try {
423
- TMSpinner.show({ description: `${SDKUI_Localizator.Search} ...`, backgroundColor: 'transparent' });
424
518
  let result = await SDK_Globals.tmSession?.NewSearchEngine().SearchByIDAsync(qd);
425
519
  let dcmtsFound = result?.dcmtsFound ?? 0;
426
520
  if (dcmtsFound <= 0)
@@ -431,9 +525,6 @@ export const refreshLastSearch = async (qd) => {
431
525
  catch (ex) {
432
526
  TMExceptionBoxManager.show({ title: SDKUI_Localizator.Search, exception: ex });
433
527
  }
434
- finally {
435
- TMSpinner.hide();
436
- }
437
528
  return searchResults;
438
529
  };
439
530
  // =============================================================================
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  import { DcmtTypeDescriptor, HomeBlogPost, ObjectRef, SearchResultDescriptor, TaskDescriptor, WorkingGroupDescriptor } from '@topconsultnpm/sdk-ts';
3
3
  import { IntesiCertificateData } from '../../../helper';
4
+ import { ITMCounterContainerProps } from '../../base/TMCounterContainer';
4
5
  import { DcmtInfo, IGraphometricManagerProp, SearchResultContext, TaskContext } from '../../../ts';
5
6
  import { TMSearchResultFloatingActionConfig } from './TMSearchResultFloatingActionButton';
6
7
  export declare const getSearchResultCountersSingleCategory: (searchResults: SearchResultDescriptor[]) => string;
@@ -22,9 +23,16 @@ interface ITMSearchResultProps {
22
23
  openDcmtFormAsModal?: boolean;
23
24
  showSearchResultSidebar?: boolean;
24
25
  showDcmtFormSidebar?: boolean;
26
+ /** Mostra accanto alla griglia il selettore dei tipi documento trovati:
27
+ * su desktop sono affiancati (30/70),
28
+ * su mobile si naviga a step tra selettore e risultati.
29
+ * Se il risultato ha un solo tipo documento il selettore resta chiuso
30
+ * e lo spazio va tutto alla griglia, riapribile dal menu "Altro" */
25
31
  showSelector?: boolean;
26
32
  showToolbarHeader?: boolean;
27
33
  showBackButton?: boolean;
34
+ backCaption?: string;
35
+ showToolbarCloseButton?: boolean;
28
36
  disableAccordionIfSingleCategory?: boolean;
29
37
  enablePinIcons?: boolean;
30
38
  editPdfForm?: boolean;
@@ -33,10 +41,23 @@ interface ITMSearchResultProps {
33
41
  showToppyDraggableHelpCenter?: boolean;
34
42
  toppyHelpCenterUsePortal?: boolean;
35
43
  showNoDcmtFoundMessage?: boolean;
44
+ showCounterConfig?: boolean;
45
+ /** Mostra in testa alla griglia la colonna con le azioni di riga (modifica, duplica, cancella) */
46
+ showActionsColumn?: boolean;
47
+ /** Rende compatto il paginatore della griglia: utile quando il risultato è dentro pannelli bassi (es. accordion) */
48
+ compactPager?: boolean;
49
+ /** Sostituisce l'azione "duplica" della colonna di riga, che passa qui la riga cliccata: il menu contestuale resta invariato. I valori di riga della griglia sono stringhe */
50
+ onRowDuplicateRequest?: (rowData: {
51
+ TID?: number | string;
52
+ DID?: number | string;
53
+ FILEEXT?: string;
54
+ }) => void;
55
+ counterConfig?: ITMCounterContainerProps;
36
56
  onClose?: () => void;
37
57
  openInOffice?: (selectedDcmtsOrFocused: Array<DcmtInfo>) => Promise<void>;
38
58
  onWFOperationCompleted?: () => Promise<void>;
39
59
  onSelectedTIDChanged?: (TID: number) => void;
60
+ onSelectedTIDCleared?: () => void;
40
61
  onRefreshSearchAsyncDatagrid?: () => Promise<void>;
41
62
  onRefreshAfterAddDcmtToFavs?: () => void;
42
63
  onFileOpened?: (blob: File | undefined) => void;