@topconsultnpm/sdkui-react 6.22.0-dev4.2 → 6.22.0-dev4.20
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/NewComponents/ContextMenu/styles.d.ts +43 -45
- package/lib/components/NewComponents/FloatingMenuBar/styles.d.ts +60 -67
- package/lib/components/base/Styled.d.ts +77 -93
- package/lib/components/base/TMAlert.d.ts +2 -1
- package/lib/components/base/TMAlert.js +7 -6
- package/lib/components/base/TMCounterBar.d.ts +2 -2
- package/lib/components/base/TMCounterContainer.d.ts +4 -3
- package/lib/components/base/TMCounterContainer.js +16 -1
- package/lib/components/base/TMCustomButton.d.ts +1 -1
- package/lib/components/base/TMDataGrid.js +24 -4
- package/lib/components/base/TMDataGridExportForm.d.ts +1 -2
- package/lib/components/base/TMFileManager.d.ts +1 -2
- package/lib/components/base/TMFileManagerDataGridView.d.ts +1 -2
- package/lib/components/base/TMFileManagerThumbnailItems.d.ts +1 -1
- package/lib/components/base/TMFileManagerThumbnailsView.d.ts +1 -1
- package/lib/components/base/TMFileManagerUtils.d.ts +6 -4
- package/lib/components/base/TMLayout.d.ts +4 -4
- package/lib/components/base/TMList.d.ts +1 -2
- package/lib/components/base/TMListView.d.ts +1 -1
- package/lib/components/base/TMSpinner.d.ts +2 -3
- package/lib/components/base/TMTab.d.ts +3 -4
- package/lib/components/base/TMTabControl.js +208 -208
- package/lib/components/base/TMTooltip.d.ts +1 -1
- package/lib/components/base/TMTreeView.d.ts +8 -14
- package/lib/components/base/TMUserAvatar.d.ts +1 -2
- package/lib/components/base/TMVilViewer.d.ts +1 -2
- package/lib/components/base/TMWaitPanel.d.ts +2 -3
- package/lib/components/base/waitPanel/TMWaitPanelManager.d.ts +16 -6
- package/lib/components/base/waitPanel/TMWaitPanelManager.js +55 -2
- package/lib/components/base/waitPanel/TMWaitPanelView.d.ts +6 -2
- package/lib/components/base/waitPanel/TMWaitPanelView.js +75 -3
- package/lib/components/choosers/TMDistinctValues.js +3 -3
- package/lib/components/choosers/TMDynDataListItemChooser.d.ts +1 -1
- package/lib/components/choosers/TMInvoiceRetrieveFormats.d.ts +1 -2
- package/lib/components/choosers/TMOrderRetrieveFormats.d.ts +1 -2
- package/lib/components/choosers/TMQuickSearchInfo.d.ts +1 -2
- package/lib/components/choosers/TMRelationChooser.d.ts +3 -3
- package/lib/components/choosers/TMUserChooser.d.ts +3 -2
- package/lib/components/choosers/TMUserChooser.js +3 -3
- package/lib/components/editors/TMEditorStyled.d.ts +42 -20
- package/lib/components/editors/TMFormulaEditor.d.ts +1 -1
- package/lib/components/editors/TMHtmlContentDisplay.d.ts +1 -2
- package/lib/components/editors/TMHtmlEditor.d.ts +1 -2
- package/lib/components/editors/TMTreeDropDown.d.ts +1 -1
- package/lib/components/features/assistant/TMHelpOnLineChat.d.ts +0 -1
- package/lib/components/features/assistant/TMHelpOnLineChat.js +8 -161
- package/lib/components/features/assistant/TMToppyDraggableHelpCenter.d.ts +1 -1
- package/lib/components/features/blog/TMBlogCommentForm.d.ts +1 -2
- package/lib/components/features/documents/TMDcmtForm.d.ts +6 -1
- package/lib/components/features/documents/TMDcmtForm.js +42 -7
- package/lib/components/features/documents/TMDcmtFormActionButtons.d.ts +1 -1
- package/lib/components/features/documents/TMDcmtFormActionButtons.js +5 -2
- package/lib/components/features/documents/TMDcmtIcon.d.ts +1 -2
- package/lib/components/features/documents/TMDcmtPreview.d.ts +8 -8
- package/lib/components/features/documents/TMDcmtPreview.js +16 -7
- package/lib/components/features/documents/TMDcmtTasks.d.ts +1 -2
- package/lib/components/features/documents/TMDragDropOverlay.d.ts +1 -1
- package/lib/components/features/documents/TMFileUploader.js +21 -21
- package/lib/components/features/documents/TMMasterDetailDcmts.d.ts +2 -0
- package/lib/components/features/documents/TMMasterDetailDcmts.js +14 -5
- package/lib/components/features/documents/TMMasterInfoFields.d.ts +1 -2
- package/lib/components/features/documents/TMMergeToPdfForm.d.ts +1 -2
- package/lib/components/features/documents/TMMergeToPdfForm.js +5 -4
- package/lib/components/features/documents/TMMultiMasterDetailDcmtsForm.d.ts +1 -2
- package/lib/components/features/documents/TMMultiMasterDetailDcmtsUtils.d.ts +4 -4
- package/lib/components/features/search/TMDcmtCheckoutInfoForm.d.ts +1 -2
- package/lib/components/features/search/TMMetadataOutputForm.d.ts +1 -2
- package/lib/components/features/search/TMMetadataSorterForm.d.ts +1 -2
- package/lib/components/features/search/TMSavedQuerySelector.d.ts +2 -2
- package/lib/components/features/search/TMSearch.d.ts +1 -2
- package/lib/components/features/search/TMSearchQueryPanel.d.ts +3 -9
- package/lib/components/features/search/TMSearchResult.js +121 -91
- package/lib/components/features/search/TMSearchResultFloatingActionButton.d.ts +1 -1
- package/lib/components/features/search/TMSignatureInfoContent.d.ts +1 -2
- package/lib/components/features/search/TMViewHistoryDcmt.d.ts +1 -2
- package/lib/components/features/search/TMViewHistoryDcmt.js +1 -1
- package/lib/components/features/tasks/TMTaskForm.d.ts +1 -1
- package/lib/components/features/tasks/TMTaskFormUtils.d.ts +10 -10
- package/lib/components/features/tasks/TMTasksAgenda.d.ts +1 -1
- package/lib/components/features/tasks/TMTasksCalendar.d.ts +1 -1
- package/lib/components/features/tasks/TMTasksHeader.d.ts +1 -1
- package/lib/components/features/tasks/TMTasksPanelContent.d.ts +1 -1
- package/lib/components/features/tasks/TMTasksUtilsView.d.ts +5 -5
- package/lib/components/features/tasks/TMTasksView.d.ts +1 -1
- package/lib/components/features/tasks/TMTasksView.js +15 -9
- package/lib/components/features/wg/TMWGsCopyMoveForm.d.ts +2 -3
- package/lib/components/features/wg/TMWGsCopyMoveForm.js +8 -4
- package/lib/components/features/workflow/TMWorkflowPopup.d.ts +7 -8
- package/lib/components/features/workflow/TMWorkflowPopup.js +1 -1
- package/lib/components/features/workflow/diagram/WorkitemRecipientsEditor.d.ts +1 -3
- package/lib/components/forms/Login/ChangePasswordInputs.d.ts +1 -3
- package/lib/components/forms/Login/Chooser.d.ts +2 -2
- package/lib/components/forms/TMChooserForm.d.ts +1 -2
- package/lib/components/forms/TMSaveForm.d.ts +4 -4
- package/lib/components/grids/TMBlogAttachments.d.ts +1 -2
- package/lib/components/grids/TMBlogHeader.d.ts +1 -1
- package/lib/components/grids/TMBlogsPost.d.ts +1 -1
- package/lib/components/grids/TMBlogsPost.js +1 -1
- package/lib/components/grids/TMBlogsPostUtils.d.ts +9 -9
- package/lib/components/grids/TMValidationItemsList.d.ts +1 -2
- package/lib/components/layout/panelManager/TMPanelManagerContainer.d.ts +1 -2
- package/lib/components/layout/panelManager/TMPanelManagerContainer.js +12 -12
- package/lib/components/layout/panelManager/TMPanelManagerContext.d.ts +2 -2
- package/lib/components/layout/panelManager/TMPanelManagerLoader.d.ts +1 -2
- package/lib/components/layout/panelManager/TMPanelManagerToolbar.d.ts +6 -5
- package/lib/components/layout/panelManager/TMPanelManagerWithPersistenceProvider.d.ts +2 -2
- package/lib/components/layout/panelManager/TMPanelWrapper.d.ts +2 -2
- package/lib/components/pages/TMPage.d.ts +1 -1
- package/lib/components/pages/TMPage.js +13 -5
- package/lib/components/query/TMQueryEditor.d.ts +10 -14
- package/lib/components/settings/SettingsAppearance.d.ts +1 -2
- package/lib/components/sidebar/TMAboutApp.d.ts +1 -2
- package/lib/components/sidebar/TMCommandsPanel.d.ts +4 -4
- package/lib/components/sidebar/TMHeader.d.ts +3 -3
- package/lib/components/viewers/TMDataListItemViewer.d.ts +2 -3
- package/lib/components/viewers/TMDataUserIdItemViewer.d.ts +2 -3
- package/lib/components/viewers/TMMidViewer.d.ts +2 -2
- package/lib/components/viewers/TMTidViewer.d.ts +2 -2
- package/lib/helper/SDKUI_Globals.d.ts +7 -4
- package/lib/helper/SDKUI_Globals.js +7 -4
- package/lib/helper/SDKUI_Localizator.d.ts +13 -6
- package/lib/helper/SDKUI_Localizator.js +121 -51
- package/lib/helper/TMAppUpdatedModal.d.ts +1 -2
- package/lib/helper/TMAppUpdatedModal.js +93 -93
- package/lib/helper/TMCommandsContextMenu.d.ts +1 -1
- package/lib/helper/TMIcons.d.ts +282 -281
- package/lib/helper/TMIcons.js +4 -1
- package/lib/helper/TMPdfViewer.d.ts +1 -2
- package/lib/helper/TMToppyMessage.d.ts +2 -2
- package/lib/helper/TMUtils.d.ts +4 -10
- package/lib/helper/checkinCheckoutManager.js +2 -3
- package/lib/helper/helpers.d.ts +1 -1
- package/lib/helper/queryHelper.d.ts +15 -2
- package/lib/helper/queryHelper.js +52 -1
- package/lib/hooks/useCaseFlowApprove.js +31 -6
- package/lib/hooks/useCheckInOutOperations.js +2 -3
- package/lib/hooks/useDcmtOperations.js +24 -16
- package/lib/hooks/useDocumentOperations.d.ts +2 -0
- package/lib/hooks/useDocumentOperations.js +7 -7
- package/lib/hooks/useInputDialog.d.ts +1 -2
- package/lib/hooks/useMultiMasterDetailDcmts.js +10 -6
- package/lib/services/caseflow/CaseFlowService.d.ts +33 -3
- package/lib/services/caseflow/CaseFlowService.js +71 -44
- package/lib/services/caseflow/caseFlowNameCache.d.ts +5 -0
- package/lib/services/caseflow/caseFlowNameCache.js +19 -0
- package/lib/services/platform_services.d.ts +2 -3
- package/package.json +69 -69
- package/lib/components/features/assistant/dataset/Designer-Suggested-Questions.json +0 -102
- package/lib/components/features/assistant/dataset/Login-Suggested-Questions.json +0 -32
- package/lib/components/features/assistant/dataset/Surfer-Suggested-Questions.json +0 -102
|
@@ -4,6 +4,7 @@ import { RelationTreeItem } from './TMRelationViewer';
|
|
|
4
4
|
import { IntesiCertificateData } from '../../../helper';
|
|
5
5
|
import { DcmtInfo, TaskContext, MetadataValueDescriptorEx } from '../../../ts';
|
|
6
6
|
import { DeviceContextProps } from '../../base/TMDeviceProvider';
|
|
7
|
+
import { TMSearchResultFloatingActionConfig } from '../search/TMSearchResultFloatingActionButton';
|
|
7
8
|
export type IRelatedDcmt = RelationTreeItem;
|
|
8
9
|
interface ITMMasterDetailDcmtsProps extends DeviceContextProps {
|
|
9
10
|
allTasks?: Array<TaskDescriptor>;
|
|
@@ -32,6 +33,7 @@ interface ITMMasterDetailDcmtsProps extends DeviceContextProps {
|
|
|
32
33
|
onOpenS4TViewerRequest?: (dcmtInfo: Array<DcmtInfo>, refreshDocumentPreview?: (() => Promise<void>)) => void;
|
|
33
34
|
onOpenPdfEditorRequest?: ((dcmtInfo: Array<DcmtInfo>, refreshDocumentPreview?: () => Promise<void>) => void);
|
|
34
35
|
fetchRemoteCertificates?: (email: string) => Promise<IntesiCertificateData[]>;
|
|
36
|
+
floatingActionConfig?: TMSearchResultFloatingActionConfig;
|
|
35
37
|
datagridUtility?: {
|
|
36
38
|
onRefreshSearchAsyncDatagrid?: () => Promise<void>;
|
|
37
39
|
onRefreshDataRowsAsync?: (() => Promise<void>);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
3
|
-
import { DcmtTypeListCacheService, LayoutModes, ObjectClasses, SDK_Globals, SDK_Localizator } from '@topconsultnpm/sdk-ts';
|
|
3
|
+
import { AppModules, 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, SDKUI_Globals } from '../../../helper';
|
|
@@ -12,6 +12,7 @@ import { TMSaveFormButtonPrevious, TMSaveFormButtonNext } from '../../forms/TMSa
|
|
|
12
12
|
import TMPanelManagerContainer from '../../layout/panelManager/TMPanelManagerContainer';
|
|
13
13
|
import { TMPanelManagerProvider, useTMPanelManagerContext } from '../../layout/panelManager/TMPanelManagerContext';
|
|
14
14
|
import TMSearchResult from '../search/TMSearchResult';
|
|
15
|
+
import TMSearchResultFloatingActionButton from '../search/TMSearchResultFloatingActionButton';
|
|
15
16
|
import TMDcmtForm from './TMDcmtForm';
|
|
16
17
|
import { TMNothingToShow } from './TMDcmtPreview';
|
|
17
18
|
import { TMButton } from '../..';
|
|
@@ -20,12 +21,13 @@ import { useDocumentOperations } from '../../../hooks/useDocumentOperations';
|
|
|
20
21
|
import TMToppyMessage from '../../../helper/TMToppyMessage';
|
|
21
22
|
import TMPanel from '../../base/TMPanel';
|
|
22
23
|
import TMSpinner from '../../base/TMSpinner';
|
|
23
|
-
const TMMasterDetailDcmts = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTaskCallback, editTaskCallback, handleNavigateToWGs, handleNavigateToDossiers, deviceType, inputDcmts, isForMaster, showCurrentDcmtIndicator = true, allowNavigation, canNext, canPrev, onNext, onPrev, onBack, onFirstLoadCompleted, appendMasterDcmts, onTaskCreateRequest, onRefreshAfterAddDcmtToFavs, editPdfForm, openS4TViewer, onOpenS4TViewerRequest, onOpenPdfEditorRequest, datagridUtility, dcmtUtility, fetchRemoteCertificates }) => {
|
|
24
|
+
const TMMasterDetailDcmts = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTaskCallback, editTaskCallback, handleNavigateToWGs, handleNavigateToDossiers, deviceType, inputDcmts, isForMaster, showCurrentDcmtIndicator = true, allowNavigation, canNext, canPrev, onNext, onPrev, onBack, onFirstLoadCompleted, appendMasterDcmts, onTaskCreateRequest, onRefreshAfterAddDcmtToFavs, editPdfForm, openS4TViewer, onOpenS4TViewerRequest, onOpenPdfEditorRequest, datagridUtility, dcmtUtility, fetchRemoteCertificates, floatingActionConfig }) => {
|
|
24
25
|
const floatingBarContainerRef = useRef(null);
|
|
26
|
+
const attachActionConfig = SDK_Globals.tmSession?.SessionDescr?.appModuleID === AppModules.OUTLOOK_CONNECTOR && floatingActionConfig?.isVisible ? floatingActionConfig : undefined;
|
|
25
27
|
const [focusedItem, setFocusedItem] = useState();
|
|
26
28
|
const [selectedItems, setSelectedItems] = useState([]);
|
|
27
29
|
const [showZeroDcmts, setShowZeroDcmts] = useState(() => SDKUI_Globals.userSettings?.searchSettings?.relationShowZeroDcmts ?? false);
|
|
28
|
-
const [allowMultipleSelection, setAllowMultipleSelection] = useState(
|
|
30
|
+
const [allowMultipleSelection, setAllowMultipleSelection] = useState(attachActionConfig !== undefined);
|
|
29
31
|
const [dtdMaster, setDtdMaster] = useState();
|
|
30
32
|
const [noRelationsOnFirstLoad, setNoRelationsOnFirstLoad] = useState(false);
|
|
31
33
|
const [isCheckingFirstLoad, setIsCheckingFirstLoad] = useState(true);
|
|
@@ -274,6 +276,7 @@ const TMMasterDetailDcmts = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallba
|
|
|
274
276
|
enablePinIcons: false,
|
|
275
277
|
allowRelations: true,
|
|
276
278
|
inputDcmtFormLayoutMode: LayoutModes.Update,
|
|
279
|
+
floatingActionConfig,
|
|
277
280
|
},
|
|
278
281
|
tasks: {
|
|
279
282
|
allTasks: allTasks,
|
|
@@ -338,6 +341,12 @@ const TMMasterDetailDcmts = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallba
|
|
|
338
341
|
const handleSelectedItemsChanged = useCallback((items) => {
|
|
339
342
|
setSelectedItems(items);
|
|
340
343
|
}, []);
|
|
344
|
+
const attachDcmts = useMemo(() => {
|
|
345
|
+
const isAttachable = (item) => !!item?.isDcmt && item.tid !== undefined && item.did !== undefined;
|
|
346
|
+
const checkedDcmts = selectedItems.filter(isAttachable);
|
|
347
|
+
const dcmts = checkedDcmts.length > 0 ? checkedDcmts : (isAttachable(focusedItem) ? [focusedItem] : []);
|
|
348
|
+
return dcmts.map(item => ({ TID: item.tid, DID: item.did, FILEEXT: item.fileExt }));
|
|
349
|
+
}, [selectedItems, focusedItem]);
|
|
341
350
|
const handleNoRelationsFound = useCallback(() => {
|
|
342
351
|
if (isCheckingFirstLoad) {
|
|
343
352
|
setNoRelationsOnFirstLoad(true);
|
|
@@ -398,7 +407,7 @@ const TMMasterDetailDcmts = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallba
|
|
|
398
407
|
?
|
|
399
408
|
_jsx(TMNothingToShow, { text: getTitle(), secondText: SDKUI_Localizator.NoDataToDisplay, icon: isForMaster ? _jsx(IconDetailDcmts, { fontSize: 96, transform: 'scale(-1, 1)' }) : _jsx(IconDetailDcmts, { fontSize: 96 }) })
|
|
400
409
|
:
|
|
401
|
-
_jsxs("div", { ref: floatingBarContainerRef, style: { width: "100%", height: "100%" }, onContextMenu: (e) => {
|
|
410
|
+
_jsxs("div", { ref: floatingBarContainerRef, style: { width: "100%", height: "100%", ...(attachActionConfig ? { position: 'relative' } : {}) }, onContextMenu: (e) => {
|
|
402
411
|
// Disable context menu when loading
|
|
403
412
|
if (isRelationViewerLoading) {
|
|
404
413
|
e.preventDefault();
|
|
@@ -414,7 +423,7 @@ const TMMasterDetailDcmts = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallba
|
|
|
414
423
|
visible: contextMenuVisible,
|
|
415
424
|
position: contextMenuPosition,
|
|
416
425
|
onClose: () => setContextMenuVisible(false)
|
|
417
|
-
} })] }) }), [inputDcmts, isForMaster, showCurrentDcmtIndicator, showZeroDcmts, allowMultipleSelection, focusedItem, selectedItems, handleFocusedItemChanged, handleSelectedItemsChanged, handleNoRelationsFound, onItemContextMenu, contextMenuVisible, contextMenuPosition, refreshKey, focusedItemFormData, isRelationViewerLoading, handleStopCalculationReady, handleRelationsCalculationStopped, handleTreeStateChange]);
|
|
426
|
+
} }), attachActionConfig && _jsx(TMSearchResultFloatingActionButton, { selectedDcmtsOrFocused: attachDcmts, config: attachActionConfig })] }) }), [inputDcmts, isForMaster, showCurrentDcmtIndicator, showZeroDcmts, allowMultipleSelection, focusedItem, selectedItems, handleFocusedItemChanged, handleSelectedItemsChanged, handleNoRelationsFound, onItemContextMenu, contextMenuVisible, contextMenuPosition, refreshKey, focusedItemFormData, isRelationViewerLoading, handleStopCalculationReady, handleRelationsCalculationStopped, handleTreeStateChange, attachActionConfig, attachDcmts]);
|
|
418
427
|
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 }), [focusedItem, deviceType, allTasks, handleNavigateToWGs, handleNavigateToDossiers, handleNavigateToReference, editPdfForm, openS4TViewer, onOpenS4TViewerRequest, onOpenPdfEditorRequest, onRefreshAfterAddDcmtToFavs, refreshKeyFormOrResult]);
|
|
419
428
|
const initialPanelDimensions = {
|
|
420
429
|
'tmTreeView': { width: '50%', height: '100%' },
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
1
|
import { DcmtTypeDescriptor } from '@topconsultnpm/sdk-ts';
|
|
3
2
|
import { DcmtInfo } from '../../../ts';
|
|
4
3
|
interface TMMasterInfoFieldsProps {
|
|
@@ -16,5 +15,5 @@ interface TMMasterInfoFieldsProps {
|
|
|
16
15
|
*/
|
|
17
16
|
isExpandedView?: boolean;
|
|
18
17
|
}
|
|
19
|
-
declare const TMMasterInfoFields: ({ dtd, dcmt, getValuesByMidAsync, reloadToken, isExpandedView }: TMMasterInfoFieldsProps) =>
|
|
18
|
+
declare const TMMasterInfoFields: ({ dtd, dcmt, getValuesByMidAsync, reloadToken, isExpandedView }: TMMasterInfoFieldsProps) => import("react/jsx-runtime").JSX.Element;
|
|
20
19
|
export default TMMasterInfoFields;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
1
|
import { DcmtInfo } from '../../../ts';
|
|
3
2
|
import { HomeBlogPost, TaskDescriptor } from '@topconsultnpm/sdk-ts';
|
|
4
3
|
import { TMCopyToFolderMode } from '../../../hooks/useDocumentOperations';
|
|
@@ -20,5 +19,5 @@ interface ITMMergeToPdfFormProps {
|
|
|
20
19
|
* Form per l'unione di più documenti PDF in un singolo file.
|
|
21
20
|
* Condivide TMDownloadRelationViewerSection e gli helper in copyAndMergeDcmtsShared con TMCopyToFolderForm.
|
|
22
21
|
*/
|
|
23
|
-
declare const TMMergeToPdfForm: (props: ITMMergeToPdfFormProps) =>
|
|
22
|
+
declare const TMMergeToPdfForm: (props: ITMMergeToPdfFormProps) => import("react/jsx-runtime").JSX.Element;
|
|
24
23
|
export default TMMergeToPdfForm;
|
|
@@ -169,14 +169,15 @@ const TMMergeToPdfForm = (props) => {
|
|
|
169
169
|
}
|
|
170
170
|
else {
|
|
171
171
|
// createMetadataPdfFromDocument ha restituito null (errore interno loggato)
|
|
172
|
-
metadataConversionResults.push({ rowIndex: i, id1: dcmt.TID, id2: dcmt.DID, resultType: ResultTypes.ERROR, description:
|
|
173
|
-
metadataPanel.error();
|
|
172
|
+
metadataConversionResults.push({ rowIndex: i, id1: dcmt.TID, id2: dcmt.DID, resultType: ResultTypes.ERROR, description: SDKUI_Localizator.MetadataPdfCreationFailed });
|
|
173
|
+
metadataPanel.error(1, `DID ${dcmt.DID}: ${SDKUI_Localizator.MetadataPdfCreationFailed}`);
|
|
174
174
|
}
|
|
175
175
|
}
|
|
176
176
|
catch (error) {
|
|
177
177
|
console.error(`Errore creazione PDF metadati per TID=${dcmt.TID}, DID=${dcmt.DID}`, error);
|
|
178
|
-
|
|
179
|
-
|
|
178
|
+
const description = getExceptionMessage(error);
|
|
179
|
+
metadataConversionResults.push({ rowIndex: i, id1: dcmt.TID, id2: dcmt.DID, resultType: ResultTypes.ERROR, description });
|
|
180
|
+
metadataPanel.error(1, `DID ${dcmt.DID}: ${description}`);
|
|
180
181
|
}
|
|
181
182
|
// Avanza a conversione conclusa: con un solo documento la barra non parte dal 100%
|
|
182
183
|
await metadataPanel.step();
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import React from "react";
|
|
2
1
|
import { DcmtTypeDescriptor, HomeBlogPost, ObjectRef, TaskDescriptor } from "@topconsultnpm/sdk-ts";
|
|
3
2
|
import { DcmtInfo, IGraphometricManagerProp, TaskContext } from "../../../ts";
|
|
4
3
|
import { IntesiCertificateData } from "../../../helper";
|
|
@@ -42,5 +41,5 @@ interface TMMultiMasterDetailDcmtsFormProps {
|
|
|
42
41
|
}>, tid?: number) => void;
|
|
43
42
|
openWGsCopyMoveForm?: (mode: "copyToWgDraft" | "copyToWgArchivedDoc", dcmtTypeDescriptor: DcmtTypeDescriptor, documents: Array<DcmtInfo>) => void;
|
|
44
43
|
}
|
|
45
|
-
declare const TMMultiMasterDetailDcmtsForm: (props: TMMultiMasterDetailDcmtsFormProps) =>
|
|
44
|
+
declare const TMMultiMasterDetailDcmtsForm: (props: TMMultiMasterDetailDcmtsFormProps) => import("react/jsx-runtime").JSX.Element | null;
|
|
46
45
|
export default TMMultiMasterDetailDcmtsForm;
|
|
@@ -312,7 +312,7 @@ export interface RenderStepperParams {
|
|
|
312
312
|
/** Click su uno step completato: riceve la fase di destinazione */
|
|
313
313
|
onStepClick: (phase: number) => void;
|
|
314
314
|
}
|
|
315
|
-
export declare const renderStepper: ({ steps, phase, hasMultipleTypes, isBackLocked, showBackArrow, onBack, onStepClick }: RenderStepperParams) =>
|
|
315
|
+
export declare const renderStepper: ({ steps, phase, hasMultipleTypes, isBackLocked, showBackArrow, onBack, onStepClick }: RenderStepperParams) => import("react/jsx-runtime").JSX.Element;
|
|
316
316
|
export interface RenderSelectDcmtTypeParams {
|
|
317
317
|
/** Relazioni di dettaglio fra cui scegliere */
|
|
318
318
|
detailRelationItems: Array<DetailRelationItem>;
|
|
@@ -321,7 +321,7 @@ export interface RenderSelectDcmtTypeParams {
|
|
|
321
321
|
/** Selezione di una relazione */
|
|
322
322
|
onSelectRelation: (item: DetailRelationItem) => void;
|
|
323
323
|
}
|
|
324
|
-
export declare const renderSelectDcmtType: ({ detailRelationItems, selectedRelation, onSelectRelation }: RenderSelectDcmtTypeParams) =>
|
|
324
|
+
export declare const renderSelectDcmtType: ({ detailRelationItems, selectedRelation, onSelectRelation }: RenderSelectDcmtTypeParams) => import("react/jsx-runtime").JSX.Element;
|
|
325
325
|
export interface RenderAccordionHeaderParams {
|
|
326
326
|
/** Sezione a cui appartiene la testata */
|
|
327
327
|
section: AccordionSection;
|
|
@@ -340,7 +340,7 @@ export interface RenderAccordionHeaderParams {
|
|
|
340
340
|
/** Apre/chiude la sezione */
|
|
341
341
|
onToggleOpen: (section: AccordionSection, isOpen: boolean) => void;
|
|
342
342
|
}
|
|
343
|
-
export declare const renderAccordionHeader: ({ section, isOpen, tooltip, count, title, actions, panel, onToggleOpen }: RenderAccordionHeaderParams) =>
|
|
343
|
+
export declare const renderAccordionHeader: ({ section, isOpen, tooltip, count, title, actions, panel, onToggleOpen }: RenderAccordionHeaderParams) => import("react/jsx-runtime").JSX.Element;
|
|
344
344
|
/**
|
|
345
345
|
* Contenuto di un pannello: il contesto del panel manager è leggibile solo dentro l'albero del
|
|
346
346
|
* provider, quindi è qui che si prende lo stato di ingrandimento da passare alla sezione
|
|
@@ -349,7 +349,7 @@ export declare const TMSummarySectionSlot: ({ section, render, onBeforeMaximize
|
|
|
349
349
|
section: AccordionSection;
|
|
350
350
|
render: (panel: SectionPanelState) => React.ReactNode;
|
|
351
351
|
onBeforeMaximize?: (section: AccordionSection) => void;
|
|
352
|
-
}) =>
|
|
352
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
353
353
|
/**
|
|
354
354
|
* Segnala che l'utente ha spostato un separatore: è l'unico caso in cui le altezze dei pannelli sono
|
|
355
355
|
* una sua scelta, quindi la sola da salvare. Le quote calcolate all'apertura del riepilogo o al
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import React from "react";
|
|
2
1
|
import { DcmtInfo } from "../../../ts";
|
|
3
2
|
interface TMDcmtCheckoutInfoFormProps {
|
|
4
3
|
dtdName: string;
|
|
5
4
|
selectedDcmtOrFocused: DcmtInfo;
|
|
6
5
|
onClose: () => void;
|
|
7
6
|
}
|
|
8
|
-
declare const TMDcmtCheckoutInfoForm: (props: TMDcmtCheckoutInfoFormProps) =>
|
|
7
|
+
declare const TMDcmtCheckoutInfoForm: (props: TMDcmtCheckoutInfoFormProps) => import("react/jsx-runtime").JSX.Element;
|
|
9
8
|
export default TMDcmtCheckoutInfoForm;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import React from "react";
|
|
2
1
|
import { MetadataDescriptor, QueryDescriptor, SelectItem } from "@topconsultnpm/sdk-ts";
|
|
3
2
|
interface TMMetadataOutputFormProps {
|
|
4
3
|
/** QueryDescriptor da cui estrarre i metadati disponibili */
|
|
@@ -14,5 +13,5 @@ interface TMMetadataOutputFormProps {
|
|
|
14
13
|
/** Callback chiamata quando l'utente conferma la selezione dei SelectItem */
|
|
15
14
|
onChoose?: (selectItems: SelectItem[] | undefined) => void;
|
|
16
15
|
}
|
|
17
|
-
declare const TMMetadataOutputForm: (props: TMMetadataOutputFormProps) =>
|
|
16
|
+
declare const TMMetadataOutputForm: (props: TMMetadataOutputFormProps) => import("react/jsx-runtime").JSX.Element;
|
|
18
17
|
export default TMMetadataOutputForm;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import React from "react";
|
|
2
1
|
import { MetadataDescriptor, OrderByItem, QueryDescriptor } from "@topconsultnpm/sdk-ts";
|
|
3
2
|
interface TMMetadataSorterFormProps {
|
|
4
3
|
/** QueryDescriptor da cui estrarre i metadati disponibili */
|
|
@@ -14,5 +13,5 @@ interface TMMetadataSorterFormProps {
|
|
|
14
13
|
/** Callback chiamata quando l'utente conferma la selezione degli OrderByItem */
|
|
15
14
|
onChoose?: (orderByItems: OrderByItem[] | undefined) => void;
|
|
16
15
|
}
|
|
17
|
-
declare const TMMetadataSorterForm: (props: TMMetadataSorterFormProps) =>
|
|
16
|
+
declare const TMMetadataSorterForm: (props: TMMetadataSorterFormProps) => import("react/jsx-runtime").JSX.Element;
|
|
18
17
|
export default TMMetadataSorterForm;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { SavedQueryDescriptor } from '@topconsultnpm/sdk-ts';
|
|
3
|
-
export declare const getTooltipBySqd: (sqd: SavedQueryDescriptor | undefined) =>
|
|
3
|
+
export declare const getTooltipBySqd: (sqd: SavedQueryDescriptor | undefined) => import("react/jsx-runtime").JSX.Element | null;
|
|
4
4
|
interface ITMSavedQuerySelectorProps {
|
|
5
5
|
height?: string;
|
|
6
6
|
items?: SavedQueryDescriptor[];
|
|
@@ -12,5 +12,5 @@ interface ITMSavedQuerySelectorProps {
|
|
|
12
12
|
refreshFavoriteSavedQueries?: (sqd: SavedQueryDescriptor) => void;
|
|
13
13
|
onRefreshData?: () => void;
|
|
14
14
|
}
|
|
15
|
-
declare const TMSavedQuerySelector: React.MemoExoticComponent<({ items, selectedId, allowShowSearch, height, manageDefault, onItemClick, onDeleted, refreshFavoriteSavedQueries, onRefreshData }: ITMSavedQuerySelectorProps) =>
|
|
15
|
+
declare const TMSavedQuerySelector: React.MemoExoticComponent<({ items, selectedId, allowShowSearch, height, manageDefault, onItemClick, onDeleted, refreshFavoriteSavedQueries, onRefreshData }: ITMSavedQuerySelectorProps) => import("react/jsx-runtime").JSX.Element>;
|
|
16
16
|
export default TMSavedQuerySelector;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
1
|
import { SavedQueryDescriptor, DcmtTypeDescriptor, TaskDescriptor, ObjectRef, HomeBlogPost } from '@topconsultnpm/sdk-ts';
|
|
3
2
|
import { IntesiCertificateData } from '../../../helper';
|
|
4
3
|
import { DcmtInfo, IGraphometricManagerProp, TaskContext } from '../../../ts';
|
|
@@ -46,5 +45,5 @@ interface ITMSearchProps {
|
|
|
46
45
|
fetchRemoteCertificates?: (email: string) => Promise<IntesiCertificateData[]>;
|
|
47
46
|
graphometricManager?: IGraphometricManagerProp;
|
|
48
47
|
}
|
|
49
|
-
declare const TMSearch: (props: ITMSearchProps) =>
|
|
48
|
+
declare const TMSearch: (props: ITMSearchProps) => import("react/jsx-runtime").JSX.Element;
|
|
50
49
|
export default TMSearch;
|
|
@@ -29,12 +29,6 @@ interface ITMSearchQueryPanelProps {
|
|
|
29
29
|
declare const TMSearchQueryPanel: React.FunctionComponent<ITMSearchQueryPanelProps>;
|
|
30
30
|
export default TMSearchQueryPanel;
|
|
31
31
|
export declare const refreshLastSearch: (qd: QueryDescriptor | undefined) => Promise<SearchResultDescriptor[] | undefined>;
|
|
32
|
-
export declare const StyledToppyTextContainer: import("styled-components/dist/types").IStyledComponentBase<"web",
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
export declare const StyledToppyText: import("styled-components/dist/types").IStyledComponentBase<"web", Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLParagraphElement>, HTMLParagraphElement>, "style"> & {
|
|
36
|
-
style?: React.CSSProperties | import("styled-components/dist/types").CSSPropertiesWithVars | undefined;
|
|
37
|
-
}> & string;
|
|
38
|
-
export declare const StyledToppyImage: import("styled-components/dist/types").IStyledComponentBase<"web", Omit<React.DetailedHTMLProps<React.ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement>, "style"> & {
|
|
39
|
-
style?: React.CSSProperties | import("styled-components/dist/types").CSSPropertiesWithVars | undefined;
|
|
40
|
-
}> & string;
|
|
32
|
+
export declare const StyledToppyTextContainer: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never> & Partial<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>>> & string;
|
|
33
|
+
export declare const StyledToppyText: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLParagraphElement>, HTMLParagraphElement>, never> & Partial<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLParagraphElement>, HTMLParagraphElement>, never>>> & string;
|
|
34
|
+
export declare const StyledToppyImage: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<React.DetailedHTMLProps<React.ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement>, never> & Partial<Pick<React.DetailedHTMLProps<React.ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement>, never>>> & string;
|
|
@@ -3,8 +3,8 @@ import React, { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useSta
|
|
|
3
3
|
import styled from 'styled-components';
|
|
4
4
|
import { LoadIndicator } from 'devextreme-react';
|
|
5
5
|
import { AppModules, DataColumnTypes, DataListViewModes, DcmtTypeListCacheService, LayoutCacheService, LayoutModes, MetadataDataDomains, SDK_Globals, SystemMIDsAsNumber, UserListCacheService, } from '@topconsultnpm/sdk-ts';
|
|
6
|
-
import { customizeSearchByDisplayText, deepCompare, formatDateTimeByMetadataFormat, formatNumberByMetadataFormat, generateUniqueColumnKeys, genUniqueId, getColumnFormatInfo, getDateDisplayText, getNumberDisplayText, getSearchToolbarVisibility, IconAll, IconBoard, IconDcmtTypeSys, IconDelete, IconDuplicate, IconEdit, IconMenuVertical, IconPlatform, IconRefresh, IconSearchCheck, IconShow, isApprovalWorkflowView, isSign4TopEnabled, searchResultDescriptorToSimpleArray, searchResultToMetadataValues, SDKUI_Globals, SDKUI_Localizator, IconCloseOutline, getSearchResultPanelLayout, getSearchResultPanelLayoutSignature, hasSearchResultPanelLayout, saveSearchResultPanelLayout, subscribeSearchResultPanelLayout,
|
|
7
|
-
import { CounterItemKey } from '../../base/TMCounterContainer';
|
|
6
|
+
import { customizeSearchByDisplayText, deepCompare, formatDateTimeByMetadataFormat, formatNumberByMetadataFormat, generateUniqueColumnKeys, genUniqueId, getColumnFormatInfo, getDateDisplayText, getNumberDisplayText, getSearchToolbarVisibility, IconAll, IconBoard, IconDcmtTypeSys, IconDelete, IconDuplicate, IconEdit, IconMenuVertical, IconPlatform, IconRefresh, IconSearchCheck, IconShow, isApprovalWorkflowView, isSign4TopEnabled, searchResultDescriptorToSimpleArray, searchResultToMetadataValues, getTraceShowFileMids, getTraceShowFileNotUpdatedMessage, getDcmtMetadataValuesAsync, SDKUI_Globals, SDKUI_Localizator, IconCloseOutline, getSearchResultPanelLayout, getSearchResultPanelLayoutSignature, hasSearchResultPanelLayout, saveSearchResultPanelLayout, subscribeSearchResultPanelLayout, VIRTUAL_RENDERING_THRESHOLD, VIRTUAL_RENDERING_CELL_THRESHOLD } from '../../../helper';
|
|
7
|
+
import { CounterItemKey, formatCount } from '../../base/TMCounterContainer';
|
|
8
8
|
import { getDcmtCicoStatus } from '../../../helper/checkinCheckoutManager';
|
|
9
9
|
import { DcmtOperationTypes, SearchResultContext, } from '../../../ts';
|
|
10
10
|
import { Gutters, TMColors } from '../../../utils/theme';
|
|
@@ -285,6 +285,26 @@ handleNavigateToWGs, handleNavigateToDossiers, fetchRemoteCertificates, graphome
|
|
|
285
285
|
if (refreshUI)
|
|
286
286
|
setLastUpdateSearchTime(new Date(Date.now()));
|
|
287
287
|
};
|
|
288
|
+
// Ref alla versione corrente: l'anteprima è memoizzata e la funzione si ricrea a ogni render
|
|
289
|
+
const refreshFocusedDataRowRef = useRef(refreshFocusedDataRowAsync);
|
|
290
|
+
refreshFocusedDataRowRef.current = refreshFocusedDataRowAsync;
|
|
291
|
+
// Anteprima scaricata dal server con tracciatura "Mostra file": aggiorna solo la riga del documento
|
|
292
|
+
const onPreviewFileRetrieved = useCallback(async (tid, did) => {
|
|
293
|
+
const traceMids = getTraceShowFileMids(fromDTD);
|
|
294
|
+
if (!tid || !did || traceMids.length === 0)
|
|
295
|
+
return;
|
|
296
|
+
try {
|
|
297
|
+
const res = await getDcmtMetadataValuesAsync(tid, did, traceMids);
|
|
298
|
+
// Uscito dalla vista: la riga resta per non chiudere l'anteprima aperta
|
|
299
|
+
if (res === null)
|
|
300
|
+
ShowAlert({ mode: 'warning', title: SDKUI_Localizator.DcmtNoLongerAvailable, ...getTraceShowFileNotUpdatedMessage(fromDTD), duration: 6000 });
|
|
301
|
+
else if (res)
|
|
302
|
+
await refreshFocusedDataRowRef.current(tid, did, true, res);
|
|
303
|
+
}
|
|
304
|
+
catch (e) {
|
|
305
|
+
console.error('Errore aggiornamento metadati "Mostra file":', e);
|
|
306
|
+
}
|
|
307
|
+
}, [fromDTD]);
|
|
288
308
|
// Refreshes metadata for selected documents (or focused one) and triggers grid re-render
|
|
289
309
|
const onRefreshDataRowsAsync = async () => {
|
|
290
310
|
let dcmts = getSelectedDcmtsOrFocused(selectedItems, focusedItem);
|
|
@@ -370,6 +390,7 @@ handleNavigateToWGs, handleNavigateToDossiers, fetchRemoteCertificates, graphome
|
|
|
370
390
|
showTodoDcmtForm,
|
|
371
391
|
graphometricManager,
|
|
372
392
|
showSelector,
|
|
393
|
+
floatingActionConfig,
|
|
373
394
|
},
|
|
374
395
|
tasks: {
|
|
375
396
|
allTasks: allTasks,
|
|
@@ -829,7 +850,7 @@ handleNavigateToWGs, handleNavigateToDossiers, fetchRemoteCertificates, graphome
|
|
|
829
850
|
const isSearchResultOnScreen = isVisible && !isOpenDcmtForm && !isOpenDetails && !isOpenMaster;
|
|
830
851
|
const tmBlog = useMemo(() => _jsx(TMDcmtBlog, { tid: focusedItem?.TID, did: focusedItem?.DID, isPageVisible: isSearchResultOnScreen, fetchBlogDataTrigger: refreshBlogTrigger, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers }), [focusedItem, allTasks, refreshBlogTrigger, isSearchResultOnScreen, handleNavigateToWGs, handleNavigateToDossiers, onRefreshBlogDatagrid]);
|
|
831
852
|
const tmSysMetadata = useMemo(() => _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: [] }), [focusedItem, currentMetadataValues, deviceType]);
|
|
832
|
-
const tmDcmtPreview = useMemo(() => _jsx(TMDcmtPreviewWrapper, { refreshPreviewTrigger: refreshPreviewTrigger, currentDcmt: currentDcmt, isPageVisible: isSearchResultOnScreen, onBack: backHandlerSecondary }), [currentDcmt, refreshPreviewTrigger, isSearchResultOnScreen, backHandlerSecondary]);
|
|
853
|
+
const tmDcmtPreview = useMemo(() => _jsx(TMDcmtPreviewWrapper, { refreshPreviewTrigger: refreshPreviewTrigger, currentDcmt: currentDcmt, isPageVisible: isSearchResultOnScreen, onBack: backHandlerSecondary, onFileRetrieved: onPreviewFileRetrieved }), [currentDcmt, refreshPreviewTrigger, isSearchResultOnScreen, backHandlerSecondary, onPreviewFileRetrieved]);
|
|
833
854
|
// Auto-fetch indexing info when drawer is open and focusedItem changes
|
|
834
855
|
useEffect(() => {
|
|
835
856
|
if (!focusedItem || !showIndexingInfo)
|
|
@@ -1403,13 +1424,16 @@ const TMSearchResultGrid = ({ openInOffice, fromDTD, operationItems, allUsers, i
|
|
|
1403
1424
|
const gridSorting = useMemo(() => ({ mode: 'multiple' }), []);
|
|
1404
1425
|
const gridSelection = useMemo(() => ({ mode: allowMultipleSelection ? 'multiple' : 'single' }), [allowMultipleSelection]);
|
|
1405
1426
|
const useNativeScrollbar = SDKUI_Globals.userSettings?.themeSettings.gridSettings.useNativeScrollbar === 1;
|
|
1406
|
-
//
|
|
1407
|
-
const
|
|
1427
|
+
// Rendering virtuale delle righe oltre VIRTUAL_RENDERING_THRESHOLD righe o VIRTUAL_RENDERING_CELL_THRESHOLD celle (righe effettive × colonne)
|
|
1428
|
+
const pageRowCount = Math.min(pageSize, dataSource?.length ?? 0);
|
|
1429
|
+
// +1 per la colonna icona (FILEEXT) sempre presente
|
|
1430
|
+
const visibleColumnCount = columns.filter(col => col.visible !== false && col.dataField !== 'FILEEXT').length + 1;
|
|
1431
|
+
const useVirtualRows = pageRowCount > VIRTUAL_RENDERING_THRESHOLD || pageRowCount * visibleColumnCount > VIRTUAL_RENDERING_CELL_THRESHOLD;
|
|
1408
1432
|
const gridScrolling = useMemo(() => ({
|
|
1409
1433
|
columnRenderingMode: 'virtual',
|
|
1410
|
-
rowRenderingMode:
|
|
1434
|
+
rowRenderingMode: useVirtualRows ? 'virtual' : 'standard',
|
|
1411
1435
|
useNative: useNativeScrollbar
|
|
1412
|
-
}), [useNativeScrollbar,
|
|
1436
|
+
}), [useNativeScrollbar, useVirtualRows]);
|
|
1413
1437
|
// Handles selection change in the data grid
|
|
1414
1438
|
const handleSelectionChange = useCallback((e) => {
|
|
1415
1439
|
if (onSelectionChanged === undefined)
|
|
@@ -1420,8 +1444,14 @@ const TMSearchResultGrid = ({ openInOffice, fromDTD, operationItems, allUsers, i
|
|
|
1420
1444
|
// Handles focus change in the data grid
|
|
1421
1445
|
const handleFocusedRowChange = useCallback((e) => {
|
|
1422
1446
|
// Non bloccare mai questo handler: è chiamato quando l'utente clicca su una riga
|
|
1423
|
-
|
|
1424
|
-
|
|
1447
|
+
// Con il rendering virtuale la riga su cui il cambio pagina sposta il fuoco può non essere ancora disegnata:
|
|
1448
|
+
// e.row è undefined e il documento si ricava dalla chiave (altrimenti focusedRowKey ricadrebbe su 0, cioè pagina 1)
|
|
1449
|
+
const rowData = e.row?.data ?? dataSource?.find(item => item.rowIndex === e.component.option('focusedRowKey'));
|
|
1450
|
+
// La prop controllata va allineata subito: finché resta sulla riga precedente, il wrapper React
|
|
1451
|
+
// riporta lì il fuoco e autoNavigateToFocusedRow riporta la griglia alla sua pagina
|
|
1452
|
+
setFocusedItem(rowData);
|
|
1453
|
+
onFocusedItemChanged?.(rowData);
|
|
1454
|
+
}, [onFocusedItemChanged, dataSource]);
|
|
1425
1455
|
// Handler for double-click row event
|
|
1426
1456
|
const onRowDblClick = useCallback((e) => {
|
|
1427
1457
|
if (onDblClick === undefined)
|
|
@@ -1522,8 +1552,8 @@ const TMSearchResultGrid = ({ openInOffice, fromDTD, operationItems, allUsers, i
|
|
|
1522
1552
|
[CounterItemKey.allItems, {
|
|
1523
1553
|
key: CounterItemKey.allItems,
|
|
1524
1554
|
show: true,
|
|
1525
|
-
caption: `${dcmtsReturned} restituiti su ${dcmtsFound} trovati`,
|
|
1526
|
-
value: `${dcmtsReturned}/${dcmtsFound}`,
|
|
1555
|
+
caption: `${formatCount(dcmtsReturned)} restituiti su ${formatCount(dcmtsFound)} trovati`,
|
|
1556
|
+
value: `${formatCount(dcmtsReturned)}/${formatCount(dcmtsFound)}`,
|
|
1527
1557
|
icon: _jsx(IconAll, {}),
|
|
1528
1558
|
order: -1
|
|
1529
1559
|
}]
|
|
@@ -1535,9 +1565,9 @@ const TMSearchResultGrid = ({ openInOffice, fromDTD, operationItems, allUsers, i
|
|
|
1535
1565
|
return _jsxs("div", { style: { width: "100%", height: "100%" }, children: [!isDataGridReady && (_jsxs("div", { style: { display: 'flex', flexDirection: 'column', alignItems: 'center', justifyContent: 'center', height: '100%', width: '100%', gap: '10px' }, children: [_jsx(LoadIndicator, { height: 60, width: 60 }), _jsx("div", { children: SDKUI_Localizator.Loading })] })), isDataGridReady && _jsx(TMDataGrid, { ref: dataGridRef, id: "tm-search-result", keyExpr: "rowIndex", dataColumns: dataColumns, dataSource: dataSource, customizeColumns: customizeColumns, repaintChangesOnly: true, selectedRowKeys: selectedRowKeys, focusedRowKey: disableAutoFocus ? undefined : Number(focusedItem?.rowIndex ?? 0), showSearchPanel: showSearchTMDatagrid, showFilterPanel: true, sorting: gridSorting, selection: gridSelection, scrolling: gridScrolling, pageSize: pageSize, compactPager: compactPager, onSelectionChanged: handleSelectionChange, onFocusedRowChanged: handleFocusedRowChange, onRowDblClick: onRowDblClick, onContentReady: onContentReady, showHeaderColumnChooser: true, onKeyDown: onKeyDown, customContextMenuItems: operationItems, counterConfig: gridCounterConfig })] });
|
|
1536
1566
|
};
|
|
1537
1567
|
//#region TMSearchResultSelector
|
|
1538
|
-
const StyledItemTemplate = styled.div `
|
|
1539
|
-
background: ${(props) => props.$isSelected ? 'oklch(from var(--dx-color-primary) l c h / .2) !important' : 'transparent'};
|
|
1540
|
-
cursor: pointer;
|
|
1568
|
+
const StyledItemTemplate = styled.div `
|
|
1569
|
+
background: ${(props) => props.$isSelected ? 'oklch(from var(--dx-color-primary) l c h / .2) !important' : 'transparent'};
|
|
1570
|
+
cursor: pointer;
|
|
1541
1571
|
`;
|
|
1542
1572
|
const MemoizedStyledItemTemplate = React.memo(StyledItemTemplate);
|
|
1543
1573
|
const TMSearchResultSelector = ({ searchResults = [], disableAccordionIfSingleCategory = false, selectedTID, selectedSearchResult, autoSelectFirst = true, onSelectionChanged }) => {
|
|
@@ -1737,92 +1767,92 @@ const PanelDisabledStateHandler = ({ isBoardDisabled, savedBlogVisible = false }
|
|
|
1737
1767
|
}, [isBoardDisabled, savedBlogVisible]);
|
|
1738
1768
|
return null;
|
|
1739
1769
|
};
|
|
1740
|
-
const TMDcmtPreviewWrapper = ({ refreshPreviewTrigger, currentDcmt, isVisible, isPageVisible = true, onBack }) => {
|
|
1770
|
+
const TMDcmtPreviewWrapper = ({ refreshPreviewTrigger, currentDcmt, isVisible, isPageVisible = true, onBack, onFileRetrieved }) => {
|
|
1741
1771
|
const { setPanelVisibilityById, toggleMaximize, isResizingActive, countVisibleLeafPanels } = useTMPanelManagerContext();
|
|
1742
1772
|
const deviceType = useDeviceType();
|
|
1743
1773
|
const isMobile = deviceType === DeviceType.MOBILE;
|
|
1744
|
-
return (_jsx(TMDcmtPreview, { dcmtData: currentDcmt, onClosePanel: (!isMobile && countVisibleLeafPanels() > 1) ? () => setPanelVisibilityById('tmDcmtPreview', false) : undefined, onBack: onBack, allowMaximize: !isMobile && countVisibleLeafPanels() > 1, onMaximizePanel: (!isMobile && countVisibleLeafPanels() > 1) ? () => toggleMaximize("tmDcmtPreview") : undefined, isResizingActive: isResizingActive, isVisible: isVisible && isPageVisible }, refreshPreviewTrigger));
|
|
1774
|
+
return (_jsx(TMDcmtPreview, { dcmtData: currentDcmt, onClosePanel: (!isMobile && countVisibleLeafPanels() > 1) ? () => setPanelVisibilityById('tmDcmtPreview', false) : undefined, onBack: onBack, allowMaximize: !isMobile && countVisibleLeafPanels() > 1, onMaximizePanel: (!isMobile && countVisibleLeafPanels() > 1) ? () => toggleMaximize("tmDcmtPreview") : undefined, isResizingActive: isResizingActive, isVisible: isVisible && isPageVisible, onFileRetrieved: onFileRetrieved }, refreshPreviewTrigger));
|
|
1745
1775
|
};
|
|
1746
1776
|
// Styled Components
|
|
1747
|
-
const StyledPlaceholder = styled.div `
|
|
1748
|
-
padding: 20px;
|
|
1749
|
-
text-align: center;
|
|
1750
|
-
color: #888;
|
|
1777
|
+
const StyledPlaceholder = styled.div `
|
|
1778
|
+
padding: 20px;
|
|
1779
|
+
text-align: center;
|
|
1780
|
+
color: #888;
|
|
1751
1781
|
`;
|
|
1752
|
-
const StyledIndexingInfoSection = styled.div `
|
|
1753
|
-
padding: 15px;
|
|
1754
|
-
border-top: 1px solid #e0e0e0;
|
|
1755
|
-
background: linear-gradient(to bottom, #f9f9f9, #f5f5f5);
|
|
1756
|
-
display: flex;
|
|
1757
|
-
flex-direction: column;
|
|
1758
|
-
gap: 10px;
|
|
1782
|
+
const StyledIndexingInfoSection = styled.div `
|
|
1783
|
+
padding: 15px;
|
|
1784
|
+
border-top: 1px solid #e0e0e0;
|
|
1785
|
+
background: linear-gradient(to bottom, #f9f9f9, #f5f5f5);
|
|
1786
|
+
display: flex;
|
|
1787
|
+
flex-direction: column;
|
|
1788
|
+
gap: 10px;
|
|
1759
1789
|
`;
|
|
1760
|
-
const StyledIndexingToggle = styled.button `
|
|
1761
|
-
display: flex;
|
|
1762
|
-
align-items: center;
|
|
1763
|
-
justify-content: space-between;
|
|
1764
|
-
width: 100%;
|
|
1765
|
-
padding: 10px 16px;
|
|
1766
|
-
background: white;
|
|
1767
|
-
border: 1px solid #d0d0d0;
|
|
1768
|
-
border-radius: 6px;
|
|
1769
|
-
cursor: ${props => props.disabled ? 'not-allowed' : 'pointer'};
|
|
1770
|
-
transition: all 0.2s ease;
|
|
1771
|
-
font-size: 14px;
|
|
1772
|
-
font-weight: 500;
|
|
1773
|
-
color: #333;
|
|
1774
|
-
opacity: ${props => props.disabled ? 0.6 : 1};
|
|
1775
|
-
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
|
|
1776
|
-
|
|
1777
|
-
&:hover:not(:disabled) {
|
|
1778
|
-
background: #f8f8f8;
|
|
1779
|
-
border-color: #2196F3;
|
|
1780
|
-
box-shadow: 0 2px 4px rgba(33, 150, 243, 0.2);
|
|
1781
|
-
}
|
|
1782
|
-
|
|
1783
|
-
&:active:not(:disabled) {
|
|
1784
|
-
transform: translateY(1px);
|
|
1785
|
-
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
|
|
1786
|
-
}
|
|
1790
|
+
const StyledIndexingToggle = styled.button `
|
|
1791
|
+
display: flex;
|
|
1792
|
+
align-items: center;
|
|
1793
|
+
justify-content: space-between;
|
|
1794
|
+
width: 100%;
|
|
1795
|
+
padding: 10px 16px;
|
|
1796
|
+
background: white;
|
|
1797
|
+
border: 1px solid #d0d0d0;
|
|
1798
|
+
border-radius: 6px;
|
|
1799
|
+
cursor: ${props => props.disabled ? 'not-allowed' : 'pointer'};
|
|
1800
|
+
transition: all 0.2s ease;
|
|
1801
|
+
font-size: 14px;
|
|
1802
|
+
font-weight: 500;
|
|
1803
|
+
color: #333;
|
|
1804
|
+
opacity: ${props => props.disabled ? 0.6 : 1};
|
|
1805
|
+
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
|
|
1806
|
+
|
|
1807
|
+
&:hover:not(:disabled) {
|
|
1808
|
+
background: #f8f8f8;
|
|
1809
|
+
border-color: #2196F3;
|
|
1810
|
+
box-shadow: 0 2px 4px rgba(33, 150, 243, 0.2);
|
|
1811
|
+
}
|
|
1812
|
+
|
|
1813
|
+
&:active:not(:disabled) {
|
|
1814
|
+
transform: translateY(1px);
|
|
1815
|
+
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
|
|
1816
|
+
}
|
|
1787
1817
|
`;
|
|
1788
|
-
const StyledLeftContent = styled.div `
|
|
1789
|
-
display: flex;
|
|
1790
|
-
align-items: center;
|
|
1791
|
-
gap: 8px;
|
|
1818
|
+
const StyledLeftContent = styled.div `
|
|
1819
|
+
display: flex;
|
|
1820
|
+
align-items: center;
|
|
1821
|
+
gap: 8px;
|
|
1792
1822
|
`;
|
|
1793
|
-
const StyledRightContent = styled.div `
|
|
1794
|
-
display: flex;
|
|
1795
|
-
align-items: center;
|
|
1796
|
-
gap: 8px;
|
|
1823
|
+
const StyledRightContent = styled.div `
|
|
1824
|
+
display: flex;
|
|
1825
|
+
align-items: center;
|
|
1826
|
+
gap: 8px;
|
|
1797
1827
|
`;
|
|
1798
|
-
const StyledChevron = styled.span `
|
|
1799
|
-
transition: transform 0.2s ease;
|
|
1800
|
-
transform: ${props => props.$isOpen ? 'rotate(180deg)' : 'rotate(0deg)'};
|
|
1801
|
-
color: #666;
|
|
1802
|
-
font-size: 12px;
|
|
1828
|
+
const StyledChevron = styled.span `
|
|
1829
|
+
transition: transform 0.2s ease;
|
|
1830
|
+
transform: ${props => props.$isOpen ? 'rotate(180deg)' : 'rotate(0deg)'};
|
|
1831
|
+
color: #666;
|
|
1832
|
+
font-size: 12px;
|
|
1803
1833
|
`;
|
|
1804
|
-
const StyledIndexingInfoBox = styled.div `
|
|
1805
|
-
position: relative;
|
|
1806
|
-
background: white;
|
|
1807
|
-
border: 1px solid #e0e0e0;
|
|
1808
|
-
border-radius: 6px;
|
|
1809
|
-
padding: 12px;
|
|
1810
|
-
max-height: 200px;
|
|
1811
|
-
overflow: auto;
|
|
1812
|
-
font-family: 'Courier New', monospace;
|
|
1813
|
-
font-size: 12px;
|
|
1814
|
-
color: #333;
|
|
1815
|
-
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
|
1816
|
-
animation: slideDown 0.2s ease;
|
|
1817
|
-
|
|
1818
|
-
@keyframes slideDown {
|
|
1819
|
-
from {
|
|
1820
|
-
opacity: 0;
|
|
1821
|
-
transform: translateY(-10px);
|
|
1822
|
-
}
|
|
1823
|
-
to {
|
|
1824
|
-
opacity: 1;
|
|
1825
|
-
transform: translateY(0);
|
|
1826
|
-
}
|
|
1827
|
-
}
|
|
1834
|
+
const StyledIndexingInfoBox = styled.div `
|
|
1835
|
+
position: relative;
|
|
1836
|
+
background: white;
|
|
1837
|
+
border: 1px solid #e0e0e0;
|
|
1838
|
+
border-radius: 6px;
|
|
1839
|
+
padding: 12px;
|
|
1840
|
+
max-height: 200px;
|
|
1841
|
+
overflow: auto;
|
|
1842
|
+
font-family: 'Courier New', monospace;
|
|
1843
|
+
font-size: 12px;
|
|
1844
|
+
color: #333;
|
|
1845
|
+
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
|
1846
|
+
animation: slideDown 0.2s ease;
|
|
1847
|
+
|
|
1848
|
+
@keyframes slideDown {
|
|
1849
|
+
from {
|
|
1850
|
+
opacity: 0;
|
|
1851
|
+
transform: translateY(-10px);
|
|
1852
|
+
}
|
|
1853
|
+
to {
|
|
1854
|
+
opacity: 1;
|
|
1855
|
+
transform: translateY(0);
|
|
1856
|
+
}
|
|
1857
|
+
}
|
|
1828
1858
|
`;
|
|
@@ -12,5 +12,5 @@ interface TMSearchResultFloatingActionButtonProps {
|
|
|
12
12
|
selectedDcmtsOrFocused: Array<DcmtInfo>;
|
|
13
13
|
config: TMSearchResultFloatingActionConfig;
|
|
14
14
|
}
|
|
15
|
-
export declare const TMSearchResultFloatingActionButton: (props: TMSearchResultFloatingActionButtonProps) =>
|
|
15
|
+
export declare const TMSearchResultFloatingActionButton: (props: TMSearchResultFloatingActionButtonProps) => import("react/jsx-runtime").JSX.Element;
|
|
16
16
|
export default TMSearchResultFloatingActionButton;
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import React from "react";
|
|
2
1
|
import { DcmtInfo, IGraphometricManagerProp } from "../../../ts";
|
|
3
2
|
interface TMSignatureInfoContentProps {
|
|
4
3
|
inputDcmt: DcmtInfo;
|
|
5
4
|
graphometricManager?: IGraphometricManagerProp;
|
|
6
5
|
onClose?: () => void;
|
|
7
6
|
}
|
|
8
|
-
declare const TMSignatureInfoContent: (props: TMSignatureInfoContentProps) =>
|
|
7
|
+
declare const TMSignatureInfoContent: (props: TMSignatureInfoContentProps) => import("react/jsx-runtime").JSX.Element;
|
|
9
8
|
export default TMSignatureInfoContent;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import React from "react";
|
|
2
1
|
import { DcmtInfo } from "../../../ts/types";
|
|
3
2
|
import { DeviceType } from "../../base/TMDeviceProvider";
|
|
4
3
|
import { DcmtTypeDescriptor, HomeBlogPost, TaskDescriptor } from "@topconsultnpm/sdk-ts";
|
|
@@ -15,5 +14,5 @@ interface TMViewHistoryDcmtProps {
|
|
|
15
14
|
handleNavigateToWGs?: (value: HomeBlogPost | number) => Promise<void>;
|
|
16
15
|
handleNavigateToDossiers?: (value: HomeBlogPost | number) => Promise<void>;
|
|
17
16
|
}
|
|
18
|
-
declare const TMViewHistoryDcmt: (props: TMViewHistoryDcmtProps) =>
|
|
17
|
+
declare const TMViewHistoryDcmt: (props: TMViewHistoryDcmtProps) => import("react/jsx-runtime").JSX.Element;
|
|
19
18
|
export default TMViewHistoryDcmt;
|
|
@@ -155,7 +155,7 @@ const TMViewHistoryDcmt = (props) => {
|
|
|
155
155
|
let result = [];
|
|
156
156
|
let i = 0;
|
|
157
157
|
if (abortLocalController.signal.aborted) {
|
|
158
|
-
result.push({ rowIndex: i, id1: currentDcmt.id, id2: currentDcmt.id, resultType: ResultTypes.WARNING, description:
|
|
158
|
+
result.push({ rowIndex: i, id1: currentDcmt.id, id2: currentDcmt.id, resultType: ResultTypes.WARNING, description: SDKUI_Localizator.OperationItemsInterrupted.replaceParams(i) });
|
|
159
159
|
}
|
|
160
160
|
else {
|
|
161
161
|
panel.setSubtitle(SDKUI_Localizator.Delete);
|
|
@@ -36,5 +36,5 @@ export interface TMTaskFormProps {
|
|
|
36
36
|
onOpenPdfEditorRequest?: (dcmtInfo: Array<DcmtInfo>, refreshDocumentPreview?: () => Promise<void>) => void;
|
|
37
37
|
s4TViewerDialogComponent?: React.ReactNode;
|
|
38
38
|
}
|
|
39
|
-
declare const TMTaskForm: (props: TMTaskFormProps) =>
|
|
39
|
+
declare const TMTaskForm: (props: TMTaskFormProps) => import("react/jsx-runtime").JSX.Element;
|
|
40
40
|
export default TMTaskForm;
|