@topconsultnpm/sdkui-react 6.20.0-dev2.9 → 6.20.0-dev3.1

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 (84) hide show
  1. package/lib/components/NewComponents/ContextMenu/styles.d.ts +3 -1
  2. package/lib/components/NewComponents/ContextMenu/styles.js +7 -5
  3. package/lib/components/base/Styled.d.ts +4 -1
  4. package/lib/components/base/Styled.js +11 -3
  5. package/lib/components/base/TMTreeView.d.ts +3 -1
  6. package/lib/components/base/TMTreeView.js +64 -21
  7. package/lib/components/choosers/TMDataListItemEditor.d.ts +11 -0
  8. package/lib/components/choosers/TMDataListItemEditor.js +130 -0
  9. package/lib/components/choosers/TMDataListItemFields.d.ts +11 -0
  10. package/lib/components/choosers/TMDataListItemFields.js +61 -0
  11. package/lib/components/choosers/TMDataListItemPicker.d.ts +1 -0
  12. package/lib/components/choosers/TMDataListItemPicker.js +178 -18
  13. package/lib/components/choosers/TMImageIDChooser.d.ts +16 -0
  14. package/lib/components/choosers/TMImageIDChooser.js +53 -0
  15. package/lib/components/choosers/TMMetadataChooser.js +1 -1
  16. package/lib/components/editors/TMDateBox.js +1 -1
  17. package/lib/components/editors/TMHtmlEditor.js +1 -1
  18. package/lib/components/editors/TMLocalizedTextBox.d.ts +1 -0
  19. package/lib/components/editors/TMLocalizedTextBox.js +3 -3
  20. package/lib/components/editors/TMTextBox.js +9 -10
  21. package/lib/components/features/archive/TMArchive.d.ts +2 -1
  22. package/lib/components/features/archive/TMArchive.js +31 -44
  23. package/lib/components/features/blog/TMBlogCommentForm.d.ts +3 -0
  24. package/lib/components/features/blog/TMBlogCommentForm.js +42 -36
  25. package/lib/components/features/documents/TMDcmtForm.d.ts +3 -1
  26. package/lib/components/features/documents/TMDcmtForm.js +197 -53
  27. package/lib/components/features/documents/TMDcmtTasks.d.ts +3 -1
  28. package/lib/components/features/documents/TMDcmtTasks.js +2 -2
  29. package/lib/components/features/documents/TMFileUploader.d.ts +4 -0
  30. package/lib/components/features/documents/TMFileUploader.js +23 -6
  31. package/lib/components/features/documents/TMMasterDetailDcmts.js +68 -84
  32. package/lib/components/features/documents/TMRelationViewer.d.ts +7 -1
  33. package/lib/components/features/documents/TMRelationViewer.js +395 -78
  34. package/lib/components/features/search/TMSearchResult.d.ts +2 -0
  35. package/lib/components/features/search/TMSearchResult.js +82 -79
  36. package/lib/components/features/search/TMSearchResultsMenuItems.js +2 -2
  37. package/lib/components/features/tasks/TMTaskForm.d.ts +1 -0
  38. package/lib/components/features/tasks/TMTaskForm.js +61 -193
  39. package/lib/components/features/tasks/TMTaskFormUtils.d.ts +80 -0
  40. package/lib/components/features/tasks/TMTaskFormUtils.js +559 -0
  41. package/lib/components/features/tasks/TMTasksUtils.d.ts +3 -1
  42. package/lib/components/features/tasks/TMTasksUtils.js +46 -16
  43. package/lib/components/features/tasks/TMTasksUtilsView.d.ts +0 -7
  44. package/lib/components/features/tasks/TMTasksUtilsView.js +7 -14
  45. package/lib/components/features/tasks/TMTasksView.js +5 -3
  46. package/lib/components/features/workflow/TMWorkflowPopup.d.ts +20 -3
  47. package/lib/components/features/workflow/TMWorkflowPopup.js +14 -92
  48. package/lib/components/features/workflow/diagram/ConnectionComponent.d.ts +1 -0
  49. package/lib/components/features/workflow/diagram/ConnectionComponent.js +6 -2
  50. package/lib/components/features/workflow/diagram/DiagramItemForm.js +1 -1
  51. package/lib/components/features/workflow/diagram/WFDiagram.js +75 -5
  52. package/lib/components/forms/Login/TMLoginForm.js +1 -1
  53. package/lib/components/forms/TMSaveForm.js +61 -13
  54. package/lib/components/grids/TMBlogsPost.js +8 -8
  55. package/lib/components/grids/TMBlogsPostUtils.js +2 -2
  56. package/lib/components/index.d.ts +2 -0
  57. package/lib/components/index.js +2 -0
  58. package/lib/components/pages/TMPage.js +4 -0
  59. package/lib/components/query/TMQueryEditor.d.ts +1 -0
  60. package/lib/components/query/TMQueryEditor.js +2 -2
  61. package/lib/helper/Enum_Localizator.js +5 -0
  62. package/lib/helper/GlobalStyles.js +3 -0
  63. package/lib/helper/SDKUI_Globals.d.ts +8 -0
  64. package/lib/helper/SDKUI_Globals.js +12 -0
  65. package/lib/helper/SDKUI_Localizator.d.ts +19 -3
  66. package/lib/helper/SDKUI_Localizator.js +182 -22
  67. package/lib/helper/TMIcons.d.ts +2 -1
  68. package/lib/helper/TMIcons.js +4 -1
  69. package/lib/helper/TMUtils.d.ts +5 -0
  70. package/lib/helper/TMUtils.js +10 -5
  71. package/lib/helper/helpers.d.ts +6 -2
  72. package/lib/helper/helpers.js +24 -8
  73. package/lib/helper/index.d.ts +1 -0
  74. package/lib/helper/index.js +1 -0
  75. package/lib/helper/queryHelper.js +1 -1
  76. package/lib/hooks/useBetaFeatures.d.ts +1 -0
  77. package/lib/hooks/useBetaFeatures.js +41 -0
  78. package/lib/hooks/useDcmtOperations.js +14 -2
  79. package/lib/hooks/useRelatedDocuments.js +34 -11
  80. package/lib/index.d.ts +1 -0
  81. package/lib/index.js +1 -0
  82. package/lib/services/platform_services.d.ts +1 -1
  83. package/lib/services/platform_services.js +4 -0
  84. package/package.json +2 -2
@@ -28,8 +28,7 @@ const getNonDirectoryFiles = (items, exclude) => {
28
28
  });
29
29
  };
