@topconsultnpm/sdkui-react 6.20.0-test1 → 6.20.0

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 (109) 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/TMPanel.js +6 -4
  6. package/lib/components/base/TMPopUp.js +4 -0
  7. package/lib/components/base/TMTreeView.d.ts +3 -1
  8. package/lib/components/base/TMTreeView.js +68 -21
  9. package/lib/components/choosers/TMDataListItemChooser.js +1 -1
  10. package/lib/components/choosers/TMDataListItemEditor.d.ts +11 -0
  11. package/lib/components/choosers/TMDataListItemEditor.js +130 -0
  12. package/lib/components/choosers/TMDataListItemFields.d.ts +11 -0
  13. package/lib/components/choosers/TMDataListItemFields.js +61 -0
  14. package/lib/components/choosers/TMDataListItemPicker.d.ts +2 -0
  15. package/lib/components/choosers/TMDataListItemPicker.js +182 -18
  16. package/lib/components/choosers/TMDynDataListItemChooser.js +11 -6
  17. package/lib/components/choosers/TMImageIDChooser.d.ts +16 -0
  18. package/lib/components/choosers/TMImageIDChooser.js +53 -0
  19. package/lib/components/choosers/TMMetadataChooser.js +1 -1
  20. package/lib/components/choosers/TMUserChooser.js +1 -1
  21. package/lib/components/editors/TMDateBox.js +1 -1
  22. package/lib/components/editors/TMHtmlEditor.js +1 -1
  23. package/lib/components/editors/TMLocalizedTextBox.d.ts +1 -0
  24. package/lib/components/editors/TMLocalizedTextBox.js +3 -3
  25. package/lib/components/editors/TMMetadataValues.js +203 -41
  26. package/lib/components/editors/TMTextArea.d.ts +1 -0
  27. package/lib/components/editors/TMTextArea.js +6 -6
  28. package/lib/components/editors/TMTextBox.js +9 -10
  29. package/lib/components/features/archive/TMArchive.d.ts +3 -1
  30. package/lib/components/features/archive/TMArchive.js +31 -44
  31. package/lib/components/features/blog/TMBlogCommentForm.d.ts +3 -0
  32. package/lib/components/features/blog/TMBlogCommentForm.js +42 -36
  33. package/lib/components/features/documents/TMDcmtForm.d.ts +3 -1
  34. package/lib/components/features/documents/TMDcmtForm.js +215 -54
  35. package/lib/components/features/documents/TMDcmtPreview.js +66 -13
  36. package/lib/components/features/documents/TMDcmtTasks.d.ts +3 -1
  37. package/lib/components/features/documents/TMDcmtTasks.js +2 -2
  38. package/lib/components/features/documents/TMFileUploader.d.ts +5 -0
  39. package/lib/components/features/documents/TMFileUploader.js +28 -6
  40. package/lib/components/features/documents/TMMasterDetailDcmts.js +31 -85
  41. package/lib/components/features/documents/TMRelationViewer.d.ts +7 -1
  42. package/lib/components/features/documents/TMRelationViewer.js +497 -111
  43. package/lib/components/features/search/TMSearchQueryPanel.js +6 -6
  44. package/lib/components/features/search/TMSearchResult.d.ts +2 -0
  45. package/lib/components/features/search/TMSearchResult.js +106 -86
  46. package/lib/components/features/search/TMSearchResultsMenuItems.d.ts +1 -1
  47. package/lib/components/features/search/TMSearchResultsMenuItems.js +6 -18
  48. package/lib/components/features/search/TMSignatureInfoContent.js +10 -6
  49. package/lib/components/features/search/TMTreeSelector.js +1 -1
  50. package/lib/components/features/tasks/TMTaskForm.d.ts +1 -0
  51. package/lib/components/features/tasks/TMTaskForm.js +61 -193
  52. package/lib/components/features/tasks/TMTaskFormUtils.d.ts +80 -0
  53. package/lib/components/features/tasks/TMTaskFormUtils.js +559 -0
  54. package/lib/components/features/tasks/TMTasksUtils.d.ts +3 -1
  55. package/lib/components/features/tasks/TMTasksUtils.js +46 -16
  56. package/lib/components/features/tasks/TMTasksUtilsView.d.ts +0 -7
  57. package/lib/components/features/tasks/TMTasksUtilsView.js +7 -14
  58. package/lib/components/features/tasks/TMTasksView.js +5 -3
  59. package/lib/components/features/workflow/TMWorkflowPopup.d.ts +20 -3
  60. package/lib/components/features/workflow/TMWorkflowPopup.js +21 -109
  61. package/lib/components/features/workflow/diagram/ConnectionComponent.d.ts +1 -0
  62. package/lib/components/features/workflow/diagram/ConnectionComponent.js +6 -2
  63. package/lib/components/features/workflow/diagram/DiagramItemForm.d.ts +2 -0
  64. package/lib/components/features/workflow/diagram/DiagramItemForm.js +32 -25
  65. package/lib/components/features/workflow/diagram/RecipientList.d.ts +3 -1
  66. package/lib/components/features/workflow/diagram/RecipientList.js +13 -9
  67. package/lib/components/features/workflow/diagram/WFDiagram.js +102 -5
  68. package/lib/components/features/workflow/diagram/workflowHelpers.js +31 -19
  69. package/lib/components/forms/Login/TMLoginForm.js +1 -1
  70. package/lib/components/forms/TMSaveForm.js +61 -13
  71. package/lib/components/grids/TMBlogsPost.js +8 -8
  72. package/lib/components/grids/TMBlogsPostUtils.js +2 -2
  73. package/lib/components/grids/TMRecentsManager.js +1 -1
  74. package/lib/components/index.d.ts +2 -0
  75. package/lib/components/index.js +2 -0
  76. package/lib/components/layout/panelManager/TMPanelManagerContainer.js +3 -2
  77. package/lib/components/pages/TMPage.js +4 -0
  78. package/lib/components/query/TMQueryEditor.d.ts +1 -0
  79. package/lib/components/query/TMQueryEditor.js +3 -3
  80. package/lib/components/viewers/TMMidViewer.js +2 -1
  81. package/lib/components/viewers/TMTidViewer.js +7 -3
  82. package/lib/helper/Enum_Localizator.js +5 -0
  83. package/lib/helper/GlobalStyles.js +3 -0
  84. package/lib/helper/SDKUI_Globals.d.ts +12 -0
  85. package/lib/helper/SDKUI_Globals.js +21 -1
  86. package/lib/helper/SDKUI_Localizator.d.ts +31 -7
  87. package/lib/helper/SDKUI_Localizator.js +286 -46
  88. package/lib/helper/TMIcons.d.ts +2 -1
  89. package/lib/helper/TMIcons.js +4 -1
  90. package/lib/helper/TMUtils.d.ts +33 -41
  91. package/lib/helper/TMUtils.js +157 -170
  92. package/lib/helper/helpers.d.ts +6 -2
  93. package/lib/helper/helpers.js +24 -8
  94. package/lib/helper/index.d.ts +1 -0
  95. package/lib/helper/index.js +1 -0
  96. package/lib/helper/queryHelper.js +1 -1
  97. package/lib/hooks/useBetaFeatures.d.ts +1 -0
  98. package/lib/hooks/useBetaFeatures.js +41 -0
  99. package/lib/hooks/useDataUserIdItem.js +2 -2
  100. package/lib/hooks/useDcmtOperations.js +14 -2
  101. package/lib/hooks/useRelatedDocuments.js +64 -42
  102. package/lib/index.d.ts +1 -0
  103. package/lib/index.js +1 -0
  104. package/lib/services/platform_services.d.ts +1 -1
  105. package/lib/services/platform_services.js +4 -0
  106. package/lib/ts/types.d.ts +3 -0
  107. package/package.json +2 -2
  108. package/lib/components/features/search/TMSignSettingsForm.d.ts +0 -9
  109. package/lib/components/features/search/TMSignSettingsForm.js +0 -621
