@topconsultnpm/sdkui-react 6.22.0-dev4.2 → 6.22.0-dev4.21

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 (150) hide show
  1. package/lib/components/NewComponents/ContextMenu/styles.d.ts +43 -45
  2. package/lib/components/NewComponents/FloatingMenuBar/styles.d.ts +60 -67
  3. package/lib/components/base/Styled.d.ts +77 -93
  4. package/lib/components/base/TMAlert.d.ts +2 -1
  5. package/lib/components/base/TMAlert.js +7 -6
  6. package/lib/components/base/TMCounterBar.d.ts +2 -2
  7. package/lib/components/base/TMCounterContainer.d.ts +4 -3
  8. package/lib/components/base/TMCounterContainer.js +16 -1
  9. package/lib/components/base/TMCustomButton.d.ts +1 -1
  10. package/lib/components/base/TMDataGrid.js +24 -4
  11. package/lib/components/base/TMDataGridExportForm.d.ts +1 -2
  12. package/lib/components/base/TMFileManager.d.ts +1 -2
  13. package/lib/components/base/TMFileManagerDataGridView.d.ts +1 -2
  14. package/lib/components/base/TMFileManagerThumbnailItems.d.ts +1 -1
  15. package/lib/components/base/TMFileManagerThumbnailsView.d.ts +1 -1
  16. package/lib/components/base/TMFileManagerUtils.d.ts +6 -4
  17. package/lib/components/base/TMLayout.d.ts +4 -4
  18. package/lib/components/base/TMList.d.ts +1 -2
  19. package/lib/components/base/TMListView.d.ts +1 -1
  20. package/lib/components/base/TMSpinner.d.ts +2 -3
  21. package/lib/components/base/TMTab.d.ts +3 -4
  22. package/lib/components/base/TMTabControl.js +208 -208
  23. package/lib/components/base/TMTooltip.d.ts +1 -1
  24. package/lib/components/base/TMTreeView.d.ts +8 -14
  25. package/lib/components/base/TMUserAvatar.d.ts +1 -2
  26. package/lib/components/base/TMVilViewer.d.ts +1 -2
  27. package/lib/components/base/TMWaitPanel.d.ts +2 -3
  28. package/lib/components/base/waitPanel/TMWaitPanelManager.d.ts +16 -6
  29. package/lib/components/base/waitPanel/TMWaitPanelManager.js +55 -2
  30. package/lib/components/base/waitPanel/TMWaitPanelView.d.ts +6 -2
  31. package/lib/components/base/waitPanel/TMWaitPanelView.js +75 -3
  32. package/lib/components/choosers/TMDistinctValues.js +3 -3
  33. package/lib/components/choosers/TMDynDataListItemChooser.d.ts +1 -1
  34. package/lib/components/choosers/TMInvoiceRetrieveFormats.d.ts +1 -2
  35. package/lib/components/choosers/TMOrderRetrieveFormats.d.ts +1 -2
  36. package/lib/components/choosers/TMQuickSearchInfo.d.ts +1 -2
  37. package/lib/components/choosers/TMRelationChooser.d.ts +3 -3
  38. package/lib/components/choosers/TMUserChooser.d.ts +3 -2
  39. package/lib/components/choosers/TMUserChooser.js +3 -3
  40. package/lib/components/editors/TMEditorStyled.d.ts +42 -20
  41. package/lib/components/editors/TMFormulaEditor.d.ts +1 -1
  42. package/lib/components/editors/TMHtmlContentDisplay.d.ts +1 -2
  43. package/lib/components/editors/TMHtmlEditor.d.ts +1 -2
  44. package/lib/components/editors/TMTreeDropDown.d.ts +1 -1
  45. package/lib/components/features/assistant/TMHelpOnLineChat.d.ts +0 -1
  46. package/lib/components/features/assistant/TMHelpOnLineChat.js +8 -161
  47. package/lib/components/features/assistant/TMToppyDraggableHelpCenter.d.ts +1 -1
  48. package/lib/components/features/blog/TMBlogCommentForm.d.ts +1 -2
  49. package/lib/components/features/documents/TMDcmtForm.d.ts +6 -1
  50. package/lib/components/features/documents/TMDcmtForm.js +42 -7
  51. package/lib/components/features/documents/TMDcmtFormActionButtons.d.ts +1 -1
  52. package/lib/components/features/documents/TMDcmtFormActionButtons.js +5 -2
  53. package/lib/components/features/documents/TMDcmtIcon.d.ts +1 -2
  54. package/lib/components/features/documents/TMDcmtPreview.d.ts +8 -8
  55. package/lib/components/features/documents/TMDcmtPreview.js +16 -7
  56. package/lib/components/features/documents/TMDcmtTasks.d.ts +1 -2
  57. package/lib/components/features/documents/TMDragDropOverlay.d.ts +1 -1
  58. package/lib/components/features/documents/TMFileUploader.js +21 -21
  59. package/lib/components/features/documents/TMMasterDetailDcmts.d.ts +2 -0
  60. package/lib/components/features/documents/TMMasterDetailDcmts.js +13 -5
  61. package/lib/components/features/documents/TMMasterInfoFields.d.ts +1 -2
  62. package/lib/components/features/documents/TMMergeToPdfForm.d.ts +1 -2
  63. package/lib/components/features/documents/TMMergeToPdfForm.js +5 -4
  64. package/lib/components/features/documents/TMMultiMasterDetailDcmtsForm.d.ts +1 -2
  65. package/lib/components/features/documents/TMMultiMasterDetailDcmtsUtils.d.ts +4 -4
  66. package/lib/components/features/search/TMDcmtCheckoutInfoForm.d.ts +1 -2
  67. package/lib/components/features/search/TMMetadataOutputForm.d.ts +1 -2
  68. package/lib/components/features/search/TMMetadataSorterForm.d.ts +1 -2
  69. package/lib/components/features/search/TMSavedQuerySelector.d.ts +2 -2
  70. package/lib/components/features/search/TMSearch.d.ts +1 -2
  71. package/lib/components/features/search/TMSearchQueryPanel.d.ts +3 -9
  72. package/lib/components/features/search/TMSearchResult.js +121 -91
  73. package/lib/components/features/search/TMSearchResultFloatingActionButton.d.ts +1 -1
  74. package/lib/components/features/search/TMSignatureInfoContent.d.ts +1 -2
  75. package/lib/components/features/search/TMViewHistoryDcmt.d.ts +1 -2
  76. package/lib/components/features/search/TMViewHistoryDcmt.js +1 -1
  77. package/lib/components/features/tasks/TMTaskForm.d.ts +1 -1
  78. package/lib/components/features/tasks/TMTaskFormUtils.d.ts +10 -10
  79. package/lib/components/features/tasks/TMTasksAgenda.d.ts +1 -1
  80. package/lib/components/features/tasks/TMTasksCalendar.d.ts +1 -1
  81. package/lib/components/features/tasks/TMTasksHeader.d.ts +1 -1
  82. package/lib/components/features/tasks/TMTasksPanelContent.d.ts +1 -1
  83. package/lib/components/features/tasks/TMTasksUtilsView.d.ts +5 -5
  84. package/lib/components/features/tasks/TMTasksView.d.ts +1 -1
  85. package/lib/components/features/tasks/TMTasksView.js +15 -9
  86. package/lib/components/features/wg/TMWGsCopyMoveForm.d.ts +2 -3
  87. package/lib/components/features/wg/TMWGsCopyMoveForm.js +8 -4
  88. package/lib/components/features/workflow/TMWorkflowPopup.d.ts +7 -8
  89. package/lib/components/features/workflow/TMWorkflowPopup.js +1 -1
  90. package/lib/components/features/workflow/diagram/WorkitemRecipientsEditor.d.ts +1 -3
  91. package/lib/components/forms/Login/ChangePasswordInputs.d.ts +1 -3
  92. package/lib/components/forms/Login/Chooser.d.ts +2 -2
  93. package/lib/components/forms/TMChooserForm.d.ts +1 -2
  94. package/lib/components/forms/TMSaveForm.d.ts +4 -4
  95. package/lib/components/grids/TMBlogAttachments.d.ts +1 -2
  96. package/lib/components/grids/TMBlogHeader.d.ts +1 -1
  97. package/lib/components/grids/TMBlogsPost.d.ts +1 -1
  98. package/lib/components/grids/TMBlogsPost.js +1 -1
  99. package/lib/components/grids/TMBlogsPostUtils.d.ts +9 -9
  100. package/lib/components/grids/TMValidationItemsList.d.ts +1 -2
  101. package/lib/components/layout/panelManager/TMPanelManagerContainer.d.ts +1 -2
  102. package/lib/components/layout/panelManager/TMPanelManagerContainer.js +12 -12
  103. package/lib/components/layout/panelManager/TMPanelManagerContext.d.ts +2 -2
  104. package/lib/components/layout/panelManager/TMPanelManagerLoader.d.ts +1 -2
  105. package/lib/components/layout/panelManager/TMPanelManagerToolbar.d.ts +6 -5
  106. package/lib/components/layout/panelManager/TMPanelManagerWithPersistenceProvider.d.ts +2 -2
  107. package/lib/components/layout/panelManager/TMPanelWrapper.d.ts +2 -2
  108. package/lib/components/pages/TMPage.d.ts +1 -1
  109. package/lib/components/pages/TMPage.js +13 -5
  110. package/lib/components/query/TMQueryEditor.d.ts +10 -14
  111. package/lib/components/settings/SettingsAppearance.d.ts +1 -2
  112. package/lib/components/sidebar/TMAboutApp.d.ts +1 -2
  113. package/lib/components/sidebar/TMCommandsPanel.d.ts +4 -4
  114. package/lib/components/sidebar/TMHeader.d.ts +3 -3
  115. package/lib/components/viewers/TMDataListItemViewer.d.ts +2 -3
  116. package/lib/components/viewers/TMDataUserIdItemViewer.d.ts +2 -3
  117. package/lib/components/viewers/TMMidViewer.d.ts +2 -2
  118. package/lib/components/viewers/TMTidViewer.d.ts +2 -2
  119. package/lib/helper/SDKUI_Globals.d.ts +7 -4
  120. package/lib/helper/SDKUI_Globals.js +7 -4
  121. package/lib/helper/SDKUI_Localizator.d.ts +13 -6
  122. package/lib/helper/SDKUI_Localizator.js +121 -51
  123. package/lib/helper/TMAppUpdatedModal.d.ts +1 -2
  124. package/lib/helper/TMAppUpdatedModal.js +93 -93
  125. package/lib/helper/TMCommandsContextMenu.d.ts +1 -1
  126. package/lib/helper/TMIcons.d.ts +282 -281
  127. package/lib/helper/TMIcons.js +4 -1
  128. package/lib/helper/TMPdfViewer.d.ts +1 -2
  129. package/lib/helper/TMToppyMessage.d.ts +2 -2
  130. package/lib/helper/TMUtils.d.ts +4 -10
  131. package/lib/helper/checkinCheckoutManager.js +2 -3
  132. package/lib/helper/helpers.d.ts +1 -1
  133. package/lib/helper/queryHelper.d.ts +15 -2
  134. package/lib/helper/queryHelper.js +52 -1
  135. package/lib/hooks/useCaseFlowApprove.js +31 -6
  136. package/lib/hooks/useCheckInOutOperations.js +2 -3
  137. package/lib/hooks/useDcmtOperations.js +24 -16
  138. package/lib/hooks/useDocumentOperations.d.ts +2 -0
  139. package/lib/hooks/useDocumentOperations.js +7 -7
  140. package/lib/hooks/useInputDialog.d.ts +1 -2
  141. package/lib/hooks/useMultiMasterDetailDcmts.js +10 -6
  142. package/lib/services/caseflow/CaseFlowService.d.ts +33 -3
  143. package/lib/services/caseflow/CaseFlowService.js +71 -44
  144. package/lib/services/caseflow/caseFlowNameCache.d.ts +5 -0
  145. package/lib/services/caseflow/caseFlowNameCache.js +19 -0
  146. package/lib/services/platform_services.d.ts +2 -3
  147. package/package.json +69 -69
  148. package/lib/components/features/assistant/dataset/Designer-Suggested-Questions.json +0 -102
  149. package/lib/components/features/assistant/dataset/Login-Suggested-Questions.json +0 -32
  150. package/lib/components/features/assistant/dataset/Surfer-Suggested-Questions.json +0 -102