30
30
  const TMBlogCommentForm = (props) => {
31
- const maxLength = 1000;
32
- const { participants, selectedAttachments, selectedAttachmentDid, allFileItems, allArchivedDocumentsFileItems = [], onClose, context, showAttachmentsSection = true, removeAndEditAttachment = true, onFilterCreated, refreshCallback, isCommentRequired = false } = props;
31
+ const { participants, selectedAttachments, selectedAttachmentDid, allFileItems, allArchivedDocumentsFileItems = [], onClose, context, showAttachmentsSection = true, removeAndEditAttachment = true, onFilterCreated, refreshCallback, isCommentRequired = false, maxLength = 1000, onCustomSave } = props;
33
32
  // Initialize state with combined array
34
33
  const [dataSource, setDataSource] = useState(() => [...getNonDirectoryFiles(allFileItems?.items || [], []), ...allArchivedDocumentsFileItems]);
35
34
  const [isEditorEnabled, setIsEditorEnabled] = useState(true);
@@ -101,14 +100,6 @@ const TMBlogCommentForm = (props) => {
101
100
  try {
102
101
  // Show a loading spinner with a localized description
103
102
  TMSpinner.show({ description: SDKUI_Localizator.Comment });
104
- // Exit early if the engine or its required identifiers are undefined
105
- if (context.object === undefined
106
- || (context.engine === 'WorkingGroupEngine' && !context.object.id)
107
- || (context.engine === 'SearchEngine' && (!context.object.tid || !context.object.did))
108
- || (context.engine === 'DossierEngine' && !context.object.id)) {
109
- TMSpinner.hide();
110
- return;
111
- }
112
103
  // Create a new BlogPost object
113
104
  const blogPost = new BlogPost();
114
105
  // Retrieve the comment from formData, or use an empty string if undefined
@@ -132,36 +123,51 @@ const TMBlogCommentForm = (props) => {
132
123
  });
133
124
  blogPost.attachments = attachment;
134
125
  }
135
- if (context.engine === 'WorkingGroupEngine' && context.object && context.object.id) {
136
- // Create an instance of WorkingGroupEngine to interact with the working group
137
- const workingGroupEngine = new WorkingGroupEngine(SDK_Globals.tmSession);
138
- // Call the BlogPostAddAsync method to add the blog post to the working group
139
- const newBlogPostId = await workingGroupEngine.BlogPostAddAsync(context.object.id, blogPost);
126
+ if (onCustomSave) {
127
+ // Use the external save handler - logic is managed externally
128
+ await onCustomSave(blogPost);
140
129
  await refreshCallback?.();
141
- if (newBlogPostId && onFilterCreated) {
142
- onFilterCreated(post => post.id === newBlogPostId);
143
- }
144
- ;
145
130
  }
146
- else if (context.engine === 'SearchEngine') {
147
- // Create an instance of SearchEngine
148
- const searchEngine = SDK_Globals.tmSession?.NewSearchEngine();
149
- const newBlogPostId = await searchEngine.BlogPostAddAsync(context.object.tid, context.object.did, cleanComment);
150
- await refreshCallback?.();
151
- if (newBlogPostId && onFilterCreated) {
152
- onFilterCreated(post => post.id === newBlogPostId);
131
+ else {
132
+ // Validate context only when using internal engine logic
133
+ if (context.object === undefined
134
+ || (context.engine === 'WorkingGroupEngine' && !context.object.id)
135
+ || (context.engine === 'SearchEngine' && (!context.object.tid || !context.object.did))
136
+ || (context.engine === 'DossierEngine' && !context.object.id)) {
137
+ TMSpinner.hide();
138
+ return;
153
139
  }
154
- ;
155
- }
156
- else if (context.engine === 'DossierEngine' && context.object && context.object.id) {
157
- // Create an instance of DossierEngine
158
- const dossierEngine = SDK_Globals.tmSession?.NewDossierEngine();
159
- const newBlogPostId = await dossierEngine.BlogPostAddAsync(context.object.id, blogPost);
160
- await refreshCallback?.();
161
- if (newBlogPostId && onFilterCreated) {
162
- onFilterCreated(post => post.id === newBlogPostId);
140
+ if (context.engine === 'WorkingGroupEngine' && context.object && context.object.id) {
141
+ // Create an instance of WorkingGroupEngine to interact with the working group
142
+ const workingGroupEngine = new WorkingGroupEngine(SDK_Globals.tmSession);
143
+ // Call the BlogPostAddAsync method to add the blog post to the working group
144
+ const newBlogPostId = await workingGroupEngine.BlogPostAddAsync(context.object.id, blogPost);
145
+ await refreshCallback?.();
146
+ if (newBlogPostId && onFilterCreated) {
147
+ onFilterCreated(post => post.id === newBlogPostId);
148
+ }
149
+ ;
150
+ }
151
+ else if (context.engine === 'SearchEngine') {
152
+ // Create an instance of SearchEngine
153
+ const searchEngine = SDK_Globals.tmSession?.NewSearchEngine();
154
+ const newBlogPostId = await searchEngine.BlogPostAddAsync(context.object.tid, context.object.did, cleanComment);
155
+ await refreshCallback?.();
156
+ if (newBlogPostId && onFilterCreated) {
157
+ onFilterCreated(post => post.id === newBlogPostId);
158
+ }
159
+ ;
160
+ }
161
+ else if (context.engine === 'DossierEngine' && context.object && context.object.id) {
162
+ // Create an instance of DossierEngine
163
+ const dossierEngine = SDK_Globals.tmSession?.NewDossierEngine();
164
+ const newBlogPostId = await dossierEngine.BlogPostAddAsync(context.object.id, blogPost);
165
+ await refreshCallback?.();
166
+ if (newBlogPostId && onFilterCreated) {
167
+ onFilterCreated(post => post.id === newBlogPostId);
168
+ }
169
+ ;
163
170
  }
164
- ;
165
171
  }
166
172
  }
167
173
  catch (e) {
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { HomeBlogPost, LayoutModes, ObjectRef, SearchResultDescriptor, TaskDescriptor, ValidationItem } from '@topconsultnpm/sdk-ts';
2
+ import { DcmtTypeDescriptor, HomeBlogPost, LayoutModes, ObjectRef, SearchResultDescriptor, TaskDescriptor, ValidationItem } from '@topconsultnpm/sdk-ts';
3
3
  import { DcmtInfo, FormModes, MetadataValueDescriptorEx, TaskContext } from '../../../ts';
4
4
  /**
5
5
  * Definisce il contesto da cui è stato invocato il TMDcmtForm.
@@ -62,6 +62,7 @@ interface ITMDcmtFormProps {
62
62
  onOpenS4TViewerRequest?: (dcmtInfo: Array<DcmtInfo>, onRefreshSearchAsync?: (() => Promise<void>)) => void;
63
63
  s4TViewerDialogComponent?: React.ReactNode;
64
64
  enableDragDropOverlay?: boolean;
65
+ onScanRequest?: (onFileScanned: (file: File) => void) => void;
65
66
  passToSearch?: (outputMids: Array<{
66
67
  mid: number;
67
68
  value: string;
@@ -71,6 +72,7 @@ interface ITMDcmtFormProps {
71
72
  sharedSourceDID?: number;
72
73
  allowButtonsRefs?: boolean;
73
74
  onReferenceClick?: (ref: ObjectRef) => void;
75
+ openPdfEditor?: (fromDTD?: DcmtTypeDescriptor, file?: File | null, handleFile?: (file: File) => void) => void;
74
76
  }
75
77
  declare const TMDcmtForm: React.FC<ITMDcmtFormProps>;
76
78
  export default TMDcmtForm;
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
2
+ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
3
3
  import TMDcmtPreview from './TMDcmtPreview';
4
4
  import { AccessLevels, AppModules, ArchiveConstraints, ArchiveEngineByID, DcmtTypeListCacheService, LayoutCacheService, LayoutModes, MetadataDataTypes, ObjectClasses, ResultTypes, SDK_Globals, SDK_Localizator, SystemMIDsAsNumber, SystemTIDs, Task_States, TID_DID, UpdateEngineByID, UserListCacheService, ValidationItem, WorkflowCacheService, WorkItemMetadataNames } from '@topconsultnpm/sdk-ts';
5
5
  import { WorkFlowApproveRejectPopUp, WorkFlowMoreInfoPopUp, WorkFlowOperationButtons, WorkFlowReAssignPopUp } from '../workflow/TMWorkflowPopup';
@@ -8,10 +8,10 @@ import { DeviceType, useDeviceType } from '../../base/TMDeviceProvider';
8
8
  import { useDcmtOperations } from '../../../hooks/useDcmtOperations';
9
9
  import { useRelatedDocuments } from '../../../hooks/useRelatedDocuments';
10
10
  import { getWorkItemSetIDAsync, handleArchiveVisibility, searchResultToMetadataValues } from '../../../helper/queryHelper';
11
- import { genUniqueId, IconShow, SDKUI_Localizator, updateMruTids, IconBoard, IconDcmtTypeSys, IconDetailDcmts, IconDownload, calcIsModified, IconMenuVertical, Globalization, getListMaxItems, getSystemMetadata, IconBoxArchiveIn, IconClear, IconUndo, SDKUI_Globals, IconPreview, isTaskMoreInfo, IconWorkflow, IconSearch, deepCompare, IconCheck, IconActivity, TMImageLibrary, IconStar, IconRelation, IconInfo, IconArchiveDoc, IconDelete, IconPair, IconUnpair, IconArchiveMaster, IconArchiveDetail, getExceptionMessage, isApprovalWorkflowView, getDcmtCicoStatus, IconFileDots, IconCustom, buildWorkItemsFromWFCtrl, IconLock, getDcmtFormToolbarVisibility } from '../../../helper';
11
+ import { genUniqueId, IconShow, SDKUI_Localizator, updateMruTids, IconBoard, IconDcmtTypeSys, IconDetailDcmts, IconDownload, calcIsModified, IconMenuVertical, Globalization, getListMaxItems, getSystemMetadata, IconBoxArchiveIn, IconClear, IconUndo, SDKUI_Globals, IconPreview, isTaskMoreInfo, IconWorkflow, IconSearch, deepCompare, IconCheck, IconActivity, TMImageLibrary, IconStar, IconRelation, IconInfo, IconArchiveDoc, IconDelete, IconPair, IconUnpair, IconArchiveMaster, IconArchiveDetail, getExceptionMessage, isApprovalWorkflowView, getDcmtCicoStatus, IconFileDots, IconCustom, buildWorkItemsFromWFCtrl, IconLock, getDcmtFormToolbarVisibility, TASK_MORE_INFO_PREFIX_NAME, taskModalSizes, PDGS_COLORS } from '../../../helper';
12
12
  import { hasDetailRelations, hasMasterRelations, isXMLFileExt } from '../../../helper/dcmtsHelper';
13
13
  import { Gutters, TMColors } from '../../../utils/theme';
14
- import { StyledFormButtonsContainer, StyledLoadingContainer, StyledModalContainer, StyledReferenceButton, StyledSpinner, StyledToolbarCardContainer } from '../../base/Styled';
14
+ import { ReferencesContainer, StyledFormButtonsContainer, StyledLoadingContainer, StyledModalContainer, StyledReferenceButton, StyledSpinner, StyledToolbarCardContainer } from '../../base/Styled';
15
15
  import ShowAlert from '../../base/TMAlert';
16
16
  import TMButton from '../../base/TMButton';
17
17
  import { TMExceptionBoxManager, TMMessageBoxManager, ButtonNames } from '../../base/TMPopUp';
@@ -46,6 +46,7 @@ import TMDcmtCheckoutInfoForm from '../search/TMDcmtCheckoutInfoForm';
46
46
  import styled from 'styled-components';
47
47
  import { ContextMenu } from '../../NewComponents/ContextMenu';
48
48
  import TMToppyDraggableHelpCenter from '../assistant/TMToppyDraggableHelpCenter';
49
+ import TMTaskForm from '../tasks/TMTaskForm';
49
50
  //#region Interfaces, Types and Enums
50
51
  /**
51
52
  * Definisce il contesto da cui è stato invocato il TMDcmtForm.
@@ -64,7 +65,7 @@ export var InvocationContext;
64
65
  let abortControllerLocal = new AbortController();
65
66
  ;
66
67
  //#endregion
67
- const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTaskCallback, editTaskCallback, handleNavigateToWGs, handleNavigateToDossiers, showHeader = true, onSaveRecents, layoutMode = LayoutModes.Update, showBackButton = true, onClose, onSavedAsyncCallback, TID, DID, formMode = FormModes.Update, canNext, canPrev, count, itemIndex, onNext, onPrev, allowNavigation = true, allowRelations = true, isClosable = false, isExpertMode = SDKUI_Globals.userSettings.advancedSettings.expertMode === 1, showDcmtFormSidebar = true, invocationContext = InvocationContext.Default, titleModal, isModal = false, widthModal = "100%", heightModal = "100%", groupId, onWFOperationCompleted, onTaskCompleted, onTaskCreateRequest, inputFile = null, taskFormDialogComponent, moreInfoTasks, connectorFileSave = undefined, inputMids = [], openS4TViewer = false, onOpenS4TViewerRequest, s4TViewerDialogComponent, enableDragDropOverlay = false, passToSearch, isSharedDcmt = false, sharedSourceTID, sharedSourceDID, allowButtonsRefs = false, onReferenceClick, }) => {
68
+ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTaskCallback, editTaskCallback, handleNavigateToWGs, handleNavigateToDossiers, showHeader = true, onSaveRecents, layoutMode = LayoutModes.Update, showBackButton = true, onClose, onSavedAsyncCallback, TID, DID, formMode = FormModes.Update, canNext, canPrev, count, itemIndex, onNext, onPrev, allowNavigation = true, allowRelations = true, isClosable = false, isExpertMode = SDKUI_Globals.userSettings.advancedSettings.expertMode === 1, showDcmtFormSidebar = true, invocationContext = InvocationContext.Default, titleModal, isModal = false, widthModal = "100%", heightModal = "100%", groupId, onWFOperationCompleted, onTaskCompleted, onTaskCreateRequest, inputFile = null, taskFormDialogComponent, moreInfoTasks, connectorFileSave = undefined, inputMids = [], openS4TViewer = false, onOpenS4TViewerRequest, s4TViewerDialogComponent, enableDragDropOverlay = false, onScanRequest, openPdfEditor, passToSearch, isSharedDcmt = false, sharedSourceTID, sharedSourceDID, allowButtonsRefs = false, onReferenceClick, }) => {
68
69
  const { showHistory, showHistoryCallback, hideHistoryCallback, showCheckoutInformationForm, commentFormState, hideCommentFormCallback, showCheckoutInformationFormCallback, hideCheckoutInformationFormCallback, copyCheckoutPathToClipboardCallback, handleCheckOutCallback, handleCheckInCallback, refreshPreviewTrigger, showCicoWaitPanel, cicoWaitPanelTitle, showCicoPrimaryProgress, cicoPrimaryProgressText, cicoPrimaryProgressValue, cicoPrimaryProgressMax, } = useCheckInOutOperations();
69
70
  const [id, setID] = useState('');
70
71
  const [showWaitPanelLocal, setShowWaitPanelLocal] = useState(false);
@@ -86,6 +87,8 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
86
87
  const [showRejectPopup, setShowRejectPopup] = useState(false);
87
88
  const [showReAssignPopup, setShowReAssignPopup] = useState(false);
88
89
  const [showMoreInfoPopup, setShowMoreInfoPopup] = useState(false);
90
+ const [showMoreInfoTaskPopup, setShowMoreInfoTaskPopup] = useState(false);
91
+ const [showMoreInfoTaskTask, setShowMoreInfoTaskTask] = useState(undefined);
89
92
  const [layout, setLayout] = useState();
90
93
  const [customButtonsLayout, setCustomButtonsLayout] = useState();
91
94
  const [customButton, setCustomButton] = useState();
@@ -123,6 +126,10 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
123
126
  const [refreshBlogTrigger, setRefreshBlogTrigger] = useState(0);
124
127
  const [wfError, setWfError] = useState(null);
125
128
  const [metadataDcmtOrigin, setMetadataDcmtOrigin] = useState(null);
129
+ const isReadOnlyOriginCallback = useCallback((fromTID) => {
130
+ return layoutMode !== LayoutModes.Ark && layoutMode !== LayoutModes.ArkFromBasket && layoutMode !== LayoutModes.ArkFromFile && layoutMode !== LayoutModes.ArkFromMail
131
+ && fromTID?.toString() !== TID?.toString();
132
+ }, [layoutMode, TID]);
126
133
  const triggerBlogRefresh = useCallback(async () => {
127
134
  setRefreshBlogTrigger(prev => prev + 1);
128
135
  }, []);
@@ -194,7 +201,7 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
194
201
  let dtd = res?.dtdResult;
195
202
  let rows = dtd.rows ? dtd.rows[0] : [];
196
203
  let mids = res?.selectMIDs;
197
- let metadataList = searchResultToMetadataValues(TID, dtd, rows, mids, mdList, layoutMode, origin.fromTID?.toString() !== TID?.toString());
204
+ let metadataList = searchResultToMetadataValues(TID, dtd, rows, mids, mdList, layoutMode, isReadOnlyOriginCallback(origin.fromTID));
198
205
  if (archived) {
199
206
  // Usa setFormData con funzione callback per accedere allo stato precedente
200
207
  // invece di dipendere da formDataOrig nell'array di dipendenze
@@ -282,7 +289,7 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
282
289
  }
283
290
  else {
284
291
  const renderedMetadata = dtd?.metadata?.filter((metadata) => handleArchiveVisibility(metadata)) ?? [];
285
- const metadataList = searchResultToMetadataValues(dtd?.id, undefined, [], [], renderedMetadata, layoutMode, metadataDcmtOrigin?.fromTID?.toString() !== TID?.toString());
292
+ const metadataList = searchResultToMetadataValues(dtd?.id, undefined, [], [], renderedMetadata, layoutMode, isReadOnlyOriginCallback(metadataDcmtOrigin?.fromTID));
286
293
  setFormDataOrig(structuredClone(metadataList));
287
294
  setFormData(structuredClone(metadataList));
288
295
  formDataOrigRef.current = structuredClone(metadataList);
@@ -297,7 +304,7 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
297
304
  setIsInitialLoading(false);
298
305
  setIsNavigating(false);
299
306
  }
300
- }, [TID, DID, layoutMode, inputFile, setMetadataList, handleReset, allowButtonsRefs, metadataDcmtOrigin?.fromTID]);
307
+ }, [TID, DID, layoutMode, inputFile, setMetadataList, handleReset, allowButtonsRefs, isReadOnlyOriginCallback, metadataDcmtOrigin?.fromTID]);
301
308
  const createChange = useCallback((mid, metadataType, modifiedValue) => {
302
309
  return { mid, metadataType, modifiedValue };
303
310
  }, []);
@@ -642,8 +649,7 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
642
649
  if (layoutMode !== LayoutModes.Update || !moreInfoTasks) {
643
650
  return false;
644
651
  }
645
- return moreInfoTasks.some(task => isTaskMoreInfo(task.name) &&
646
- task.state !== Task_States.Completed);
652
+ return moreInfoTasks.some(task => isTaskMoreInfo(task.name) && task.state !== Task_States.Completed && task.state !== Task_States.Closed);
647
653
  }, [layoutMode, moreInfoTasks]);
648
654
  const showToppyForReferences = useMemo(() => {
649
655
  if (!allowButtonsRefs || layoutMode !== LayoutModes.Update || isOpenDetails || isOpenMaster)
@@ -1184,8 +1190,10 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
1184
1190
  }, [focusedMetadataValue?.value, focusedMetadataValue?.mid, TID]);
1185
1191
  const handleWFOperationCompleted = useCallback(async () => {
1186
1192
  await onWFOperationCompleted?.();
1187
- onClose?.();
1188
- }, [onWFOperationCompleted, onClose]);
1193
+ if (!showMoreInfoPopup) {
1194
+ onClose?.();
1195
+ }
1196
+ }, [onWFOperationCompleted, onClose, showMoreInfoPopup]);
1189
1197
  // Determina se showAll deve essere automaticamente true
1190
1198
  // Best practice: usa useMemo per calcolare valori derivati invece di useEffect con setState
1191
1199
  const shouldShowAll = useMemo(() => {
@@ -1203,7 +1211,7 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
1203
1211
  }
1204
1212
  }, [shouldShowAll, showAll]);
1205
1213
  const afterTaskSaved = useCallback(async (task, formMode, forceRefresh = false) => {
1206
- const shouldRefresh = forceRefresh || (task && task.state === Task_States.Completed) || formMode === FormModes.Create || formMode === FormModes.Duplicate;
1214
+ const shouldRefresh = forceRefresh || (task && (task.state === Task_States.Completed || task.state === Task_States.Closed)) || formMode === FormModes.Create || formMode === FormModes.Duplicate;
1207
1215
  if (TID && DID && shouldRefresh) {
1208
1216
  await triggerBlogRefresh();
1209
1217
  }
@@ -1214,17 +1222,9 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
1214
1222
  return null;
1215
1223
  return (_jsx(Ribbon, { "$isMobile": isMobile, children: _jsx(TMTooltip, { content: checkoutStatus.editLockTooltipText, position: "right", children: _jsx("span", { children: checkoutStatus.mode === 'editMode' ? SDKUI_Localizator.CheckOut : 'Locked' }) }) }));
1216
1224
  }, [formData, fromDTD, isMobile]);
1217
- const isReadOnlyOrigin = useMemo(() => {
1218
- return layoutMode !== LayoutModes.Ark &&
1219
- layoutMode !== LayoutModes.ArkFromBasket &&
1220
- layoutMode !== LayoutModes.ArkFromFile &&
1221
- layoutMode !== LayoutModes.ArkFromMail &&
1222
- metadataDcmtOrigin?.fromTID?.toString() !== TID?.toString();
1223
- }, [layoutMode, metadataDcmtOrigin?.fromTID, TID]);
1224
1225
  const tmDcmtForm = useMemo(() => {
1225
- console.log("layoutMode:", layoutMode);
1226
1226
  return _jsxs(_Fragment, { children: [checkoutBadge && _jsx("div", { style: { padding: '10px', display: 'flex', justifyContent: 'center' }, children: checkoutBadge }), metadataValuesSource.length > 0 &&
1227
- _jsxs(StyledToolbarCardContainer, { children: [_jsx(TMMetadataValues, { TID: TID, metadataValues: metadataValuesSource, metadataValuesOrig: metadataValuesSourceOrig, isExpertMode: isExpertMode, isOpenDistinctValues: isOpenDistinctValues, openChooserBySingleClick: !isOpenDistinctValues, selectedMID: focusedMetadataValue?.mid, isReadOnly: formMode === FormModes.ReadOnly, layoutMode: layoutMode, deviceType: deviceType, validationItems: validationItems, inputMids: inputMids, layout: layout, isReadOnlyOrigin: isReadOnlyOrigin, onFocusedItemChanged: (item) => { (item?.mid !== focusedMetadataValue?.mid) && setFocusedMetadataValue(item); }, onValueChanged: (newItems) => {
1227
+ _jsxs(StyledToolbarCardContainer, { children: [_jsx(TMMetadataValues, { TID: TID, metadataValues: metadataValuesSource, metadataValuesOrig: metadataValuesSourceOrig, isExpertMode: isExpertMode, isOpenDistinctValues: isOpenDistinctValues, openChooserBySingleClick: !isOpenDistinctValues, selectedMID: focusedMetadataValue?.mid, isReadOnly: formMode === FormModes.ReadOnly, layoutMode: layoutMode, deviceType: deviceType, validationItems: validationItems, inputMids: inputMids, layout: layout, isReadOnlyOrigin: isReadOnlyOriginCallback(metadataDcmtOrigin?.fromTID), onFocusedItemChanged: (item) => { (item?.mid !== focusedMetadataValue?.mid) && setFocusedMetadataValue(item); }, onValueChanged: (newItems) => {
1228
1228
  setFormData((prevItems) => prevItems.map((item) => {
1229
1229
  const newItem = newItems.find((newItem) => newItem.tid === item.tid && newItem.mid === item.mid);
1230
1230
  return newItem ? { ...item, ...newItem } : item;
@@ -1270,13 +1270,12 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
1270
1270
  handleConfirmAction,
1271
1271
  handleUndo,
1272
1272
  handleClearForm,
1273
- isReadOnlyOrigin
1273
+ isReadOnlyOriginCallback,
1274
+ metadataDcmtOrigin?.fromTID,
1274
1275
  ]);
1275
1276
  const tmBlog = useMemo(() => _jsx(TMDcmtBlog, { tid: TID, did: DID, allTasks: allTasks, fetchBlogDataTrigger: refreshBlogTrigger, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers }), [TID, DID, allTasks, refreshBlogTrigger, handleNavigateToWGs, handleNavigateToDossiers]);
1276
1277
  const tmSysMetadata = useMemo(() => _jsx(TMMetadataValues, { layoutMode: layoutMode, openChooserBySingleClick: !isOpenDistinctValues, TID: TID, isReadOnly: true, deviceType: deviceType, metadataValues: formData.filter(o => (o.mid != undefined && o.mid <= 100)), metadataValuesOrig: formData.filter(o => (o.mid != undefined && o.mid <= 100)), validationItems: [], inputMids: inputMids }), [TID, layoutMode, formData, deviceType, inputMids]);
1277
- const tmDcmtPreview = useMemo(() => _jsx(TMDcmtPreviewWrapper, { currentDcmt: currentDcmt, dcmtFile: dcmtFile ?? inputFile, deviceType: deviceType, fromDTD: fromDTD, layoutMode: layoutMode, onFileUpload: (file) => {
1278
- setDcmtFile(file);
1279
- }, enableDragDropOverlay: enableDragDropOverlay }, refreshPreviewTrigger), [currentDcmt, dcmtFile, deviceType, fromDTD, layoutMode, inputFile, enableDragDropOverlay, setDcmtFile]);
1278
+ const tmDcmtPreview = useMemo(() => _jsx(TMDcmtPreviewWrapper, { currentDcmt: currentDcmt, dcmtFile: dcmtFile ?? inputFile, deviceType: deviceType, fromDTD: fromDTD, layoutMode: layoutMode, onFileUpload: (file) => { setDcmtFile(file); }, openPdfEditor: openPdfEditor, enableDragDropOverlay: enableDragDropOverlay, onScanRequest: onScanRequest }, refreshPreviewTrigger), [currentDcmt, dcmtFile, deviceType, fromDTD, layoutMode, inputFile, enableDragDropOverlay, setDcmtFile, onScanRequest, openPdfEditor]);
1280
1279
  const tmWF = useMemo(() => {
1281
1280
  if (isWFDataLoading) {
1282
1281
  return (_jsx("div", { style: {
@@ -1347,7 +1346,7 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
1347
1346
  did: Number(DID),
1348
1347
  name: fromDTD?.nameLoc ?? SDKUI_Localizator.Widget_Activities,
1349
1348
  },
1350
- }, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, afterTaskSaved: afterTaskSaved }));
1349
+ }, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, afterTaskSaved: afterTaskSaved, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers }));
1351
1350
  }, [allTasks, TID, DID, fromDTD]);
1352
1351
  const normalizedTID = TID !== undefined ? Number(TID) : undefined;
1353
1352
  const defaultPanelDimensions = {
@@ -1374,8 +1373,8 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
1374
1373
  };
1375
1374
  }
1376
1375
  try {
1377
- const assignedToMe = getTaskAssignedToMe(allTasks).filter(task => task.iD1?.toString() === TID.toString() && task.iD2?.toString() === DID.toString() && task.state !== Task_States.Completed).length ?? 0;
1378
- const assignedByMe = getTaskAssignedByMe(allTasks).filter(task => task.iD1?.toString() === TID.toString() && task.iD2?.toString() === DID.toString() && task.state !== Task_States.Completed).length ?? 0;
1376
+ const assignedToMe = getTaskAssignedToMe(allTasks).filter(task => task.iD1?.toString() === TID.toString() && task.iD2?.toString() === DID.toString() && task.state !== Task_States.Completed && task.state !== Task_States.Closed).length ?? 0;
1377
+ const assignedByMe = getTaskAssignedByMe(allTasks).filter(task => task.iD1?.toString() === TID.toString() && task.iD2?.toString() === DID.toString() && task.state !== Task_States.Completed && task.state !== Task_States.Closed).length ?? 0;
1379
1378
  return {
1380
1379
  assignedToMe,
1381
1380
  assignedByMe
@@ -1392,7 +1391,7 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
1392
1391
  const { assignedToMe, assignedByMe } = getDcmtTasksCounter(TID, DID, allTasks);
1393
1392
  let titleDcmtFormPanel = fromDTD?.nameLoc ?? "";
1394
1393
  // Caso: Il documento proviene da un'origine esterna
1395
- if (isReadOnlyOrigin) {
1394
+ if (isReadOnlyOriginCallback(metadataDcmtOrigin?.fromTID)) {
1396
1395
  titleDcmtFormPanel = (_jsxs("div", { style: { display: 'inline-flex', alignItems: 'center', gap: '4px' }, children: [_jsx(TMTooltip, { content: _jsxs("div", { style: { textAlign: 'left' }, children: [_jsx("p", { children: "Questo documento proviene da un'altra origine e non pu\u00F2 essere modificato." }), _jsx("hr", {}), _jsxs("p", { children: [_jsx("strong", { children: "TID corrente:" }), " ", TID?.toString()] }), _jsxs("p", { children: [_jsx("strong", { children: "Nome corrente:" }), " ", fromDTD?.nameLoc] }), _jsx("hr", {}), _jsxs("p", { children: [_jsx("strong", { children: "TID origine:" }), " ", metadataDcmtOrigin?.fromTID?.toString()] }), _jsxs("p", { children: [_jsx("strong", { children: "Nome origine:" }), " ", metadataDcmtOrigin?.fromName] })] }), children: _jsx(IconLock, { fontSize: 16, style: { alignSelf: 'center' } }) }), metadataDcmtOrigin?.fromName] }));
1397
1396
  }
1398
1397
  const panels = [
@@ -1440,7 +1439,13 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
1440
1439
  id: 'tmDcmtPreview',
1441
1440
  name: SDKUI_Localizator.PreviewDocument,
1442
1441
  contentOptions: { component: tmDcmtPreview },
1443
- toolbarOptions: { icon: _jsx(IconShow, { fontSize: 24 }), disabled: isPreviewDisabled, visible: getDcmtFormToolbarVisibility(SDK_Globals.tmSession?.SessionDescr?.appModuleID ?? AppModules.SURFER).tmDcmtPreview, orderNumber: 4, isActive: allInitialPanelVisibility['tmDcmtPreview'] }
1442
+ toolbarOptions: {
1443
+ icon: _jsx(IconShow, { fontSize: 24 }),
1444
+ disabled: isPreviewDisabled,
1445
+ visible: getDcmtFormToolbarVisibility(SDK_Globals.tmSession?.SessionDescr?.appModuleID ?? AppModules.SURFER).tmDcmtPreview,
1446
+ orderNumber: 4,
1447
+ isActive: allInitialPanelVisibility['tmDcmtPreview']
1448
+ }
1444
1449
  },
1445
1450
  {
1446
1451
  id: 'tmWF',
@@ -1476,7 +1481,7 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
1476
1481
  },
1477
1482
  ];
1478
1483
  return panels;
1479
- }, [fromDTD, showBackButton, tmDcmtForm, tmBlog, tmSysMetadata, tmDcmtPreview, tmWF, tmDcmtTasks, isPreviewDisabled, isSysMetadataDisabled, isBoardDisabled, isWFDisabled, inputFile, isClosable, allTasks, DID, TID, isReadOnlyOrigin, metadataDcmtOrigin?.fromTID]);
1484
+ }, [fromDTD, showBackButton, tmDcmtForm, tmBlog, tmSysMetadata, tmDcmtPreview, tmWF, tmDcmtTasks, isPreviewDisabled, isSysMetadataDisabled, isBoardDisabled, isWFDisabled, inputFile, isClosable, allTasks, DID, TID, isReadOnlyOriginCallback, metadataDcmtOrigin?.fromTID]);
1480
1485
  // Retrieves the current document form setting based on the normalized TID
1481
1486
  const getCurrentDcmtFormSetting = () => {
1482
1487
  const settings = SDKUI_Globals.userSettings.dcmtFormSettings;
@@ -1529,23 +1534,49 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
1529
1534
  // Return the appropriate layout based on context
1530
1535
  return invocationContext === InvocationContext.Todo ? settings?.layoutToDo : settings?.layout;
1531
1536
  };
1532
- const handleCompleteMoreInfo = useCallback(async () => {
1537
+ const onBlogCommentFormCustomSave = useCallback(async (blogPost) => {
1533
1538
  try {
1539
+ if (!moreInfoTasks || moreInfoTasks.length === 0) {
1540
+ ShowAlert({
1541
+ mode: 'info',
1542
+ title: SDKUI_Localizator.MoreInformation,
1543
+ message: 'Nessun attività di maggiori informazioni da completare',
1544
+ duration: 3000
1545
+ });
1546
+ return;
1547
+ }
1548
+ ;
1549
+ const firstTask = moreInfoTasks[0];
1534
1550
  TMSpinner.show();
1535
- let newTask = { ...moreInfoTasks, state: Task_States.Completed };
1551
+ const newTask = {
1552
+ ...firstTask,
1553
+ state: Task_States.Completed,
1554
+ response: blogPost.description,
1555
+ };
1536
1556
  await SDK_Globals.tmSession?.NewTaskEngine().UpdateAsync(newTask);
1537
1557
  onTaskCompleted?.(newTask);
1538
1558
  onClose?.();
1539
- ShowAlert({ mode: 'success', title: SDKUI_Localizator.MoreInformation, message: SDKUI_Localizator.MoreInfoCompleted, duration: 3000 });
1559
+ ShowAlert({
1560
+ mode: 'success',
1561
+ title: SDKUI_Localizator.MoreInformation,
1562
+ message: SDKUI_Localizator.MoreInfoCompleted,
1563
+ duration: 3000
1564
+ });
1540
1565
  }
1541
1566
  catch (e) {
1542
- TMSpinner.hide();
1543
1567
  TMExceptionBoxManager.show({ exception: e });
1544
1568
  }
1545
1569
  finally {
1546
1570
  TMSpinner.hide();
1547
1571
  }
1548
1572
  }, [moreInfoTasks, onTaskCompleted, onClose]);
1573
+ // Memoized props for TMBlogCommentForm to avoid unnecessary re-renders
1574
+ const blogCommentFormContext = useMemo(() => ({ engine: 'SearchEngine', object: { tid: TID, did: DID } }), [TID, DID]);
1575
+ const handleBlogCommentFormClose = useCallback(() => {
1576
+ setShowCommentForm(false);
1577
+ }, []);
1578
+ const emptyParticipants = useMemo(() => [], []);
1579
+ const emptyArchivedDocumentsFileItems = useMemo(() => [], []);
1549
1580
  const handleSignApprove = useCallback(() => {
1550
1581
  if (onOpenS4TViewerRequest && TID && DID) {
1551
1582
  onOpenS4TViewerRequest([{ TID, DID }]);
@@ -1575,6 +1606,17 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
1575
1606
  [ObjectClasses.WorkingGroup]: { label: SDKUI_Localizator.GoToWorkgroup },
1576
1607
  // add other ObjectClasses here as needed
1577
1608
  }), []);
1609
+ const onSavedTaskFormCallback = (task) => {
1610
+ if (task && showMoreInfoTaskTask && editTaskCallback) {
1611
+ editTaskCallback(task);
1612
+ setShowMoreInfoTaskPopup(false);
1613
+ setShowMoreInfoTaskTask(undefined);
1614
+ ShowAlert({ message: SDKUI_Localizator.TaskSavedSuccessfully.replaceParams(task.name ?? '-'), mode: 'success', title: SDKUI_Localizator.Widget_Activities, duration: 3000 });
1615
+ }
1616
+ else {
1617
+ ShowAlert({ message: SDKUI_Localizator.TaskSaveError, mode: 'error', title: SDKUI_Localizator.Widget_Activities, duration: 3000 });
1618
+ }
1619
+ };
1578
1620
  const renderDcmtForm = () => {
1579
1621
  // Show flat spinner during initial load (before component is mounted)
1580
1622
  if (isInitialLoading) {
@@ -1605,26 +1647,14 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
1605
1647
  isEditable: true,
1606
1648
  value: FormulaHelper.addFormulaTag(newFormula.expression)
1607
1649
  }));
1608
- } }), showApprovePopup && _jsx(WorkFlowApproveRejectPopUp, { deviceType: deviceType, onCompleted: handleWFOperationCompleted, TID: approvalVID, DID: DID, isReject: 0, onClose: () => setShowApprovePopup(false) }), showRejectPopup && _jsx(WorkFlowApproveRejectPopUp, { deviceType: deviceType, onCompleted: handleWFOperationCompleted, TID: approvalVID, DID: DID, isReject: 1, onClose: () => setShowRejectPopup(false) }), showReAssignPopup && _jsx(WorkFlowReAssignPopUp, { deviceType: deviceType, onCompleted: handleWFOperationCompleted, TID: approvalVID, DID: DID, onClose: () => setShowReAssignPopup(false) }), showMoreInfoPopup && _jsx(WorkFlowMoreInfoPopUp, { deviceType: deviceType, onCompleted: handleWFOperationCompleted, TID: approvalVID, DID: DID, onClose: () => setShowMoreInfoPopup(false) }), (isModal && onClose) && _jsx("div", { id: "TMDcmtFormShowConfirmForClose-" + id })] }) }), _jsx(TMToppyDraggableHelpCenter, { isVisible: isToppyVisible, content: _jsxs("div", { style: { display: 'flex', flexDirection: 'column', gap: '10px' }, children: [showToppyForApprove && (workItems.length === 1 ?
1609
- _jsx(WorkFlowOperationButtons, { deviceType: deviceType, onApprove: () => setShowApprovePopup(true), onSignApprove: handleSignApprove, onReject: () => setShowRejectPopup(true), onReAssign: () => setShowReAssignPopup(true), onMoreInfo: () => setShowMoreInfoPopup(true), dtd: fromDTD })
1610
- :
1611
- _jsxs("div", { style: { padding: 10, color: 'white', maxWidth: '180px', borderRadius: 10, background: '#1B1464 0% 0% no-repeat padding-box', border: '1px solid #FFFFFF' }, children: [`Questo documento è associato a ${workItems.length} workitem.`, _jsx("br", {}), `Per approvare, vai alla pagina "Approvazione workflow".`] })), showToppyForCompleteMoreInfo && (moreInfoTasks?.length === 1 ? (_jsxs(_Fragment, { children: [_jsx("div", { style: { padding: 10, color: 'white', maxWidth: '180px', borderRadius: 10, background: '#1B1464 0% 0% no-repeat padding-box', border: '1px solid #FFFFFF' }, children: `${SDKUI_Localizator.MoreInfoCompleteRequestSentBy} ${moreInfoTasks[0]?.fromName}!` }), _jsx(TMButton, { caption: SDKUI_Localizator.CommentAndComplete, color: 'success', showTooltip: false, onClick: () => setShowCommentForm(true) })] })) : (_jsx("div", { style: { padding: 10, color: 'white', maxWidth: '180px', borderRadius: 10, background: '#1B1464 0% 0% no-repeat padding-box', border: '1px solid #FFFFFF' }, children: `Ci sono ${moreInfoTasks?.length ?? 0} richieste di maggiori informazioni. ${SDKUI_Localizator.ManageFromTaskPanel}` }))), showToppyForReferences && dcmtReferences?.filter(ref => ref.objClass === ObjectClasses.Dossier || ref.objClass === ObjectClasses.WorkingGroup)
1612
- .map((ref, index, arr) => {
1613
- const mapEntry = referenceActionMap[String(ref.objClass)];
1614
- const label = mapEntry?.label ?? 'Vai a riferimento';
1615
- return (_jsxs(React.Fragment, { children: [index === 0 && (showToppyForApprove || showToppyForCompleteMoreInfo) && (_jsx("div", { style: {
1616
- height: 1,
1617
- backgroundColor: 'rgba(255,255,255,0.2)',
1618
- margin: '6px 0'
1619
- } })), _jsxs(StyledReferenceButton, { onClick: () => handleNavigateToReference(ref), onDoubleClick: (e) => { e.preventDefault(); e.stopPropagation(); }, children: [_jsx("span", { children: label }), _jsx("span", { children: `"${ref.objName}"` })] }, `ref-${index}-${ref.objID}`)] }, `ref-frag-${index}-${ref.objID}`));
1620
- })] }) })] }), (showCommentForm && TID && DID) &&
1621
- _jsx(TMBlogCommentForm, { context: { engine: 'SearchEngine', object: { tid: TID, did: DID } }, onClose: () => setShowCommentForm(false), refreshCallback: handleCompleteMoreInfo, participants: [], showAttachmentsSection: false, allArchivedDocumentsFileItems: [] }), isOpenDetails &&
1650
+ } }), showApprovePopup && _jsx(WorkFlowApproveRejectPopUp, { deviceType: deviceType, onCompleted: handleWFOperationCompleted, TID: approvalVID, DID: DID, isReject: 0, onClose: () => setShowApprovePopup(false) }), showRejectPopup && _jsx(WorkFlowApproveRejectPopUp, { deviceType: deviceType, onCompleted: handleWFOperationCompleted, TID: approvalVID, DID: DID, isReject: 1, onClose: () => setShowRejectPopup(false) }), showReAssignPopup && _jsx(WorkFlowReAssignPopUp, { deviceType: deviceType, onCompleted: handleWFOperationCompleted, TID: approvalVID, DID: DID, onClose: () => setShowReAssignPopup(false) }), showMoreInfoPopup && _jsx(WorkFlowMoreInfoPopUp, { fromDTD: fromDTD, deviceType: deviceType, onCompleted: handleWFOperationCompleted, TID: approvalVID, DID: DID, onClose: () => setShowMoreInfoPopup(false), allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers, triggerBlogRefresh: triggerBlogRefresh }), (isModal && onClose) && _jsx("div", { id: "TMDcmtFormShowConfirmForClose-" + id })] }) }), _jsx(TMToppyDraggableHelpCenter, { isVisible: isToppyVisible, content: _jsx(TMDcmtFormActionButtons, { showToppyForApprove: showToppyForApprove, workItems: workItems, deviceType: deviceType, isMobile: isMobile, handleSignApprove: handleSignApprove, setShowApprovePopup: setShowApprovePopup, setShowRejectPopup: setShowRejectPopup, setShowReAssignPopup: setShowReAssignPopup, setShowMoreInfoPopup: setShowMoreInfoPopup, fromDTD: fromDTD, showToppyForCompleteMoreInfo: showToppyForCompleteMoreInfo, moreInfoTasks: moreInfoTasks, setShowCommentForm: setShowCommentForm, showToppyForReferences: showToppyForReferences, dcmtReferences: dcmtReferences, referenceActionMap: referenceActionMap, handleNavigateToReference: handleNavigateToReference, setShowMoreInfoTaskPopup: setShowMoreInfoTaskPopup, setShowMoreInfoTaskTask: setShowMoreInfoTaskTask }) })] }), (showCommentForm && TID && DID) &&
1651
+ _jsx(TMBlogCommentForm, { maxLength: 500, context: blogCommentFormContext, onClose: handleBlogCommentFormClose, onCustomSave: onBlogCommentFormCustomSave, participants: emptyParticipants, showAttachmentsSection: false, allArchivedDocumentsFileItems: emptyArchivedDocumentsFileItems }), isOpenDetails &&
1622
1652
  _jsx(StyledModalContainer, { children: _jsx(TMMasterDetailDcmts, { deviceType: deviceType, isForMaster: false, inputDcmts: getSelectionDcmtInfo(), allowNavigation: allowNavigation, canNext: canNext, canPrev: canPrev, onNext: onNext, onPrev: onPrev, onBack: () => setIsOpenDetails(false), allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers }) }), isOpenMaster &&
1623
1653
  _jsxs(StyledModalContainer, { children: [_jsx(TMMasterDetailDcmts, { deviceType: deviceType, inputDcmts: getSelectionDcmtInfo(), isForMaster: true, allowNavigation: allowNavigation, canNext: canNext, canPrev: canPrev, onNext: onNext, onPrev: onPrev, onBack: () => setIsOpenMaster(false), appendMasterDcmts: handleAddItem, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers }), secondaryMasterDcmts.length > 0 && secondaryMasterDcmts.map((dcmt, index) => {
1624
1654
  return (_jsx(StyledModalContainer, { children: _jsx(TMMasterDetailDcmts, { deviceType: deviceType, inputDcmts: [dcmt], isForMaster: true, allowNavigation: false, onBack: () => handleRemoveItem(dcmt.TID, dcmt.DID), appendMasterDcmts: handleAddItem, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers }) }, `${index}-${dcmt.DID}`));
1625
1655
  })] }), taskFormDialogComponent, s4TViewerDialogComponent] }));
1626
1656
  };
1627
- return (_jsxs(_Fragment, { children: [(isModal && onClose)
1657
+ return (_jsxs("div", { style: { width: '100%', height: '100%' }, children: [(isModal && onClose)
1628
1658
  ? _jsx(TMModal, { title: titleModal, onClose: handleClose, width: widthModal ?? '100%', height: heightModal ?? '100%', hidePopup: false, askClosingConfirm: true, children: _jsx("div", { style: { width: "100%", height: "100%", display: 'block', padding: "4px", position: 'relative' }, children: renderDcmtForm() }) })
1629
1659
  : renderDcmtForm(), showRelatedDcmtsChooser && (_jsx(TMChooserForm, { dataSource: relatedDcmtsChooserDataSource, onChoose: async (selectedRelation) => {
1630
1660
  try {
@@ -1668,7 +1698,7 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
1668
1698
  setArchiveRelatedDcmtFormTID(undefined);
1669
1699
  setArchiveRelatedDcmtFormMids([]);
1670
1700
  await fetchData();
1671
- }, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers, onReferenceClick: handleNavigateToReference })), showPairDcmtsModal && (_jsx(TMModal, { title: (isPairingManyToMany ? "Abbina" : "Disabbina") + " documenti", onClose: () => setShowPairDcmtsModal(false), width: isMobile ? '90%' : '50%', height: isMobile ? '90%' : '70%', children: _jsx(TMSearchResult, { searchResults: pairedSearchResults, onRefreshSearchAsync: async () => await fetchData(), onTaskCreateRequest: onTaskCreateRequest, allowFloatingBar: false, floatingActionConfig: pairFloatingActionConfig, showBackButton: false, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers, toppyHelpCenterUsePortal: true }) }))] }));
1701
+ }, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers, onReferenceClick: handleNavigateToReference })), showPairDcmtsModal && (_jsx(TMModal, { title: (isPairingManyToMany ? "Abbina" : "Disabbina") + " documenti", onClose: () => setShowPairDcmtsModal(false), width: isMobile ? '90%' : '50%', height: isMobile ? '90%' : '70%', children: _jsx(TMSearchResult, { searchResults: pairedSearchResults, onRefreshSearchAsync: async () => await fetchData(), onTaskCreateRequest: onTaskCreateRequest, allowFloatingBar: false, floatingActionConfig: pairFloatingActionConfig, showBackButton: false, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers, toppyHelpCenterUsePortal: true }) })), (showMoreInfoTaskPopup && showMoreInfoTaskTask && showMoreInfoTaskTask.id && handleNavigateToWGs && handleNavigateToDossiers && getAllTasks && deleteTaskByIdsCallback && addTaskCallback && editTaskCallback) && _jsx(TMTaskForm, { id: Number(showMoreInfoTaskTask.id), title: showMoreInfoTaskTask.name ?? 'N/A', formMode: FormModes.Update, onSaved: onSavedTaskFormCallback, editTaskCallback: editTaskCallback, onClose: () => { setShowMoreInfoTaskPopup(false); setShowMoreInfoTaskTask(undefined); }, onCancel: () => { setShowMoreInfoTaskPopup(false); setShowMoreInfoTaskTask(undefined); }, isModal: true, showBackButton: false, hasNavigation: false, width: taskModalSizes(deviceType, FormModes.Update).width, height: taskModalSizes(deviceType, FormModes.Update).height, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers, visualizedTasks: [], currentTask: null, setCurrentTask: () => { }, selectedRowKeys: [], handleFocusedRowKeyChange: () => { }, onStatusChanged: () => { }, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback })] }));
1672
1702
  };
1673
1703
  export default TMDcmtForm;
1674
1704
  /**
@@ -1742,12 +1772,12 @@ const WfButtonStateHandler = ({ isWFDisabled }) => {
1742
1772
  }, [isWFDisabled, setToolbarButtonDisabled]);
1743
1773
  return null; // Non renderizza elementi nel DOM
1744
1774
  };
1745
- const TMDcmtPreviewWrapper = ({ currentDcmt, layoutMode, fromDTD, dcmtFile, deviceType, isVisible, onFileUpload, enableDragDropOverlay = false }) => {
1775
+ const TMDcmtPreviewWrapper = ({ currentDcmt, layoutMode, fromDTD, dcmtFile, deviceType, isVisible, onFileUpload, openPdfEditor, enableDragDropOverlay = false, onScanRequest }) => {
1746
1776
  const { setPanelVisibilityById, toggleMaximize, isResizingActive, countVisibleLeafPanels, panelVisibility } = useTMPanelManagerContext();
1747
1777
  const isMobile = deviceType === DeviceType.MOBILE;
1748
1778
  return (layoutMode === LayoutModes.Update ?
1749
1779
  _jsx(TMDcmtPreview, { isVisible: isVisible, onClosePanel: (!isMobile && countVisibleLeafPanels() > 1) ? () => setPanelVisibilityById('tmDcmtPreview', false) : undefined, allowMaximize: !isMobile && countVisibleLeafPanels() > 1, onMaximizePanel: (!isMobile && countVisibleLeafPanels() > 1) ? () => toggleMaximize("tmDcmtPreview") : undefined, dcmtData: currentDcmt, isResizingActive: isResizingActive }) :
1750
- _jsx(TMFileUploader, { onFileUpload: onFileUpload, onClose: (!isMobile && countVisibleLeafPanels() > 1) ? () => setPanelVisibilityById('tmDcmtPreview', false) : undefined, isRequired: fromDTD?.archiveConstraint === ArchiveConstraints.ContentCompulsory && dcmtFile === null, defaultBlob: dcmtFile, deviceType: deviceType, isResizingActive: isResizingActive, enableDragDropOverlay: panelVisibility['tmDcmtPreview'] && enableDragDropOverlay }));
1780
+ _jsx(TMFileUploader, { fromDTD: fromDTD, onFileUpload: onFileUpload, openPdfEditor: openPdfEditor, onClose: (!isMobile && countVisibleLeafPanels() > 1) ? () => setPanelVisibilityById('tmDcmtPreview', false) : undefined, isRequired: fromDTD?.archiveConstraint === ArchiveConstraints.ContentCompulsory && dcmtFile === null, defaultBlob: dcmtFile, deviceType: deviceType, isResizingActive: isResizingActive, enableDragDropOverlay: panelVisibility['tmDcmtPreview'] && enableDragDropOverlay, onScanRequest: onScanRequest }));
1751
1781
  };
1752
1782
  const Ribbon = styled.div `
1753
1783
  font-size: 0.85rem;
@@ -1781,3 +1811,117 @@ const Ribbon = styled.div `
1781
1811
  }
1782
1812
  `}
1783
1813
  `;
1814
+ const TaskLink = (props) => {
1815
+ const { messagePrefix, name, taskNameTrunc, description, currentTask, setShowMoreInfoTaskPopup, setShowMoreInfoTaskTask } = props;
1816
+ const mouseMoved = useRef(false);
1817
+ const handleMouseDown = () => {
1818
+ mouseMoved.current = false;
1819
+ };
1820
+ const handleMouseMove = () => {
1821
+ mouseMoved.current = true;
1822
+ };
1823
+ return (_jsx(_Fragment, { children: _jsx("div", { style: { display: 'inline-flex', alignItems: 'center', gap: '4px' }, children: _jsxs("div", { onMouseDown: handleMouseDown, onMouseMove: handleMouseMove, style: { display: 'inline' }, children: [messagePrefix, ' "', _jsx("span", { style: {
1824
+ cursor: 'pointer',
1825
+ fontWeight: 500,
1826
+ textDecoration: 'none',
1827
+ transition: 'text-decoration 0.2s',
1828
+ }, onClick: () => {
1829
+ setShowMoreInfoTaskPopup(true);
1830
+ setShowMoreInfoTaskTask(currentTask);
1831
+ }, onMouseEnter: e => e.currentTarget.style.textDecoration = 'underline', onMouseLeave: e => e.currentTarget.style.textDecoration = 'none', children: taskNameTrunc }), '" ', _jsx(TMTooltip, { parentStyle: { display: 'inline' }, childStyle: { display: 'inline' }, content: _jsxs("div", { style: { whiteSpace: 'pre-line', textAlign: 'left' }, children: [_jsxs("div", { children: [_jsx("b", { children: SDKUI_Localizator.Name }), ": ", name] }), _jsxs("div", { children: [_jsx("b", { children: SDKUI_Localizator.Description }), ": ", description] })] }), children: _jsx("i", { className: "dx-icon dx-icon-info", onClick: () => {
1832
+ setShowMoreInfoTaskPopup(true);
1833
+ setShowMoreInfoTaskTask(currentTask);
1834
+ }, style: { fontSize: '16px', lineHeight: 1, cursor: 'pointer' } }) })] }) }) }));
1835
+ };
1836
+ const TMDcmtFormActionButtons = (props) => {
1837
+ const { showToppyForApprove, workItems, deviceType, isMobile, handleSignApprove, setShowApprovePopup, setShowRejectPopup, setShowReAssignPopup, setShowMoreInfoPopup, fromDTD, showToppyForCompleteMoreInfo, moreInfoTasks, setShowCommentForm, showToppyForReferences, dcmtReferences, referenceActionMap, handleNavigateToReference, setShowMoreInfoTaskPopup, setShowMoreInfoTaskTask } = props;
1838
+ const tasksNumber = useMemo(() => moreInfoTasks?.length ?? 0, [moreInfoTasks]);
1839
+ const currentTask = useMemo(() => {
1840
+ if (!moreInfoTasks || moreInfoTasks.length === 0)
1841
+ return null;
1842
+ if (moreInfoTasks.length === 1)
1843
+ return moreInfoTasks[0];
1844
+ // If there are multiple tasks, we cannot determine which one is relevant, so we return null
1845
+ return null;
1846
+ }, [moreInfoTasks]);
1847
+ const { hasMoreInfo, hasApprove, hasReferences } = useMemo(() => {
1848
+ const referencesExist = showToppyForReferences && dcmtReferences?.some(ref => ref.objClass === ObjectClasses.Dossier || ref.objClass === ObjectClasses.WorkingGroup);
1849
+ return {
1850
+ hasMoreInfo: Boolean(showToppyForCompleteMoreInfo),
1851
+ hasApprove: Boolean(showToppyForApprove),
1852
+ hasReferences: Boolean(referencesExist)
1853
+ };
1854
+ }, [
1855
+ showToppyForCompleteMoreInfo,
1856
+ showToppyForApprove,
1857
+ showToppyForReferences,
1858
+ dcmtReferences
1859
+ ]);
1860
+ const Divider = () => (_jsx("div", { style: { height: '1px', width: '100%', background: 'linear-gradient(to right, transparent, rgba(255,255,255,0.4), transparent)', margin: '3px 0', opacity: 0.8, } }));
1861
+ return _jsxs("div", { style: { display: 'flex', flexDirection: 'column', gap: '10px' }, children: [hasMoreInfo && (tasksNumber === 1 ? (_jsx("div", { style: { display: 'flex', gap: "10px", flexDirection: 'column', alignItems: 'center' }, children: _jsx("div", { style: {
1862
+ padding: '10px',
1863
+ color: '#FFFFFF',
1864
+ maxWidth: '240px',
1865
+ background: 'linear-gradient(135deg, #1E90FF 0%, #0077BE 60%, #00509E 100%)',
1866
+ border: '1px solid rgba(255,255,255,0.15)',
1867
+ boxShadow: '0 8px 20px rgba(0, 0, 50, 0.4)',
1868
+ backdropFilter: 'blur(6px)',
1869
+ display: 'flex',
1870
+ flexDirection: 'column',
1871
+ alignItems: 'center',
1872
+ textAlign: 'center',
1873
+ gap: '10px',
1874
+ cursor: 'default',
1875
+ }, children: (() => {
1876
+ const userID = SDK_Globals.tmSession?.SessionDescr?.userID;
1877
+ const isSender = currentTask?.fromID !== undefined && currentTask.fromID === userID;
1878
+ const isRecipient = currentTask?.toID !== undefined && currentTask.toID === userID;
1879
+ const truncate = (str, maxLength) => str && str.length > maxLength ? str.substring(0, maxLength) + '...' : str;
1880
+ const senderNameTruncated = currentTask?.fromName ? truncate(currentTask.fromName, 30) : 'N/A';
1881
+ const recipientNameTruncated = currentTask?.toName ? truncate(currentTask.toName, 30) : 'N/A';
1882
+ const taskNameTrunc = currentTask?.name ? truncate(currentTask.name.replace(TASK_MORE_INFO_PREFIX_NAME ?? '', ''), 30) : 'N/A';
1883
+ return (_jsxs(_Fragment, { children: [(isSender && !isRecipient) && (_jsx(TaskLink, { messagePrefix: `Hai richiesto maggiori informazioni a "${recipientNameTruncated}" tramite l'attività`, name: currentTask.name ?? 'N/A', taskNameTrunc: taskNameTrunc ?? 'N/A', description: currentTask.description ?? 'N/A', currentTask: currentTask, setShowMoreInfoTaskPopup: setShowMoreInfoTaskPopup, setShowMoreInfoTaskTask: setShowMoreInfoTaskTask })), (isRecipient && !isSender) && (_jsxs("div", { style: {
1884
+ display: 'flex',
1885
+ flexDirection: 'column',
1886
+ alignItems: 'center',
1887
+ gap: '10px'
1888
+ }, children: [_jsx(TaskLink, { messagePrefix: `"${senderNameTruncated}" ti ha richiesto maggiori informazioni tramite l'attività`, name: currentTask.name ?? 'N/A', taskNameTrunc: taskNameTrunc ?? 'N/A', description: currentTask.description ?? 'N/A', currentTask: currentTask, setShowMoreInfoTaskPopup: setShowMoreInfoTaskPopup, setShowMoreInfoTaskTask: setShowMoreInfoTaskTask }), _jsx(TMButton, { btnStyle: isMobile ? 'toolbar' : 'advanced', showTooltip: isMobile, icon: _jsx("span", { className: "dx-icon-chat" }), caption: SDKUI_Localizator.CommentAndComplete, width: "180px", disabled: false, onClick: () => setShowCommentForm(true), onMouseDown: e => e.stopPropagation(), advancedColor: TMColors.success, color: "success" })] }))] }));
1889
+ })() }) })) : (_jsx("div", { style: {
1890
+ padding: '10px',
1891
+ color: '#FFFFFF',
1892
+ maxWidth: '240px',
1893
+ background: 'linear-gradient(135deg, #1E90FF 0%, #0077BE 60%, #00509E 100%)',
1894
+ border: '1px solid rgba(255,255,255,0.15)',
1895
+ boxShadow: '0 8px 20px rgba(0, 0, 50, 0.4)',
1896
+ backdropFilter: 'blur(6px)',
1897
+ display: 'flex',
1898
+ flexDirection: 'column',
1899
+ alignItems: 'center',
1900
+ textAlign: 'center',
1901
+ gap: '10px',
1902
+ cursor: 'default',
1903
+ }, children: `Ci sono ${moreInfoTasks?.length ?? 0} richieste di maggiori informazioni. ${SDKUI_Localizator.ManageFromTaskPanel}` }))), hasMoreInfo && hasApprove && _jsx(Divider, {}), hasApprove && (workItems.length === 1 ?
1904
+ _jsx(WorkFlowOperationButtons, { dtd: fromDTD, deviceType: deviceType, onApprove: () => setShowApprovePopup(true), onSignApprove: handleSignApprove, onReject: () => setShowRejectPopup(true), onReAssign: () => setShowReAssignPopup(true), onMoreInfo: () => setShowMoreInfoPopup(true) })
1905
+ :
1906
+ _jsxs("div", { style: { padding: 10, color: 'white', maxWidth: '180px', borderRadius: 10, background: '#1B1464 0% 0% no-repeat padding-box', border: '1px solid #FFFFFF' }, children: [`Questo documento è associato a ${workItems.length} workitem.`, _jsx("br", {}), `Per approvare, vai alla pagina "Approvazione workflow".`] })), (hasApprove && hasReferences) || (hasMoreInfo && !hasApprove && hasReferences) ? (_jsx(Divider, {})) : null, hasReferences && (_jsx(ReferencesContainer, { children: dcmtReferences?.filter(ref => ref.objClass === ObjectClasses.Dossier || ref.objClass === ObjectClasses.WorkingGroup)
1907
+ .map((ref, index) => {
1908
+ const mapEntry = referenceActionMap[String(ref.objClass)];
1909
+ const label = mapEntry?.label ?? 'Vai a riferimento';
1910
+ let backgroundColor;
1911
+ switch (ref.objClass) {
1912
+ case ObjectClasses.WorkingGroup:
1913
+ backgroundColor = PDGS_COLORS.WORKING_GROUP;
1914
+ break;
1915
+ case ObjectClasses.Dossier:
1916
+ backgroundColor = PDGS_COLORS.DOSSIER;
1917
+ break;
1918
+ case ObjectClasses.Document:
1919
+ backgroundColor = PDGS_COLORS.DOCUMENT;
1920
+ break;
1921
+ default:
1922
+ backgroundColor = "#C2388B";
1923
+ break;
1924
+ }
1925
+ return (_jsxs(StyledReferenceButton, { onClick: () => handleNavigateToReference(ref), onDoubleClick: (e) => { e.preventDefault(); e.stopPropagation(); }, "$bgColor": backgroundColor, children: [_jsx("span", { children: label }), _jsx("span", { children: `"${ref.objName}"` })] }, `ref-${index}-${ref.objID}`));
1926
+ }) }))] });
1927
+ };