@@ -1,17 +1,17 @@
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
- import { AccessLevels, 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';
4
+ import { AccessLevels, AccessLevelsEx, AppModules, ArchiveConstraints, ArchiveEngineByID, DcmtTypeListCacheService, LayoutCacheService, LayoutModes, MetadataDataDomains, 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';
6
6
  import { DownloadTypes, FormModes, DcmtOperationTypes } from '../../../ts';
7
7
  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 } 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
  }, []);
@@ -626,11 +633,15 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
626
633
  const handlePassToSearch = useCallback(() => {
627
634
  if (!passToSearch)
628
635
  return;
636
+ if (fromDTD?.perm?.canSearch !== AccessLevelsEx.Yes && fromDTD?.perm?.canSearch !== AccessLevelsEx.Mixed) {
637
+ ShowAlert({ title: SDKUI_Localizator.PassToSearch, message: 'Non hai i permessi per effettuare la ricerca.', mode: 'warning', duration: 3000 });
638
+ return;
639
+ }
629
640
  const outputMids = formData
630
641
  .filter(md => md.mid && md.mid > 100 && md.value && md.value.length > 0)
631
642
  .map(md => ({ mid: md.mid, value: md.value }));
632
643
  passToSearch(outputMids, TID);
633
- }, [passToSearch, formData, TID]);
644
+ }, [passToSearch, formData, TID, fromDTD?.perm?.canSearch]);
634
645
  const isPreviewDisabled = useMemo(() => layoutMode === LayoutModes.Ark && fromDTD?.archiveConstraint === ArchiveConstraints.OnlyMetadata, [layoutMode, fromDTD?.archiveConstraint]);