@@ -234,6 +234,9 @@ function IconEdit(props) {
234
234
  function IconWarning(props) {
235
235
  return (_jsxs("svg", { fontSize: props.fontSize ? props.fontSize : FONTSIZE, viewBox: "0 0 1024 1024", fill: "currentColor", height: "1em", width: "1em", ...props, children: [" ", _jsx("path", { d: "M955.7 856l-416-720c-6.2-10.7-16.9-16-27.7-16s-21.6 5.3-27.7 16l-416 720C56 877.4 71.4 904 96 904h832c24.6 0 40-26.6 27.7-48zM480 416c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v184c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V416zm32 352a48.01 48.01 0 010-96 48.01 48.01 0 010 96z" }), " "] }));
236
236
  }
237
+ function IconWarningCircle(props) {
238
+ return (_jsxs("svg", { fontSize: props.fontSize ? props.fontSize : FONTSIZE, viewBox: "0 0 1024 1024", fill: "currentColor", height: "1em", width: "1em", ...props, children: [" ", _jsx("path", { d: "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-32 232c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V296zm32 440a48.01 48.01 0 010-96 48.01 48.01 0 010 96z" }), " "] }));
239
+ }
237
240
  function IconInfo(props) {
238
241
  return (_jsxs("svg", { fontSize: props.fontSize ? props.fontSize : FONTSIZE, viewBox: "0 0 1024 1024", fill: "currentColor", height: "1em", width: "1em", ...props, children: [" ", _jsx("path", { d: "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm32 664c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V456c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272zm-32-344a48.01 48.01 0 010-96 48.01 48.01 0 010 96z" }), " "] }));
239
242
  }
@@ -704,4 +707,4 @@ export function IconCache(props) {
704
707
  function IconScanner(props) {
705
708
  return (_jsxs("svg", { fontSize: props.fontSize ? props.fontSize : FONTSIZE, viewBox: "0 0 24 24", fill: "currentColor", height: "1em", width: "1em", ...props, children: [_jsx("path", { d: "M4 3.5 L20 3.5 L21 9 L3 9 Z", opacity: "0.5" }), _jsx("rect", { x: "2", y: "10", width: "20", height: "7", rx: "1.5" }), _jsx("rect", { x: "4", y: "11.5", width: "16", height: "4", rx: "0.5", opacity: "0.25", fill: "white" }), _jsx("rect", { x: "4", y: "13", width: "16", height: "0.8", fill: "white", opacity: "0.7" }), _jsx("rect", { x: "4", y: "18", width: "16", height: "1.5", rx: "0.5" }), _jsx("circle", { cx: "5", cy: "9.5", r: "0.7" }), _jsx("circle", { cx: "19", cy: "9.5", r: "0.7" })] }));
706
709
  }
707
- export { Icon123, IconABC, IconAccessPoint, IconAddressBook, IconSignCert, IconServerService, IconActivity, IconActivityLog, IconAdd, IconAddCircleOutline, IconAll, IconApply, IconApplyAndClose, IconArchive, IconArchiveDoc, IconArrowDown, IconArrowLeft, IconArrowRight, IconArrowUp, IconAtSign, IconAttachment, IconAutoConfig, IconBackward, IconBasket, IconBoard, IconBoxArchiveIn, IconBxInfo, IconBxLock, IconCalendar, IconCloseCircle, IconCloseOutline, IconCloud, IconCircleInfo, IconClear, IconColumns, IconCommand, IconCopy, IconCount, IconCrown, IconDashboard, IconDcmtType, IconDcmtTypeOnlyMetadata, IconDcmtTypeSys, IconDelete, IconDetails, IconDown, IconDownload, IconDotsVerticalCircleOutline, IconDuplicate, IconEdit, IconEqual, IconEqualNot, IconEraser, IconExpandRight, IconExport, IconFastBackward, IconFoldeAdd, IconFolderSearch, IconFolderZip, IconFastForward, IconFastSearch, IconFileDots, IconFilter, IconForceStop, IconForward, IconFreeze, IconFreeSearch, IconGreaterThan, IconGreaterThanOrEqual, IconHistory, IconImport, IconTag, IconInfo, IconInsertAbove, IconInsertBelow, IconHeart, IconHide, IconLanguage, IconLeft, IconLessThan, IconLessThanOrEqual, IconLock, IconLockClosed, IconLogin, IconLink, IconLogout, IconMail, IconMapping, IconMic, IconMenuHorizontal, IconMenuKebab, IconMenuVertical, IconMetadata, IconMetadata_Computed, IconMetadata_DataList, IconMetadata_Date, IconMetadata_DynamicDataList, IconMetadata_Numerator, IconMetadata_Numeric, IconMetadata_Special, IconMetadata_Text, IconMetadata_User, IconMonitor, IconOpenInNew, IconNotification, IconPassword, IconPencil, IconPlatform, IconPlay, IconPreview, IconPrinter, IconPrintOutline, IconProcess, IconProgressAbortRequested, IconProgressCompleted, IconProgressNotCompleted, IconProgressReady, IconProgressRunning, IconProgressStarted, IconRefresh, IconReset, IconRecentlyViewed, IconRight, IconSave, IconSearch, IconSelected, IconSettings, IconShow, IconSort, IconStop, IconStopwatch, IconSuccess, IconAlarmPlus, IconHourglass, IconNone, IconNotStarted, IconProgress, IconSuccessCirlce, IconSuitcase, IconSupport, IconUndo, IconUnFreeze, IconUp, IconUpdate, IconUpload, IconUser, IconUserProfile, IconVisible, IconWarning, IconWeb, IconWifi, IconWindowMaximize, IconWindowMinimize, IconWorkflow, IconWorkspace, IconUserGroup, IconUserGroupOutline, IconUserLevelMember, IconUserLevelAdministrator, IconUserLevelSystemAdministrator, IconUserLevelAutonomousAdministrator, IconDraggabledots, IconRelation, IconEasy, IconSum, IconDisk, IconDataList, IconPalette, IconFormatPageSplit, IconPaste, IconFileSearch, IconStar, IconStarRemove, IconSearchCheck, IconLightningFill, IconArrowUnsorted, IconArrowSortedUp, IconArrowSortedDown, IconConvertFilePdf, IconExportTo, IconSharedDcmt, IconShare, IconBatchUpdate, IconCheckFile, IconStatistics, IconSubstFile, IconAdvanced, IconSync, IconSavedQuery, IconSignature, IconSignaturePencil, IconRecursiveOps, IconCheckIn, IconTree, IconGrid, IconList, IconFolder, IconFolderOpen, IconFactory, IconTest, IconCheck, IconUncheck, IconSortAsc, IconSortDesc, IconRoundFileUpload, IconSortAscLetters, IconSortDescLetters, IconRotate, IconSortAscNumbers, IconSortDescNumbers, IconSortAscClock, IconSortDescClock, IconLayerGroup, IconBell, IconBellCheck, IconBellOutline, IconBellCheckOutline, IconEnvelopeOpenText, IconChangeUser, IconUserCheck, IconRelationManyToMany, IconRelationOneToMany, IconUserExpired, IconKey, IconZoomInLinear, IconZoomOutLinear, IconMenuCAWorkingGroups, IconCADossier, IconMenuCACaseflow, IconMenuDashboard, IconMenuCAAreas, IconMenuTask, IconMenuSearch, IconMenuFullTextSearch, IconMenuFavourite, IconSAPLogin, IconSAPLogin2, IconView, IconNewSignature, IconScanner };
710
+ export { Icon123, IconABC, IconAccessPoint, IconAddressBook, IconSignCert, IconServerService, IconActivity, IconActivityLog, IconAdd, IconAddCircleOutline, IconAll, IconApply, IconApplyAndClose, IconArchive, IconArchiveDoc, IconArrowDown, IconArrowLeft, IconArrowRight, IconArrowUp, IconAtSign, IconAttachment, IconAutoConfig, IconBackward, IconBasket, IconBoard, IconBoxArchiveIn, IconBxInfo, IconBxLock, IconCalendar, IconCloseCircle, IconCloseOutline, IconCloud, IconCircleInfo, IconClear, IconColumns, IconCommand, IconCopy, IconCount, IconCrown, IconDashboard, IconDcmtType, IconDcmtTypeOnlyMetadata, IconDcmtTypeSys, IconDelete, IconDetails, IconDown, IconDownload, IconDotsVerticalCircleOutline, IconDuplicate, IconEdit, IconEqual, IconEqualNot, IconEraser, IconExpandRight, IconExport, IconFastBackward, IconFoldeAdd, IconFolderSearch, IconFolderZip, IconFastForward, IconFastSearch, IconFileDots, IconFilter, IconForceStop, IconForward, IconFreeze, IconFreeSearch, IconGreaterThan, IconGreaterThanOrEqual, IconHistory, IconImport, IconTag, IconInfo, IconInsertAbove, IconInsertBelow, IconHeart, IconHide, IconLanguage, IconLeft, IconLessThan, IconLessThanOrEqual, IconLock, IconLockClosed, IconLogin, IconLink, IconLogout, IconMail, IconMapping, IconMic, IconMenuHorizontal, IconMenuKebab, IconMenuVertical, IconMetadata, IconMetadata_Computed, IconMetadata_DataList, IconMetadata_Date, IconMetadata_DynamicDataList, IconMetadata_Numerator, IconMetadata_Numeric, IconMetadata_Special, IconMetadata_Text, IconMetadata_User, IconMonitor, IconOpenInNew, IconNotification, IconPassword, IconPencil, IconPlatform, IconPlay, IconPreview, IconPrinter, IconPrintOutline, IconProcess, IconProgressAbortRequested, IconProgressCompleted, IconProgressNotCompleted, IconProgressReady, IconProgressRunning, IconProgressStarted, IconRefresh, IconReset, IconRecentlyViewed, IconRight, IconSave, IconSearch, IconSelected, IconSettings, IconShow, IconSort, IconStop, IconStopwatch, IconSuccess, IconAlarmPlus, IconHourglass, IconNone, IconNotStarted, IconProgress, IconSuccessCirlce, IconSuitcase, IconSupport, IconUndo, IconUnFreeze, IconUp, IconUpdate, IconUpload, IconUser, IconUserProfile, IconVisible, IconWarning, IconWarningCircle, IconWeb, IconWifi, IconWindowMaximize, IconWindowMinimize, IconWorkflow, IconWorkspace, IconUserGroup, IconUserGroupOutline, IconUserLevelMember, IconUserLevelAdministrator, IconUserLevelSystemAdministrator, IconUserLevelAutonomousAdministrator, IconDraggabledots, IconRelation, IconEasy, IconSum, IconDisk, IconDataList, IconPalette, IconFormatPageSplit, IconPaste, IconFileSearch, IconStar, IconStarRemove, IconSearchCheck, IconLightningFill, IconArrowUnsorted, IconArrowSortedUp, IconArrowSortedDown, IconConvertFilePdf, IconExportTo, IconSharedDcmt, IconShare, IconBatchUpdate, IconCheckFile, IconStatistics, IconSubstFile, IconAdvanced, IconSync, IconSavedQuery, IconSignature, IconSignaturePencil, IconRecursiveOps, IconCheckIn, IconTree, IconGrid, IconList, IconFolder, IconFolderOpen, IconFactory, IconTest, IconCheck, IconUncheck, IconSortAsc, IconSortDesc, IconRoundFileUpload, IconSortAscLetters, IconSortDescLetters, IconRotate, IconSortAscNumbers, IconSortDescNumbers, IconSortAscClock, IconSortDescClock, IconLayerGroup, IconBell, IconBellCheck, IconBellOutline, IconBellCheckOutline, IconEnvelopeOpenText, IconChangeUser, IconUserCheck, IconRelationManyToMany, IconRelationOneToMany, IconUserExpired, IconKey, IconZoomInLinear, IconZoomOutLinear, IconMenuCAWorkingGroups, IconCADossier, IconMenuCACaseflow, IconMenuDashboard, IconMenuCAAreas, IconMenuTask, IconMenuSearch, IconMenuFullTextSearch, IconMenuFavourite, IconSAPLogin, IconSAPLogin2, IconView, IconNewSignature, IconScanner };
@@ -1,9 +1,8 @@
1
- import React from "react";
2
1
  interface TMPdfViewerProps {
3
2
  pdfBlob: Blob;
4
3
  title?: string;
5
4
  isResizingActive?: boolean;
6
5
  enableFitToWidth?: boolean;
7
6
  }
8
- declare const TMPdfViewer: (props: TMPdfViewerProps) => React.JSX.Element;
7
+ declare const TMPdfViewer: (props: TMPdfViewerProps) => import("react/jsx-runtime").JSX.Element;
9
8
  export default TMPdfViewer;
@@ -1,8 +1,8 @@
1
- import React, { ReactNode } from 'react';
1
+ import { ReactNode } from 'react';
2
2
  interface TMToppyMessageProps {
3
3
  message: ReactNode;
4
4
  titleTooltip?: string;
5
5
  maxWidth?: string;
6
6
  }
7
- declare const TMToppyMessage: (props: TMToppyMessageProps) => React.JSX.Element;
7
+ declare const TMToppyMessage: (props: TMToppyMessageProps) => import("react/jsx-runtime").JSX.Element;
8
8
  export default TMToppyMessage;
@@ -24,7 +24,7 @@ export declare const getFullFileExtension: (fileName: string, depth?: number) =>
24
24
  * Es: pdf.p7m.tsd → pdf, pdf.p7m → pdf, pdf → pdf
25
25
  */
26
26
  export declare const getBaseExtension: (ext: string) => string;
27
- export declare const getFileIcon: (fileExtension: string | undefined, fileCount: number | undefined, tooltipContent?: JSX.Element | string) => React.JSX.Element;
27
+ export declare const getFileIcon: (fileExtension: string | undefined, fileCount: number | undefined, tooltipContent?: JSX.Element | string) => import("react/jsx-runtime").JSX.Element;
28
28
  export declare function formatBytes(bytes: number | undefined, decimalPlaces?: number): string;
29
29
  export interface RowData {
30
30
  [key: string]: string | number | null;
@@ -52,15 +52,9 @@ interface TabItemProps {
52
52
  $isSelected: boolean;
53
53
  $activeGradient?: string;
54
54
  }
55
- export declare const StyledTabItem: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Merged<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "style"> & {
56
- style?: React.CSSProperties | import("styled-components/dist/types").CSSPropertiesWithVars | undefined;
57
- }, TabItemProps>> & string;
58
- export declare const StyledTabIcon: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Merged<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement>, "style"> & {
59
- style?: React.CSSProperties | import("styled-components/dist/types").CSSPropertiesWithVars | undefined;
60
- }, TabItemProps>> & string;
61
- export declare const TMCountBadge: import("styled-components/dist/types").IStyledComponentBase<"web", Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "style"> & {
62
- style?: React.CSSProperties | import("styled-components/dist/types").CSSPropertiesWithVars | undefined;
63
- }> & string;
55
+ export declare const StyledTabItem: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("styled-components").FastOmit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof TabItemProps> & TabItemProps, never> & Partial<Pick<import("styled-components").FastOmit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof TabItemProps> & TabItemProps, never>>> & string;
56
+ export declare const StyledTabIcon: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("styled-components").FastOmit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement>, keyof TabItemProps> & TabItemProps, never> & Partial<Pick<import("styled-components").FastOmit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement>, keyof TabItemProps> & TabItemProps, never>>> & string;
57
+ export declare const TMCountBadge: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never> & Partial<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>>> & string;
64
58
  export declare const PDGS_COLORS: {
65
59
  DOSSIER: string;
66
60
  DOCUMENT: string;
@@ -1,7 +1,7 @@
1
1
  import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { AccessLevels, CICO_MetadataNames, SDK_Globals, SystemMIDsAsNumber } from "@topconsultnpm/sdk-ts";
3
3
  import TMTooltip from "../components/base/TMTooltip";
4
- import { dcmtsFileCachePreview, Globalization, removeDcmtsFileCache, SDKUI_Globals, SDKUI_Localizator } from "./index";
4
+ import { Globalization, removeDcmtsFileCache, SDKUI_Globals, SDKUI_Localizator } from "./index";
5
5
  import { getBaseExtension, getFullFileExtension } from "./TMUtils";
6
6
  import { DownloadTypes } from "../ts/types";
7
7
  const findCheckOutUserName = (users, checkoutUserId) => {
@@ -69,8 +69,7 @@ export const cicoDownloadFilesCallback = async (sources, checkout, downloadDcmts
69
69
  updateCicoCheckoutStorageItem(newItem, source.type, "addOrUpdate");
70
70
  }
71
71
  const cacheKey = `${tid}-${did}`;
72
- if (dcmtsFileCachePreview.has(cacheKey))
73
- removeDcmtsFileCache(cacheKey);
72
+ removeDcmtsFileCache(cacheKey);
74
73
  files.push({ TID: tid, DID: did, FILEEXT: ext, fileName });
75
74
  }
76
75
  });
@@ -77,7 +77,7 @@ export { openApps, calcResponsiveDirection, calcResponsiveSizes, taskModalSizes,
77
77
  export declare function moduleVersion(module: moduleTypes): string;
78
78
  export declare function buildtype(module: moduleTypes): string;
79
79
  export declare const highlightText: (text: string, searchValue: string) => JSX.Element;
80
- export declare const renderHighlightedText: (text: string, searchText: string, isSelected: boolean) => string | (string | React.JSX.Element)[];
80
+ export declare const renderHighlightedText: (text: string, searchText: string, isSelected: boolean) => string | (string | import("react/jsx-runtime").JSX.Element)[];
81
81
  export declare function versionAndBuildtypeInfo(module: moduleTypes): string;
82
82
  export declare const getListMaxItems: (deviceType: DeviceType | undefined) => number;
83
83
  export declare const svgToString: (icon: React.ReactElement) => string;
@@ -1,4 +1,4 @@
1
- import { MetadataDescriptor, MetadataDataDomains, SystemMIDsAsNumber, MetadataDataTypes, QueryDescriptor, SelectItem, DataTableDescriptor, LayoutModes, QueryOperators, SavedQueryDescriptor } from '@topconsultnpm/sdk-ts';
1
+ import { MetadataDescriptor, MetadataDataDomains, SystemMIDsAsNumber, MetadataDataTypes, QueryDescriptor, SelectItem, DataTableDescriptor, LayoutModes, QueryOperators, SavedQueryDescriptor, DcmtTypeDescriptor, SearchResultDescriptor } from '@topconsultnpm/sdk-ts';
2
2
  import { MetadataValueDescriptorEx } from '../ts';
3
3
  export type TID_Alias = {
4
4
  tid: number;
@@ -8,7 +8,7 @@ export declare const getTIDsByQd: (qd: QueryDescriptor | undefined) => TID_Alias
8
8
  /** Restituisce i tipi documento (con metadati) referenziati da qd.
9
9
  * Con refreshCache = true i descrittori vengono riletti dal server, così la lista dei metadati
10
10
  * recepisce quelli aggiunti o rimossi dopo il popolamento della cache. */
11
- export declare const getDcmtTypesByQdAsync: (qd: QueryDescriptor, refreshCache?: boolean) => Promise<import("@topconsultnpm/sdk-ts").DcmtTypeDescriptor[]>;
11
+ export declare const getDcmtTypesByQdAsync: (qd: QueryDescriptor, refreshCache?: boolean) => Promise<DcmtTypeDescriptor[]>;
12
12
  export declare const displayMetadataValue: (md: MetadataDescriptor | undefined, value: string | undefined, valueEmptyDescription?: string) => string;
13
13
  export declare const IsParametricQuery: (qd: QueryDescriptor | undefined) => boolean;
14
14
  export declare const addHiddenSelectItem: (select: SelectItem[], tid: number | undefined, mid: SystemMIDsAsNumber) => void;
@@ -20,5 +20,18 @@ export declare const getWorkItemSetIDAsync: (vid: number, did: number) => Promis
20
20
  /** Id assegnato alla ricerca di sistema con tutti i documenti: non è in cache, va ricostruita a runtime con getSysAllDcmtsSQD */
21
21
  export declare const SYS_ALL_DCMTS_SQD_ID = 1;
22
22
  export declare const getSysAllDcmtsSQD: (tid: number | undefined, easyOr: boolean) => Promise<SavedQueryDescriptor>;
23
+ /** MID dei metadati con tracciatura "Mostra file" del tipo documento */
24
+ export declare const getTraceShowFileMids: (dtd: DcmtTypeDescriptor | undefined) => number[];
25
+ /**
26
+ * Legge solo i metadati indicati del documento con una ricerca mirata.
27
+ * Se la ricerca fallisce o non li restituisce tutti (es. permessi), ripiega sulla GetMetadata completa.
28
+ * Restituisce null se il documento non rientra più nel tipo documento (es. vista filtrata sui metadati aggiornati).
29
+ */
30
+ export declare const getDcmtMetadataValuesAsync: (tid: number, did: number, mids: number[]) => Promise<SearchResultDescriptor | null | undefined>;
31
+ /** Testo dell'avviso quando i metadati "Mostra file" non si aggiornano: con più metadati i nomi vanno nel tooltip */
32
+ export declare const getTraceShowFileNotUpdatedMessage: (dtd: DcmtTypeDescriptor | undefined) => {
33
+ message: string;
34
+ tooltip: string;
35
+ };
23
36
  export declare const searchResultToMetadataValues: (tid: number | undefined, dtd: DataTableDescriptor | undefined, rows: string[], mids: number[], metadata: MetadataDescriptor[], layoutMode: LayoutModes, isReadOnlyOrigin?: boolean) => MetadataValueDescriptorEx[];
24
37
  export declare const handleArchiveVisibility: (md: MetadataDescriptor) => boolean;
@@ -1,4 +1,4 @@
1
- import { AccessLevels, MetadataDataDomains, DcmtTypeListCacheService, SystemMIDsAsNumber, MetadataDataTypes, QueryDescriptor, QueryFunctions, SelectItem, SelectItemVisibilities, FromItem, LayoutModes, QueryOperators, SavedQueryDescriptor, SearchEngine, WhereItem, OrderByItem, SDK_Globals, AppModules, SystemTIDs, WorkItemMetadataNames, PlatformObjectValidator } from '@topconsultnpm/sdk-ts';
1
+ import { AccessLevels, MetadataDataDomains, DcmtTypeListCacheService, SystemMIDsAsNumber, MetadataDataTypes, QueryDescriptor, QueryFunctions, SelectItem, SelectItemVisibilities, FromItem, LayoutModes, QueryOperators, SavedQueryDescriptor, SearchEngine, WhereItem, OrderByItem, SDK_Globals, AppModules, SystemTIDs, WorkItemMetadataNames, PlatformObjectValidator, MetadataSpecials } from '@topconsultnpm/sdk-ts';
2
2
  import { DateDisplayTypes, Globalization } from './Globalization';
3
3
  import { ChronologyMIDs, DraftsMIDs, MetadataValueDescriptorEx } from '../ts';
4
4
  import { SDKUI_Localizator } from './SDKUI_Localizator';
@@ -265,6 +265,57 @@ export const getSysAllDcmtsSQD = async (tid, easyOr) => {
265
265
  sqd.qd = await getQD(tid, easyOr, SDKUI_Globals.userSettings.searchSettings?.maxDcmtsToBeReturned ?? 1000);
266
266
  return sqd;
267
267
  };
268
+ /** MID dei metadati con tracciatura "Mostra file" del tipo documento */
269
+ export const getTraceShowFileMids = (dtd) => dtd?.metadata?.filter(md => md.special === MetadataSpecials.Trace_ShowFile && md.id !== undefined).map(md => md.id) ?? [];
270
+ /**
271
+ * Legge solo i metadati indicati del documento con una ricerca mirata.
272
+ * Se la ricerca fallisce o non li restituisce tutti (es. permessi), ripiega sulla GetMetadata completa.
273
+ * Restituisce null se il documento non rientra più nel tipo documento (es. vista filtrata sui metadati aggiornati).
274
+ */
275
+ export const getDcmtMetadataValuesAsync = async (tid, did, mids) => {
276
+ const searchEngine = SDK_Globals.tmSession?.NewSearchEngine();
277
+ try {
278
+ let qd = SearchEngine.NewQueryDescriptor();
279
+ if (qd.from) {
280
+ qd.from.tid = tid;
281
+ qd.select = mids.map(mid => {
282
+ let si = new SelectItem();
283
+ si.tid = tid;
284
+ si.mid = mid;
285
+ si.visibility = SelectItemVisibilities.Visible;
286
+ return si;
287
+ });
288
+ let wiDID = new WhereItem();
289
+ wiDID.tid = tid;
290
+ wiDID.mid = SystemMIDsAsNumber.DID;
291
+ wiDID.operator = QueryOperators.Equal;
292
+ wiDID.value1 = did.toString();
293
+ wiDID.or = false;
294
+ wiDID.leftBrackets = '(';
295
+ wiDID.rightBrackets = ')';
296
+ qd.where = [wiDID];
297
+ const result = await searchEngine?.SearchByIDAsync(qd);
298
+ if (result && mids.every(mid => result.selectMIDs?.includes(mid))) {
299
+ // Ricerca riuscita ma senza righe: il documento è uscito dalla vista, GetMetadata andrebbe in errore
300
+ return result.dtdResult?.rows?.[0] ? result : null;
301
+ }
302
+ }
303
+ }
304
+ catch (e) {
305
+ console.warn('Ricerca mirata dei metadati non riuscita, uso GetMetadata:', e);
306
+ }
307
+ return await searchEngine?.GetMetadataAsync(tid, did, true);
308
+ };
309
+ /** Testo dell'avviso quando i metadati "Mostra file" non si aggiornano: con più metadati i nomi vanno nel tooltip */
310
+ export const getTraceShowFileNotUpdatedMessage = (dtd) => {
311
+ const names = (dtd?.metadata ?? [])
312
+ .filter(md => md.special === MetadataSpecials.Trace_ShowFile && md.id !== undefined)
313
+ .map(md => ((SDK_Globals.useLocalizedName ? md.nameLoc : md.name) ?? md.name ?? md.nameLoc ?? '').toString());
314
+ const message = names.length === 1
315
+ ? SDKUI_Localizator.DcmtNoLongerAvailable_MetadataNotUpdated.replace('{{0}}', names[0])
316
+ : SDKUI_Localizator.DcmtNoLongerAvailable_MetadataNotUpdatedMulti.replace('{{0}}', String(names.length));
317
+ return { message, tooltip: names.length === 1 ? message : names.join('\n') };
318
+ };
268
319
  export const searchResultToMetadataValues = (tid, dtd, rows, mids, metadata, layoutMode, isReadOnlyOrigin = false) => {
269
320
  if (!metadata || metadata.length === 0) {
270
321
  return [];
@@ -1,7 +1,8 @@
1
1
  import { useCallback, useEffect, useState } from 'react';
2
- import { SDK_Globals } from '@topconsultnpm/sdk-ts';
2
+ import { CF_WorkItemCategories, SDK_Globals } from '@topconsultnpm/sdk-ts';
3
3
  import { CaseFlowService } from '../services/caseflow/CaseFlowService';
4
- import { getWorkItemTargetDoc, isMoreInfoWorkItem, isSignatureWorkItem } from '../services/caseflow/caseFlowWorkItemUtils';
4
+ import { getWorkItemTargetDoc, isSignatureWorkItem } from '../services/caseflow/caseFlowWorkItemUtils';
5
+ import { isFinalActionSync } from '../services/caseflow/caseFlowNameCache';
5
6
  const CASEFLOW_APPROVE_CHANGED_EVENT = 'onCaseFlowApproveChange';
6
7
  let cache = [];
7
8
  let inFlight;
@@ -16,10 +17,27 @@ const notifyChanged = () => {
16
17
  return;
17
18
  window.dispatchEvent(new CustomEvent(CASEFLOW_APPROVE_CHANGED_EVENT));
18
19
  };
20
+ /**
21
+ * Categorie che si completano DAL DOCUMENTO: firmarlo, approvarlo, prenderne
22
+ * visione. Le altre si completano nella pratica, perché il Toppy del form offre
23
+ * solo Approva/Rifiuta e non saprebbe fare il resto:
24
+ * - Caricamento manuale (Upload): il commento è obbligatorio (TMC-2822);
25
+ * - Generica / caricamento automatico: si chiude da sola quando il documento
26
+ * viene agganciato;
27
+ * - Completamento dati: vanno inseriti i valori dei metadati;
28
+ * - Verifica bloccante: sblocca o interrompe la pratica;
29
+ * - Richiesta informazioni: ha una risposta, non un esito.
30
+ */
31
+ const DOCUMENT_CATEGORIES = new Set([
32
+ CF_WorkItemCategories.Approval,
33
+ CF_WorkItemCategories.Signature,
34
+ CF_WorkItemCategories.Acknowledgment,
35
+ ]);
19
36
  /**
20
37
  * Ricarica la cache: i workitem pendenti dell'utente, risolti sul documento su
21
- * cui lavorano. Le richieste di informazioni sono escluse (si rispondono nella
22
- * pratica, non sul documento) come i workitem senza documento.
38
+ * cui lavorano. Restano fuori le categorie che non si completano dal documento
39
+ * (vedi DOCUMENT_CATEGORIES), le azioni che chiudono la pratica e i workitem
40
+ * senza documento.
23
41
  */
24
42
  const reload = async () => {
25
43
  const userId = SDK_Globals.tmSession?.SessionDescr?.userID;
@@ -30,8 +48,7 @@ const reload = async () => {
30
48
  const groups = await CaseFlowService.getMyPendingWorkItems(userId);
31
49
  const resolved = [];
32
50
  for (const { caseflow, workItems } of groups) {
33
- // Le richieste di informazioni si rispondono nella pratica, non sul documento.
34
- const relevant = workItems.filter(wi => !isMoreInfoWorkItem(wi));
51
+ const relevant = workItems.filter(wi => DOCUMENT_CATEGORIES.has(wi.workItemCategory));
35
52
  if (relevant.length === 0)
36
53
  continue;
37
54
  // Il TID dell'azione è autorato sul TEMPLATE e non materializzato
@@ -47,6 +64,14 @@ const reload = async () => {
47
64
  instance = (await CaseFlowService.getCaseflow(instance.id, instance.cftid)) ?? instance;
48
65
  }
49
66
  for (const wi of relevant) {
67
+ // Un'azione che chiude la pratica richiede il motivo, che il Toppy del
68
+ // documento non chiede: si completa nella pratica. Il template è già
69
+ // risolto qui sopra, quindi `isFinal` è noto.
70
+ // La Firma resta: firmare si può solo da qui (l'ospite non ha altra
71
+ // strada). Fallirà il solo completamento automatico, che l'utente fa
72
+ // poi nella pratica scrivendo il motivo, con la firma già apposta.
73
+ if (!isSignatureWorkItem(wi) && isFinalActionSync(caseflow.cftid, wi.actionID))
74
+ continue;
50
75
  const target = getWorkItemTargetDoc(instance, wi);
51
76
  if (!target)
52
77
  continue;
@@ -1,5 +1,5 @@
1
1
  import { useCallback, useMemo, useState } from 'react';
2
- import { cicoDownloadFilesCallback, dcmtsFileCachePreview, getCicoDownloadFileName, getExceptionMessage, removeDcmtsFileCache, renderCicoCheckInContent, SDKUI_Globals, SDKUI_Localizator, updateCicoCheckoutStorageItem, validateCicoFileName } from '../helper';
2
+ import { cicoDownloadFilesCallback, getCicoDownloadFileName, getExceptionMessage, removeDcmtsFileCache, renderCicoCheckInContent, SDKUI_Globals, SDKUI_Localizator, updateCicoCheckoutStorageItem, validateCicoFileName } from '../helper';
3
3
  import { ButtonNames, DeviceType, ShowAlert, TMMessageBoxManager, TMResultManager, TMWaitPanelManager, useDeviceType } from '../components';
4
4
  import { ResultTypes, SDK_Globals } from '@topconsultnpm/sdk-ts';
5
5
  let abortController = new AbortController();
@@ -166,8 +166,7 @@ export const useCheckInOutOperations = (props) => {
166
166
  await onRefreshAsync?.(dcmt.TID, dcmt.DID, true);
167
167
  // remove file from preview cache to force refresh with the new checked-in file
168
168
  const cacheKey = `${dcmt.TID}-${dcmt.DID}`;
169
- if (dcmtsFileCachePreview.has(cacheKey))
170
- removeDcmtsFileCache(cacheKey);
169
+ removeDcmtsFileCache(cacheKey);
171
170
  await onRefreshPreview();
172
171
  triggerCommentOnFileAdd([dcmt.DID]);
173
172
  }
@@ -121,6 +121,8 @@ export const useDcmtOperations = () => {
121
121
  if (waitPanelRef.current === panel)
122
122
  waitPanelRef.current = null;
123
123
  };
124
+ /** Messaggio per il popover delle pill del pannello: il DID dice a quale documento si riferisce. */
125
+ const panelMessage = (dcmt, message) => `DID ${dcmt.DID}: ${message}`;
124
126
  // Il pannello vive fuori dall'albero del chiamante: allo smontaggio va chiuso a mano.
125
127
  useEffect(() => () => { waitPanelRef.current?.close(); waitPanelRef.current = null; }, []);
126
128
  const { OpenFileDialog } = useFileDialog();
@@ -362,8 +364,9 @@ export const useDcmtOperations = () => {
362
364
  // continuare a scaricare dietro al dialogo.
363
365
  await panel.waitWhilePaused();
364
366
  if (abortController.signal.aborted) {
365
- results.push({ rowIndex: i, id1: dcmts[i].TID, id2: dcmts[i].DID, resultType: ResultTypes.WARNING, description: `Operazione interrotta. Elaborati ${completed} documenti` });
366
- panel.warning();
367
+ const description = SDKUI_Localizator.OperationDcmtsInterrupted.replaceParams(completed);
368
+ results.push({ rowIndex: i, id1: dcmts[i].TID, id2: dcmts[i].DID, resultType: ResultTypes.WARNING, description });
369
+ panel.warning(1, description);
367
370
  break;
368
371
  }
369
372
  try {
@@ -371,8 +374,9 @@ export const useDcmtOperations = () => {
371
374
  panel.ok();
372
375
  }
373
376
  catch (ex) {
374
- results.push({ rowIndex: i, id1: dcmts[i].TID, id2: dcmts[i].DID, resultType: ResultTypes.ERROR, description: getExceptionMessage(ex) });
375
- panel.error();
377
+ const description = getExceptionMessage(ex);
378
+ results.push({ rowIndex: i, id1: dcmts[i].TID, id2: dcmts[i].DID, resultType: ResultTypes.ERROR, description });
379
+ panel.error(1, panelMessage(dcmts[i], description));
376
380
  const err = ex;
377
381
  if (err.name === 'CanceledError') {
378
382
  ShowAlert({ message: err.message, mode: 'warning', duration: 3000, title: 'Abort' });
@@ -421,7 +425,7 @@ export const useDcmtOperations = () => {
421
425
  // Download the selected files
422
426
  for (let i = 0; i < selectedFiles.length; i++) {
423
427
  if (abortController.signal.aborted) {
424
- result.push({ rowIndex: i, id1: inputDcmts[i].TID, id2: inputDcmts[i].DID, resultType: ResultTypes.WARNING, description: `Operazione interrotta. Elaborati ${i + 1} documenti` });
428
+ result.push({ rowIndex: i, id1: inputDcmts[i].TID, id2: inputDcmts[i].DID, resultType: ResultTypes.WARNING, description: SDKUI_Localizator.OperationItemsInterrupted.replaceParams(i) });
425
429
  break;
426
430
  }
427
431
  let fd = files.find(f => f.name === selectedFiles[i]);
@@ -538,16 +542,16 @@ export const useDcmtOperations = () => {
538
542
  for (let i = 0; i < inputDcmts.length; i++) {
539
543
  await panel.waitWhilePaused();
540
544
  if (abortController.signal.aborted) {
541
- result.push({ rowIndex: i, id1: inputDcmts[i].TID, id2: inputDcmts[i].DID, resultType: ResultTypes.WARNING, description: `Operazione interrotta. Elaborati ${i + 1} documenti` });
542
- panel.warning();
545
+ const description = SDKUI_Localizator.OperationDcmtsInterrupted.replaceParams(i);
546
+ result.push({ rowIndex: i, id1: inputDcmts[i].TID, id2: inputDcmts[i].DID, resultType: ResultTypes.WARNING, description });
547
+ panel.warning(1, description);
543
548
  break;
544
549
  }
545
550
  try {
546
551
  if (isBatch)
547
552
  panel.setSubtitle(`${SDKUI_Localizator.FileUpload} ${i + 1} di ${inputDcmts.length}`);
548
553
  const cacheKey = `${inputDcmts[i].TID}-${inputDcmts[i].DID}`;
549
- if (dcmtsFileCachePreview.has(cacheKey))
550
- removeDcmtsFileCache(cacheKey);
554
+ removeDcmtsFileCache(cacheKey);
551
555
  let ue = SDK_Globals.tmSession?.NewUpdateEngineByID();
552
556
  if (ue) {
553
557
  ue.TID = inputDcmts[i].TID;
@@ -566,8 +570,9 @@ export const useDcmtOperations = () => {
566
570
  panel.ok();
567
571
  }
568
572
  catch (ex) {
569
- result.push({ rowIndex: i, id1: inputDcmts[i].TID, id2: inputDcmts[i].DID, resultType: ResultTypes.ERROR, description: getExceptionMessage(ex) });
570
- panel.error();
573
+ const description = getExceptionMessage(ex);
574
+ result.push({ rowIndex: i, id1: inputDcmts[i].TID, id2: inputDcmts[i].DID, resultType: ResultTypes.ERROR, description });
575
+ panel.error(1, panelMessage(inputDcmts[i], description));
571
576
  const err = ex;
572
577
  if (err.name === 'CanceledError') {
573
578
  ShowAlert({ message: err.message, mode: 'warning', duration: 3000, title: 'Abort' });
@@ -684,8 +689,9 @@ export const useDcmtOperations = () => {
684
689
  for (let i = 0; i < inputDcmts.length; i++) {
685
690
  await panel.waitWhilePaused();
686
691
  if (abortController.signal.aborted) {
687
- result.push({ rowIndex: i, id1: inputDcmts[i].TID, id2: inputDcmts[i].DID, resultType: ResultTypes.WARNING, description: `Operazione interrotta. Elaborati ${i + 1} documenti` });
688
- panel.warning();
692
+ const description = SDKUI_Localizator.OperationDcmtsInterrupted.replaceParams(i);
693
+ result.push({ rowIndex: i, id1: inputDcmts[i].TID, id2: inputDcmts[i].DID, resultType: ResultTypes.WARNING, description });
694
+ panel.warning(1, description);
689
695
  break;
690
696
  }
691
697
  panel.setSubtitle(`Documento ${i + 1} di ${inputDcmts.length}`);
@@ -793,6 +799,7 @@ export const useDcmtOperations = () => {
793
799
  const importWarnings = await importCertificatesAsync(inputDcmts[i], i, fetchRemoteCertificates, abortController.signal);
794
800
  if (importWarnings) {
795
801
  result.push(...importWarnings);
802
+ importWarnings.forEach(w => panel.warning(1, panelMessage(inputDcmts[i], w.description ?? '')));
796
803
  }
797
804
  break;
798
805
  }
@@ -803,12 +810,13 @@ export const useDcmtOperations = () => {
803
810
  catch (ex) {
804
811
  let msg = getExceptionMessage(ex);
805
812
  if (msg.startsWith('WARNING#')) {
806
- result.push({ rowIndex: i, id1: inputDcmts[i].TID, id2: inputDcmts[i].DID, resultType: ResultTypes.WARNING, description: msg.replace('WARNING#', '') });
807
- panel.warning();
813
+ const description = msg.replace('WARNING#', '');
814
+ result.push({ rowIndex: i, id1: inputDcmts[i].TID, id2: inputDcmts[i].DID, resultType: ResultTypes.WARNING, description });
815
+ panel.warning(1, panelMessage(inputDcmts[i], description));
808
816
  }
809
817
  else {
810
818
  result.push({ rowIndex: i, id1: inputDcmts[i].TID, id2: inputDcmts[i].DID, resultType: ResultTypes.ERROR, description: msg });
811
- panel.error();
819
+ panel.error(1, panelMessage(inputDcmts[i], msg));
812
820
  }
813
821
  const err = ex;
814
822
  if (err.name === 'CanceledError') {
@@ -3,6 +3,7 @@ import { DcmtTypeDescriptor, FileFormats, HomeBlogPost, LayoutDescriptor, Layout
3
3
  import { IColumnProps } from "devextreme-react/cjs/data-grid";
4
4
  import { TMContextMenuItemProps } from '../components/NewComponents/ContextMenu/types';
5
5
  import { DcmtInfo, MetadataValueDescriptorEx, SearchResultContext, TaskContext, IGraphometricManagerProp } from "../ts";
6
+ import { TMSearchResultFloatingActionConfig } from "../components/features/search/TMSearchResultFloatingActionButton";
6
7
  import { UseCheckInOutOperationsReturn } from "./useCheckInOutOperations";
7
8
  import { UseDcmtOperationsReturn } from "./useDcmtOperations";
8
9
  import { UseRelatedDocumentsReturn } from "./useRelatedDocuments";
@@ -64,6 +65,7 @@ export interface UIConfigProps {
64
65
  inputDcmtFormLayoutMode?: LayoutModes;
65
66
  graphometricManager?: IGraphometricManagerProp;
66
67
  showSelector?: boolean;
68
+ floatingActionConfig?: TMSearchResultFloatingActionConfig;
67
69
  }
68
70
  export interface TasksProps {
69
71
  allTasks?: Array<TaskDescriptor>;
@@ -21,7 +21,7 @@ import { useDcmtOperations } from "./useDcmtOperations";
21
21
  import useFloatingBarPinnedItems from "./useFloatingBarPinnedItems";
22
22
  import { useInputAttachmentsDialog, useInputCvtFormatDialog } from "./useInputDialog";
23
23
  import { useRelatedDocuments } from "./useRelatedDocuments";
24
- import { convertSearchResultDescriptorToFileItems, dcmtsFileCachePreview, getDcmtCicoStatus, getMoreInfoTasksForDocument, IconActivity, IconArchiveDetail, IconArchiveDoc, IconArchiveMaster, IconBatchUpdate, IconCheck, IconCheckFile, IconCheckIn, IconCircleInfo, IconCloseCircle, IconConvertFilePdf, IconCopy, IconCustom, IconDelete, IconDetailDcmts, IconDotsVerticalCircleOutline, IconDownload, IconEdit, IconExportTo, IconFileDots, IconHide, IconInfo, IconMenuCAArchive, IconMoveToFolder, IconPair, IconPin, IconPlatform, IconPreview, IconRelation, IconSearch, IconShare, IconSharedDcmt, IconShow, IconSignaturePencil, IconStar, IconSubstFile, IconUndo, IconUnpair, IconUserGroupOutline, isConvertibleToPdfExt, isPdfEditorAvailable, S4T_USER_REGISTRY_MASTER, SDKUI_Globals, SDKUI_Localizator, searchResultToMetadataValues, TMImageLibrary, IconCertificateBadge, IconArchiveMultipleDetailDocuments, isDraftsDTD } from '../helper';
24
+ import { convertSearchResultDescriptorToFileItems, getDcmtCicoStatus, getMoreInfoTasksForDocument, IconActivity, IconArchiveDetail, IconArchiveDoc, IconArchiveMaster, IconBatchUpdate, IconCheck, IconCheckFile, IconCheckIn, IconCircleInfo, IconCloseCircle, IconConvertFilePdf, IconCopy, IconCustom, IconDelete, IconDetailDcmts, IconDotsVerticalCircleOutline, IconDownload, IconEdit, IconExportTo, IconFileDots, IconHide, IconInfo, IconMenuCAArchive, IconMoveToFolder, IconPair, IconPin, IconPlatform, IconPreview, IconRelation, IconSearch, IconShare, IconSharedDcmt, IconShow, IconSignaturePencil, IconStar, IconSubstFile, IconUndo, IconUnpair, IconUserGroupOutline, isConvertibleToPdfExt, isPdfEditorAvailable, S4T_USER_REGISTRY_MASTER, SDKUI_Globals, SDKUI_Localizator, searchResultToMetadataValues, TMImageLibrary, IconCertificateBadge, IconArchiveMultipleDetailDocuments, isDraftsDTD } from '../helper';
25
25
  import { isXMLFileExt } from "../helper/dcmtsHelper";
26
26
  import TMCopyToFolderForm from "../components/features/documents/TMCopyToFolderForm";
27
27
  import TMMergeToPdfForm from "../components/features/documents/TMMergeToPdfForm";
@@ -86,7 +86,7 @@ export const useDocumentOperations = (props) => {
86
86
  const { dataColumns, dataSource, selectedRowKeys, } = exportData ?? {};
87
87
  const { visibleItems = [], onRefreshSearchAsyncDatagrid, onRefreshDataRowsAsync, refreshFocusedDataRowAsync, onRefreshBlogDatagrid, onRefreshPreviewDatagrid, refreshOperationsTrigger = 0, onRefreshOperationsDatagrid, } = datagridUtility ?? {};
88
88
  const { approvalVID, dcmtDataRowForCicoStatus, selectedDcmtSearchResultRelations, dcmtTIDHasDetailRelations = false, dcmtTIDHasMasterRelations = false, updateCurrentDcmt, onCloseDcmtForm, onRefreshBlogForm, onRefreshPreviewForm, taskFormDialogComponent, s4TViewerDialogComponent } = dcmtUtility ?? {};
89
- const { floatingBarContainerRef, customButtonsLayout, workingGroupContext, openS4TViewer = false, openDcmtFormAsModal = false, showDcmtFormSidebar = true, allowFloatingBar = true, enablePinIcons = true, allowRelations = true, showTodoDcmtForm = false, showToppyDraggableHelpCenter = true, toppyHelpCenterUsePortal = false, editPdfForm = false, inputDcmtFormLayoutMode = LayoutModes.Update, graphometricManager, showSelector = false, } = uiConfig;
89
+ const { floatingBarContainerRef, customButtonsLayout, workingGroupContext, openS4TViewer = false, openDcmtFormAsModal = false, showDcmtFormSidebar = true, allowFloatingBar = true, enablePinIcons = true, allowRelations = true, showTodoDcmtForm = false, showToppyDraggableHelpCenter = true, toppyHelpCenterUsePortal = false, editPdfForm = false, inputDcmtFormLayoutMode = LayoutModes.Update, graphometricManager, showSelector = false, floatingActionConfig, } = uiConfig;
90
90
  const { allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTaskCallback, editTaskCallback } = tasks;
91
91
  const {
92
92
  // Refresh operations (data consistency)
@@ -464,9 +464,7 @@ export const useDocumentOperations = (props) => {
464
464
  return;
465
465
  const dcmts = selectedDcmtInfos.map(dcmt => {
466
466
  const cacheKey = `${dcmt.TID}-${dcmt.DID}`;
467
- if (dcmtsFileCachePreview.has(cacheKey)) {
468
- removeDcmtsFileCache(cacheKey);
469
- }
467
+ removeDcmtsFileCache(cacheKey);
470
468
  return { ...dcmt, fileFormat: format };
471
469
  });
472
470
  const refreshFn = async () => {
@@ -1377,7 +1375,8 @@ export const useDocumentOperations = (props) => {
1377
1375
  onTaskCreateRequest,
1378
1376
  datagridUtility,
1379
1377
  dcmtUtility,
1380
- fetchRemoteCertificates
1378
+ fetchRemoteCertificates,
1379
+ floatingActionConfig
1381
1380
  };
1382
1381
  // Navigazione del master nell'archiviazione multipla dei dettagli: il modale prende il documento
1383
1382
  // con il focus, quindi le frecce hanno senso solo senza selezione a checkbox, che ha la precedenza
@@ -1409,7 +1408,8 @@ export const useDocumentOperations = (props) => {
1409
1408
  onTaskCreateRequest,
1410
1409
  datagridUtility,
1411
1410
  dcmtUtility,
1412
- fetchRemoteCertificates
1411
+ fetchRemoteCertificates,
1412
+ floatingActionConfig
1413
1413
  };
1414
1414
  const renderDcmtOperations = (_jsxs(_Fragment, { children: [(showExportForm && searchResult && dataColumns && dataSource && selectedRowKeys) && (_jsx(TMDataGridExportForm, { dataColumns: dataColumns, dataSource: dataSource, selectedRowKeys: selectedRowKeys, onCloseExportForm: () => setShowExportForm(false), searchResult: searchResult })), _jsx(StyledMultiViewPanel, { $isVisible: isOpenDcmtForm && !isDcmtFormModal, children: ((isOpenDcmtForm && focusedItem?.TID !== undefined && focusedItem?.DID !== undefined) &&
1415
1415
  _jsx(TMDcmtForm, { isModal: isDcmtFormModal, titleModal: dtd?.name ?? '', TID: focusedItem.TID, DID: focusedItem.DID, allowButtonsRefs: true, showTodoDcmtForm: showTodoDcmtForm, layoutMode: dcmtFormLayoutMode, count: visibleItems?.length, itemIndex: visibleItems ? visibleItems.findIndex(o => o.rowIndex === focusedItem?.rowIndex) + 1 : undefined, canNext: canNavigateHandler ? canNavigateHandler('next') : false, canPrev: canNavigateHandler ? canNavigateHandler('prev') : false, onNext: () => onNavigateHandler && onNavigateHandler('next'), onPrev: () => onNavigateHandler && onNavigateHandler('prev'), onClose: () => { (false); onDcmtFormOpenChange(false, LayoutModes.Update); }, onWFOperationCompleted: onWFOperationCompleted, onTaskCreateRequest: onTaskCreateRequest, onSavedAsyncCallback: onSavedAsyncCallback, openS4TViewer: openS4TViewer, onOpenS4TViewerRequest: onOpenS4TViewerRequest, editPdfForm: editPdfForm, onOpenPdfEditorRequest: onOpenPdfEditorRequest, openFileUploaderPdfEditor: openFileUploaderPdfEditor, onReferenceClick: onReferenceClick, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers, moreInfoTasks: getMoreInfoTasksForDocument(allTasks, focusedItem?.TID, focusedItem?.DID), showDcmtFormSidebar: showDcmtFormSidebar, datagridUtility: {
@@ -1,4 +1,3 @@
1
- import React from "react";
2
1
  import { FileDescriptor, FileFormats } from '@topconsultnpm/sdk-ts';
3
2
  export declare const useInputCvtFormatDialog: () => [() => Promise<FileFormats>, () => JSX.Element];
4
3
  export declare const useFileDialog: () => {
@@ -6,7 +5,7 @@ export declare const useFileDialog: () => {
6
5
  };
7
6
  export declare const useInputAttachmentsDialog: () => {
8
7
  openConfirmAttachmentsDialog: (list: FileDescriptor[]) => Promise<string[] | undefined>;
9
- ConfirmAttachmentsDialog: () => React.JSX.Element | null;
8
+ ConfirmAttachmentsDialog: () => import("react/jsx-runtime").JSX.Element | null;
10
9
  };
11
10
  export type FileSourceType = 'filesystem' | 'scanner-new' | 'scanner-edit' | undefined;
12
11
  export declare const useFileSourceDialog: () => [(hasExistingFile?: boolean) => Promise<FileSourceType>, () => JSX.Element];
@@ -634,8 +634,9 @@ export const useMultiMasterDetailDcmts = ({ dtd, masterDcmt, onClose, canNavigat
634
634
  // Con la conferma di interruzione aperta il loop resta in pausa qui
635
635
  await waitPanel.waitWhilePaused();
636
636
  if (waitPanel.aborted) {
637
- result.push({ rowIndex: i, id1: detailTID, id2: undefined, resultType: ResultTypes.WARNING, description: `Operazione interrotta. Elaborati ${i} documenti` });
638
- waitPanel.warning();
637
+ const description = SDKUI_Localizator.OperationDcmtsInterrupted.replaceParams(i);
638
+ result.push({ rowIndex: i, id1: detailTID, id2: undefined, resultType: ResultTypes.WARNING, description });
639
+ waitPanel.warning(1, description);
639
640
  break;
640
641
  }
641
642
  if (isBatch)
@@ -651,12 +652,15 @@ export const useMultiMasterDetailDcmts = ({ dtd, masterDcmt, onClose, canNavigat
651
652
  const err = error;
652
653
  // Annullamento richiesto dall'utente: interrompe senza mostrare l'errore
653
654
  if (err?.name === 'CanceledError' || waitPanel.aborted) {
654
- result.push({ rowIndex: i, id1: detailTID, id2: undefined, resultType: ResultTypes.WARNING, description: `Operazione interrotta. Elaborati ${i} documenti` });
655
- waitPanel.warning();
655
+ const description = SDKUI_Localizator.OperationDcmtsInterrupted.replaceParams(i);
656
+ result.push({ rowIndex: i, id1: detailTID, id2: undefined, resultType: ResultTypes.WARNING, description });
657
+ waitPanel.warning(1, description);
656
658
  break;
657
659
  }
658
- result.push({ rowIndex: i, id1: detailTID, id2: undefined, resultType: ResultTypes.ERROR, description: getExceptionMessage(error) });
659
- waitPanel.error();
660
+ const description = getExceptionMessage(error);
661
+ result.push({ rowIndex: i, id1: detailTID, id2: undefined, resultType: ResultTypes.ERROR, description });
662
+ // La riga non ha ancora un DID: la si indica con la sua posizione.
663
+ waitPanel.error(1, `${SDKUI_Localizator.RowNumber.replaceParams(i + 1)}: ${description}`);
660
664
  if (stopOnFirstError)
661
665
  break;
662
666
  }
@@ -3,20 +3,42 @@ type PendingGroup = Array<{
3
3
  caseflow: CaseFlowInstanceDescriptor;
4
4
  workItems: CaseFlowWorkItem[];
5
5
  }>;
6
+ /** Numero massimo di pratiche restituite da una ricerca, se non indicato. */
7
+ export declare const CASEFLOW_SEARCH_DEFAULT_MAX_RESULTS = 500;
8
+ /**
9
+ * Tetto di `maxResults`. Il server non restituisce mai più di 5000 pratiche e
10
+ * se ne chiede una in più per sapere se il risultato è troncato: oltre 4999
11
+ * il troncamento non sarebbe più riconoscibile.
12
+ */
13
+ export declare const CASEFLOW_SEARCH_MAX_RESULTS = 4999;
6
14
  /** Criteri di ricerca delle istanze (pannello Ricerca e Process Mining). */
7
15
  export interface CaseFlowSearchCriteria {
8
16
  templateId?: number;
17
+ /** Contenuto nel nome, senza distinzione fra maiuscole e minuscole. */
9
18
  name?: string;
19
+ /** Contenuto nella descrizione, senza distinzione fra maiuscole e minuscole. */
10
20
  description?: string;
11
21
  state?: CF_States;
22
+ /** Creata dal giorno indicato, compreso (formato `YYYY-MM-DD`, come un `<input type="date">`). */
12
23
  dateFrom?: string;
24
+ /** Creata fino al giorno indicato, compreso (formato `YYYY-MM-DD`). */
13
25
  dateTo?: string;
26
+ /** Filtri per metadato di copertina ("contiene"), tutti da soddisfare. */
14
27
  metadataFilters?: Array<{
15
28
  mid: number;
16
29
  value: string;
17
30
  }>;
18
- /** Ricerca libera: cerca il valore in tutti i metadati di qualsiasi template */
31
+ /** Ricerca libera: nome, descrizione o un qualunque valore di copertina della pratica. */
19
32
  freeTextMetadata?: string;
33
+ /** Massimo numero di pratiche (default {@link CASEFLOW_SEARCH_DEFAULT_MAX_RESULTS}, tetto {@link CASEFLOW_SEARCH_MAX_RESULTS}). */
34
+ maxResults?: number;
35
+ }
36
+ /** Esito di una ricerca di istanze. */
37
+ export interface CaseFlowSearchResult {
38
+ /** Pratiche trovate, dalla più recente; con `truncated` sono le prime `maxResults`. */
39
+ items: CaseFlowInstanceDescriptor[];
40
+ /** true se le pratiche che soddisfano i criteri sono più di `maxResults`. */
41
+ truncated: boolean;
20
42
  }
21
43
  /** Documento non cancellato durante l'eliminazione di un'istanza (orfano). */
22
44
  export interface CaseFlowDeleteOrphan {
@@ -74,8 +96,16 @@ export declare class CaseFlowService {
74
96
  static retrieveCaseflow(id: number, cftid?: number): Promise<CaseFlowInstanceDescriptor | undefined>;
75
97
  /** Istanze di cui l'utente indicato è proprietario. */
76
98
  static getMyCaseflows(userId: number): Promise<CaseFlowInstanceDescriptor[]>;
77
- /** Ricerca avanzata sulle istanze applicando i filtri indicati. */
78
- static searchCaseflows(criteria: CaseFlowSearchCriteria): Promise<CaseFlowInstanceDescriptor[]>;
99
+ /**
100
+ * Ricerca avanzata sulle istanze, eseguita dal server (`usp_Cfi_Search`):
101
+ * restituisce solo le pratiche visibili all'utente che soddisfano i
102
+ * criteri, già con la copertina. Tutti i confronti di testo sono
103
+ * "contiene", senza distinzione fra maiuscole e minuscole.
104
+ *
105
+ * Per riconoscere un risultato troncato si chiede al server una pratica
106
+ * in più di `maxResults`: se arriva, la si scarta e `truncated` vale true.
107
+ */
108
+ static searchCaseflows(criteria: CaseFlowSearchCriteria): Promise<CaseFlowSearchResult>;
79
109
  /** WorkItem pendenti assegnati all'utente, raggruppati per istanza. */
80
110
  static getMyPendingWorkItems(userId: number): Promise<PendingGroup>;
81
111
  /**