@topconsultnpm/sdkui-react 6.21.0-dev2.47 → 6.21.0-dev2.49
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.
- package/lib/components/base/TMModal.d.ts +1 -0
- package/lib/components/base/TMModal.js +2 -2
- package/lib/components/features/documents/TMCopyToFolderForm.js +1 -1
- package/lib/components/features/documents/TMMasterDetailDcmts.js +25 -6
- package/lib/helper/ZipManager.d.ts +1 -1
- package/lib/helper/ZipManager.js +27 -4
- package/lib/hooks/useDocumentOperations.js +66 -5
- package/package.json +1 -1
|
@@ -39,7 +39,7 @@ const StyledModalContext = styled.div `
|
|
|
39
39
|
overflow: auto;
|
|
40
40
|
height: 100%;
|
|
41
41
|
`;
|
|
42
|
-
const TMModal = ({ resizable = true, expandable = false, isModal = true, title = '', toolbar, onClose, children, width = '100%', height = '100%', fontSize = FontSize.defaultFontSize, hidePopup = true, askClosingConfirm = false, showCloseButton = true }) => {
|
|
42
|
+
const TMModal = ({ resizable = true, expandable = false, isModal = true, title = '', toolbar, onClose, children, width = '100%', height = '100%', fontSize = FontSize.defaultFontSize, hidePopup = true, askClosingConfirm = false, showCloseButton = true, showHeader = true }) => {
|
|
43
43
|
const popupRef = useRef(null);
|
|
44
44
|
const [initialWidth, setInitialWidth] = useState(width);
|
|
45
45
|
const [initialHeight, setInitialHeight] = useState(height);
|
|
@@ -101,7 +101,7 @@ const TMModal = ({ resizable = true, expandable = false, isModal = true, title =
|
|
|
101
101
|
setShowPopup(false);
|
|
102
102
|
onClose && onClose();
|
|
103
103
|
};
|
|
104
|
-
return (_jsx(_Fragment, { children: isModal ? (_jsx(Popup, { ref: popupRef, showCloseButton: showCloseButton, animation: undefined, minWidth: minWidth, minHeight: minHeight, maxHeight: '95%', maxWidth: '95%', dragEnabled: !isResizing, resizeEnabled: resizable, width: expandable && isFullScreen ? '95%' : initialWidth, height: expandable && isFullScreen ? '95%' : initialHeight, title: title, visible: showPopup, onShown: handleShown, onResizeStart: handleResizeStart, onResizeEnd: handleResizeEnd, onHiding: onHiding, toolbarItems: expandable ? [
|
|
104
|
+
return (_jsx(_Fragment, { children: isModal ? (_jsx(Popup, { ref: popupRef, showCloseButton: showHeader ? showCloseButton : false, showTitle: showHeader, animation: undefined, minWidth: minWidth, minHeight: minHeight, maxHeight: '95%', maxWidth: '95%', dragEnabled: !isResizing, resizeEnabled: resizable, width: expandable && isFullScreen ? '95%' : initialWidth, height: expandable && isFullScreen ? '95%' : initialHeight, title: title, visible: showPopup, onShown: handleShown, onResizeStart: handleResizeStart, onResizeEnd: handleResizeEnd, onHiding: onHiding, toolbarItems: showHeader && expandable ? [
|
|
105
105
|
{
|
|
106
106
|
widget: 'dxButton',
|
|
107
107
|
location: 'after',
|
|
@@ -303,7 +303,7 @@ const TMCopyToFolderForm = ({ mode, selectedDcmtInfos, onClose, showTMRelationVi
|
|
|
303
303
|
{ value: 'documentTypeAndDid', display: SDKUI_Localizator.DocumentTypeNameAndDID },
|
|
304
304
|
{ value: 'documentTypeAndCustomMetadata', display: SDKUI_Localizator.DocumentTypeNameAndCustomMetadata },
|
|
305
305
|
{ value: 'onlyCustomMetadata', display: SDKUI_Localizator.OnlyCustomMetadata },
|
|
306
|
-
], onValueChanged: handleFileNamingModeChange, width: '
|
|
306
|
+
], onValueChanged: handleFileNamingModeChange, width: '400px' }), _jsx(TMTextBox, { label: SDKUI_Localizator.Separator, value: settings.separatorChar, maxLength: 1, onValueChanged: (e) => handleSeparatorChange(e), width: '100px', elementStyle: { textAlign: 'center' } }), _jsx("div", { style: { paddingBottom: '7px' }, children: _jsx(TMCheckBox, { label: SDKUI_Localizator.RemoveSignatureIfPresent, value: settings.removeSignature, onValueChanged: (value) => updateSettings('removeSignature', value) }) })] }));
|
|
307
307
|
const formatSelectorsRow = (_jsxs("div", { style: { display: 'flex', flexWrap: 'wrap', columnGap: '10px', width: '100%' }, children: [_jsx("div", { style: { flex: '1 1 280px', minWidth: '280px' }, children: _jsx(TMInvoiceRetrieveFormats, { width: '100%', label: SDKUI_Localizator.ElectronicInvoice + ' - ' + SDKUI_Localizator.DisplayFormat, onValueChanged: (newValue) => updateSettings('invoiceFormat', newValue), value: settings.invoiceFormat, valueOrig: settings.invoiceFormat }) }), _jsx("div", { style: { flex: '1 1 280px', minWidth: '280px' }, children: _jsx(TMOrderRetrieveFormats, { width: '100%', label: SDKUI_Localizator.ElectronicOrder + ' - ' + SDKUI_Localizator.DisplayFormat, value: settings.orderFormat, valueOrig: settings.orderFormat, onValueChanged: (newValue) => updateSettings('orderFormat', newValue) }) })] }));
|
|
308
308
|
// ---- Render della sezione configurazione ----
|
|
309
309
|
const configSection = (_jsxs("div", { style: {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
3
|
-
import { DcmtTypeListCacheService, LayoutModes, SDK_Globals, SDK_Localizator } from '@topconsultnpm/sdk-ts';
|
|
3
|
+
import { DcmtTypeListCacheService, LayoutModes, ObjectClasses, SDK_Globals, SDK_Localizator } from '@topconsultnpm/sdk-ts';
|
|
4
4
|
import TMRelationViewer from './TMRelationViewer';
|
|
5
5
|
import TMContextMenu from '../../NewComponents/ContextMenu/TMContextMenu';
|
|
6
6
|
import { IconMultipleSelection, IconCheckFile, IconDetailDcmts, SDKUI_Localizator, IconMenuVertical, IconDataList, IconPreview, IconSearchCheck, IconBoard, IconDcmtTypeSys, IconShow, getMoreInfoTasksForDocument, isApprovalWorkflowView, searchResultToMetadataValues, IconRefresh } from '../../../helper';
|
|
@@ -117,6 +117,25 @@ const TMMasterDetailDcmts = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallba
|
|
|
117
117
|
createTaskFromDocumentOrWorkItem();
|
|
118
118
|
}
|
|
119
119
|
};
|
|
120
|
+
const handleNavigateToReference = useCallback((ref) => {
|
|
121
|
+
switch (ref.objClass) {
|
|
122
|
+
case ObjectClasses.Dossier:
|
|
123
|
+
if (handleNavigateToDossiers && ref.objID)
|
|
124
|
+
handleNavigateToDossiers(ref.objID);
|
|
125
|
+
else
|
|
126
|
+
console.log("Dossier reference missing objID");
|
|
127
|
+
break;
|
|
128
|
+
case ObjectClasses.WorkingGroup:
|
|
129
|
+
if (handleNavigateToWGs && ref.objID)
|
|
130
|
+
handleNavigateToWGs(ref.objID);
|
|
131
|
+
else
|
|
132
|
+
console.log("Working Group reference missing objID");
|
|
133
|
+
break;
|
|
134
|
+
// Handle other object types as needed
|
|
135
|
+
default:
|
|
136
|
+
console.warn(`Unhandled object type: ${ref.objClass}`);
|
|
137
|
+
}
|
|
138
|
+
}, [handleNavigateToDossiers, handleNavigateToWGs]);
|
|
120
139
|
const { operationItems, renderFloatingBar, renderDcmtOperations, features, } = useDocumentOperations({
|
|
121
140
|
context: SearchResultContext.MASTER_DETAIL,
|
|
122
141
|
documentData: {
|
|
@@ -178,7 +197,7 @@ const TMMasterDetailDcmts = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallba
|
|
|
178
197
|
onNavigateHandler, */
|
|
179
198
|
handleNavigateToWGs,
|
|
180
199
|
handleNavigateToDossiers,
|
|
181
|
-
|
|
200
|
+
onReferenceClick: handleNavigateToReference,
|
|
182
201
|
// Document forms/operations
|
|
183
202
|
/* openAddDocumentForm,
|
|
184
203
|
openCommentFormCallback,
|
|
@@ -286,7 +305,7 @@ const TMMasterDetailDcmts = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallba
|
|
|
286
305
|
position: contextMenuPosition,
|
|
287
306
|
onClose: () => setContextMenuVisible(false)
|
|
288
307
|
} })] }) }), [inputDcmts, isForMaster, showCurrentDcmtIndicator, showZeroDcmts, allowMultipleSelection, focusedItem, selectedItems, handleFocusedItemChanged, handleSelectedItemsChanged, handleNoRelationsFound, onItemContextMenu, contextMenuVisible, contextMenuPosition, refreshKey, focusedItemFormData]);
|
|
289
|
-
const tmFormOrResult = useMemo(() => _jsx(TMFormOrResultWrapper, { refreshKey: refreshKeyFormOrResult, deviceType: deviceType, focusedItem: focusedItem, onTaskCreateRequest: onTaskCreateRequest, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers, onRefreshAfterAddDcmtToFavs: onRefreshAfterAddDcmtToFavs, editPdfForm: editPdfForm, openS4TViewer: openS4TViewer, onOpenS4TViewerRequest: onOpenS4TViewerRequest, onOpenPdfEditorRequest: onOpenPdfEditorRequest, onRefreshSearchResults: onRefreshAllPanels, mergePdfManager: mergePdfManager }), [focusedItem, deviceType, allTasks, handleNavigateToWGs, handleNavigateToDossiers, editPdfForm, openS4TViewer, onOpenS4TViewerRequest, onOpenPdfEditorRequest, onRefreshAfterAddDcmtToFavs, refreshKeyFormOrResult]);
|
|
308
|
+
const tmFormOrResult = useMemo(() => _jsx(TMFormOrResultWrapper, { refreshKey: refreshKeyFormOrResult, deviceType: deviceType, focusedItem: focusedItem, onTaskCreateRequest: onTaskCreateRequest, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers, handleNavigateToReference: handleNavigateToReference, onRefreshAfterAddDcmtToFavs: onRefreshAfterAddDcmtToFavs, editPdfForm: editPdfForm, openS4TViewer: openS4TViewer, onOpenS4TViewerRequest: onOpenS4TViewerRequest, onOpenPdfEditorRequest: onOpenPdfEditorRequest, onRefreshSearchResults: onRefreshAllPanels, mergePdfManager: mergePdfManager }), [focusedItem, deviceType, allTasks, handleNavigateToWGs, handleNavigateToDossiers, handleNavigateToReference, editPdfForm, openS4TViewer, onOpenS4TViewerRequest, onOpenPdfEditorRequest, onRefreshAfterAddDcmtToFavs, refreshKeyFormOrResult]);
|
|
290
309
|
const initialPanelDimensions = {
|
|
291
310
|
'tmTreeView': { width: '50%', height: '100%' },
|
|
292
311
|
'tmFormOrResult': { width: '50%', height: '100%' },
|
|
@@ -405,11 +424,11 @@ const TMRelationViewerWrapper = ({ refreshKey, inputDcmts, isForMaster, showCurr
|
|
|
405
424
|
}, [onItemContextMenu, handleFocusedItemChanged]);
|
|
406
425
|
return (_jsx(TMRelationViewer, { inputDcmts: inputDcmts, isForMaster: isForMaster, showCurrentDcmtIndicator: showCurrentDcmtIndicator, initialShowZeroDcmts: showZeroDcmts, customItemRender: customItemRender, allowMultipleSelection: allowMultipleSelection, focusedItem: focusedItem, selectedItems: selectedItems, onFocusedItemChanged: handleFocusedItemChanged, onSelectedItemsChanged: onSelectedItemsChanged, maxDepthLevel: 1, invertMasterNavigation: false, onNoRelationsFound: onNoRelationsFound, onItemContextMenu: onContextMenu, focusedItemFormData: focusedItemFormData }, refreshKey));
|
|
407
426
|
};
|
|
408
|
-
const TMFormOrResultWrapper = ({ refreshKey, deviceType, focusedItem, onTaskCreateRequest, allTasks = [], mergePdfManager, getAllTasks, deleteTaskByIdsCallback, addTaskCallback, editTaskCallback, handleNavigateToWGs, handleNavigateToDossiers, onRefreshAfterAddDcmtToFavs, editPdfForm, openS4TViewer, onOpenS4TViewerRequest, onOpenPdfEditorRequest, onRefreshSearchAsyncDatagrid, onRefreshSearchResults }) => {
|
|
427
|
+
const TMFormOrResultWrapper = ({ refreshKey, deviceType, focusedItem, onTaskCreateRequest, allTasks = [], mergePdfManager, getAllTasks, deleteTaskByIdsCallback, addTaskCallback, editTaskCallback, handleNavigateToWGs, handleNavigateToDossiers, onRefreshAfterAddDcmtToFavs, editPdfForm, openS4TViewer, onOpenS4TViewerRequest, onOpenPdfEditorRequest, onRefreshSearchAsyncDatagrid, onRefreshSearchResults, handleNavigateToReference }) => {
|
|
409
428
|
const { setPanelVisibilityById } = useTMPanelManagerContext();
|
|
410
429
|
return (_jsx(_Fragment, { children: focusedItem?.isDcmt ?
|
|
411
|
-
_jsx(TMDcmtForm, { groupId: 'tmFormOrResult', TID: focusedItem?.tid, DID: focusedItem.did, allowButtonsRefs: true, isClosable: deviceType !== DeviceType.MOBILE, allowNavigation: false, allowRelations: deviceType !== DeviceType.MOBILE, showDcmtFormSidebar: false, onClose: () => { setPanelVisibilityById('tmTreeView', true); }, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers, moreInfoTasks: getMoreInfoTasksForDocument(allTasks, focusedItem?.tid, focusedItem?.did), openS4TViewer: openS4TViewer, onOpenS4TViewerRequest: onOpenS4TViewerRequest, onOpenPdfEditorRequest: onOpenPdfEditorRequest, datagridUtility: {
|
|
430
|
+
_jsx(TMDcmtForm, { groupId: 'tmFormOrResult', TID: focusedItem?.tid, DID: focusedItem.did, allowButtonsRefs: true, isClosable: deviceType !== DeviceType.MOBILE, allowNavigation: false, allowRelations: deviceType !== DeviceType.MOBILE, showDcmtFormSidebar: false, onClose: () => { setPanelVisibilityById('tmTreeView', true); }, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers, onReferenceClick: handleNavigateToReference, moreInfoTasks: getMoreInfoTasksForDocument(allTasks, focusedItem?.tid, focusedItem?.did), openS4TViewer: openS4TViewer, onOpenS4TViewerRequest: onOpenS4TViewerRequest, onOpenPdfEditorRequest: onOpenPdfEditorRequest, datagridUtility: {
|
|
412
431
|
onRefreshSearchAsyncDatagrid,
|
|
413
432
|
} }, refreshKey) :
|
|
414
|
-
_jsx(TMSearchResult, { groupId: 'tmFormOrResult', isClosable: deviceType !== DeviceType.MOBILE, context: SearchResultContext.METADATA_SEARCH, allowFloatingBar: false, allowRelations: false, openDcmtFormAsModal: true, searchResults: focusedItem?.searchResult ?? [], showSearchResultSidebar: false, showDcmtFormSidebar: false, onTaskCreateRequest: onTaskCreateRequest, onClose: () => { setPanelVisibilityById('tmTreeView', true); }, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers, editPdfForm: editPdfForm, onOpenPdfEditorRequest: onOpenPdfEditorRequest, openS4TViewer: openS4TViewer, onOpenS4TViewerRequest: onOpenS4TViewerRequest, enablePinIcons: false, onRefreshAfterAddDcmtToFavs: onRefreshAfterAddDcmtToFavs, showBackButton: false, onRefreshSearchAsyncDatagrid: onRefreshSearchResults, mergePdfManager: mergePdfManager }, refreshKey) }));
|
|
433
|
+
_jsx(TMSearchResult, { groupId: 'tmFormOrResult', isClosable: deviceType !== DeviceType.MOBILE, context: SearchResultContext.METADATA_SEARCH, allowFloatingBar: false, allowRelations: false, openDcmtFormAsModal: true, searchResults: focusedItem?.searchResult ?? [], showSearchResultSidebar: false, showDcmtFormSidebar: false, onTaskCreateRequest: onTaskCreateRequest, onClose: () => { setPanelVisibilityById('tmTreeView', true); }, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers, editPdfForm: editPdfForm, onOpenPdfEditorRequest: onOpenPdfEditorRequest, openS4TViewer: openS4TViewer, onOpenS4TViewerRequest: onOpenS4TViewerRequest, enablePinIcons: false, onRefreshAfterAddDcmtToFavs: onRefreshAfterAddDcmtToFavs, showBackButton: false, onRefreshSearchAsyncDatagrid: onRefreshSearchResults, mergePdfManager: mergePdfManager, onReferenceClick: handleNavigateToReference }, refreshKey) }));
|
|
415
434
|
};
|
|
@@ -35,7 +35,7 @@ export declare class ZipManager {
|
|
|
35
35
|
static configure(options: {
|
|
36
36
|
useWebWorkers?: boolean;
|
|
37
37
|
maxWorkers?: number;
|
|
38
|
-
}): void
|
|
38
|
+
}): Promise<void>;
|
|
39
39
|
/** Crea ZIP da array di file */
|
|
40
40
|
static createZip(files: ZipFileEntry[], options?: ZipCreateOptions): Promise<Blob>;
|
|
41
41
|
/** Crea ZIP da singolo file */
|
package/lib/helper/ZipManager.js
CHANGED
|
@@ -1,4 +1,23 @@
|
|
|
1
|
-
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// LAZY LOADING
|
|
3
|
+
// ============================================================================
|
|
4
|
+
/** Flag per tracciare se la libreria è stata caricata */
|
|
5
|
+
let zipJsLoaded = false;
|
|
6
|
+
/** Carica @zip.js/zip.js on-demand */
|
|
7
|
+
const loadZipJs = async () => {
|
|
8
|
+
// if (!zipJsLoaded) {
|
|
9
|
+
// console.log('[ZipManager] 📦 Caricamento lazy di @zip.js/zip.js...');
|
|
10
|
+
// console.time('[ZipManager] Tempo caricamento');
|
|
11
|
+
// }
|
|
12
|
+
const module = await import("@zip.js/zip.js");
|
|
13
|
+
// if (!zipJsLoaded) {
|
|
14
|
+
// console.timeEnd('[ZipManager] Tempo caricamento');
|
|
15
|
+
// console.log('[ZipManager] ✅ Libreria caricata!');
|
|
16
|
+
// zipJsLoaded = true;
|
|
17
|
+
// }
|
|
18
|
+
zipJsLoaded = true;
|
|
19
|
+
return module;
|
|
20
|
+
};
|
|
2
21
|
// ============================================================================
|
|
3
22
|
// ZIP MANAGER CLASS
|
|
4
23
|
// ============================================================================
|
|
@@ -8,7 +27,8 @@ import { BlobReader, BlobWriter, TextReader, Uint8ArrayReader, ZipWriter, config
|
|
|
8
27
|
*/
|
|
9
28
|
export class ZipManager {
|
|
10
29
|
/** Configura zip.js (useWebWorkers, maxWorkers) */
|
|
11
|
-
static configure(options) {
|
|
30
|
+
static async configure(options) {
|
|
31
|
+
const { configure } = await loadZipJs();
|
|
12
32
|
configure(options);
|
|
13
33
|
}
|
|
14
34
|
// ========================================================================
|
|
@@ -19,6 +39,8 @@ export class ZipManager {
|
|
|
19
39
|
const { password, compressionLevel = 6, encryptionStrength = 3, comment, onProgress, onEntryProgress, signal } = options;
|
|
20
40
|
// Validazione password: stringa vuota = nessuna cifratura
|
|
21
41
|
const usePassword = typeof password === "string" && password.length > 0 ? password : undefined;
|
|
42
|
+
// Lazy load della libreria
|
|
43
|
+
const { BlobWriter, ZipWriter, BlobReader, TextReader, Uint8ArrayReader } = await loadZipJs();
|
|
22
44
|
const blobWriter = new BlobWriter("application/zip");
|
|
23
45
|
const zipWriter = new ZipWriter(blobWriter, { password: usePassword, zipCrypto: true });
|
|
24
46
|
try {
|
|
@@ -29,7 +51,7 @@ export class ZipManager {
|
|
|
29
51
|
}
|
|
30
52
|
const file = files[i];
|
|
31
53
|
onProgress?.(i + 1, total, file.filename);
|
|
32
|
-
const reader = this.createReader(file.data);
|
|
54
|
+
const reader = this.createReader(file.data, { BlobReader, TextReader, Uint8ArrayReader });
|
|
33
55
|
await zipWriter.add(file.filename, reader, {
|
|
34
56
|
comment: file.comment,
|
|
35
57
|
lastModDate: file.lastModDate,
|
|
@@ -91,7 +113,8 @@ export class ZipManager {
|
|
|
91
113
|
// PRIVATE
|
|
92
114
|
// ========================================================================
|
|
93
115
|
/** Converte data nel reader appropriato per zip.js */
|
|
94
|
-
static createReader(data) {
|
|
116
|
+
static createReader(data, readers) {
|
|
117
|
+
const { BlobReader, TextReader, Uint8ArrayReader } = readers;
|
|
95
118
|
if (typeof data === "string")
|
|
96
119
|
return new TextReader(data);
|
|
97
120
|
if (data instanceof Uint8Array)
|
|
@@ -166,8 +166,13 @@ export const useDocumentOperations = (props) => {
|
|
|
166
166
|
const [isModifiedBatchUpdate, setIsModifiedBatchUpdate] = useState(false);
|
|
167
167
|
const [openCopyToFolderForm, setOpenCopyToFolderForm] = useState({ open: false, operationType: 'copyToFolder', mode: 'onlySelected' });
|
|
168
168
|
const [showTMRelationViewerInCopyToFolderForm, setShowTMRelationViewerInCopyToFolderForm] = useState(false);
|
|
169
|
+
// State to control modal opening for master/detail documents
|
|
170
|
+
const [isOpenDetailsModal, setIsOpenDetailsModal] = useState(false);
|
|
171
|
+
const [isOpenMasterModal, setIsOpenMasterModal] = useState(false);
|
|
169
172
|
const openDetailDcmtsFormHandler = (value) => { setIsOpenDetails(value); };
|
|
170
173
|
const openMasterDcmtsFormHandler = (value) => { setIsOpenMaster(value); };
|
|
174
|
+
const openDetailDcmtsModalHandler = (value) => { setIsOpenDetailsModal(value); };
|
|
175
|
+
const openMasterDcmtsModalHandler = (value) => { setIsOpenMasterModal(value); };
|
|
171
176
|
// State to control whether the export form (for exporting to Excel/CSV/txt and others) should be shown
|
|
172
177
|
const [showExportForm, setShowExportForm] = useState(false);
|
|
173
178
|
const updateShowApprovePopup = (value) => {
|
|
@@ -757,7 +762,7 @@ export const useDocumentOperations = (props) => {
|
|
|
757
762
|
],
|
|
758
763
|
};
|
|
759
764
|
};
|
|
760
|
-
const relationsMenuItem = () => {
|
|
765
|
+
const relationsMenuItem = (openInModal = false) => {
|
|
761
766
|
return {
|
|
762
767
|
id: 'rel',
|
|
763
768
|
icon: _jsx(IconRelation, {}),
|
|
@@ -806,7 +811,7 @@ export const useDocumentOperations = (props) => {
|
|
|
806
811
|
visible: true,
|
|
807
812
|
beginGroup: true,
|
|
808
813
|
disabled: !contextConfig.hasMasterRelations || !contextConfig.canShowRelations || isDisabledForMultiRow(),
|
|
809
|
-
onClick: () => openMasterDcmtsFormHandler(true)
|
|
814
|
+
onClick: () => openInModal ? openMasterDcmtsModalHandler(true) : openMasterDcmtsFormHandler(true)
|
|
810
815
|
},
|
|
811
816
|
{
|
|
812
817
|
id: 'rel-det',
|
|
@@ -815,7 +820,7 @@ export const useDocumentOperations = (props) => {
|
|
|
815
820
|
operationType: 'multiRow',
|
|
816
821
|
disabled: !contextConfig.hasDetailRelations || !contextConfig.canShowRelations || isDisabledForMultiRow(),
|
|
817
822
|
visible: true,
|
|
818
|
-
onClick: () => openDetailDcmtsFormHandler(true)
|
|
823
|
+
onClick: () => openInModal ? openDetailDcmtsModalHandler(true) : openDetailDcmtsFormHandler(true)
|
|
819
824
|
}
|
|
820
825
|
]
|
|
821
826
|
};
|
|
@@ -1118,6 +1123,7 @@ export const useDocumentOperations = (props) => {
|
|
|
1118
1123
|
copyFromWgMenuItem(),
|
|
1119
1124
|
movetofolderFromWgMenuItem(),
|
|
1120
1125
|
commentFromWgMenuItem(false),
|
|
1126
|
+
relationsMenuItem(true),
|
|
1121
1127
|
removeFromWgMenuItem(SDKUI_Localizator.RemoveFromWorkgroup),
|
|
1122
1128
|
].sort((a, b) => a.name.localeCompare(b.name));
|
|
1123
1129
|
return [
|
|
@@ -1198,6 +1204,61 @@ export const useDocumentOperations = (props) => {
|
|
|
1198
1204
|
return addPinIconToItems(getOperationMenuItems());
|
|
1199
1205
|
};
|
|
1200
1206
|
const renderFloatingBar = (floatingBarContainerRef && floatingBarContainerRef.current && allowFloatingBar && showFloatingBar && deviceType !== DeviceType.MOBILE) ? (_jsx(TMFloatingMenuBar, { containerRef: floatingBarContainerRef, contextMenuItems: operationItems(), isConstrained: true, defaultPosition: { x: 1, y: 88 }, defaultPinnedItems: ['rel-det', 'rel-mst', 'dl'], defaultOrientation: 'horizontal', hasContextMenu: false, pinnedItemIds: pinnedItemIds, onPinChange: setPinnedItemIds })) : null;
|
|
1207
|
+
const masterDetailDetailsCommonProps = {
|
|
1208
|
+
deviceType,
|
|
1209
|
+
isForMaster: false,
|
|
1210
|
+
inputDcmts: selectedDcmtInfos,
|
|
1211
|
+
allowNavigation: selectedDcmtInfos.length === 1,
|
|
1212
|
+
canNext: canNavigateHandler ? canNavigateHandler('next') : false,
|
|
1213
|
+
canPrev: canNavigateHandler ? canNavigateHandler('prev') : false,
|
|
1214
|
+
onNext: () => onNavigateHandler && onNavigateHandler('next'),
|
|
1215
|
+
onPrev: () => onNavigateHandler && onNavigateHandler('prev'),
|
|
1216
|
+
allTasks,
|
|
1217
|
+
getAllTasks,
|
|
1218
|
+
deleteTaskByIdsCallback,
|
|
1219
|
+
addTaskCallback,
|
|
1220
|
+
editTaskCallback,
|
|
1221
|
+
onReferenceClick,
|
|
1222
|
+
handleNavigateToWGs,
|
|
1223
|
+
handleNavigateToDossiers,
|
|
1224
|
+
editPdfForm,
|
|
1225
|
+
openS4TViewer,
|
|
1226
|
+
onOpenS4TViewerRequest,
|
|
1227
|
+
onOpenPdfEditorRequest,
|
|
1228
|
+
onRefreshAfterAddDcmtToFavs,
|
|
1229
|
+
onTaskCreateRequest,
|
|
1230
|
+
datagridUtility,
|
|
1231
|
+
dcmtUtility,
|
|
1232
|
+
mergePdfManager,
|
|
1233
|
+
};
|
|
1234
|
+
const masterDetailMasterCommonProps = {
|
|
1235
|
+
deviceType,
|
|
1236
|
+
isForMaster: true,
|
|
1237
|
+
inputDcmts: selectedDcmtInfos,
|
|
1238
|
+
allowNavigation: selectedDcmtInfos.length === 1,
|
|
1239
|
+
canNext: canNavigateHandler ? canNavigateHandler('next') : false,
|
|
1240
|
+
canPrev: canNavigateHandler ? canNavigateHandler('prev') : false,
|
|
1241
|
+
onNext: () => onNavigateHandler && onNavigateHandler('next'),
|
|
1242
|
+
onPrev: () => onNavigateHandler && onNavigateHandler('prev'),
|
|
1243
|
+
appendMasterDcmts: handleAddItem,
|
|
1244
|
+
allTasks,
|
|
1245
|
+
getAllTasks,
|
|
1246
|
+
deleteTaskByIdsCallback,
|
|
1247
|
+
addTaskCallback,
|
|
1248
|
+
editTaskCallback,
|
|
1249
|
+
onReferenceClick,
|
|
1250
|
+
handleNavigateToWGs,
|
|
1251
|
+
handleNavigateToDossiers,
|
|
1252
|
+
editPdfForm,
|
|
1253
|
+
openS4TViewer,
|
|
1254
|
+
onOpenS4TViewerRequest,
|
|
1255
|
+
onOpenPdfEditorRequest,
|
|
1256
|
+
onRefreshAfterAddDcmtToFavs,
|
|
1257
|
+
onTaskCreateRequest,
|
|
1258
|
+
datagridUtility,
|
|
1259
|
+
dcmtUtility,
|
|
1260
|
+
mergePdfManager,
|
|
1261
|
+
};
|
|
1201
1262
|
const renderDcmtOperations = (_jsxs(_Fragment, { children: [(showExportForm && searchResult && dataColumns && dataSource && selectedRowKeys) && (_jsx(TMDataGridExportForm, { dataColumns: dataColumns, dataSource: dataSource, selectedRowKeys: selectedRowKeys, onCloseExportForm: () => setShowExportForm(false), searchResult: searchResult })), _jsx(StyledMultiViewPanel, { "$isVisible": isOpenDcmtForm, children: ((isOpenDcmtForm && focusedItem?.TID !== undefined && focusedItem?.DID !== undefined) &&
|
|
1202
1263
|
_jsx(TMDcmtForm, { isModal: openDcmtFormAsModal || (dcmtFormLayoutMode === LayoutModes.Ark && focusedItem?.DID !== undefined), titleModal: dtd?.name ?? '', TID: focusedItem.TID, DID: focusedItem.DID, allowButtonsRefs: true, showTodoDcmtForm: showTodoDcmtForm, layoutMode: dcmtFormLayoutMode, count: visibleItems?.length, itemIndex: visibleItems ? visibleItems.findIndex(o => o.rowIndex === focusedItem?.rowIndex) + 1 : undefined, canNext: canNavigateHandler ? canNavigateHandler('next') : false, canPrev: canNavigateHandler ? canNavigateHandler('prev') : false, onNext: () => onNavigateHandler && onNavigateHandler('next'), onPrev: () => onNavigateHandler && onNavigateHandler('prev'), onClose: () => { (false); onDcmtFormOpenChange(false, LayoutModes.Update); }, onWFOperationCompleted: onWFOperationCompleted, onTaskCreateRequest: onTaskCreateRequest, onSavedAsyncCallback: onSavedAsyncCallback, openS4TViewer: openS4TViewer, onOpenS4TViewerRequest: onOpenS4TViewerRequest, onOpenPdfEditorRequest: onOpenPdfEditorRequest, openFileUploaderPdfEditor: openFileUploaderPdfEditor, onReferenceClick: onReferenceClick, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers, moreInfoTasks: getMoreInfoTasksForDocument(allTasks, focusedItem?.TID, focusedItem?.DID), showDcmtFormSidebar: showDcmtFormSidebar, datagridUtility: {
|
|
1203
1264
|
onRefreshSearchAsyncDatagrid,
|
|
@@ -1206,8 +1267,8 @@ export const useDocumentOperations = (props) => {
|
|
|
1206
1267
|
onRefreshBlogDatagrid,
|
|
1207
1268
|
onRefreshPreviewDatagrid
|
|
1208
1269
|
} })) }), (showHistory && dtd && selectedDcmtInfos.length > 0) && _jsx(TMViewHistoryDcmt, { fromDTD: dtd, deviceType: deviceType, inputDcmt: selectedDcmtInfos[0], onClose: hideHistoryCallback, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers }), (commentFormState.show && selectedDcmtInfos.length > 0) && _jsx(TMBlogCommentForm, { context: { engine: 'SearchEngine', object: { tid: selectedDcmtInfos[0].TID, did: selectedDcmtInfos[0].DID } }, onClose: hideCommentFormCallback, refreshCallback: onRefreshBlog, participants: [], showAttachmentsSection: true, allArchivedDocumentsFileItems: convertSearchResultDescriptorToFileItems(currentSearchResults ?? []), isCommentRequired: commentFormState.isRequired, removeAndEditAttachment: commentFormState.removeAndEditAttachment, selectedAttachmentDid: [Number(selectedDcmtInfos[0].DID)] }), (showCheckoutInformationForm && dtd && selectedDcmtInfos.length > 0) &&
|
|
1209
|
-
_jsx(TMDcmtCheckoutInfoForm, { dtdName: dtd.name ?? SDKUI_Localizator.SearchResult, selectedDcmtOrFocused: selectedDcmtInfos[0], onClose: hideCheckoutInformationFormCallback }), _jsx(
|
|
1210
|
-
return (_jsx(StyledModalContainer, { style: { backgroundColor: 'white' }, children: _jsx(TMMasterDetailDcmts, {
|
|
1270
|
+
_jsx(TMDcmtCheckoutInfoForm, { dtdName: dtd.name ?? SDKUI_Localizator.SearchResult, selectedDcmtOrFocused: selectedDcmtInfos[0], onClose: hideCheckoutInformationFormCallback }), isOpenDetailsModal && _jsx(TMModal, { width: "95%", height: "95%", onClose: () => setIsOpenDetailsModal(false), title: SDKUI_Localizator.Relations, children: _jsx(TMMasterDetailDcmts, { ...masterDetailDetailsCommonProps, onBack: () => setIsOpenDetailsModal(false) }) }), _jsx(StyledMultiViewPanel, { "$isVisible": isOpenDetails, children: isOpenDetails && _jsx(TMMasterDetailDcmts, { ...masterDetailDetailsCommonProps, onBack: () => setIsOpenDetails(false) }) }), isOpenMasterModal && _jsx(TMModal, { width: "95%", height: "95%", onClose: () => setIsOpenMasterModal(false), title: SDKUI_Localizator.Relations, children: _jsx(TMMasterDetailDcmts, { ...masterDetailMasterCommonProps, onBack: () => setIsOpenMasterModal(false) }) }), _jsxs(StyledMultiViewPanel, { "$isVisible": isOpenMaster, children: [isOpenMaster && _jsx(TMMasterDetailDcmts, { ...masterDetailMasterCommonProps, onBack: () => setIsOpenMaster(false) }), secondaryMasterDcmts.length > 0 && secondaryMasterDcmts.map((dcmt, index) => {
|
|
1271
|
+
return (_jsx(StyledModalContainer, { style: { backgroundColor: 'white' }, children: _jsx(TMMasterDetailDcmts, { ...masterDetailMasterCommonProps, inputDcmts: [dcmt], allowNavigation: false, onBack: () => handleRemoveItem(dcmt.TID, dcmt.DID) }) }, `${index}-${dcmt.DID}`));
|
|
1211
1272
|
})] }), isOpenArchiveRelationForm && _jsx(TMDcmtForm, { isModal: true, titleModal: SDKUI_Localizator.Archive + ' - ' + (archiveType === 'detail' ? SDKUI_Localizator.DcmtsDetail : SDKUI_Localizator.DcmtsMaster), TID: archiveRelatedDcmtFormTID, layoutMode: LayoutModes.Ark, inputMids: archiveRelatedDcmtFormMids, showBackButton: false, allowButtonsRefs: false, onClose: () => {
|
|
1212
1273
|
setIsOpenArchiveRelationForm(false);
|
|
1213
1274
|
setArchiveType(undefined);
|