635
646
  const isBoardDisabled = useMemo(() => layoutMode !== LayoutModes.Update || fromDTD?.hasBlog !== 1, [layoutMode, fromDTD?.hasBlog]);
636
647
  const isSysMetadataDisabled = useMemo(() => layoutMode !== LayoutModes.Update, [layoutMode]);
@@ -642,8 +653,7 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
642
653
  if (layoutMode !== LayoutModes.Update || !moreInfoTasks) {
643
654
  return false;
644
655
  }
645
- return moreInfoTasks.some(task => isTaskMoreInfo(task.name) &&
646
- task.state !== Task_States.Completed);
656
+ return moreInfoTasks.some(task => isTaskMoreInfo(task.name) && task.state !== Task_States.Completed && task.state !== Task_States.Closed);
647
657
  }, [layoutMode, moreInfoTasks]);
648
658
  const showToppyForReferences = useMemo(() => {
649
659
  if (!allowButtonsRefs || layoutMode !== LayoutModes.Update || isOpenDetails || isOpenMaster)
@@ -1184,8 +1194,10 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
1184
1194
  }, [focusedMetadataValue?.value, focusedMetadataValue?.mid, TID]);
1185
1195
  const handleWFOperationCompleted = useCallback(async () => {
1186
1196
  await onWFOperationCompleted?.();
1187
- onClose?.();
1188
- }, [onWFOperationCompleted, onClose]);
1197
+ if (!showMoreInfoPopup) {
1198
+ onClose?.();
1199
+ }
1200
+ }, [onWFOperationCompleted, onClose, showMoreInfoPopup]);
1189
1201
  // Determina se showAll deve essere automaticamente true
1190
1202
  // Best practice: usa useMemo per calcolare valori derivati invece di useEffect con setState
1191
1203
  const shouldShowAll = useMemo(() => {
@@ -1203,7 +1215,7 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
1203
1215
  }
1204
1216
  }, [shouldShowAll, showAll]);
1205
1217
  const afterTaskSaved = useCallback(async (task, formMode, forceRefresh = false) => {
1206
- const shouldRefresh = forceRefresh || (task && task.state === Task_States.Completed) || formMode === FormModes.Create || formMode === FormModes.Duplicate;
1218
+ const shouldRefresh = forceRefresh || (task && (task.state === Task_States.Completed || task.state === Task_States.Closed)) || formMode === FormModes.Create || formMode === FormModes.Duplicate;
1207
1219
  if (TID && DID && shouldRefresh) {
1208
1220
  await triggerBlogRefresh();
1209
1221
  }
@@ -1216,7 +1228,7 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
1216
1228
  }, [formData, fromDTD, isMobile]);
1217
1229
  const tmDcmtForm = useMemo(() => {
1218
1230
  return _jsxs(_Fragment, { children: [checkoutBadge && _jsx("div", { style: { padding: '10px', display: 'flex', justifyContent: 'center' }, children: checkoutBadge }), metadataValuesSource.length > 0 &&
1219
- _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: metadataDcmtOrigin?.fromTID?.toString() !== TID?.toString(), onFocusedItemChanged: (item) => { (item?.mid !== focusedMetadataValue?.mid) && setFocusedMetadataValue(item); }, onValueChanged: (newItems) => {
1231
+ _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) => {
1220
1232
  setFormData((prevItems) => prevItems.map((item) => {
1221
1233
  const newItem = newItems.find((newItem) => newItem.tid === item.tid && newItem.mid === item.mid);
1222
1234
  return newItem ? { ...item, ...newItem } : item;
@@ -1262,13 +1274,12 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
1262
1274
  handleConfirmAction,
1263
1275
  handleUndo,
1264
1276
  handleClearForm,
1265
- metadataDcmtOrigin
1277
+ isReadOnlyOriginCallback,
1278
+ metadataDcmtOrigin?.fromTID,
1266
1279
  ]);
1267
1280
  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]);
1268
1281
  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]);
1269
- const tmDcmtPreview = useMemo(() => _jsx(TMDcmtPreviewWrapper, { currentDcmt: currentDcmt, dcmtFile: dcmtFile ?? inputFile, deviceType: deviceType, fromDTD: fromDTD, layoutMode: layoutMode, onFileUpload: (file) => {
1270
- setDcmtFile(file);
1271
- }, enableDragDropOverlay: enableDragDropOverlay }, refreshPreviewTrigger), [currentDcmt, dcmtFile, deviceType, fromDTD, layoutMode, inputFile, enableDragDropOverlay, setDcmtFile]);
1282
+ 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]);
1272
1283
  const tmWF = useMemo(() => {
1273
1284
  if (isWFDataLoading) {
1274
1285
  return (_jsx("div", { style: {
@@ -1339,7 +1350,7 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
1339
1350
  did: Number(DID),
1340
1351
  name: fromDTD?.nameLoc ?? SDKUI_Localizator.Widget_Activities,
1341
1352
  },
1342
- }, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, afterTaskSaved: afterTaskSaved }));
1353
+ }, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, afterTaskSaved: afterTaskSaved, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers }));
1343
1354
  }, [allTasks, TID, DID, fromDTD]);
