@topconsultnpm/sdkui-react-beta 6.13.39 → 6.13.41
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/TMPanel.js +29 -11
- package/lib/components/base/TMPanelManager.d.ts +1 -0
- package/lib/components/base/TMPanelManager.js +25 -22
- package/lib/components/features/documents/TMDcmtBlog.js +4 -1
- package/lib/components/features/documents/TMMasterDetailDcmts.js +134 -27
- package/lib/components/features/search/TMSavedQuerySelector.js +40 -12
- package/lib/components/features/search/TMSearch.js +2 -2
- package/lib/components/features/search/TMSearchResult.js +169 -147
- package/lib/components/grids/TMRecentsManager.js +31 -7
- package/lib/components/layout/TMPanelLayout.d.ts +39 -0
- package/lib/components/layout/TMPanelLayout.js +320 -0
- package/lib/components/viewers/TMTidViewer.d.ts +1 -0
- package/lib/components/viewers/TMTidViewer.js +10 -10
- package/package.json +2 -2
- package/lib/components/layout/ResizableGrid.d.ts +0 -8
- package/lib/components/layout/ResizableGrid.js +0 -58
@@ -1,10 +1,10 @@
|
|
1
|
-
import { jsx as _jsx,
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
2
2
|
import React, { useCallback, useEffect, useMemo, useState } from 'react';
|
3
3
|
import { SDK_Globals, DataColumnTypes, MetadataDataDomains, DataListViewModes, MetadataFormats, LayoutModes, TemplateTIDs, DcmtTypeListCacheService, AccessLevels, SystemMIDsAsNumber, ArchiveConstraints } from '@topconsultnpm/sdk-ts-beta';
|
4
4
|
import styled from 'styled-components';
|
5
5
|
import { getCommandsMenuItems, getSelectedDcmtsOrFocused } from './TMSearchResultsMenuItems';
|
6
6
|
import { ContextMenu } from 'devextreme-react';
|
7
|
-
import { genUniqueId, IconShow, IconBoard, IconDcmtTypeSys, IconDetailDcmts, SDKUI_Localizator,
|
7
|
+
import { genUniqueId, IconShow, IconBoard, IconDcmtTypeSys, IconDetailDcmts, SDKUI_Localizator, IconDelete, IconRefresh, IconMenuVertical, IconDownload, IconSignature, deepCompare, getDataColumnName, searchResultDescriptorToSimpleArray, IconArchive, IconActivityLog, IconStar, IconFreeSearch, IconChevronDown, searchResultToMetadataValues, SDKUI_Globals, IconSearchCheck, IconBatchUpdate } from '../../../helper';
|
8
8
|
import { useDcmtOperations } from '../../../hooks/useDcmtOperations';
|
9
9
|
import { useInputAttachmentsDialog, useInputCvtFormatDialog } from '../../../hooks/useInputDialog';
|
10
10
|
import { DcmtOperationTypes, FormModes, SearchResultContext, DownloadTypes } from '../../../ts';
|
@@ -25,7 +25,7 @@ import { TMSaveFormButtonPrevious, TMSaveFormButtonNext } from '../../forms/TMSa
|
|
25
25
|
import TMDataListItemViewer from '../../viewers/TMDataListItemViewer';
|
26
26
|
import TMTidViewer from '../../viewers/TMTidViewer';
|
27
27
|
import { hasDetailRelations, hasMasterRelations } from '../../../helper/dcmtsHelper';
|
28
|
-
import TMDcmtPreview
|
28
|
+
import TMDcmtPreview from '../documents/TMDcmtPreview';
|
29
29
|
import TMFloatingToolbar from '../../base/TMFloatingToolbar';
|
30
30
|
import { WorkFlowApproveRejectPopUp, WorkFlowOperationButtons, WorkFlowReAssignPopUp } from '../workflow/TMWorkflowPopup';
|
31
31
|
import TMMasterDetailDcmts from '../documents/TMMasterDetailDcmts';
|
@@ -33,12 +33,7 @@ import TMBatchUpdateForm from '../../features/documents/TMBatchUpdateForm';
|
|
33
33
|
import TMDcmtForm from '../documents/TMDcmtForm';
|
34
34
|
import TMDcmtBlog from '../documents/TMDcmtBlog';
|
35
35
|
import TMDcmtIcon from '../documents/TMDcmtIcon';
|
36
|
-
import
|
37
|
-
import TMCommandsPanel from '../../sidebar/TMCommandsPanel';
|
38
|
-
//#endregion region Interfaces, Types and Enums
|
39
|
-
//#region Styled Components
|
40
|
-
const StyledContainer = styled.div ` overflow: hidden; background-color: #ffffff; width: calc(100%); height: calc(100%); display: flex; gap: 10px; `;
|
41
|
-
//#endregion Styled Components
|
36
|
+
import TMPanelManager from '../../base/TMPanelManager';
|
42
37
|
//#region Internal Components
|
43
38
|
const CommandsContextMenu = React.memo(({ target, menuItems, allowPin }) => {
|
44
39
|
return (_jsx(ContextMenu, { showEvent: 'click', dataSource: menuItems, target: `${target}` }));
|
@@ -53,7 +48,6 @@ const orderByName = (array) => {
|
|
53
48
|
return 1;
|
54
49
|
} return 0; });
|
55
50
|
};
|
56
|
-
//#endregion Helper Methods
|
57
51
|
const TMSearchResult = ({ context = SearchResultContext.METADATA_SEARCH, isVisible = true, searchResults = [], showSearchResultSidebar = true, showSelector = false, onClosePreviewPanel, showDcmtForm = false, showBoard = false, showPreview = false, title, showSysMetadata = false, isClosable = false, allowFloatingBar = true, showToolbarHeader = true, onRefreshAfterAddDcmtToFavs, onRefreshSearchAsync, onSelectedTIDChanged, onUpdate, onClose, onTaskCreateRequest }) => {
|
58
52
|
const [id, setID] = useState('');
|
59
53
|
const [showApprovePopup, setShowApprovePopup] = useState(false);
|
@@ -69,11 +63,6 @@ const TMSearchResult = ({ context = SearchResultContext.METADATA_SEARCH, isVisib
|
|
69
63
|
const [isOpenMaster, setIsOpenMaster] = useState(false);
|
70
64
|
const [secondaryMasterDcmts, setSecondaryMasterDcmts] = useState([]);
|
71
65
|
const [isOpenDcmtForm, setIsOpenDcmtForm] = useState(false);
|
72
|
-
const [isOpenPreview, setIsOpenPreview] = useState(false);
|
73
|
-
const [isOpenSysMetadata, setIsOpenSysMetadata] = useState(false);
|
74
|
-
const [isOpenBoard, setIsOpenBoard] = useState(false);
|
75
|
-
const [isOpenDistinctValues, setIsOpenDistinctValues] = useState(false);
|
76
|
-
const [isOpenTags, setIsOpenTags] = useState(false);
|
77
66
|
const [currentTIDHasDetailRelations, setCurrentTIDHasDetailRelations] = useState();
|
78
67
|
const [currentTIDHasMasterRelations, setCurrentTIDHasMasterRelations] = useState();
|
79
68
|
const [isOpenBatchUpdate, setIsOpenBatchUpdate] = useState(false);
|
@@ -136,10 +125,10 @@ const TMSearchResult = ({ context = SearchResultContext.METADATA_SEARCH, isVisib
|
|
136
125
|
fileExt: currentMetadataValues.find(o => o.mid == SystemMIDsAsNumber.FileExt)?.value
|
137
126
|
});
|
138
127
|
}, [currentMetadataValues]);
|
139
|
-
useEffect(() => { setIsOpenBoard(showBoard); }, [showBoard])
|
140
|
-
useEffect(() => { setIsOpenSysMetadata(showSysMetadata); }, [showSysMetadata])
|
128
|
+
// useEffect(() => { setIsOpenBoard(showBoard); }, [showBoard])
|
129
|
+
// useEffect(() => { setIsOpenSysMetadata(showSysMetadata); }, [showSysMetadata])
|
141
130
|
useEffect(() => { setIsOpenDcmtForm(showDcmtForm); }, [showDcmtForm]);
|
142
|
-
useEffect(() => { setIsOpenPreview(showPreview)
|
131
|
+
// useEffect(() => { setIsOpenPreview(showPreview) }, [showPreview])
|
143
132
|
const openFormHandler = (layoutMode) => { setIsOpenDcmtForm(true); setDcmtFormLayoutMode(layoutMode); };
|
144
133
|
const openTaskFormHandler = (value) => {
|
145
134
|
if (selectedItems.length > 1)
|
@@ -184,13 +173,6 @@ const TMSearchResult = ({ context = SearchResultContext.METADATA_SEARCH, isVisib
|
|
184
173
|
}
|
185
174
|
return titleHeader;
|
186
175
|
};
|
187
|
-
const allowBackButton = () => {
|
188
|
-
if (context === SearchResultContext.METADATA_SEARCH)
|
189
|
-
return true;
|
190
|
-
if (deviceType !== DeviceType.MOBILE)
|
191
|
-
return false;
|
192
|
-
return splitterSize[0] === '0';
|
193
|
-
};
|
194
176
|
const onBack = () => {
|
195
177
|
if (isOpenBatchUpdate && isModifiedBatchUpdate) {
|
196
178
|
TMMessageBoxManager.show({
|
@@ -306,44 +288,7 @@ const TMSearchResult = ({ context = SearchResultContext.METADATA_SEARCH, isVisib
|
|
306
288
|
}
|
307
289
|
setLastUpdateSearchTime(new Date(Date.now()));
|
308
290
|
};
|
309
|
-
const isOpenMiddlePanel = () => isOpenSysMetadata || isOpenBoard || isOpenTags || isOpenDistinctValues;
|
310
291
|
const getSelectionDcmtInfo = () => { return getSelectedDcmtsOrFocused(selectedItems, focusedItem); };
|
311
|
-
const getPrimarySplitterStartLayout = () => {
|
312
|
-
let size = ['100%', '0'];
|
313
|
-
if (deviceType !== DeviceType.MOBILE) {
|
314
|
-
if (isOpenPreview || isOpenMiddlePanel() || isOpenBatchUpdate) {
|
315
|
-
size = ['50%', '50%'];
|
316
|
-
}
|
317
|
-
}
|
318
|
-
else {
|
319
|
-
size = (isOpenPreview || isOpenMiddlePanel() || isOpenBatchUpdate) ? ['0', '100%'] : ['100%', '0'];
|
320
|
-
}
|
321
|
-
return size;
|
322
|
-
};
|
323
|
-
const getSecondarySplitterStartLayout = () => {
|
324
|
-
if (isOpenPreview && !isOpenMiddlePanel()) {
|
325
|
-
return ['0', '100%'];
|
326
|
-
}
|
327
|
-
if (!isOpenPreview && isOpenMiddlePanel()) {
|
328
|
-
return ['100%', '0'];
|
329
|
-
}
|
330
|
-
return ['40%', '60%'];
|
331
|
-
};
|
332
|
-
const closeMiddlePanel = () => {
|
333
|
-
setIsOpenBoard(false);
|
334
|
-
setIsOpenSysMetadata(false);
|
335
|
-
setIsOpenTags(false);
|
336
|
-
setIsOpenDistinctValues(false);
|
337
|
-
};
|
338
|
-
const titleText = () => {
|
339
|
-
if (isOpenTags)
|
340
|
-
return 'Tags';
|
341
|
-
if (isOpenSysMetadata)
|
342
|
-
return 'Metadati di sistema';
|
343
|
-
if (isOpenBoard)
|
344
|
-
return 'Bacheca';
|
345
|
-
return '';
|
346
|
-
};
|
347
292
|
const canNavigateHandler = (dir) => {
|
348
293
|
if (!focusedItem)
|
349
294
|
return false;
|
@@ -380,39 +325,9 @@ const TMSearchResult = ({ context = SearchResultContext.METADATA_SEARCH, isVisib
|
|
380
325
|
break;
|
381
326
|
}
|
382
327
|
};
|
328
|
+
const searchResutlToolbar = _jsxs(_Fragment, { children: [context !== SearchResultContext.METADATA_SEARCH && fromDTD?.templateTID === TemplateTIDs.WF_WIApprView && _jsx(WorkFlowOperationButtons, { deviceType: deviceType, onApprove: () => setShowApprovePopup(true), onReject: () => setShowRejectPopup(true), onReAssign: () => setShowReAssignPopup(true), approveDisable: disable, rejectDisable: disable, reassignDisable: disable, infoDisable: getSelectedDcmtsOrFocused(selectedItems, focusedItem).length !== 1 }), (dcmtsReturned != dcmtsFound) && _jsx("p", { style: { backgroundColor: `white`, color: TMColors.primaryColor, textAlign: 'center', padding: '1px 4px', borderRadius: '3px', display: 'flex' }, children: `${dcmtsReturned}/${dcmtsFound} restituiti` }), context === SearchResultContext.FAVORITES_AND_RECENTS &&
|
329
|
+
_jsx("div", { style: { display: 'flex', alignItems: 'center', gap: '5px' }, children: _jsx(TMButton, { btnStyle: 'icon', icon: _jsx(IconDelete, { color: 'white' }), caption: "Rimuovi da " + (selectedSearchResult?.category === "Favorites" ? '"Preferiti"' : '"Recenti"'), disabled: getSelectedDcmtsOrFocused(selectedItems, focusedItem).length <= 0, onClick: removeDcmtFromFavsOrRecents }) }), _jsx(TMButton, { btnStyle: 'icon', icon: _jsx(IconRefresh, { color: 'white' }), caption: SDKUI_Localizator.Refresh, onClick: onRefreshSearchAsync }), _jsx(IconMenuVertical, { id: `commands-header-${id}`, color: 'white', cursor: 'pointer' }), _jsx(CommandsContextMenu, { target: `#commands-header-${id}`, menuItems: getCommandsMenuItems(fromDTD, selectedItems, focusedItem, context, showFloatingBar, setShowFloatingBar, openFormHandler, downloadDcmtsAsync, runOperationAsync, onRefreshSearchAsync, refreshSelectionDataRowsAsync, onRefreshAfterAddDcmtToFavs, confirmFormat, openConfirmAttachmentsDialog, openTaskFormHandler, openDetailDcmtsFormHandler, openMasterDcmtsFormHandler, openBatchUpdateFormHandler) })] });
|
383
330
|
const middlePanelToolbar = _jsxs("div", { style: { width: 'max-content', display: 'flex', alignItems: 'center', gap: '10px' }, children: [_jsx(TMSaveFormButtonPrevious, { btnStyle: 'icon', isModified: false, iconColor: TMColors.default_background, formMode: FormModes.ReadOnly, canPrev: canNavigateHandler('prev'), onPrev: () => onNavigateHandler('prev') }), _jsx(TMSaveFormButtonNext, { btnStyle: 'icon', isModified: false, iconColor: TMColors.default_background, formMode: FormModes.ReadOnly, canNext: canNavigateHandler('next'), onNext: () => onNavigateHandler('next') })] });
|
384
|
-
let notAvalableMsg = '';
|
385
|
-
let notAvalableIcon;
|
386
|
-
if (isOpenBoard) {
|
387
|
-
notAvalableMsg = 'Bacheca non disponibile.';
|
388
|
-
}
|
389
|
-
else if (isOpenTags) {
|
390
|
-
notAvalableMsg = 'Tags non disponibile.';
|
391
|
-
}
|
392
|
-
else if (isOpenDetails) {
|
393
|
-
notAvalableMsg = 'Documenti detail non disponibile.';
|
394
|
-
}
|
395
|
-
else if (isOpenMaster) {
|
396
|
-
notAvalableMsg = 'Documenti master non disponibile.';
|
397
|
-
}
|
398
|
-
else {
|
399
|
-
notAvalableMsg = 'Metadati di sistema non disponibile.';
|
400
|
-
}
|
401
|
-
if (isOpenBoard) {
|
402
|
-
notAvalableIcon = _jsx(IconBoard, { fontSize: 96 });
|
403
|
-
}
|
404
|
-
else if (isOpenTags) {
|
405
|
-
notAvalableIcon = _jsx(IconTag, { fontSize: 96 });
|
406
|
-
}
|
407
|
-
else if (isOpenDetails) {
|
408
|
-
notAvalableIcon = _jsx(IconDetails, { fontSize: 96 });
|
409
|
-
}
|
410
|
-
else if (isOpenMaster) {
|
411
|
-
notAvalableIcon = _jsx(IconCommand, { fontSize: 96 });
|
412
|
-
}
|
413
|
-
else {
|
414
|
-
notAvalableIcon = _jsx(IconDcmtTypeSys, { fontSize: 96 });
|
415
|
-
}
|
416
331
|
const handleAddItem = (tid, did) => {
|
417
332
|
let newItem = { TID: tid ?? 0, DID: did ?? 0 };
|
418
333
|
setSecondaryMasterDcmts((prevItems) => [...prevItems, newItem]);
|
@@ -422,66 +337,173 @@ const TMSearchResult = ({ context = SearchResultContext.METADATA_SEARCH, isVisib
|
|
422
337
|
};
|
423
338
|
if (!searchResults || searchResults.length <= 0)
|
424
339
|
return _jsxs("div", { style: { display: 'flex', flexDirection: 'column', alignItems: 'center', justifyContent: 'center', height: '100%' }, children: [_jsx(IconBoard, { fontSize: 96 }), _jsx("div", { style: { fontSize: "15px", marginTop: "10px" }, children: SDKUI_Localizator.NoDcmtFound })] });
|
425
|
-
const isPreviewDisabled = isOpenBatchUpdate || fromDTD?.archiveConstraint === ArchiveConstraints.OnlyMetadata;
|
426
|
-
const isBoardDisabled = isOpenBatchUpdate;
|
427
|
-
const isSysMetadataDisabled = isOpenBatchUpdate || !focusedItem?.DID;
|
428
|
-
const isDetailsDisabled = isOpenBatchUpdate || !focusedItem?.DID;
|
429
|
-
const isMasterDisabled = isOpenBatchUpdate || (!focusedItem?.DID && selectedItems.length <= 0);
|
430
340
|
const isMobile = deviceType === DeviceType.MOBILE;
|
431
|
-
|
341
|
+
const renderTMSearchResult = (handleTogglePanel) => _jsxs(_Fragment, { children: [_jsxs(TMLayoutItem, { height: '100%', children: [_jsxs(TMSplitterLayout, { direction: 'horizontal', overflow: 'visible', separatorSize: SDKUI_Globals.userSettings.themeSettings.gutters, separatorActiveColor: 'transparent', separatorColor: 'transparent', min: ['0', '0'], showSeparator: showSelector && deviceType !== DeviceType.MOBILE, start: showSelector ? deviceType !== DeviceType.MOBILE ? ['25%', '75%'] : splitterSize : ['0%', '100%'], children: [showSelector ?
|
342
|
+
_jsx(TMLayoutItem, { children: _jsx(TMSearchResultSelector, { searchResults: currentSearchResults, onSelectionChanged: onSearchResultSelectionChanged }) })
|
343
|
+
:
|
344
|
+
_jsx(_Fragment, {}), _jsxs(TMLayoutItem, { children: [_jsx(TMSearchResultGrid
|
345
|
+
// allowMultipleSelection={allowMultipleSelection}
|
346
|
+
, {
|
347
|
+
// allowMultipleSelection={allowMultipleSelection}
|
348
|
+
inputFocusedItem: focusedItem, inputSelectedItems: selectedItems, searchResult: searchResults.length > 1 ? selectedSearchResult : searchResults[0], lastUpdateSearchTime: lastUpdateSearchTime, onDblClick: () => openFormHandler(LayoutModes.Update), onContextMenuPreparing: onContextMenuPreparing, onSelectionChanged: (items) => { setSelectedItems(items); }, onVisibleItemChanged: setVisibleItems, onFocusedItemChanged: setFocusedItem }), allowFloatingBar && showFloatingBar && deviceType !== DeviceType.MOBILE &&
|
349
|
+
_jsxs(TMFloatingToolbar, { backgroundColor: TMColors.primaryColor, initialLeft: '10px', initialTop: 'calc(100% - 75px)', children: [fromDTD?.perm?.canRetrieveFile === AccessLevels.Yes && _jsx(TMButton, { btnStyle: 'icon', caption: "Download file", disabled: fromDTD?.perm?.canRetrieveFile !== AccessLevels.Yes, icon: _jsx(IconDownload, { color: 'white' }), onClick: () => { downloadDcmtsAsync(getSelectedDcmtsOrFocused(selectedItems, focusedItem), DownloadTypes.Dcmt); } }), _jsx(TMButton, { btnStyle: 'icon', caption: 'Firma e marca', icon: _jsx(IconSignature, { color: 'white' }), onClick: () => { ShowAlert({ message: "TODO Firma e marca ", mode: 'info', title: `${"TODO"}`, duration: 3000 }); } }), _jsx(IconMenuVertical, { id: `commands-floating-${id}`, color: 'white', cursor: 'pointer' }), _jsx(CommandsContextMenu, { target: `#commands-floating-${id}`, menuItems: getCommandsMenuItems(fromDTD, selectedItems, focusedItem, context, showFloatingBar, setShowFloatingBar, openFormHandler, downloadDcmtsAsync, runOperationAsync, onRefreshSearchAsync, refreshSelectionDataRowsAsync, onRefreshAfterAddDcmtToFavs, confirmFormat, openConfirmAttachmentsDialog, openTaskFormHandler, openDetailDcmtsFormHandler, openMasterDcmtsFormHandler, openBatchUpdateFormHandler) })] })] })] }), showApprovePopup && _jsx(WorkFlowApproveRejectPopUp, { deviceType: deviceType, onUpdate: onUpdate, selectedItems: getSelectedDcmtsOrFocused(selectedItems, focusedItem), op: 0, onClose: () => setShowApprovePopup(false) }), showRejectPopup && _jsx(WorkFlowApproveRejectPopUp, { deviceType: deviceType, onUpdate: onUpdate, selectedItems: getSelectedDcmtsOrFocused(selectedItems, focusedItem), op: 1, onClose: () => setShowRejectPopup(false) }), showReAssignPopup && _jsx(WorkFlowReAssignPopUp, { deviceType: deviceType, onUpdate: onUpdate, selectedItems: getSelectedDcmtsOrFocused(selectedItems, focusedItem), onClose: () => setShowReAssignPopup(false) })] }), _jsx(ConfirmFormatDialog, {}), _jsx(ConfirmAttachmentsDialog, {})] });
|
350
|
+
const renderTMBlog = (handleTogglePanel) => _jsx(TMDcmtBlog, { tid: focusedItem?.TID, did: focusedItem?.DID });
|
351
|
+
const renderTMSysMetadata = (handleTogglePanel) => _jsx(TMMetadataValues, { layoutMode: LayoutModes.Update, openChooserBySingleClick: true, TID: focusedItem?.TID, isReadOnly: true, deviceType: deviceType, metadataValues: currentMetadataValues.filter(o => (o.mid != undefined && o.mid <= 100)), metadataValuesOrig: currentMetadataValues.filter(o => (o.mid != undefined && o.mid <= 100)), validationItems: [] });
|
352
|
+
const renderTMDcmtPreview = (handleTogglePanel) => _jsx(TMDcmtPreview, { onClose: () => {
|
353
|
+
handleTogglePanel("TMDcmtPreview");
|
354
|
+
onClosePreviewPanel?.();
|
355
|
+
}, dcmtData: currentDcmt });
|
356
|
+
const renderTMBatchUpdate = (handleTogglePanel) => _jsx(TMBatchUpdateForm, { inputDcmts: getSelectionDcmtInfo(), TID: focusedItem ? focusedItem?.TID : selectedItems[0]?.TID, DID: focusedItem ? focusedItem?.DID : selectedItems[0]?.DID, onBack: () => { handleTogglePanel("TMBatchUpdate"); }, onSavedCallbackAsync: async () => {
|
357
|
+
setIsOpenBatchUpdate(false);
|
358
|
+
setIsModifiedBatchUpdate(false);
|
359
|
+
await refreshSelectionDataRowsAsync();
|
360
|
+
}, onStatusChanged: (isModified) => { setIsModifiedBatchUpdate(isModified); } });
|
361
|
+
const panelsConfig = [
|
362
|
+
{
|
363
|
+
id: 'TMSearchResult',
|
364
|
+
name: SDKUI_Localizator.SearchResult,
|
365
|
+
toolbarOptions: { icon: _jsx(IconSearchCheck, { fontSize: 24 }), visible: true, isActive: true, orderNumber: 1 },
|
366
|
+
type: 'content',
|
367
|
+
contentOptions: {
|
368
|
+
visible: true,
|
369
|
+
height: '100%',
|
370
|
+
width: '20%',
|
371
|
+
content: renderTMSearchResult,
|
372
|
+
panelContainer: {
|
373
|
+
title: getTitleHeader(),
|
374
|
+
showHeader: showToolbarHeader,
|
375
|
+
allowMaximize: !isMobile,
|
376
|
+
onBack: !isClosable ? onBack : undefined,
|
377
|
+
onClose: isClosable ? onBack : undefined,
|
378
|
+
toolbar: searchResutlToolbar
|
379
|
+
},
|
380
|
+
},
|
381
|
+
},
|
382
|
+
{
|
383
|
+
id: 'TMBlog',
|
384
|
+
name: SDKUI_Localizator.BlogCase,
|
385
|
+
toolbarOptions: {
|
386
|
+
icon: _jsx(IconBoard, { fontSize: 24 }),
|
387
|
+
disabled: !focusedItem?.DID,
|
388
|
+
visible: true,
|
389
|
+
isActive: showBoard,
|
390
|
+
orderNumber: 2
|
391
|
+
},
|
392
|
+
type: 'content',
|
393
|
+
contentOptions: {
|
394
|
+
visible: true,
|
395
|
+
height: '100%',
|
396
|
+
width: '20%',
|
397
|
+
content: renderTMBlog,
|
398
|
+
panelContainer: {
|
399
|
+
title: SDKUI_Localizator.BlogCase,
|
400
|
+
allowMaximize: !isMobile,
|
401
|
+
toolbar: middlePanelToolbar
|
402
|
+
},
|
403
|
+
},
|
404
|
+
},
|
405
|
+
{
|
406
|
+
id: 'TMSysMetadata',
|
407
|
+
name: SDKUI_Localizator.MetadataSystem,
|
408
|
+
toolbarOptions: {
|
409
|
+
icon: _jsx(IconDcmtTypeSys, { fontSize: 24 }),
|
410
|
+
visible: true,
|
411
|
+
disabled: !focusedItem?.DID,
|
412
|
+
isActive: showSysMetadata,
|
413
|
+
orderNumber: 3
|
414
|
+
},
|
415
|
+
type: 'content',
|
416
|
+
contentOptions: {
|
417
|
+
visible: true,
|
418
|
+
height: '100%',
|
419
|
+
width: '20%',
|
420
|
+
content: renderTMSysMetadata,
|
421
|
+
panelContainer: {
|
422
|
+
title: SDKUI_Localizator.MetadataSystem,
|
423
|
+
allowMaximize: !isMobile,
|
424
|
+
toolbar: middlePanelToolbar
|
425
|
+
},
|
426
|
+
},
|
427
|
+
},
|
428
|
+
{
|
429
|
+
id: 'TMDcmtPreview',
|
430
|
+
name: SDKUI_Localizator.PreviewDocument,
|
431
|
+
toolbarOptions: {
|
432
|
+
icon: _jsx(IconShow, { fontSize: 24 }),
|
433
|
+
disabled: !focusedItem?.DID && fromDTD?.archiveConstraint === ArchiveConstraints.OnlyMetadata,
|
434
|
+
visible: true,
|
435
|
+
isActive: showPreview,
|
436
|
+
orderNumber: 4
|
437
|
+
},
|
438
|
+
type: 'content',
|
439
|
+
contentOptions: {
|
440
|
+
visible: true,
|
441
|
+
height: '100%',
|
442
|
+
width: '20%',
|
443
|
+
content: renderTMDcmtPreview,
|
444
|
+
},
|
445
|
+
},
|
446
|
+
{
|
447
|
+
id: 'TMBatchUpdate',
|
448
|
+
name: SDKUI_Localizator.BatchUpdate,
|
449
|
+
toolbarOptions: { icon: _jsx(IconBatchUpdate, { fontSize: 24 }), visible: true, isActive: false, orderNumber: 5 },
|
450
|
+
type: 'content',
|
451
|
+
contentOptions: {
|
452
|
+
visible: true,
|
453
|
+
height: '100%',
|
454
|
+
width: '20%',
|
455
|
+
content: renderTMBatchUpdate,
|
456
|
+
},
|
457
|
+
},
|
458
|
+
{
|
459
|
+
id: 'showMaster',
|
460
|
+
name: SDKUI_Localizator.DcmtsMaster,
|
461
|
+
toolbarOptions: {
|
462
|
+
icon: _jsx(IconDetailDcmts, { fontSize: 24 }),
|
463
|
+
visible: !!currentTIDHasMasterRelations,
|
464
|
+
disabled: (!focusedItem?.DID && selectedItems.length <= 0),
|
465
|
+
isActive: !!currentTIDHasMasterRelations,
|
466
|
+
orderNumber: 6,
|
467
|
+
beginGroup: true
|
468
|
+
},
|
469
|
+
type: 'button',
|
470
|
+
buttonOptions: {
|
471
|
+
onClick: () => { setIsOpenMaster(true); },
|
472
|
+
},
|
473
|
+
},
|
474
|
+
{
|
475
|
+
id: 'showDetails',
|
476
|
+
name: SDKUI_Localizator.DcmtsDetail,
|
477
|
+
toolbarOptions: {
|
478
|
+
icon: _jsx(IconDetailDcmts, { transform: 'scale(-1, 1)', fontSize: 24 }),
|
479
|
+
visible: !!currentTIDHasDetailRelations,
|
480
|
+
disabled: !focusedItem?.DID,
|
481
|
+
isActive: !!currentTIDHasDetailRelations,
|
482
|
+
orderNumber: 7,
|
483
|
+
},
|
484
|
+
type: 'button',
|
485
|
+
buttonOptions: {
|
486
|
+
onClick: () => { setIsOpenDetails(true); },
|
487
|
+
},
|
488
|
+
},
|
489
|
+
];
|
490
|
+
const getPanelMobile = () => {
|
491
|
+
if (showPreview)
|
492
|
+
return 'TMDcmtPreview';
|
493
|
+
if (showBoard)
|
494
|
+
return 'TMBlog';
|
495
|
+
if (showSysMetadata)
|
496
|
+
return 'TMSysMetadata';
|
497
|
+
return 'TMSearchResult';
|
498
|
+
};
|
499
|
+
return (_jsxs(StyledMultiViewPanel, { "$isVisible": isVisible, children: [_jsx(StyledMultiViewPanel, { "$isVisible": !isOpenDcmtForm && !isOpenDetails && !isOpenMaster, style: {
|
432
500
|
display: 'flex',
|
433
501
|
flexDirection: isMobile ? 'column' : 'row',
|
434
502
|
justifyContent: 'space-between',
|
435
503
|
gap: SDKUI_Globals.userSettings.themeSettings.gutters,
|
436
504
|
width: '100%',
|
437
505
|
height: '100%',
|
438
|
-
}, children:
|
439
|
-
_jsx("div", { style: { display: 'flex', alignItems: 'center', gap: '5px' }, children: _jsx(TMButton, { btnStyle: 'icon', icon: _jsx(IconDelete, { color: 'white' }), caption: "Rimuovi da " + (selectedSearchResult?.category === "Favorites" ? '"Preferiti"' : '"Recenti"'), disabled: getSelectedDcmtsOrFocused(selectedItems, focusedItem).length <= 0, onClick: removeDcmtFromFavsOrRecents }) }), _jsx(TMButton, { btnStyle: 'icon', icon: _jsx(IconRefresh, { color: 'white' }), caption: SDKUI_Localizator.Refresh, onClick: onRefreshSearchAsync }), _jsx(IconMenuVertical, { id: `commands-header-${id}`, color: 'white', cursor: 'pointer' }), _jsx(CommandsContextMenu, { target: `#commands-header-${id}`, menuItems: getCommandsMenuItems(fromDTD, selectedItems, focusedItem, context, showFloatingBar, setShowFloatingBar, openFormHandler, downloadDcmtsAsync, runOperationAsync, onRefreshSearchAsync, refreshSelectionDataRowsAsync, onRefreshAfterAddDcmtToFavs, confirmFormat, openConfirmAttachmentsDialog, openTaskFormHandler, openDetailDcmtsFormHandler, openMasterDcmtsFormHandler, openBatchUpdateFormHandler) })] }), onBack: !isClosable && !isMobile && allowBackButton() ? onBack : undefined, onClose: isClosable && allowBackButton() ? onBack : undefined, title: getTitleHeader(), showHeader: showToolbarHeader, children: [_jsxs(TMLayoutItem, { height: '100%', children: [_jsxs(TMSplitterLayout, { direction: 'horizontal', overflow: 'visible', separatorSize: SDKUI_Globals.userSettings.themeSettings.gutters, separatorActiveColor: 'transparent', separatorColor: 'transparent', min: ['0', '0'], showSeparator: showSelector && deviceType !== DeviceType.MOBILE, start: showSelector ? deviceType !== DeviceType.MOBILE ? ['25%', '75%'] : splitterSize : ['0%', '100%'], children: [showSelector ?
|
440
|
-
_jsx(TMLayoutItem, { children: _jsx(TMSearchResultSelector, { searchResults: currentSearchResults, onSelectionChanged: onSearchResultSelectionChanged }) })
|
441
|
-
:
|
442
|
-
_jsx(_Fragment, {}), _jsxs(TMLayoutItem, { children: [_jsx(TMSearchResultGrid
|
443
|
-
// allowMultipleSelection={allowMultipleSelection}
|
444
|
-
, {
|
445
|
-
// allowMultipleSelection={allowMultipleSelection}
|
446
|
-
inputFocusedItem: focusedItem, inputSelectedItems: selectedItems, searchResult: searchResults.length > 1 ? selectedSearchResult : searchResults[0], lastUpdateSearchTime: lastUpdateSearchTime, onDblClick: () => openFormHandler(LayoutModes.Update), onContextMenuPreparing: onContextMenuPreparing, onSelectionChanged: (items) => { setSelectedItems(items); }, onVisibleItemChanged: setVisibleItems, onFocusedItemChanged: setFocusedItem }), allowFloatingBar && showFloatingBar && deviceType !== DeviceType.MOBILE &&
|
447
|
-
_jsxs(TMFloatingToolbar, { backgroundColor: TMColors.primaryColor, initialLeft: '10px', initialTop: 'calc(100% - 75px)', children: [fromDTD?.perm?.canRetrieveFile === AccessLevels.Yes && _jsx(TMButton, { btnStyle: 'icon', caption: "Download file", disabled: fromDTD?.perm?.canRetrieveFile !== AccessLevels.Yes, icon: _jsx(IconDownload, { color: 'white' }), onClick: () => { downloadDcmtsAsync(getSelectedDcmtsOrFocused(selectedItems, focusedItem), DownloadTypes.Dcmt); } }), _jsx(TMButton, { btnStyle: 'icon', caption: 'Firma e marca', icon: _jsx(IconSignature, { color: 'white' }), onClick: () => { ShowAlert({ message: "TODO Firma e marca ", mode: 'info', title: `${"TODO"}`, duration: 3000 }); } }), _jsx(IconMenuVertical, { id: `commands-floating-${id}`, color: 'white', cursor: 'pointer' }), _jsx(CommandsContextMenu, { target: `#commands-floating-${id}`, menuItems: getCommandsMenuItems(fromDTD, selectedItems, focusedItem, context, showFloatingBar, setShowFloatingBar, openFormHandler, downloadDcmtsAsync, runOperationAsync, onRefreshSearchAsync, refreshSelectionDataRowsAsync, onRefreshAfterAddDcmtToFavs, confirmFormat, openConfirmAttachmentsDialog, openTaskFormHandler, openDetailDcmtsFormHandler, openMasterDcmtsFormHandler, openBatchUpdateFormHandler) })] })] })] }), showApprovePopup && _jsx(WorkFlowApproveRejectPopUp, { deviceType: deviceType, onUpdate: onUpdate, selectedItems: getSelectedDcmtsOrFocused(selectedItems, focusedItem), op: 0, onClose: () => setShowApprovePopup(false) }), showRejectPopup && _jsx(WorkFlowApproveRejectPopUp, { deviceType: deviceType, onUpdate: onUpdate, selectedItems: getSelectedDcmtsOrFocused(selectedItems, focusedItem), op: 1, onClose: () => setShowRejectPopup(false) }), showReAssignPopup && _jsx(WorkFlowReAssignPopUp, { deviceType: deviceType, onUpdate: onUpdate, selectedItems: getSelectedDcmtsOrFocused(selectedItems, focusedItem), onClose: () => setShowReAssignPopup(false) })] }), _jsx(ConfirmFormatDialog, {}), _jsx(ConfirmAttachmentsDialog, {})] }) }), isOpenBatchUpdate ?
|
448
|
-
_jsx(StyledModalContainer, { style: { backgroundColor: 'white' }, children: _jsx(TMBatchUpdateForm, { inputDcmts: getSelectionDcmtInfo(), TID: focusedItem ? focusedItem?.TID : selectedItems[0]?.TID, DID: focusedItem ? focusedItem?.DID : selectedItems[0]?.DID, onBack: () => setIsOpenBatchUpdate(false), onSavedCallbackAsync: async () => {
|
449
|
-
setIsOpenBatchUpdate(false);
|
450
|
-
setIsModifiedBatchUpdate(false);
|
451
|
-
await refreshSelectionDataRowsAsync();
|
452
|
-
}, onStatusChanged: (isModified) => { setIsModifiedBatchUpdate(isModified); } }) })
|
453
|
-
:
|
454
|
-
isOpenPreview || isOpenMiddlePanel()
|
455
|
-
? _jsx(TMLayoutItem, { children: _jsxs(TMSplitterLayout, { direction: 'horizontal', overflow: 'visible', separatorSize: SDKUI_Globals.userSettings.themeSettings.gutters, separatorActiveColor: 'transparent', separatorColor: 'transparent', showSeparator: deviceType !== DeviceType.MOBILE && (isOpenPreview && isOpenMiddlePanel()), start: getSecondarySplitterStartLayout(), min: ['0', '0'], children: [isOpenMiddlePanel()
|
456
|
-
? _jsx(TMLayoutItem, { children: _jsx(TMPanel, { padding: '0',
|
457
|
-
// color={TMColors.primaryColor}
|
458
|
-
// backgroundColor={`${TMColors.primaryColor}25`}
|
459
|
-
title: titleText(), toolbar: middlePanelToolbar, onClose: () => closeMiddlePanel(), children: (!focusedItem?.DID)
|
460
|
-
?
|
461
|
-
_jsx(TMNothingToShow, { text: 'Nessun documento selezionato.', secondText: notAvalableMsg, icon: notAvalableIcon })
|
462
|
-
:
|
463
|
-
_jsxs(StyledContainer, { children: [isOpenBoard && _jsx(TMDcmtBlog, { tid: focusedItem?.TID, did: focusedItem?.DID }), isOpenSysMetadata &&
|
464
|
-
_jsx(TMMetadataValues, { layoutMode: LayoutModes.Update, openChooserBySingleClick: !isOpenDistinctValues, TID: focusedItem?.TID, isReadOnly: true, deviceType: deviceType, metadataValues: currentMetadataValues.filter(o => (o.mid != undefined && o.mid <= 100)), metadataValuesOrig: currentMetadataValues.filter(o => (o.mid != undefined && o.mid <= 100)), validationItems: [] })] }) }) })
|
465
|
-
: _jsx(_Fragment, {}), isOpenPreview
|
466
|
-
? _jsx(TMLayoutItem, { children: _jsx(TMDcmtPreview, { onClose: () => { setIsOpenPreview(false); onClosePreviewPanel?.(); }, dcmtData: currentDcmt }) })
|
467
|
-
: _jsx(_Fragment, {})] }) })
|
468
|
-
: _jsx(_Fragment, {})] }) }) }), showSearchResultSidebar && _jsx(TMCommandsPanel, { isMobile: deviceType === DeviceType.MOBILE, items: [
|
469
|
-
...(isMobile ? [{ icon: _jsx(IconArrowLeft, {}), onClick: !isClosable && allowBackButton() ? onBack : undefined }] : []),
|
470
|
-
{ icon: _jsx(IconShow, {}), selected: isOpenPreview, disabled: isPreviewDisabled, onClick: () => { if (!isPreviewDisabled)
|
471
|
-
setIsOpenPreview(!isOpenPreview); } },
|
472
|
-
{ icon: _jsx(IconBoard, {}), selected: isOpenBoard, disabled: isBoardDisabled, onClick: () => { if (!isBoardDisabled) {
|
473
|
-
closeMiddlePanel();
|
474
|
-
setIsOpenBoard(!isOpenBoard);
|
475
|
-
} } },
|
476
|
-
{ icon: _jsx(IconDcmtTypeSys, {}), selected: isOpenSysMetadata, disabled: isSysMetadataDisabled, onClick: () => { if (!isSysMetadataDisabled) {
|
477
|
-
closeMiddlePanel();
|
478
|
-
setIsOpenSysMetadata(!isOpenSysMetadata);
|
479
|
-
} } },
|
480
|
-
...(currentTIDHasMasterRelations ? [{ icon: _jsx(IconDetailDcmts, {}), selected: isOpenMaster, disabled: isMasterDisabled, onClick: () => { if (!isMasterDisabled)
|
481
|
-
setIsOpenMaster(!isOpenMaster); } }] : []),
|
482
|
-
...(currentTIDHasDetailRelations ? [{ icon: _jsx(IconDetailDcmts, { transform: 'scale(-1, 1)' }), selected: isOpenDetails, disabled: isDetailsDisabled, onClick: () => { if (!isDetailsDisabled)
|
483
|
-
setIsOpenDetails(!isOpenDetails); } }] : []),
|
484
|
-
] })] }), _jsx(StyledMultiViewPanel, { "$isVisible": isOpenDetails, children: isOpenDetails && _jsx(TMMasterDetailDcmts, { deviceType: deviceType, isForMaster: false, inputDcmts: getSelectionDcmtInfo(), allowNavigation: focusedItem && selectedItems.length <= 0, canNext: canNavigateHandler('next'), canPrev: canNavigateHandler('prev'), onNext: () => onNavigateHandler('next'), onPrev: () => onNavigateHandler('prev'), onBack: () => setIsOpenDetails(false) }) }), _jsxs(StyledMultiViewPanel, { "$isVisible": isOpenMaster, children: [isOpenMaster && _jsx(TMMasterDetailDcmts, { deviceType: deviceType, inputDcmts: getSelectionDcmtInfo(), isForMaster: true, allowNavigation: focusedItem && selectedItems.length <= 0, canNext: canNavigateHandler('next'), canPrev: canNavigateHandler('prev'), onNext: () => onNavigateHandler('next'), onPrev: () => onNavigateHandler('prev'), onBack: () => setIsOpenMaster(false), appendMasterDcmts: handleAddItem }), secondaryMasterDcmts.length > 0 && secondaryMasterDcmts.map((dcmt, index) => {
|
506
|
+
}, children: _jsx(TMLayoutWaitingContainer, { direction: 'vertical', showWaitPanel: showWaitPanel, showWaitPanelPrimary: showPrimary, showWaitPanelSecondary: showSecondary, waitPanelTitle: waitPanelTitle, waitPanelTextPrimary: waitPanelTextPrimary, waitPanelValuePrimary: waitPanelValuePrimary, waitPanelMaxValuePrimary: waitPanelMaxValuePrimary, waitPanelTextSecondary: waitPanelTextSecondary, waitPanelValueSecondary: waitPanelValueSecondary, waitPanelMaxValueSecondary: waitPanelMaxValueSecondary, isCancelable: true, abortController: abortController, children: _jsx(TMPanelManager, { panels: panelsConfig, initialMobilePanelId: getPanelMobile(), showToolbar: showSearchResultSidebar, toolbarMode: 1 }) }) }), _jsx(StyledMultiViewPanel, { "$isVisible": isOpenDetails, children: isOpenDetails && _jsx(TMMasterDetailDcmts, { deviceType: deviceType, isForMaster: false, inputDcmts: getSelectionDcmtInfo(), allowNavigation: focusedItem && selectedItems.length <= 0, canNext: canNavigateHandler('next'), canPrev: canNavigateHandler('prev'), onNext: () => onNavigateHandler('next'), onPrev: () => onNavigateHandler('prev'), onBack: () => setIsOpenDetails(false) }) }), _jsxs(StyledMultiViewPanel, { "$isVisible": isOpenMaster, children: [isOpenMaster && _jsx(TMMasterDetailDcmts, { deviceType: deviceType, inputDcmts: getSelectionDcmtInfo(), isForMaster: true, allowNavigation: focusedItem && selectedItems.length <= 0, canNext: canNavigateHandler('next'), canPrev: canNavigateHandler('prev'), onNext: () => onNavigateHandler('next'), onPrev: () => onNavigateHandler('prev'), onBack: () => setIsOpenMaster(false), appendMasterDcmts: handleAddItem }), secondaryMasterDcmts.length > 0 && secondaryMasterDcmts.map((dcmt, index) => {
|
485
507
|
return (_jsx(StyledModalContainer, { style: { backgroundColor: 'white' }, children: _jsx(TMMasterDetailDcmts, { deviceType: deviceType, inputDcmts: [dcmt], isForMaster: true, allowNavigation: false, onBack: () => handleRemoveItem(dcmt.TID, dcmt.DID), appendMasterDcmts: handleAddItem }) }, `${index}-${dcmt.DID}`));
|
486
508
|
})] }), _jsx(StyledMultiViewPanel, { "$isVisible": isOpenDcmtForm, children: isOpenDcmtForm && _jsx(TMDcmtForm, { TID: focusedItem?.TID, DID: focusedItem?.DID, layoutMode: dcmtFormLayoutMode, showPreview: deviceType !== DeviceType.MOBILE, count: visibleItems.length, itemIndex: visibleItems.findIndex(o => o.rowIndex === focusedItem?.rowIndex) + 1, canNext: canNavigateHandler('next'), canPrev: canNavigateHandler('prev'), onNext: () => onNavigateHandler('next'), onPrev: () => onNavigateHandler('prev'), onClose: () => { setIsOpenDcmtForm(false); }, onSavedAsyncCallback: async (tid, did) => { await refreshFocusedDataRowAsync(tid, did, true); } }) })] }));
|
487
509
|
};
|
@@ -4,11 +4,13 @@ import { useEffect, useState } from 'react';
|
|
4
4
|
import ReactDOMServer from 'react-dom/server';
|
5
5
|
import { DcmtTypeListCacheService } from '@topconsultnpm/sdk-ts-beta';
|
6
6
|
import ContextMenu from 'devextreme-react/cjs/context-menu';
|
7
|
-
import { IconDelete, SDKUI_Localizator, IconApply, IconInfo } from '../../helper';
|
7
|
+
import { IconDelete, SDKUI_Localizator, IconApply, IconInfo, IconCloseOutline } from '../../helper';
|
8
8
|
import { TMColors } from '../../utils/theme';
|
9
9
|
import { DeviceType } from '../base/TMDeviceProvider';
|
10
10
|
import { TMDcmtTypeChooserForm } from '../choosers/TMDcmtTypeChooser';
|
11
|
-
import TMTidViewer, { TMDcmtTypeTooltip } from '../viewers/TMTidViewer';
|
11
|
+
import TMTidViewer, { renderDTDTooltipContent, TMDcmtTypeTooltip } from '../viewers/TMTidViewer';
|
12
|
+
import { StyledDivHorizontal, StyledOffCanvasPanel } from '../base/Styled';
|
13
|
+
import { useOutsideClick } from '../../hooks/useOutsideClick';
|
12
14
|
const StyledRecentTidItem = styled.div `
|
13
15
|
display: flex;
|
14
16
|
flex-direction: column;
|
@@ -27,9 +29,13 @@ const StyledRecentTidItem = styled.div `
|
|
27
29
|
left: -7px;
|
28
30
|
top: 50%;
|
29
31
|
transform: translateY(-50%);
|
30
|
-
opacity:
|
32
|
+
opacity: 0;
|
31
33
|
transition: opacity 0.2s;
|
32
|
-
pointer-events:
|
34
|
+
pointer-events: none;
|
35
|
+
// On mobile, never show
|
36
|
+
${({ $isMobile }) => $isMobile && `
|
37
|
+
display: none !important;
|
38
|
+
`}
|
33
39
|
}
|
34
40
|
|
35
41
|
&:hover .info-icon {
|
@@ -46,13 +52,18 @@ const iconDelete = () => ReactDOMServer.renderToString(_jsx(IconDelete, {}));
|
|
46
52
|
const TMRecentsManager = ({ deviceType, mruTIDs, currentMruTID, onSelectedTID, onDeletedTID }) => {
|
47
53
|
const [showDcmtTypeChooser, setShowDcmtTypeChooser] = useState(false);
|
48
54
|
const [recentDcmtTypes, setRecentDcmtTypes] = useState([]);
|
55
|
+
const [infoDTD, setInfoDTD] = useState();
|
49
56
|
useEffect(() => {
|
50
57
|
DcmtTypeListCacheService.GetAllWithoutMetadataAsync().then((allTypes) => {
|
51
58
|
const filtered = allTypes.filter(dt => mruTIDs.includes(dt.id));
|
52
59
|
setRecentDcmtTypes(filtered);
|
53
60
|
});
|
54
61
|
}, [mruTIDs]);
|
55
|
-
|
62
|
+
const panelRef = useOutsideClick(() => {
|
63
|
+
setInfoDTD(undefined);
|
64
|
+
});
|
65
|
+
const isMobile = deviceType === DeviceType.MOBILE;
|
66
|
+
return (_jsxs(_Fragment, { children: [_jsxs("div", { style: { overflowY: isMobile ? 'auto' : undefined, display: 'flex', flexDirection: 'column', padding: '5px', width: '100%' }, children: [_jsx(StyledRecentTidItem, { id: `tid-${0}`, "$isMobile": isMobile, onClick: () => { setShowDcmtTypeChooser(true); }, children: _jsx("div", { style: { display: 'flex', alignItems: 'center', justifyContent: 'center', width: '100%' }, children: _jsx("p", { style: {
|
56
67
|
color: TMColors.primaryColor,
|
57
68
|
fontSize: '1rem',
|
58
69
|
fontWeight: 600,
|
@@ -60,7 +71,20 @@ const TMRecentsManager = ({ deviceType, mruTIDs, currentMruTID, onSelectedTID, o
|
|
60
71
|
overflow: 'hidden',
|
61
72
|
textOverflow: 'ellipsis'
|
62
73
|
}, children: `${SDKUI_Localizator.AllDcmtTypes} (${DcmtTypeListCacheService.CacheCount(true)})` }) }) }, 0), recentDcmtTypes.map((dtd) => {
|
63
|
-
return (_jsxs(StyledRecentTidItem, { id: `tid-${dtd.id}`, onClick: () => { onSelectedTID?.(dtd.id ?? 0); }, children: [_jsx("span", { className: "info-icon", children: _jsx(TMDcmtTypeTooltip, { dtd: dtd, children: _jsx(IconInfo, { color: TMColors.
|
74
|
+
return (_jsxs(StyledRecentTidItem, { id: `tid-${dtd.id}`, "$isMobile": isMobile, onClick: () => { onSelectedTID?.(dtd.id ?? 0); }, children: [_jsx("span", { className: "info-icon", children: _jsx(TMDcmtTypeTooltip, { dtd: dtd, children: _jsx(IconInfo, { color: TMColors.info }) }) }), _jsx("div", { style: { display: 'flex', justifyContent: 'center', width: '100%' }, children: _jsx(TMTidViewer, { tid: dtd.id, color: TMColors.primaryColor, showIcon: false }) }), _jsx(ContextMenu, { dataSource: [
|
75
|
+
{
|
76
|
+
text: SDKUI_Localizator.Remove,
|
77
|
+
icon: iconDelete(),
|
78
|
+
onClick: () => { onDeletedTID?.(dtd.id ?? 0); }
|
79
|
+
},
|
80
|
+
...(isMobile ? [
|
81
|
+
{
|
82
|
+
text: SDKUI_Localizator.About,
|
83
|
+
icon: ReactDOMServer.renderToString(_jsx(IconInfo, { color: TMColors.info })),
|
84
|
+
onClick: () => { setInfoDTD(dtd); }
|
85
|
+
}
|
86
|
+
] : [])
|
87
|
+
], target: `#tid-${dtd.id}` }), currentMruTID == dtd.id &&
|
64
88
|
_jsx("div", { style: {
|
65
89
|
width: '24px',
|
66
90
|
height: '24px',
|
@@ -74,6 +98,6 @@ const TMRecentsManager = ({ deviceType, mruTIDs, currentMruTID, onSelectedTID, o
|
|
74
98
|
fontSize: '1rem',
|
75
99
|
fontWeight: 'bold'
|
76
100
|
}, children: _jsx(IconApply, { fontSize: 24, color: 'green' }) })] }, dtd.id));
|
77
|
-
})] }), showDcmtTypeChooser && _jsx(TMDcmtTypeChooserForm, { onClose: () => setShowDcmtTypeChooser(false), onChoose: (tids) => { onSelectedTID?.(tids?.[0] ?? 0); } })] }));
|
101
|
+
})] }), showDcmtTypeChooser && _jsx(TMDcmtTypeChooserForm, { onClose: () => setShowDcmtTypeChooser(false), onChoose: (tids) => { onSelectedTID?.(tids?.[0] ?? 0); } }), _jsxs(StyledOffCanvasPanel, { ref: panelRef, "$isOpen": isMobile && infoDTD !== undefined, children: [_jsxs(StyledDivHorizontal, { style: { gap: 10, padding: '10px 8px', width: '100%', alignItems: 'center' }, children: [_jsx("p", { style: { fontSize: '1.1rem', fontWeight: 'bold' }, children: `${SDKUI_Localizator.DcmtType} - ${SDKUI_Localizator.About}` }), _jsx(IconCloseOutline, { style: { marginLeft: 'auto', cursor: 'pointer' }, onClick: () => setInfoDTD(undefined) })] }), renderDTDTooltipContent(infoDTD)] })] }));
|
78
102
|
};
|
79
103
|
export default TMRecentsManager;
|
@@ -0,0 +1,39 @@
|
|
1
|
+
import React, { ReactNode } from 'react';
|
2
|
+
type TMPanelManagerNewProps = {
|
3
|
+
children: ReactNode;
|
4
|
+
showToolbar?: boolean;
|
5
|
+
emptyContent?: ReactNode;
|
6
|
+
};
|
7
|
+
type TMPanelGroupProps = {
|
8
|
+
orientation?: 'horizontal' | 'vertical';
|
9
|
+
allowItemResize?: boolean;
|
10
|
+
gutters?: number;
|
11
|
+
panelVisibility?: boolean[];
|
12
|
+
onTogglePanel?: (idx: number) => void;
|
13
|
+
panelLabels?: string[];
|
14
|
+
children: ReactNode;
|
15
|
+
parentVisibility?: boolean;
|
16
|
+
parentPanelCount?: number;
|
17
|
+
parentPanelVisibility?: boolean[];
|
18
|
+
parentOnTogglePanel?: (idx: number, path: number[]) => void;
|
19
|
+
path?: number[];
|
20
|
+
};
|
21
|
+
type TMPanelItemProps = {
|
22
|
+
width?: string;
|
23
|
+
height?: string;
|
24
|
+
minWidth?: string;
|
25
|
+
minHeight?: string;
|
26
|
+
children: ReactNode;
|
27
|
+
style?: React.CSSProperties;
|
28
|
+
label?: string;
|
29
|
+
};
|
30
|
+
export declare const TMPanelItem: React.FC<TMPanelItemProps>;
|
31
|
+
export declare const TMPanelGroup: React.FC<TMPanelGroupProps>;
|
32
|
+
declare const TMPanelLayout: React.FC<TMPanelManagerNewProps>;
|
33
|
+
export default TMPanelLayout;
|
34
|
+
type TMPanelLayoutToolbarProps = {
|
35
|
+
panelLabels: string[];
|
36
|
+
panelVisibility: boolean[];
|
37
|
+
onTogglePanel: (idx: number) => void;
|
38
|
+
};
|
39
|
+
export declare const TMPanelLayoutToolbar: React.FC<TMPanelLayoutToolbarProps>;
|