1344
1355
  const normalizedTID = TID !== undefined ? Number(TID) : undefined;
1345
1356
  const defaultPanelDimensions = {
@@ -1366,8 +1377,8 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
1366
1377
  };
1367
1378
  }
1368
1379
  try {
1369
- const assignedToMe = getTaskAssignedToMe(allTasks).filter(task => task.iD1?.toString() === TID.toString() && task.iD2?.toString() === DID.toString() && task.state !== Task_States.Completed).length ?? 0;
1370
- const assignedByMe = getTaskAssignedByMe(allTasks).filter(task => task.iD1?.toString() === TID.toString() && task.iD2?.toString() === DID.toString() && task.state !== Task_States.Completed).length ?? 0;
1380
+ 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;
1381
+ 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;
1371
1382
  return {
1372
1383
  assignedToMe,
1373
1384
  assignedByMe
@@ -1384,7 +1395,7 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
1384
1395
  const { assignedToMe, assignedByMe } = getDcmtTasksCounter(TID, DID, allTasks);
1385
1396
  let titleDcmtFormPanel = fromDTD?.nameLoc ?? "";
1386
1397
  // Caso: Il documento proviene da un'origine esterna
1387
- if (metadataDcmtOrigin?.fromTID?.toString() !== TID?.toString()) {
1398
+ if (isReadOnlyOriginCallback(metadataDcmtOrigin?.fromTID)) {
1388
1399
  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] }));
1389
1400
  }
1390
1401
  const panels = [
@@ -1405,7 +1416,7 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
1405
1416
  },
1406
1417
  toolbarOptions: {
1407
1418
  icon: _jsx(IconPreview, { fontSize: 24 }),
1408
- visible: true,
1419
+ visible: getDcmtFormToolbarVisibility(SDK_Globals.tmSession?.SessionDescr?.appModuleID ?? AppModules.SURFER).tmDcmtForm,
1409
1420
  orderNumber: 1,
1410
1421
  isActive: allInitialPanelVisibility['tmDcmtForm']
1411
1422
  }
@@ -1416,7 +1427,7 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
1416
1427
  contentOptions: { component: tmBlog, panelContainer: { title: SDKUI_Localizator.BlogCase, allowMaximize: !isMobile } },
1417
1428
  toolbarOptions: {
1418
1429
  icon: _jsx(IconBoard, { fontSize: 24 }),
1419
- visible: true,
1430
+ visible: getDcmtFormToolbarVisibility(SDK_Globals.tmSession?.SessionDescr?.appModuleID ?? AppModules.SURFER).tmBlog,
1420
1431
  disabled: isBoardDisabled,
1421
1432
  orderNumber: 2,
1422
1433
  isActive: allInitialPanelVisibility['tmBlog']
@@ -1426,13 +1437,19 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
1426
1437
  id: 'tmSysMetadata',
1427
1438
  name: SDKUI_Localizator.MetadataSystem,
1428
1439
  contentOptions: { component: tmSysMetadata, panelContainer: { title: SDKUI_Localizator.MetadataSystem, allowMaximize: !isMobile } },
1429
- toolbarOptions: { icon: _jsx(IconDcmtTypeSys, { fontSize: 24 }), visible: true, disabled: isSysMetadataDisabled, orderNumber: 3, isActive: allInitialPanelVisibility['tmSysMetadata'] }
1440
+ toolbarOptions: { icon: _jsx(IconDcmtTypeSys, { fontSize: 24 }), visible: getDcmtFormToolbarVisibility(SDK_Globals.tmSession?.SessionDescr?.appModuleID ?? AppModules.SURFER).tmSysMetadata, disabled: isSysMetadataDisabled, orderNumber: 3, isActive: allInitialPanelVisibility['tmSysMetadata'] }
1430
1441
  },
1431
1442
  {
1432
1443
  id: 'tmDcmtPreview',
1433
1444
  name: SDKUI_Localizator.PreviewDocument,
1434
1445
  contentOptions: { component: tmDcmtPreview },
1435
- toolbarOptions: { icon: _jsx(IconShow, { fontSize: 24 }), disabled: isPreviewDisabled, visible: true, orderNumber: 4, isActive: allInitialPanelVisibility['tmDcmtPreview'] }
1446
+ toolbarOptions: {
1447
+ icon: _jsx(IconShow, { fontSize: 24 }),
1448
+ disabled: isPreviewDisabled,
1449
+ visible: getDcmtFormToolbarVisibility(SDK_Globals.tmSession?.SessionDescr?.appModuleID ?? AppModules.SURFER).tmDcmtPreview,
1450
+ orderNumber: 4,
1451
+ isActive: allInitialPanelVisibility['tmDcmtPreview']
1452
+ }
1436
1453
  },
1437
1454
  {
1438
1455
  id: 'tmWF',
@@ -1445,7 +1462,7 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
1445
1462
  },
1446
1463
  toolbarOptions: {
1447
1464
  icon: _jsx(IconWorkflow, { fontSize: 24 }),
1448
- visible: true,
1465
+ visible: getDcmtFormToolbarVisibility(SDK_Globals.tmSession?.SessionDescr?.appModuleID ?? AppModules.SURFER).tmWF,
1449
1466
  disabled: isWFDisabled,
1450
1467
  orderNumber: 5,
1451
1468
  isActive: allInitialPanelVisibility['tmWF']
@@ -1459,7 +1476,7 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
1459
1476
  },
1460
1477
  toolbarOptions: {
1461
1478
  icon: _jsx(IconActivity, { fontSize: 24 }),
1462
- visible: layoutMode !== LayoutModes.Ark,
1479
+ visible: layoutMode !== LayoutModes.Ark && getDcmtFormToolbarVisibility(SDK_Globals.tmSession?.SessionDescr?.appModuleID ?? AppModules.SURFER).tmDcmtTasks,
1463
1480
  orderNumber: 6,
1464
1481
  isActive: allInitialPanelVisibility['tmDcmtTasks'],
1465
1482
  count: assignedToMe + assignedByMe,
@@ -1468,7 +1485,7 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
1468
1485
  },
1469
1486
  ];
1470
1487
  return panels;
1471
- }, [fromDTD, showBackButton, tmDcmtForm, tmBlog, tmSysMetadata, tmDcmtPreview, tmWF, tmDcmtTasks, isPreviewDisabled, isSysMetadataDisabled, isBoardDisabled, isWFDisabled, inputFile, isClosable, allTasks, DID, TID, metadataDcmtOrigin?.fromTID]);
1488
+ }, [fromDTD, showBackButton, tmDcmtForm, tmBlog, tmSysMetadata, tmDcmtPreview, tmWF, tmDcmtTasks, isPreviewDisabled, isSysMetadataDisabled, isBoardDisabled, isWFDisabled, inputFile, isClosable, allTasks, DID, TID, isReadOnlyOriginCallback, metadataDcmtOrigin?.fromTID]);
1472
1489
  // Retrieves the current document form setting based on the normalized TID
1473
1490
  const getCurrentDcmtFormSetting = () => {
1474
1491
  const settings = SDKUI_Globals.userSettings.dcmtFormSettings;
@@ -1521,26 +1538,52 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
1521
1538
  // Return the appropriate layout based on context
1522
1539
  return invocationContext === InvocationContext.Todo ? settings?.layoutToDo : settings?.layout;
1523
1540
  };
1524
- const handleCompleteMoreInfo = useCallback(async () => {
1541
+ const onBlogCommentFormCustomSave = useCallback(async (blogPost) => {
1525
1542
  try {
1543
+ if (!moreInfoTasks || moreInfoTasks.length === 0) {
1544
+ ShowAlert({
1545
+ mode: 'info',
1546
+ title: SDKUI_Localizator.MoreInformation,
1547
+ message: 'Nessun attività di maggiori informazioni da completare',
1548
+ duration: 3000
1549
+ });
1550
+ return;
1551
+ }
1552
+ ;
1553
+ const firstTask = moreInfoTasks[0];
1526
1554
  TMSpinner.show();
1527
- let newTask = { ...moreInfoTasks, state: Task_States.Completed };
1555
+ const newTask = {
1556
+ ...firstTask,
1557
+ state: Task_States.Completed,
1558
+ response: blogPost.description,
1559
+ };
1528
1560
  await SDK_Globals.tmSession?.NewTaskEngine().UpdateAsync(newTask);
1529
1561
  onTaskCompleted?.(newTask);
1530
1562
  onClose?.();
1531
- ShowAlert({ mode: 'success', title: SDKUI_Localizator.MoreInformation, message: SDKUI_Localizator.MoreInfoCompleted, duration: 3000 });
1563
+ ShowAlert({
1564
+ mode: 'success',
1565
+ title: SDKUI_Localizator.MoreInformation,
1566
+ message: SDKUI_Localizator.MoreInfoCompleted,
1567
+ duration: 3000
1568
+ });
1532
1569
  }
1533
1570
  catch (e) {
1534
- TMSpinner.hide();
1535
1571
  TMExceptionBoxManager.show({ exception: e });
1536
1572
  }
1537
1573
  finally {
1538
1574
  TMSpinner.hide();
1539
1575
  }
1540
1576
  }, [moreInfoTasks, onTaskCompleted, onClose]);
1577
+ // Memoized props for TMBlogCommentForm to avoid unnecessary re-renders
1578
+ const blogCommentFormContext = useMemo(() => ({ engine: 'SearchEngine', object: { tid: TID, did: DID } }), [TID, DID]);
1579
+ const handleBlogCommentFormClose = useCallback(() => {
1580
+ setShowCommentForm(false);
1581
+ }, []);
1582
+ const emptyParticipants = useMemo(() => [], []);
1583
+ const emptyArchivedDocumentsFileItems = useMemo(() => [], []);
1541
1584
  const handleSignApprove = useCallback(() => {
1542
1585
  if (onOpenS4TViewerRequest && TID && DID) {
1543
- onOpenS4TViewerRequest([{ TID, DID }]);
1586
+ onOpenS4TViewerRequest([{ TID, DID }], onClose ? async () => { onClose(); } : undefined);
1544
1587
  return;
1545
1588
  }
1546
1589
  ShowAlert({
@@ -1567,6 +1610,17 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
1567
1610
  [ObjectClasses.WorkingGroup]: { label: SDKUI_Localizator.GoToWorkgroup },
1568
1611
  // add other ObjectClasses here as needed
1569
1612
  }), []);
1613
+ const onSavedTaskFormCallback = (task) => {
1614
+ if (task && showMoreInfoTaskTask && editTaskCallback) {
1615
+ editTaskCallback(task);
1616
+ setShowMoreInfoTaskPopup(false);
1617
+ setShowMoreInfoTaskTask(undefined);
1618
+ ShowAlert({ message: SDKUI_Localizator.TaskSavedSuccessfully.replaceParams(task.name ?? '-'), mode: 'success', title: SDKUI_Localizator.Widget_Activities, duration: 3000 });
1619
+ }
1620
+ else {
1621
+ ShowAlert({ message: SDKUI_Localizator.TaskSaveError, mode: 'error', title: SDKUI_Localizator.Widget_Activities, duration: 3000 });
1622
+ }
1623
+ };
1570
1624
  const renderDcmtForm = () => {
1571
1625
  // Show flat spinner during initial load (before component is mounted)
1572
1626
  if (isInitialLoading) {
@@ -1597,26 +1651,14 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
1597
1651
  isEditable: true,
1598
1652
  value: FormulaHelper.addFormulaTag(newFormula.expression)
1599
1653
  }));
1600
- } }), 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 ?
1601
- _jsx(WorkFlowOperationButtons, { deviceType: deviceType, onApprove: () => setShowApprovePopup(true), onSignApprove: handleSignApprove, onReject: () => setShowRejectPopup(true), onReAssign: () => setShowReAssignPopup(true), onMoreInfo: () => setShowMoreInfoPopup(true), dtd: fromDTD })
1602
- :
1603
- _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)
1604
- .map((ref, index, arr) => {
1605
- const mapEntry = referenceActionMap[String(ref.objClass)];
1606
- const label = mapEntry?.label ?? 'Vai a riferimento';
1607
- return (_jsxs(React.Fragment, { children: [index === 0 && (showToppyForApprove || showToppyForCompleteMoreInfo) && (_jsx("div", { style: {
1608
- height: 1,
1609
- backgroundColor: 'rgba(255,255,255,0.2)',
1610
- margin: '6px 0'
1611
- } })), _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}`));
1612
- })] }) })] }), (showCommentForm && TID && DID) &&
1613
- _jsx(TMBlogCommentForm, { context: { engine: 'SearchEngine', object: { tid: TID, did: DID } }, onClose: () => setShowCommentForm(false), refreshCallback: handleCompleteMoreInfo, participants: [], showAttachmentsSection: false, allArchivedDocumentsFileItems: [] }), isOpenDetails &&
1654
+ } }), 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) &&
1655
+ _jsx(TMBlogCommentForm, { maxLength: 500, context: blogCommentFormContext, onClose: handleBlogCommentFormClose, onCustomSave: onBlogCommentFormCustomSave, participants: emptyParticipants, showAttachmentsSection: false, allArchivedDocumentsFileItems: emptyArchivedDocumentsFileItems }), isOpenDetails &&
1614
1656
  _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 &&
1615
1657
  _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) => {
1616
1658
  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}`));
1617
1659
  })] }), taskFormDialogComponent, s4TViewerDialogComponent] }));
1618
1660
  };
1619
- return (_jsxs(_Fragment, { children: [(isModal && onClose)
1661
+ return (_jsxs("div", { style: { width: '100%', height: '100%' }, children: [(isModal && onClose)
1620
1662
  ? _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() }) })
1621
1663
  : renderDcmtForm(), showRelatedDcmtsChooser && (_jsx(TMChooserForm, { dataSource: relatedDcmtsChooserDataSource, onChoose: async (selectedRelation) => {
1622
1664
  try {
@@ -1660,7 +1702,7 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
1660
1702
  setArchiveRelatedDcmtFormTID(undefined);
1661
1703
  setArchiveRelatedDcmtFormMids([]);
1662
1704
  await fetchData();
1663
- }, 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 }) }))] }));
1705
+ }, 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 })] }));
1664
1706
  };
1665
1707
  export default TMDcmtForm;
1666
1708
  /**
@@ -1707,7 +1749,12 @@ export const validateMetadataList = (mvdList = []) => {
1707
1749
  return validationItems;
1708
1750
  }, []);
1709
1751
  };
1710
- const isValidForValidation = (mvd) => { return mvd.mid > 99; };
1752
+ const isValidForValidation = (mvd) => {
1753
+ // I campi Computed non vanno validati (sono calcolati automaticamente)
1754
+ if (mvd.md?.dataDomain === MetadataDataDomains.Computed)
1755
+ return false;
1756
+ return mvd.mid > 99;
1757
+ };
1711
1758
  const validateRequiredField = (mvd, value, validationItems) => {
1712
1759
  if (mvd.isRequired === '1' && !value.trim()) {
1713
1760
  const message = SDKUI_Localizator.RequiredField;
@@ -1734,12 +1781,12 @@ const WfButtonStateHandler = ({ isWFDisabled }) => {
1734
1781
  }, [isWFDisabled, setToolbarButtonDisabled]);
1735
1782
  return null; // Non renderizza elementi nel DOM
1736
1783
  };
1737
- const TMDcmtPreviewWrapper = ({ currentDcmt, layoutMode, fromDTD, dcmtFile, deviceType, isVisible, onFileUpload, enableDragDropOverlay = false }) => {
1784
+ const TMDcmtPreviewWrapper = ({ currentDcmt, layoutMode, fromDTD, dcmtFile, deviceType, isVisible, onFileUpload, openPdfEditor, enableDragDropOverlay = false, onScanRequest }) => {
1738
1785
  const { setPanelVisibilityById, toggleMaximize, isResizingActive, countVisibleLeafPanels, panelVisibility } = useTMPanelManagerContext();
1739
1786
  const isMobile = deviceType === DeviceType.MOBILE;
1740
1787
  return (layoutMode === LayoutModes.Update ?
1741
1788
  _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 }) :
1742
- _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 }));
1789
+ _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 }));
1743
1790
  };
1744
1791
  const Ribbon = styled.div `
1745
1792
  font-size: 0.85rem;
@@ -1773,3 +1820,117 @@ const Ribbon = styled.div `
1773
1820
  }
1774
1821
  `}
1775
1822
  `;
1823
+ const TaskLink = (props) => {
1824
+ const { messagePrefix, name, taskNameTrunc, description, currentTask, setShowMoreInfoTaskPopup, setShowMoreInfoTaskTask } = props;
1825
+ const mouseMoved = useRef(false);
1826
+ const handleMouseDown = () => {
1827
+ mouseMoved.current = false;
1828
+ };
1829
+ const handleMouseMove = () => {
1830
+ mouseMoved.current = true;
1831
+ };
1832
+ 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: {
1833
+ cursor: 'pointer',
1834
+ fontWeight: 500,
1835
+ textDecoration: 'none',
1836
+ transition: 'text-decoration 0.2s',
1837
+ }, onClick: () => {
1838
+ setShowMoreInfoTaskPopup(true);
1839
+ setShowMoreInfoTaskTask(currentTask);
1840
+ }, 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: () => {
1841
+ setShowMoreInfoTaskPopup(true);
1842
+ setShowMoreInfoTaskTask(currentTask);
1843
+ }, style: { fontSize: '16px', lineHeight: 1, cursor: 'pointer' } }) })] }) }) }));
1844
+ };
1845
+ const TMDcmtFormActionButtons = (props) => {
1846
+ const { showToppyForApprove, workItems, deviceType, isMobile, handleSignApprove, setShowApprovePopup, setShowRejectPopup, setShowReAssignPopup, setShowMoreInfoPopup, fromDTD, showToppyForCompleteMoreInfo, moreInfoTasks, setShowCommentForm, showToppyForReferences, dcmtReferences, referenceActionMap, handleNavigateToReference, setShowMoreInfoTaskPopup, setShowMoreInfoTaskTask } = props;
1847
+ const tasksNumber = useMemo(() => moreInfoTasks?.length ?? 0, [moreInfoTasks]);
1848
+ const currentTask = useMemo(() => {
1849
+ if (!moreInfoTasks || moreInfoTasks.length === 0)
1850
+ return null;
1851
+ if (moreInfoTasks.length === 1)
1852
+ return moreInfoTasks[0];
1853
+ // If there are multiple tasks, we cannot determine which one is relevant, so we return null
1854
+ return null;
1855
+ }, [moreInfoTasks]);
1856
+ const { hasMoreInfo, hasApprove, hasReferences } = useMemo(() => {
1857
+ const referencesExist = showToppyForReferences && dcmtReferences?.some(ref => ref.objClass === ObjectClasses.Dossier || ref.objClass === ObjectClasses.WorkingGroup);
1858
+ return {
1859
+ hasMoreInfo: Boolean(showToppyForCompleteMoreInfo),
1860
+ hasApprove: Boolean(showToppyForApprove),
1861
+ hasReferences: Boolean(referencesExist)
1862
+ };
1863
+ }, [
1864
+ showToppyForCompleteMoreInfo,
1865
+ showToppyForApprove,
1866
+ showToppyForReferences,
1867
+ dcmtReferences
1868
+ ]);
1869
+ 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, } }));
1870
+ 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: {
1871
+ padding: '10px',
1872
+ color: '#FFFFFF',
1873
+ maxWidth: '240px',
1874
+ background: 'linear-gradient(135deg, #1E90FF 0%, #0077BE 60%, #00509E 100%)',
1875
+ border: '1px solid rgba(255,255,255,0.15)',
1876
+ boxShadow: '0 8px 20px rgba(0, 0, 50, 0.4)',
1877
+ backdropFilter: 'blur(6px)',
1878
+ display: 'flex',
1879
+ flexDirection: 'column',
1880
+ alignItems: 'center',
1881
+ textAlign: 'center',
1882
+ gap: '10px',
1883
+ cursor: 'default',
1884
+ }, children: (() => {
1885
+ const userID = SDK_Globals.tmSession?.SessionDescr?.userID;
1886
+ const isSender = currentTask?.fromID !== undefined && currentTask.fromID === userID;
1887
+ const isRecipient = currentTask?.toID !== undefined && currentTask.toID === userID;
1888
+ const truncate = (str, maxLength) => str && str.length > maxLength ? str.substring(0, maxLength) + '...' : str;
1889
+ const senderNameTruncated = currentTask?.fromName ? truncate(currentTask.fromName, 30) : 'N/A';
1890
+ const recipientNameTruncated = currentTask?.toName ? truncate(currentTask.toName, 30) : 'N/A';
1891
+ const taskNameTrunc = currentTask?.name ? truncate(currentTask.name.replace(TASK_MORE_INFO_PREFIX_NAME ?? '', ''), 30) : 'N/A';
1892
+ 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: {
1893
+ display: 'flex',
1894
+ flexDirection: 'column',
1895
+ alignItems: 'center',
1896
+ gap: '10px'
1897
+ }, 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" })] }))] }));
1898
+ })() }) })) : (_jsx("div", { style: {
1899
+ padding: '10px',
1900
+ color: '#FFFFFF',
1901
+ maxWidth: '240px',
1902
+ background: 'linear-gradient(135deg, #1E90FF 0%, #0077BE 60%, #00509E 100%)',
1903
+ border: '1px solid rgba(255,255,255,0.15)',
1904
+ boxShadow: '0 8px 20px rgba(0, 0, 50, 0.4)',
1905
+ backdropFilter: 'blur(6px)',
1906
+ display: 'flex',
1907
+ flexDirection: 'column',
1908
+ alignItems: 'center',
1909
+ textAlign: 'center',
1910
+ gap: '10px',
1911
+ cursor: 'default',
1912
+ }, children: `Ci sono ${moreInfoTasks?.length ?? 0} richieste di maggiori informazioni. ${SDKUI_Localizator.ManageFromTaskPanel}` }))), hasMoreInfo && hasApprove && _jsx(Divider, {}), hasApprove && (workItems.length === 1 ?
1913
+ _jsx(WorkFlowOperationButtons, { dtd: fromDTD, deviceType: deviceType, onApprove: () => setShowApprovePopup(true), onSignApprove: handleSignApprove, onReject: () => setShowRejectPopup(true), onReAssign: () => setShowReAssignPopup(true), onMoreInfo: () => setShowMoreInfoPopup(true) })
1914
+ :
1915
+ _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)
1916
+ .map((ref, index) => {
1917
+ const mapEntry = referenceActionMap[String(ref.objClass)];
1918
+ const label = mapEntry?.label ?? 'Vai a riferimento';
1919
+ let backgroundColor;
1920
+ switch (ref.objClass) {
1921
+ case ObjectClasses.WorkingGroup:
1922
+ backgroundColor = PDGS_COLORS.WORKING_GROUP;
1923
+ break;
1924
+ case ObjectClasses.Dossier:
1925
+ backgroundColor = PDGS_COLORS.DOSSIER;
1926
+ break;
1927
+ case ObjectClasses.Document:
1928
+ backgroundColor = PDGS_COLORS.DOCUMENT;
1929
+ break;
1930
+ default:
1931
+ backgroundColor = "#C2388B";
1932
+ break;
1933
+ }
1934
+ 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}`));
1935
+ }) }))] });
1936
+ };