@topconsultnpm/sdkui-react 6.22.0-dev2.9 → 6.22.0-t2
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/TMContextMenu.js +1 -1
- package/lib/components/NewComponents/ContextMenu/styles.d.ts +45 -43
- package/lib/components/NewComponents/FloatingMenuBar/TMFloatingMenuBar.js +1 -1
- package/lib/components/NewComponents/FloatingMenuBar/styles.d.ts +67 -60
- package/lib/components/base/Styled.d.ts +93 -77
- package/lib/components/base/TMCounterBar.d.ts +2 -2
- package/lib/components/base/TMCounterContainer.d.ts +2 -1
- package/lib/components/base/TMCustomButton.d.ts +1 -1
- package/lib/components/base/TMDataGrid.d.ts +2 -0
- package/lib/components/base/TMDataGrid.js +260 -8
- package/lib/components/base/TMDataGridExportForm.d.ts +2 -1
- package/lib/components/base/TMEditorBase.d.ts +2 -0
- package/lib/components/base/TMFileManager.d.ts +2 -1
- package/lib/components/base/TMFileManager.js +5 -3
- package/lib/components/base/TMFileManagerDataGridView.d.ts +2 -1
- package/lib/components/base/TMFileManagerDataGridView.js +11 -2
- package/lib/components/base/TMFileManagerThumbnailItems.d.ts +1 -1
- package/lib/components/base/TMFileManagerThumbnailItems.js +19 -9
- package/lib/components/base/TMFileManagerThumbnailsView.d.ts +1 -1
- package/lib/components/base/TMFileManagerUtils.d.ts +6 -6
- package/lib/components/base/TMFileManagerUtils.js +37 -1
- package/lib/components/base/TMLayout.d.ts +4 -4
- package/lib/components/base/TMList.d.ts +2 -1
- package/lib/components/base/TMListView.d.ts +1 -1
- package/lib/components/base/TMModal.d.ts +11 -0
- package/lib/components/base/TMModal.js +47 -13
- package/lib/components/base/TMPanel.d.ts +6 -0
- package/lib/components/base/TMPanel.js +138 -25
- package/lib/components/base/TMPopUp.js +3 -0
- package/lib/components/base/TMSpinner.d.ts +2 -1
- package/lib/components/base/TMTab.d.ts +4 -3
- package/lib/components/base/TMTooltip.d.ts +2 -1
- package/lib/components/base/TMTooltip.js +24 -8
- package/lib/components/base/TMTreeView.d.ts +14 -8
- package/lib/components/base/TMTreeView.js +108 -67
- package/lib/components/base/TMUserAvatar.d.ts +2 -1
- package/lib/components/base/TMVilViewer.d.ts +2 -1
- package/lib/components/base/TMWaitPanel.d.ts +3 -2
- package/lib/components/choosers/TMDcmtTypeChooser.js +4 -3
- package/lib/components/choosers/TMDistinctValues.d.ts +9 -7
- package/lib/components/choosers/TMDistinctValues.js +149 -142
- package/lib/components/choosers/TMDynDataListItemChooser.d.ts +1 -1
- package/lib/components/choosers/TMInvoiceRetrieveFormats.d.ts +2 -1
- package/lib/components/choosers/TMMetadataChooser.js +1 -1
- package/lib/components/choosers/TMOrderRetrieveFormats.d.ts +2 -1
- package/lib/components/choosers/TMQuickSearchInfo.d.ts +13 -0
- package/lib/components/choosers/TMQuickSearchInfo.js +279 -0
- package/lib/components/choosers/TMQuickSearchSettingsForm.d.ts +16 -0
- package/lib/components/choosers/TMQuickSearchSettingsForm.js +94 -0
- package/lib/components/choosers/TMRelationChooser.d.ts +3 -3
- package/lib/components/choosers/TMSelectedValuesSummary.d.ts +13 -0
- package/lib/components/choosers/TMSelectedValuesSummary.js +91 -0
- package/lib/components/choosers/TMUserChooser.d.ts +2 -2
- package/lib/components/editors/TMDropDown.d.ts +3 -0
- package/lib/components/editors/TMDropDown.js +197 -5
- package/lib/components/editors/TMEditorStyled.d.ts +20 -42
- package/lib/components/editors/TMFormulaEditor.d.ts +1 -1
- package/lib/components/editors/TMHtmlContentDisplay.d.ts +2 -1
- package/lib/components/editors/TMHtmlEditor.d.ts +2 -1
- package/lib/components/editors/TMTreeDropDown.d.ts +1 -1
- package/lib/components/features/archive/TMArchive.js +17 -3
- package/lib/components/features/assistant/TMToppyDraggableHelpCenter.d.ts +1 -1
- package/lib/components/features/blog/TMBlogCommentForm.d.ts +2 -1
- package/lib/components/features/documents/TMBatchUpdateForm.js +19 -5
- package/lib/components/features/documents/TMDcmtBlog.d.ts +3 -0
- package/lib/components/features/documents/TMDcmtBlog.js +4 -4
- package/lib/components/features/documents/TMDcmtForm.d.ts +7 -0
- package/lib/components/features/documents/TMDcmtForm.js +178 -51
- package/lib/components/features/documents/TMDcmtFormActionButtons.d.ts +12 -1
- package/lib/components/features/documents/TMDcmtFormActionButtons.js +77 -7
- package/lib/components/features/documents/TMDcmtIcon.d.ts +2 -1
- package/lib/components/features/documents/TMDcmtIcon.js +5 -3
- package/lib/components/features/documents/TMDcmtPreview.d.ts +8 -6
- package/lib/components/features/documents/TMDcmtPreview.js +10 -6
- package/lib/components/features/documents/TMDcmtTasks.d.ts +2 -1
- package/lib/components/features/documents/TMDragDropOverlay.d.ts +1 -1
- package/lib/components/features/documents/TMMasterDetailDcmts.js +95 -33
- package/lib/components/features/documents/TMMasterInfoFields.d.ts +20 -0
- package/lib/components/features/documents/TMMasterInfoFields.js +186 -0
- package/lib/components/features/documents/TMMergeToPdfForm.d.ts +3 -3
- package/lib/components/features/documents/TMMergeToPdfForm.js +30 -5
- package/lib/components/features/documents/TMMultiMasterDetailDcmtsForm.d.ts +46 -0
- package/lib/components/features/documents/TMMultiMasterDetailDcmtsForm.js +323 -0
- package/lib/components/features/documents/TMMultiMasterDetailDcmtsUtils.d.ts +370 -0
- package/lib/components/features/documents/TMMultiMasterDetailDcmtsUtils.js +283 -0
- package/lib/components/features/documents/TMRelationViewer.d.ts +14 -1
- package/lib/components/features/documents/TMRelationViewer.js +69 -20
- package/lib/components/features/search/TMDcmtCheckoutInfoForm.d.ts +2 -1
- package/lib/components/features/search/TMMetadataOutputForm.d.ts +2 -1
- package/lib/components/features/search/TMMetadataSorterForm.d.ts +2 -1
- package/lib/components/features/search/TMSavedQuerySelector.d.ts +2 -2
- package/lib/components/features/search/TMSearch.js +77 -11
- package/lib/components/features/search/TMSearchQueryEditor.js +5 -3
- package/lib/components/features/search/TMSearchQueryPanel.d.ts +13 -3
- package/lib/components/features/search/TMSearchQueryPanel.js +141 -67
- package/lib/components/features/search/TMSearchResult.d.ts +16 -0
- package/lib/components/features/search/TMSearchResult.js +429 -108
- package/lib/components/features/search/TMSearchResultFloatingActionButton.d.ts +1 -1
- package/lib/components/features/search/TMSignatureInfoContent.d.ts +2 -1
- package/lib/components/features/search/TMTreeSelector.js +109 -64
- package/lib/components/features/search/TMViewHistoryDcmt.d.ts +2 -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/wg/TMWGsCopyMoveForm.d.ts +3 -2
- package/lib/components/features/workflow/TMWorkflowPopup.d.ts +18 -7
- package/lib/components/features/workflow/TMWorkflowPopup.js +8 -4
- package/lib/components/features/workflow/diagram/WorkitemRecipientsEditor.d.ts +3 -1
- package/lib/components/forms/Login/ChangePasswordInputs.d.ts +3 -1
- package/lib/components/forms/Login/Chooser.d.ts +2 -2
- package/lib/components/forms/TMChooserForm.d.ts +2 -1
- package/lib/components/forms/TMSaveForm.d.ts +4 -4
- package/lib/components/grids/TMBlogAttachments.d.ts +2 -1
- package/lib/components/grids/TMBlogAttachments.js +13 -2
- package/lib/components/grids/TMBlogHeader.d.ts +1 -1
- package/lib/components/grids/TMBlogHeader.js +5 -1
- package/lib/components/grids/TMBlogsPost.d.ts +3 -1
- package/lib/components/grids/TMBlogsPost.js +31 -4
- package/lib/components/grids/TMBlogsPostUtils.d.ts +10 -9
- package/lib/components/grids/TMBlogsPostUtils.js +14 -3
- package/lib/components/grids/TMValidationItemsList.d.ts +2 -1
- package/lib/components/layout/panelManager/TMPanelManagerContainer.d.ts +3 -1
- package/lib/components/layout/panelManager/TMPanelManagerContainer.js +24 -14
- package/lib/components/layout/panelManager/TMPanelManagerContext.d.ts +2 -2
- package/lib/components/layout/panelManager/TMPanelManagerContext.js +68 -93
- package/lib/components/layout/panelManager/TMPanelManagerToolbar.d.ts +5 -6
- package/lib/components/layout/panelManager/TMPanelManagerWithPersistenceProvider.d.ts +2 -2
- package/lib/components/layout/panelManager/TMPanelWrapper.d.ts +2 -2
- package/lib/components/layout/panelManager/TMPanelWrapper.js +2 -2
- package/lib/components/layout/panelManager/types.d.ts +3 -0
- package/lib/components/layout/panelManager/utils.js +13 -11
- package/lib/components/pages/TMPage.d.ts +1 -1
- package/lib/components/query/TMQueryEditor.d.ts +14 -10
- package/lib/components/settings/SettingsAppearance.d.ts +2 -1
- package/lib/components/sidebar/TMAboutApp.d.ts +2 -1
- package/lib/components/sidebar/TMCommandsPanel.d.ts +4 -4
- package/lib/components/sidebar/TMHeader.d.ts +3 -3
- package/lib/components/sidebar/TMHeader.js +30 -20
- package/lib/components/viewers/TMDataListItemViewer.d.ts +3 -2
- package/lib/components/viewers/TMDataUserIdItemViewer.d.ts +3 -2
- package/lib/components/viewers/TMMidViewer.d.ts +2 -2
- package/lib/components/viewers/TMMidViewer.js +4 -1
- package/lib/components/viewers/TMTidViewer.d.ts +2 -2
- package/lib/components/viewers/TMTidViewer.js +86 -25
- package/lib/css/tm-sdkui.css +1 -1
- package/lib/devextreme-license.d.ts +1 -0
- package/lib/devextreme-license.js +3 -0
- package/lib/helper/SDKUI_Globals.d.ts +110 -0
- package/lib/helper/SDKUI_Globals.js +151 -0
- package/lib/helper/SDKUI_Localizator.d.ts +44 -0
- package/lib/helper/SDKUI_Localizator.js +440 -0
- package/lib/helper/TMAppUpdatedModal.d.ts +2 -0
- package/lib/helper/TMAppUpdatedModal.js +134 -0
- package/lib/helper/TMCommandsContextMenu.d.ts +1 -1
- package/lib/helper/TMIcons.d.ts +280 -279
- package/lib/helper/TMIcons.js +3 -0
- package/lib/helper/TMPdfViewer.d.ts +2 -1
- package/lib/helper/TMToppyMessage.d.ts +2 -2
- package/lib/helper/TMUtils.d.ts +23 -4
- package/lib/helper/TMUtils.js +24 -2
- package/lib/helper/dataGridSearchHelper.d.ts +28 -0
- package/lib/helper/dataGridSearchHelper.js +51 -0
- package/lib/helper/dcmtsHelper.d.ts +20 -0
- package/lib/helper/dcmtsHelper.js +58 -1
- package/lib/helper/helpers.d.ts +12 -1
- package/lib/helper/helpers.js +25 -1
- package/lib/helper/index.d.ts +2 -0
- package/lib/helper/index.js +2 -0
- package/lib/helper/queryHelper.d.ts +6 -1
- package/lib/helper/queryHelper.js +8 -3
- package/lib/hooks/tmDistinctValuesGridHelper.d.ts +16 -0
- package/lib/hooks/tmDistinctValuesGridHelper.js +31 -0
- package/lib/hooks/useArchiveListForm.d.ts +39 -0
- package/lib/hooks/useArchiveListForm.js +46 -0
- package/lib/hooks/useCaseFlowApprove.d.ts +56 -0
- package/lib/hooks/useCaseFlowApprove.js +157 -0
- package/lib/hooks/useDataUserIdItem.d.ts +1 -0
- package/lib/hooks/useDataUserIdItem.js +1 -0
- package/lib/hooks/useDocumentOperations.d.ts +4 -0
- package/lib/hooks/useDocumentOperations.js +52 -10
- package/lib/hooks/useInputDialog.d.ts +2 -1
- package/lib/hooks/useMultiMasterDetailDcmts.d.ts +113 -0
- package/lib/hooks/useMultiMasterDetailDcmts.js +760 -0
- package/lib/hooks/useRelatedDocuments.d.ts +1 -0
- package/lib/hooks/useRelatedDocuments.js +22 -27
- package/lib/hooks/useShowDossiersV5.d.ts +12 -0
- package/lib/hooks/useShowDossiersV5.js +37 -0
- package/lib/hooks/useTMDistinctValuesMetadataDisplay.d.ts +18 -0
- package/lib/hooks/useTMDistinctValuesMetadataDisplay.js +103 -0
- package/lib/hooks/useTMDistinctValuesQuickSearch.d.ts +49 -0
- package/lib/hooks/useTMDistinctValuesQuickSearch.js +307 -0
- package/lib/hooks/useTMDistinctValuesSelection.d.ts +42 -0
- package/lib/hooks/useTMDistinctValuesSelection.js +103 -0
- package/lib/hooks/useTMDistinctValuesSource.d.ts +29 -0
- package/lib/hooks/useTMDistinctValuesSource.js +105 -0
- package/lib/index.d.ts +2 -0
- package/lib/index.js +5 -2
- package/lib/services/caseflow/CaseFlowService.d.ts +236 -0
- package/lib/services/caseflow/CaseFlowService.js +693 -0
- package/lib/services/caseflow/CaseFlowTemplateCacheService.d.ts +28 -0
- package/lib/services/caseflow/CaseFlowTemplateCacheService.js +121 -0
- package/lib/services/caseflow/caseFlowNameCache.d.ts +32 -0
- package/lib/services/caseflow/caseFlowNameCache.js +116 -0
- package/lib/services/caseflow/caseFlowWorkItemUtils.d.ts +61 -0
- package/lib/services/caseflow/caseFlowWorkItemUtils.js +113 -0
- package/lib/services/index.d.ts +4 -0
- package/lib/services/index.js +4 -0
- package/lib/services/platform_services.d.ts +4 -3
- package/package.json +9 -5
|
@@ -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) => React.JSX.Element;
|
|
16
16
|
export default TMSearchResultFloatingActionButton;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import React from "react";
|
|
1
2
|
import { DcmtInfo, IGraphometricManagerProp } from "../../../ts";
|
|
2
3
|
interface TMSignatureInfoContentProps {
|
|
3
4
|
inputDcmt: DcmtInfo;
|
|
4
5
|
graphometricManager?: IGraphometricManagerProp;
|
|
5
6
|
onClose?: () => void;
|
|
6
7
|
}
|
|
7
|
-
declare const TMSignatureInfoContent: (props: TMSignatureInfoContentProps) =>
|
|
8
|
+
declare const TMSignatureInfoContent: (props: TMSignatureInfoContentProps) => React.JSX.Element;
|
|
8
9
|
export default TMSignatureInfoContent;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { useCallback, useEffect, useState } from 'react';
|
|
2
|
+
import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
3
3
|
import { DcmtTypeListCacheService, LayoutModes, SDK_Localizator, TreeCacheService, TreeItemTypes } from '@topconsultnpm/sdk-ts';
|
|
4
4
|
import { TreeList, Column, Scrolling, Selection } from 'devextreme-react/tree-list';
|
|
5
5
|
import { DropDownBox } from 'devextreme-react';
|
|
@@ -13,6 +13,15 @@ import { TMColors } from '../../../utils/theme';
|
|
|
13
13
|
import styled from 'styled-components';
|
|
14
14
|
import { useOutsideClick } from '../../../hooks/useOutsideClick';
|
|
15
15
|
import { DeviceType, useDeviceType } from '../../base/TMDeviceProvider';
|
|
16
|
+
const TMTreeDcmtTypeCell = ({ tid, isMobile }) => {
|
|
17
|
+
const [dtd, setDtd] = useState();
|
|
18
|
+
const loadDTD = useCallback(async () => {
|
|
19
|
+
if (isMobile || dtd || !tid)
|
|
20
|
+
return;
|
|
21
|
+
setDtd(await DcmtTypeListCacheService.GetAsync(tid));
|
|
22
|
+
}, [isMobile, dtd, tid]);
|
|
23
|
+
return (_jsxs(StyledTreeDcmtTypeRow, { onMouseEnter: loadDTD, children: [_jsx("span", { style: { cursor: 'pointer', flex: 1, minWidth: 0 }, children: _jsx(TMTidViewer, { tid: tid, showIcon: false }) }), !isMobile && (_jsx("span", { className: 'info-icon', children: _jsx(TMDcmtTypeTooltip, { dtd: dtd, children: _jsx(IconInfo, { color: TMColors.info }) }) }))] }));
|
|
24
|
+
};
|
|
16
25
|
const TMTreeSelector = ({ layoutMode = LayoutModes.Update, isVisible, onSelectedTIDChanged, onClosePanel, allowMaximize = true, onMaximizePanel }) => {
|
|
17
26
|
const [trees, setTrees] = useState([]);
|
|
18
27
|
const [treeItems, setTreeItems] = useState([]);
|
|
@@ -22,80 +31,76 @@ const TMTreeSelector = ({ layoutMode = LayoutModes.Update, isVisible, onSelected
|
|
|
22
31
|
const [selectedRowKeys, setSelectedRowKeys] = useState([]);
|
|
23
32
|
// State hook to store the currently focused row key, initially set to undefined
|
|
24
33
|
const [focusedRowKey, setFocusedRowKey] = useState(undefined);
|
|
34
|
+
// Elemento selezionato nell'albero: dopo un refresh va riproposto se esiste ancora
|
|
35
|
+
const [selectedTreeItemKey, setSelectedTreeItemKey] = useState(undefined);
|
|
36
|
+
const selectedTreeItemKeys = useMemo(() => selectedTreeItemKey !== undefined ? [selectedTreeItemKey] : [], [selectedTreeItemKey]);
|
|
25
37
|
const [isGridBoxOpened, setIsGridBoxOpened] = useState(false);
|
|
26
38
|
const [defaultTreeId, setDefaultTreeId] = useState(-1);
|
|
27
39
|
const deviceType = useDeviceType();
|
|
28
40
|
const isMobile = deviceType === DeviceType.MOBILE;
|
|
29
41
|
const panelRef = useOutsideClick(() => setInfoDTD(undefined));
|
|
30
|
-
//
|
|
31
|
-
//
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
//
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
}
|
|
42
|
+
// Tiene traccia dell'albero selezionato senza far dipendere loadTreesAsync da selectedTreeId:
|
|
43
|
+
// così il refresh può riproporre la selezione corrente senza ricaricare a ogni cambio di albero
|
|
44
|
+
const selectedTreeIdRef = useRef(selectedTreeId);
|
|
45
|
+
useEffect(() => { selectedTreeIdRef.current = selectedTreeId; }, [selectedTreeId]);
|
|
46
|
+
// Carica tutti gli alberi del contesto corrente (ricerca o archiviazione).
|
|
47
|
+
// Con forceRefresh la cache viene invalidata, altrimenti GetAll* restituirebbe gli alberi già in memoria.
|
|
48
|
+
const loadTreesAsync = useCallback(async (forceRefresh = false) => {
|
|
49
|
+
const isSearchContext = layoutMode == LayoutModes.Update;
|
|
50
|
+
if (forceRefresh) {
|
|
51
|
+
if (isSearchContext)
|
|
52
|
+
TreeCacheService.RemoveAllSearch();
|
|
53
|
+
else
|
|
54
|
+
TreeCacheService.RemoveAllArchive();
|
|
55
|
+
}
|
|
56
|
+
const result = isSearchContext
|
|
57
|
+
? await TreeCacheService.GetAllSearchAsync()
|
|
58
|
+
: await TreeCacheService.GetAllArchiveAsync();
|
|
59
|
+
if (!result || result.length === 0) {
|
|
60
|
+
// Sul refresh gli alberi possono essere spariti lato server: allinea anche lo stato vuoto
|
|
61
|
+
if (forceRefresh) {
|
|
62
|
+
setTrees([]);
|
|
63
|
+
setSelectedTreeId(0);
|
|
64
|
+
setSelectedRowKeys([]);
|
|
54
65
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
setTrees(result);
|
|
69
|
+
// Dopo un refresh mantiene l'albero corrente, se ancora presente
|
|
70
|
+
const currentTreeId = selectedTreeIdRef.current;
|
|
71
|
+
if (forceRefresh && result.some(o => o.id == currentTreeId)) {
|
|
72
|
+
setSelectedTreeId(currentTreeId);
|
|
73
|
+
setSelectedRowKeys([currentTreeId]);
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
let defaultTree = SDKUI_Globals.userSettings.searchSettings.defaultTree;
|
|
77
|
+
let initialTreeId;
|
|
78
|
+
let treeToSelect;
|
|
79
|
+
if (defaultTree > 0) {
|
|
80
|
+
initialTreeId = defaultTree;
|
|
81
|
+
treeToSelect = result.find(o => o.id == defaultTree);
|
|
58
82
|
}
|
|
59
83
|
else {
|
|
60
|
-
|
|
84
|
+
initialTreeId = result[0]?.id ?? 0;
|
|
85
|
+
treeToSelect = result[0];
|
|
86
|
+
}
|
|
87
|
+
setSelectedTreeId(initialTreeId);
|
|
88
|
+
if (treeToSelect?.id) {
|
|
89
|
+
setSelectedRowKeys([treeToSelect.id]);
|
|
61
90
|
}
|
|
62
91
|
}, [layoutMode]);
|
|
92
|
+
useEffect(() => { loadTreesAsync(); }, [loadTreesAsync]);
|
|
63
93
|
useEffect(() => {
|
|
64
94
|
let newTreeItems = trees.find(o => o.id == selectedTreeId)?.items ?? [];
|
|
65
95
|
setTreeItems(newTreeItems);
|
|
96
|
+
// Mantiene la selezione dopo il refresh solo se l'elemento e' ancora presente (al cambio albero si azzera)
|
|
97
|
+
setSelectedTreeItemKey(prev => prev !== undefined && newTreeItems.some(o => o.id == prev) ? prev : undefined);
|
|
66
98
|
}, [selectedTreeId, trees]);
|
|
67
99
|
const renderCell = useCallback((data) => {
|
|
68
100
|
const treeItem = data.data;
|
|
69
|
-
const [showInfo, setShowInfo] = useState(false);
|
|
70
101
|
// Documento (DcmtType)
|
|
71
102
|
if (treeItem.type === TreeItemTypes.DcmtType) {
|
|
72
|
-
return (
|
|
73
|
-
alignItems: 'center',
|
|
74
|
-
minWidth: 0,
|
|
75
|
-
width: '100%',
|
|
76
|
-
gap: 2,
|
|
77
|
-
position: 'relative'
|
|
78
|
-
}, onMouseEnter: async () => {
|
|
79
|
-
if (!isMobile) {
|
|
80
|
-
setShowInfo(true);
|
|
81
|
-
let dtd = await DcmtTypeListCacheService.GetAsync(treeItem.tid);
|
|
82
|
-
setInfoDTD(dtd);
|
|
83
|
-
}
|
|
84
|
-
}, onMouseLeave: () => {
|
|
85
|
-
if (!isMobile) {
|
|
86
|
-
setShowInfo(false);
|
|
87
|
-
setInfoDTD(undefined);
|
|
88
|
-
}
|
|
89
|
-
}, children: [_jsx("span", { style: { cursor: 'pointer', flex: 1, minWidth: 0 }, children: _jsx(TMTidViewer, { tid: treeItem.tid, showIcon: false }) }), !isMobile && (_jsx("span", { style: {
|
|
90
|
-
opacity: showInfo ? 1 : 0,
|
|
91
|
-
transition: 'opacity 0.2s',
|
|
92
|
-
pointerEvents: showInfo ? 'auto' : 'none',
|
|
93
|
-
cursor: 'pointer',
|
|
94
|
-
display: 'flex',
|
|
95
|
-
alignItems: 'center',
|
|
96
|
-
marginLeft: 'auto',
|
|
97
|
-
zIndex: 2
|
|
98
|
-
}, children: _jsx(TMDcmtTypeTooltip, { dtd: infoDTD, children: _jsx(IconInfo, { color: TMColors.info }) }) }))] }));
|
|
103
|
+
return _jsx(TMTreeDcmtTypeCell, { tid: treeItem.tid, isMobile: isMobile });
|
|
99
104
|
}
|
|
100
105
|
// Folder (altri tipi)
|
|
101
106
|
return (_jsxs(StyledDivHorizontal, { style: { gap: 5, alignItems: 'center', minWidth: 0 }, children: [_jsx("span", { style: {
|
|
@@ -113,7 +118,7 @@ const TMTreeSelector = ({ layoutMode = LayoutModes.Update, isVisible, onSelected
|
|
|
113
118
|
whiteSpace: 'nowrap',
|
|
114
119
|
flex: 1,
|
|
115
120
|
}, children: treeItem.nameLoc })] }));
|
|
116
|
-
}, [isMobile
|
|
121
|
+
}, [isMobile]);
|
|
117
122
|
// Handles selection change in the data grid
|
|
118
123
|
const onSelectionChanged = useCallback((e) => {
|
|
119
124
|
const selectedKeys = e.component.getSelectedRowKeys() ?? [];
|
|
@@ -126,6 +131,16 @@ const TMTreeSelector = ({ layoutMode = LayoutModes.Update, isVisible, onSelected
|
|
|
126
131
|
setSelectedRowKeys(selectedKeys);
|
|
127
132
|
setIsGridBoxOpened(false);
|
|
128
133
|
}, []);
|
|
134
|
+
// Handles click on a tree row in the trees data grid: clicking the already selected tree
|
|
135
|
+
// does not raise onSelectionChanged, so the drop down must be closed here as well
|
|
136
|
+
const onRowClickTrees = useCallback((e) => {
|
|
137
|
+
const tree = e.data;
|
|
138
|
+
if (tree?.id === undefined)
|
|
139
|
+
return;
|
|
140
|
+
setSelectedTreeId(tree.id);
|
|
141
|
+
setSelectedRowKeys([tree.id]);
|
|
142
|
+
setIsGridBoxOpened(false);
|
|
143
|
+
}, []);
|
|
129
144
|
// Handles focus change in the data grid
|
|
130
145
|
const onFocusedRowChanged = useCallback((e) => {
|
|
131
146
|
setFocusedRowKey(e.row?.key);
|
|
@@ -161,7 +176,18 @@ const TMTreeSelector = ({ layoutMode = LayoutModes.Update, isVisible, onSelected
|
|
|
161
176
|
}
|
|
162
177
|
}
|
|
163
178
|
}, []);
|
|
164
|
-
|
|
179
|
+
// Callback function to handle click events on a tree view row.
|
|
180
|
+
const onRowClickTreeView = useCallback((e) => {
|
|
181
|
+
const treeItem = e.data;
|
|
182
|
+
if (treeItem?.type === TreeItemTypes.DcmtType) {
|
|
183
|
+
onSelectedTIDChanged?.(treeItem.tid, selectedTreeId);
|
|
184
|
+
}
|
|
185
|
+
}, [onSelectedTIDChanged, selectedTreeId]);
|
|
186
|
+
// La selezione la decide il widget (click, ctrl+click che deseleziona, barra spaziatrice): qui si allinea solo lo stato
|
|
187
|
+
const onSelectionChangedTreeView = useCallback((e) => {
|
|
188
|
+
setSelectedTreeItemKey(e.selectedRowKeys?.[0]);
|
|
189
|
+
}, []);
|
|
190
|
+
return (_jsx(TMPanel, { title: SDK_Localizator.Trees, isVisible: isVisible, totalItems: trees.length, onClose: onClosePanel, allowMaximize: allowMaximize, onMaximize: onMaximizePanel, onHeaderDoubleClick: onMaximizePanel, onRefresh: () => loadTreesAsync(true), toolbar: _jsx(TMButton, { btnStyle: 'icon', caption: defaultTreeId == selectedTreeId ? SDKUI_Localizator.TreeRemoveDefault : SDKUI_Localizator.SetAsDefault, icon: defaultTreeId == selectedTreeId ? _jsx(IconStarRemove, { color: 'rgb(243, 114, 92)' }) : _jsx(IconStar, { color: 'rgb(248, 215, 117)' }), onClick: () => {
|
|
165
191
|
if (defaultTreeId == selectedTreeId) {
|
|
166
192
|
if (layoutMode == LayoutModes.Update)
|
|
167
193
|
SDKUI_Globals.userSettings.searchSettings.defaultTree = -1;
|
|
@@ -193,14 +219,33 @@ const TMTreeSelector = ({ layoutMode = LayoutModes.Update, isVisible, onSelected
|
|
|
193
219
|
}, value: selectedTreeId, opened: isGridBoxOpened, valueExpr: "id", displayExpr: "nameLoc", deferRendering: false, dataSource: trees, onValueChanged: syncDataGridSelection, onOptionChanged: onGridBoxOpened, style: { height: 30, padding: '5px' }, children: _jsx(TMDataGrid, { height: "100%", width: "100%", dataSource: trees, dataColumns: [
|
|
194
220
|
{ dataField: 'nameLoc', caption: SDKUI_Localizator.Name, width: 'auto' },
|
|
195
221
|
{ dataField: 'description', caption: SDKUI_Localizator.Description, width: 'auto' },
|
|
196
|
-
], selection: { mode: 'single', showCheckBoxesMode: "none" }, showHeaderFilter: false, selectedRowKeys: selectedRowKeys, onSelectionChanged: onSelectionChanged, focusedRowKey: focusedRowKey, onFocusedRowChanged: onFocusedRowChanged }) }) }), _jsxs(StyledTreeListWrapper, { children: [_jsxs(TreeList, { height: "100%", dataSource: treeItems, showRowLines: false, showColumnLines: false, showBorders: false, columnAutoWidth: false, keyExpr: "id", parentIdExpr: "parentID", dataStructure: "plain", showColumnHeaders: false,
|
|
197
|
-
if (e.selectedRowsData[0] && e.selectedRowsData[0].type == TreeItemTypes.DcmtType) {
|
|
198
|
-
onSelectedTIDChanged?.(e.selectedRowsData[0].tid, selectedTreeId);
|
|
199
|
-
}
|
|
200
|
-
}, children: [_jsx(Column, { dataField: "nameLoc", caption: SDKUI_Localizator.Name, cellRender: renderCell, width: "100%" }), _jsx(Scrolling, { mode: "virtual", useNative: Number(SDKUI_Globals.userSettings?.themeSettings.gridSettings.useNativeScrollbar) === 1 }), _jsx(Selection, { mode: "single" })] }), _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)] })] })] })
|
|
222
|
+
], selection: { mode: 'single', showCheckBoxesMode: "none" }, showHeaderFilter: false, selectedRowKeys: selectedRowKeys, onSelectionChanged: onSelectionChanged, onRowClick: onRowClickTrees, focusedRowKey: focusedRowKey, onFocusedRowChanged: onFocusedRowChanged }) }) }), _jsxs(StyledTreeListWrapper, { children: [_jsxs(TreeList, { height: "100%", dataSource: treeItems, showRowLines: false, showColumnLines: false, showBorders: false, columnAutoWidth: false, keyExpr: "id", parentIdExpr: "parentID", dataStructure: "plain", showColumnHeaders: false, selectedRowKeys: selectedTreeItemKeys, onSelectionChanged: onSelectionChangedTreeView, onCellDblClick: onCellDblClickTreeView, onRowClick: onRowClickTreeView, children: [_jsx(Column, { dataField: "nameLoc", caption: SDKUI_Localizator.Name, cellRender: renderCell, width: "100%" }), _jsx(Scrolling, { mode: "virtual", useNative: Number(SDKUI_Globals.userSettings?.themeSettings.gridSettings.useNativeScrollbar) === 1 }), _jsx(Selection, { mode: "single" })] }), _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)] })] })] })
|
|
201
223
|
: _jsx("div", { style: { display: 'flex', flexDirection: 'column', alignItems: 'center', justifyContent: 'center', height: '100%', width: '100%', fontSize: '1.5rem' }, children: SDKUI_Localizator.TreesNoAvailable }) }));
|
|
202
224
|
};
|
|
203
225
|
export default TMTreeSelector;
|
|
226
|
+
const StyledTreeDcmtTypeRow = styled(StyledDivHorizontal) `
|
|
227
|
+
align-items: center;
|
|
228
|
+
min-width: 0;
|
|
229
|
+
width: 100%;
|
|
230
|
+
gap: 2px;
|
|
231
|
+
position: relative;
|
|
232
|
+
|
|
233
|
+
.info-icon {
|
|
234
|
+
display: flex;
|
|
235
|
+
align-items: center;
|
|
236
|
+
margin-left: auto;
|
|
237
|
+
z-index: 2;
|
|
238
|
+
cursor: pointer;
|
|
239
|
+
opacity: 0;
|
|
240
|
+
pointer-events: none;
|
|
241
|
+
transition: opacity 0.2s;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
&:hover .info-icon {
|
|
245
|
+
opacity: 1;
|
|
246
|
+
pointer-events: auto;
|
|
247
|
+
}
|
|
248
|
+
`;
|
|
204
249
|
const StyledTreeListWrapper = styled.div `
|
|
205
250
|
width: 100%;
|
|
206
251
|
height: 100%;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import React from "react";
|
|
1
2
|
import { DcmtInfo } from "../../../ts/types";
|
|
2
3
|
import { DeviceType } from "../../base/TMDeviceProvider";
|
|
3
4
|
import { DcmtTypeDescriptor, HomeBlogPost, TaskDescriptor } from "@topconsultnpm/sdk-ts";
|
|
@@ -14,5 +15,5 @@ interface TMViewHistoryDcmtProps {
|
|
|
14
15
|
handleNavigateToWGs?: (value: HomeBlogPost | number) => Promise<void>;
|
|
15
16
|
handleNavigateToDossiers?: (value: HomeBlogPost | number) => Promise<void>;
|
|
16
17
|
}
|
|
17
|
-
declare const TMViewHistoryDcmt: (props: TMViewHistoryDcmtProps) =>
|
|
18
|
+
declare const TMViewHistoryDcmt: (props: TMViewHistoryDcmtProps) => React.JSX.Element;
|
|
18
19
|
export default TMViewHistoryDcmt;
|
|
@@ -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) => React.JSX.Element;
|
|
40
40
|
export default TMTaskForm;
|
|
@@ -8,7 +8,7 @@ interface TaskFormAssignmentNoticeSectionProps {
|
|
|
8
8
|
users: Array<UserDescriptor>;
|
|
9
9
|
requestMoreInfo?: boolean;
|
|
10
10
|
}
|
|
11
|
-
export declare const TaskFormAssignmentNoticeBadge: (props: TaskFormAssignmentNoticeSectionProps) =>
|
|
11
|
+
export declare const TaskFormAssignmentNoticeBadge: (props: TaskFormAssignmentNoticeSectionProps) => React.JSX.Element | null;
|
|
12
12
|
interface RenderContextBlockParams {
|
|
13
13
|
condition: boolean;
|
|
14
14
|
pdg: PdGs;
|
|
@@ -19,7 +19,7 @@ interface TaskFormContextualAttachmentsProps {
|
|
|
19
19
|
currentTask: TaskDescriptor | undefined;
|
|
20
20
|
taskContext: TaskContext | undefined;
|
|
21
21
|
}
|
|
22
|
-
export declare const TaskFormContextualAttachments: (props: TaskFormContextualAttachmentsProps) =>
|
|
22
|
+
export declare const TaskFormContextualAttachments: (props: TaskFormContextualAttachmentsProps) => React.JSX.Element;
|
|
23
23
|
interface TaskFormAssignedToProps {
|
|
24
24
|
formMode: FormModes;
|
|
25
25
|
formData: TaskDescriptor | undefined;
|
|
@@ -31,7 +31,7 @@ interface TaskFormAssignedToProps {
|
|
|
31
31
|
label?: string;
|
|
32
32
|
onValueChanged: (newValue: Array<number> | undefined) => void;
|
|
33
33
|
}
|
|
34
|
-
export declare const TaskAssigneeField: (props: TaskFormAssignedToProps) =>
|
|
34
|
+
export declare const TaskAssigneeField: (props: TaskFormAssignedToProps) => React.JSX.Element;
|
|
35
35
|
interface RenderFieldBaseProps {
|
|
36
36
|
fieldsReadOnly: IFieldsEditability;
|
|
37
37
|
formDataOrig?: TaskDescriptor;
|
|
@@ -50,12 +50,12 @@ interface RenderDateFieldProps extends RenderFieldProps {
|
|
|
50
50
|
label?: string;
|
|
51
51
|
onContentReady?: () => void;
|
|
52
52
|
}
|
|
53
|
-
export declare const RenderNameField: ({ requestMoreInfo, validationItems, setFormData, formData, formDataOrig, fieldsReadOnly }: RenderFieldProps) =>
|
|
54
|
-
export declare const RenderDescriptionField: ({ validationItems, setFormData, formData, formDataOrig, fieldsReadOnly }: RenderFieldProps) =>
|
|
55
|
-
export declare const RenderPriorityField: ({ formData, formDataOrig, fieldsReadOnly, onPriorityValueChange }: RenderPriorityFieldProps) =>
|
|
56
|
-
export declare const RenderStartDateField: ({ label, validationItems, setFormData, formData, formDataOrig, fieldsReadOnly, onContentReady }: RenderDateFieldProps) =>
|
|
57
|
-
export declare const RenderEndDateField: ({ label, validationItems, setFormData, formData, formDataOrig, fieldsReadOnly, onContentReady }: RenderDateFieldProps) =>
|
|
58
|
-
export declare const RenderRemindDateField: ({ validationItems, setFormData, formData, formDataOrig, fieldsReadOnly }: RenderFieldProps) =>
|
|
53
|
+
export declare const RenderNameField: ({ requestMoreInfo, validationItems, setFormData, formData, formDataOrig, fieldsReadOnly }: RenderFieldProps) => React.JSX.Element;
|
|
54
|
+
export declare const RenderDescriptionField: ({ validationItems, setFormData, formData, formDataOrig, fieldsReadOnly }: RenderFieldProps) => React.JSX.Element;
|
|
55
|
+
export declare const RenderPriorityField: ({ formData, formDataOrig, fieldsReadOnly, onPriorityValueChange }: RenderPriorityFieldProps) => React.JSX.Element;
|
|
56
|
+
export declare const RenderStartDateField: ({ label, validationItems, setFormData, formData, formDataOrig, fieldsReadOnly, onContentReady }: RenderDateFieldProps) => React.JSX.Element;
|
|
57
|
+
export declare const RenderEndDateField: ({ label, validationItems, setFormData, formData, formDataOrig, fieldsReadOnly, onContentReady }: RenderDateFieldProps) => React.JSX.Element;
|
|
58
|
+
export declare const RenderRemindDateField: ({ validationItems, setFormData, formData, formDataOrig, fieldsReadOnly }: RenderFieldProps) => React.JSX.Element;
|
|
59
59
|
interface RenderTaskFormStateFieldProps {
|
|
60
60
|
formDataOrig: TaskDescriptor | undefined;
|
|
61
61
|
formData: TaskDescriptor | undefined;
|
|
@@ -71,7 +71,7 @@ interface TMChangeStateFormProps {
|
|
|
71
71
|
handleShowChangeStateForm: (value: boolean) => void;
|
|
72
72
|
setFormData: React.Dispatch<React.SetStateAction<TaskDescriptor | undefined>>;
|
|
73
73
|
}
|
|
74
|
-
export declare const TMChangeStateForm: (props: TMChangeStateFormProps) =>
|
|
74
|
+
export declare const TMChangeStateForm: (props: TMChangeStateFormProps) => React.JSX.Element;
|
|
75
75
|
type TaskRole = "personal" | "sender" | "receiver";
|
|
76
76
|
type StatusTransitionMap = {
|
|
77
77
|
[key in Task_States]?: Task_States[];
|
|
@@ -15,5 +15,5 @@ interface TMTasksAgendaProps {
|
|
|
15
15
|
handleFocusedRowChange: (row: TaskDescriptor | undefined) => void;
|
|
16
16
|
menuItems: TMContextMenuItemProps[];
|
|
17
17
|
}
|
|
18
|
-
declare const TMTasksAgenda: (props: TMTasksAgendaProps) =>
|
|
18
|
+
declare const TMTasksAgenda: (props: TMTasksAgendaProps) => React.JSX.Element;
|
|
19
19
|
export default TMTasksAgenda;
|
|
@@ -19,5 +19,5 @@ interface TMTasksCalendarProps {
|
|
|
19
19
|
handleFocusedRowChange: (row: TaskDescriptor | undefined) => void;
|
|
20
20
|
menuItems: TMContextMenuItemProps[];
|
|
21
21
|
}
|
|
22
|
-
declare const TMTasksCalendar: (props: TMTasksCalendarProps) =>
|
|
22
|
+
declare const TMTasksCalendar: (props: TMTasksCalendarProps) => React.JSX.Element;
|
|
23
23
|
export default TMTasksCalendar;
|
|
@@ -10,5 +10,5 @@ interface TMTasksHeaderProps {
|
|
|
10
10
|
color?: string;
|
|
11
11
|
height?: string;
|
|
12
12
|
}
|
|
13
|
-
declare const TMTasksHeader: (props: TMTasksHeaderProps) =>
|
|
13
|
+
declare const TMTasksHeader: (props: TMTasksHeaderProps) => React.JSX.Element;
|
|
14
14
|
export default TMTasksHeader;
|
|
@@ -16,5 +16,5 @@ interface TMTasksPanelContentProps {
|
|
|
16
16
|
s4TViewerDialogComponent?: React.ReactNode;
|
|
17
17
|
afterTaskSaved?: (task: TaskDescriptor | undefined, formMode: FormModes | undefined, forceRefresh?: boolean) => Promise<void>;
|
|
18
18
|
}
|
|
19
|
-
declare const TMTasksPanelContent: (props: TMTasksPanelContentProps) =>
|
|
19
|
+
declare const TMTasksPanelContent: (props: TMTasksPanelContentProps) => React.JSX.Element;
|
|
20
20
|
export default TMTasksPanelContent;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ReactNode } from "react";
|
|
1
|
+
import React, { ReactNode } from "react";
|
|
2
2
|
import { PdGs, Task_States, TaskDescriptor } from '@topconsultnpm/sdk-ts';
|
|
3
3
|
import { FormModes } from "../../../ts";
|
|
4
4
|
export declare const taskStateIconMap: (fontSize?: number) => Map<Task_States, JSX.Element>;
|
|
@@ -12,15 +12,15 @@ export declare const renderTaskIcons: (taskData: {
|
|
|
12
12
|
remTime: Date | undefined;
|
|
13
13
|
isNew: boolean;
|
|
14
14
|
numberOfDays: number;
|
|
15
|
-
}) =>
|
|
15
|
+
}) => React.JSX.Element;
|
|
16
16
|
interface TMActionCalendarProps {
|
|
17
17
|
currentTask: TaskDescriptor;
|
|
18
18
|
openTaskForm: (formMode: FormModes, task?: TaskDescriptor) => void;
|
|
19
19
|
onDeleteCallback: (rowIds: Array<number>) => void;
|
|
20
20
|
}
|
|
21
|
-
export declare const TMActionCalendar: (props: TMActionCalendarProps) =>
|
|
22
|
-
export declare const priorityLegend: () =>
|
|
23
|
-
export declare const highlightTaskText: (text: string, search: string, taskId: number) => string | (string |
|
|
21
|
+
export declare const TMActionCalendar: (props: TMActionCalendarProps) => React.JSX.Element;
|
|
22
|
+
export declare const priorityLegend: () => React.JSX.Element;
|
|
23
|
+
export declare const highlightTaskText: (text: string, search: string, taskId: number) => string | (string | React.JSX.Element)[];
|
|
24
24
|
export declare const treeFilterDataSource: (allTasks: Array<TaskDescriptor>) => Array<{
|
|
25
25
|
id: number;
|
|
26
26
|
label: string;
|
|
@@ -36,5 +36,5 @@ interface TMTasksViewProps {
|
|
|
36
36
|
s4TViewerDialogComponent?: React.ReactNode;
|
|
37
37
|
afterTaskSaved?: (task: TaskDescriptor | undefined, formMode: FormModes | undefined, forceRefresh?: boolean) => Promise<void>;
|
|
38
38
|
}
|
|
39
|
-
declare const TMTasksView: (props: TMTasksViewProps) =>
|
|
39
|
+
declare const TMTasksView: (props: TMTasksViewProps) => React.JSX.Element;
|
|
40
40
|
export default TMTasksView;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import React from 'react';
|
|
1
2
|
import { DcmtTypeDescriptor, WorkingGroupDescriptor } from "@topconsultnpm/sdk-ts";
|
|
2
3
|
import { FileItem } from '../../base/TMFileManagerUtils';
|
|
3
4
|
/** Context descriptor for copy/move operations using different engines */
|
|
@@ -24,7 +25,7 @@ interface TMWGsCopyMoveFormProps {
|
|
|
24
25
|
fetchTreeFileSystemForWorkingGroup?: (workingGroupId: number | undefined) => Promise<void>;
|
|
25
26
|
fetchArchivedDocumentsForWorkingGroup?: (workingGroupId: number | undefined) => Promise<void>;
|
|
26
27
|
}
|
|
27
|
-
declare const TMWGsCopyMoveForm: (props: TMWGsCopyMoveFormProps) =>
|
|
28
|
+
declare const TMWGsCopyMoveForm: (props: TMWGsCopyMoveFormProps) => React.JSX.Element;
|
|
28
29
|
export default TMWGsCopyMoveForm;
|
|
29
30
|
interface StepItem {
|
|
30
31
|
id: number | string;
|
|
@@ -36,4 +37,4 @@ interface TMStepNavigatorProps {
|
|
|
36
37
|
currentStep: number;
|
|
37
38
|
onStepChange: (stepIndex: number) => void;
|
|
38
39
|
}
|
|
39
|
-
export declare const TMStepNavigator: (props: TMStepNavigatorProps) =>
|
|
40
|
+
export declare const TMStepNavigator: (props: TMStepNavigatorProps) => React.JSX.Element;
|
|
@@ -1,8 +1,19 @@
|
|
|
1
|
+
import React from "react";
|
|
1
2
|
import { DcmtTypeDescriptor, HomeBlogPost, TaskDescriptor, WFDescriptor } from '@topconsultnpm/sdk-ts';
|
|
2
3
|
import { DeviceType } from "../../base/TMDeviceProvider";
|
|
3
4
|
import { WorkItemDetail } from "../../../ts";
|
|
4
5
|
interface IWorkflowOperationButtonsProps {
|
|
5
6
|
dtd: DcmtTypeDescriptor | undefined;
|
|
7
|
+
/**
|
|
8
|
+
* Forza la forma dei pulsanti: `true` = flusso di FIRMA (Firma e approva),
|
|
9
|
+
* `false` = flusso di APPROVAZIONE. Se omesso si deduce dal tipo documento
|
|
10
|
+
* (widget Sign4Top), che è il comportamento del workflow.
|
|
11
|
+
*
|
|
12
|
+
* Serve a chi conosce la natura dell'attività meglio del tipo documento: un
|
|
13
|
+
* work item di sola approvazione su un tipo ABILITATO alla firma non deve
|
|
14
|
+
* mostrare "Firma e approva".
|
|
15
|
+
*/
|
|
16
|
+
signFlow?: boolean;
|
|
6
17
|
approveDisable?: boolean;
|
|
7
18
|
signApproveDisable?: boolean;
|
|
8
19
|
rejectDisable?: boolean;
|
|
@@ -22,7 +33,7 @@ interface IWorkflowOperationButtonsProps {
|
|
|
22
33
|
handleNavigateToWGs?: (value: HomeBlogPost | number) => Promise<void>;
|
|
23
34
|
handleNavigateToDossiers?: (value: HomeBlogPost | number) => Promise<void>;
|
|
24
35
|
}
|
|
25
|
-
export declare const WorkFlowOperationButtons: (props: IWorkflowOperationButtonsProps) =>
|
|
36
|
+
export declare const WorkFlowOperationButtons: (props: IWorkflowOperationButtonsProps) => React.JSX.Element;
|
|
26
37
|
export declare const WorkFlowApproveRejectPopUp: ({ TID, DID, deviceType, isReject, selectedItems, onClose, onCompleted }: {
|
|
27
38
|
TID?: number;
|
|
28
39
|
DID?: number;
|
|
@@ -31,7 +42,7 @@ export declare const WorkFlowApproveRejectPopUp: ({ TID, DID, deviceType, isReje
|
|
|
31
42
|
isReject: number;
|
|
32
43
|
onClose?: () => void;
|
|
33
44
|
onCompleted?: () => Promise<void>;
|
|
34
|
-
}) =>
|
|
45
|
+
}) => React.JSX.Element;
|
|
35
46
|
export declare const WorkFlowReAssignPopUp: ({ DID, TID, deviceType, onClose, selectedItems, onCompleted, wf, workItemDetail }: {
|
|
36
47
|
TID?: number;
|
|
37
48
|
DID?: number;
|
|
@@ -41,7 +52,7 @@ export declare const WorkFlowReAssignPopUp: ({ DID, TID, deviceType, onClose, se
|
|
|
41
52
|
onCompleted?: () => Promise<void>;
|
|
42
53
|
wf?: WFDescriptor;
|
|
43
54
|
workItemDetail?: WorkItemDetail;
|
|
44
|
-
}) =>
|
|
55
|
+
}) => React.JSX.Element;
|
|
45
56
|
/**
|
|
46
57
|
* Modal per forzare l'approvazione di un work item
|
|
47
58
|
*/
|
|
@@ -49,7 +60,7 @@ export declare const WorkflowForceApproveModal: ({ detail, onClose, onCompleted
|
|
|
49
60
|
detail: WorkItemDetail;
|
|
50
61
|
onClose?: () => void;
|
|
51
62
|
onCompleted?: () => Promise<void>;
|
|
52
|
-
}) =>
|
|
63
|
+
}) => React.JSX.Element;
|
|
53
64
|
/**
|
|
54
65
|
* Modal per forzare il rifiuto di un work item
|
|
55
66
|
*/
|
|
@@ -57,7 +68,7 @@ export declare const WorkflowForceRejectModal: ({ detail, onClose, onCompleted }
|
|
|
57
68
|
detail: WorkItemDetail;
|
|
58
69
|
onClose?: () => void;
|
|
59
70
|
onCompleted?: () => Promise<void>;
|
|
60
|
-
}) =>
|
|
71
|
+
}) => React.JSX.Element;
|
|
61
72
|
/**
|
|
62
73
|
* Modal per terminare le istanze workflow selezionate
|
|
63
74
|
*/
|
|
@@ -69,7 +80,7 @@ export declare const WorkflowEndInstanceModal: ({ selectedInstances, onClose, on
|
|
|
69
80
|
}>;
|
|
70
81
|
onClose?: () => void;
|
|
71
82
|
onCompleted?: () => Promise<void>;
|
|
72
|
-
}) =>
|
|
83
|
+
}) => React.JSX.Element;
|
|
73
84
|
interface IWorkFlowMoreInfoPopUpProps {
|
|
74
85
|
fromDTD?: DcmtTypeDescriptor;
|
|
75
86
|
TID?: number;
|
|
@@ -86,5 +97,5 @@ interface IWorkFlowMoreInfoPopUpProps {
|
|
|
86
97
|
handleNavigateToDossiers?: (value: HomeBlogPost | number) => Promise<void>;
|
|
87
98
|
triggerBlogRefresh?: () => Promise<void>;
|
|
88
99
|
}
|
|
89
|
-
export declare const WorkFlowMoreInfoPopUp: (props: IWorkFlowMoreInfoPopUpProps) =>
|
|
100
|
+
export declare const WorkFlowMoreInfoPopUp: (props: IWorkFlowMoreInfoPopUpProps) => React.JSX.Element | undefined;
|
|
90
101
|
export {};
|
|
@@ -53,16 +53,20 @@ const StyledHorizontalContainer = styled.div `
|
|
|
53
53
|
/* align-items: flex-end; */
|
|
54
54
|
`;
|
|
55
55
|
export const WorkFlowOperationButtons = (props) => {
|
|
56
|
-
const { dtd = undefined, deviceType = DeviceType.DESKTOP, approveDisable = false, signApproveDisable = false, rejectDisable = false, reassignDisable = false, infoDisable = false, onApprove, onSignApprove, onReject, onReAssign, onMoreInfo, } = props;
|
|
56
|
+
const { dtd = undefined, signFlow = undefined, deviceType = DeviceType.DESKTOP, approveDisable = false, signApproveDisable = false, rejectDisable = false, reassignDisable = false, infoDisable = false, onApprove, onSignApprove, onReject, onReAssign, onMoreInfo, } = props;
|
|
57
57
|
const isMobile = deviceType === DeviceType.MOBILE;
|
|
58
|
-
// Calcola direttamente se è un workflow di firma per evitare flickering durante il render
|
|
58
|
+
// Calcola direttamente se è un workflow di firma per evitare flickering durante il render.
|
|
59
|
+
// `signFlow`, se fornito, ha la precedenza: chi lo passa conosce la natura
|
|
60
|
+
// dell'attività (es. categoria del work item) meglio del tipo documento.
|
|
59
61
|
const isSignWorkflow = useMemo(() => {
|
|
62
|
+
if (signFlow !== undefined)
|
|
63
|
+
return signFlow;
|
|
60
64
|
if (dtd && dtd.widgets && dtd.widgets.length > 0) {
|
|
61
65
|
return isSign4TopEnabled(dtd.widgets);
|
|
62
66
|
}
|
|
63
67
|
return false;
|
|
64
|
-
}, [dtd]);
|
|
65
|
-
return (_jsx(StyledWorkFlowOperationButtonsContainer, { "$isMobile": isMobile, children: isSignWorkflow ? (_jsxs(_Fragment, { children: [_jsx(TMButton, { btnStyle: isMobile ? 'toolbar' : 'advanced', showTooltip: isMobile, icon: _jsx(IconSignaturePencil, {}), caption: SDKUI_Localizator.SignatureAndApprove, width: "160px", disabled: signApproveDisable, onClick: () => !signApproveDisable && onSignApprove?.(), onMouseDown: e => e.stopPropagation(), advancedColor: "#1a9a49", color: "success" }), _jsx(TMButton, { btnStyle: isMobile ? 'toolbar' : 'advanced', showTooltip: isMobile, icon: _jsx(IconCloseOutline, {}), caption: SDKUI_Localizator.Reject, disabled: rejectDisable, onClick: () => !rejectDisable && onReject?.(), onMouseDown: e => e.stopPropagation(), advancedColor: TMColors.error, color: "error" }), _jsx(TMButton, { btnStyle: isMobile ? 'toolbar' : 'advanced', showTooltip: isMobile, icon: _jsx(IconInfo, { fontSize: 16 }), caption: SDKUI_Localizator.MoreInformation, width: "180px", disabled: infoDisable, onClick: () => !infoDisable && onMoreInfo?.(), onMouseDown: e => e.stopPropagation(), advancedColor: TMColors.info, color: "info" })] })) : (_jsxs(_Fragment, { children: [_jsx(TMButton, { btnStyle: isMobile ? 'toolbar' : 'advanced', showTooltip: isMobile, icon: _jsx(IconApply, {}), caption: SDKUI_Localizator.Approve, disabled: approveDisable, onClick: () => !approveDisable && onApprove?.(), advancedColor: "#1a9a49", color: "success" }), _jsx(TMButton, { btnStyle: isMobile ? 'toolbar' : 'advanced', showTooltip: isMobile, icon: _jsx(IconCloseOutline, {}), caption: SDKUI_Localizator.Reject, disabled: rejectDisable, onClick: () => !rejectDisable && onReject?.(), advancedColor: TMColors.error, color: "error" }), _jsx(TMButton, { btnStyle: isMobile ? 'toolbar' : 'advanced', showTooltip: isMobile, icon: _jsx(IconUser, { fontSize: 16 }), caption: SDKUI_Localizator.Reassign, disabled: reassignDisable, onClick: () => !reassignDisable && onReAssign?.(), advancedColor: TMColors.tertiary, color: "tertiary" }), _jsx(TMButton, { btnStyle: isMobile ? 'toolbar' : 'advanced', showTooltip: isMobile, icon: _jsx(IconInfo, { fontSize: 16 }), caption: SDKUI_Localizator.MoreInformation, width: "180px", disabled: infoDisable, onClick: () => !infoDisable && onMoreInfo?.(), advancedColor: TMColors.info, color: "info" })] })) }));
|
|
68
|
+
}, [dtd, signFlow]);
|
|
69
|
+
return (_jsx(StyledWorkFlowOperationButtonsContainer, { "$isMobile": isMobile, children: isSignWorkflow ? (_jsxs(_Fragment, { children: [_jsx(TMButton, { btnStyle: isMobile ? 'toolbar' : 'advanced', showTooltip: isMobile, icon: _jsx(IconSignaturePencil, {}), caption: SDKUI_Localizator.SignatureAndApprove, width: "160px", disabled: signApproveDisable, onClick: () => !signApproveDisable && onSignApprove?.(), onMouseDown: e => e.stopPropagation(), advancedColor: "#1a9a49", color: "success" }), _jsx(TMButton, { btnStyle: isMobile ? 'toolbar' : 'advanced', showTooltip: isMobile, icon: _jsx(IconCloseOutline, {}), caption: SDKUI_Localizator.Reject, disabled: rejectDisable, onClick: () => !rejectDisable && onReject?.(), onMouseDown: e => e.stopPropagation(), advancedColor: TMColors.error, color: "error" }), onMoreInfo && (_jsx(TMButton, { btnStyle: isMobile ? 'toolbar' : 'advanced', showTooltip: isMobile, icon: _jsx(IconInfo, { fontSize: 16 }), caption: SDKUI_Localizator.MoreInformation, width: "180px", disabled: infoDisable, onClick: () => !infoDisable && onMoreInfo?.(), onMouseDown: e => e.stopPropagation(), advancedColor: TMColors.info, color: "info" }))] })) : (_jsxs(_Fragment, { children: [_jsx(TMButton, { btnStyle: isMobile ? 'toolbar' : 'advanced', showTooltip: isMobile, icon: _jsx(IconApply, {}), caption: SDKUI_Localizator.Approve, disabled: approveDisable, onClick: () => !approveDisable && onApprove?.(), advancedColor: "#1a9a49", color: "success" }), _jsx(TMButton, { btnStyle: isMobile ? 'toolbar' : 'advanced', showTooltip: isMobile, icon: _jsx(IconCloseOutline, {}), caption: SDKUI_Localizator.Reject, disabled: rejectDisable, onClick: () => !rejectDisable && onReject?.(), advancedColor: TMColors.error, color: "error" }), onReAssign && (_jsx(TMButton, { btnStyle: isMobile ? 'toolbar' : 'advanced', showTooltip: isMobile, icon: _jsx(IconUser, { fontSize: 16 }), caption: SDKUI_Localizator.Reassign, disabled: reassignDisable, onClick: () => !reassignDisable && onReAssign?.(), advancedColor: TMColors.tertiary, color: "tertiary" })), onMoreInfo && (_jsx(TMButton, { btnStyle: isMobile ? 'toolbar' : 'advanced', showTooltip: isMobile, icon: _jsx(IconInfo, { fontSize: 16 }), caption: SDKUI_Localizator.MoreInformation, width: "180px", disabled: infoDisable, onClick: () => !infoDisable && onMoreInfo?.(), advancedColor: TMColors.info, color: "info" }))] })) }));
|
|
66
70
|
};
|
|
67
71
|
export const WorkFlowApproveRejectPopUp = ({ TID = 0, DID = 0, deviceType = DeviceType.DESKTOP, isReject, selectedItems = [], onClose, onCompleted }) => {
|
|
68
72
|
const { refreshWorkflowApprove } = useWorkflowApprove();
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { QueryDescriptor } from '@topconsultnpm/sdk-ts';
|
|
3
3
|
import { WorkItemActor } from './RecipientList';
|
|
4
|
-
export declare const RecipientsContainer: import("styled-components/dist/types").IStyledComponentBase<"web",
|
|
4
|
+
export declare const RecipientsContainer: import("styled-components/dist/types").IStyledComponentBase<"web", Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "style"> & {
|
|
5
|
+
style?: React.CSSProperties | import("styled-components/dist/types").CSSPropertiesWithVars | undefined;
|
|
6
|
+
}> & string;
|
|
5
7
|
export declare const tosToActors: (tosString: string) => {
|
|
6
8
|
andRecipients: WorkItemActor[];
|
|
7
9
|
orRecipients: WorkItemActor[];
|
|
@@ -11,4 +11,6 @@ interface ChangePasswordInputsProps {
|
|
|
11
11
|
}
|
|
12
12
|
declare const ChangePasswordInputs: React.FC<ChangePasswordInputsProps>;
|
|
13
13
|
export default ChangePasswordInputs;
|
|
14
|
-
export declare const Divider: import("styled-components/dist/types").IStyledComponentBase<"web",
|
|
14
|
+
export declare const Divider: import("styled-components/dist/types").IStyledComponentBase<"web", Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "style"> & {
|
|
15
|
+
style?: React.CSSProperties | import("styled-components/dist/types").CSSPropertiesWithVars | undefined;
|
|
16
|
+
}> & string;
|
|
@@ -23,6 +23,6 @@ interface ChooserProps<T> {
|
|
|
23
23
|
onClose?: () => void;
|
|
24
24
|
isDropDown?: boolean;
|
|
25
25
|
}
|
|
26
|
-
declare const Chooser: <T>({ dataSource, columns, value, additionalIcons, validationItems, title, label, icon, placeHolder, disabled, selectedRow, onChooserClick, onSelectionChanged, onClose, isDropDown }: ChooserProps<T>) =>
|
|
26
|
+
declare const Chooser: <T>({ dataSource, columns, value, additionalIcons, validationItems, title, label, icon, placeHolder, disabled, selectedRow, onChooserClick, onSelectionChanged, onClose, isDropDown }: ChooserProps<T>) => React.JSX.Element;
|
|
27
27
|
export default Chooser;
|
|
28
|
-
export declare function IconDropDown(props: React.SVGProps<SVGSVGElement>):
|
|
28
|
+
export declare function IconDropDown(props: React.SVGProps<SVGSVGElement>): React.JSX.Element;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import React from 'react';
|
|
1
2
|
import { ITMChooserFormProps } from '../../ts';
|
|
2
|
-
declare const TMChooserForm: <T>({ children, title, allowMultipleSelection, allowApplyWithZeroSelection, startWithShowOnlySelectedItems, hasShowOnlySelectedItems, allowGrouping, allowSorting, width, height, dataSource, selectedIDs, manageUseLocalizedName, hasShowId, hideRefresh, keyName, customButtons, showFilterPanel, showDefaultColumns, columns, summaryItems, convertID, customFilter, getItems, cellRenderIcon, cellRenderNameAndDesc, onChoose, onClose, onShowIdChanged }: ITMChooserFormProps<T>) =>
|
|
3
|
+
declare const TMChooserForm: <T>({ children, title, allowMultipleSelection, allowApplyWithZeroSelection, startWithShowOnlySelectedItems, hasShowOnlySelectedItems, allowGrouping, allowSorting, width, height, dataSource, selectedIDs, manageUseLocalizedName, hasShowId, hideRefresh, keyName, customButtons, showFilterPanel, showDefaultColumns, columns, summaryItems, convertID, customFilter, getItems, cellRenderIcon, cellRenderNameAndDesc, onChoose, onClose, onShowIdChanged }: ITMChooserFormProps<T>) => React.JSX.Element;
|
|
3
4
|
export default TMChooserForm;
|
|
@@ -13,19 +13,19 @@ interface ITMSaveFormButtonPreviousProps extends ITMSaveFormButtonBase {
|
|
|
13
13
|
onPrev?: () => void;
|
|
14
14
|
onSaveAsync?: () => Promise<void>;
|
|
15
15
|
}
|
|
16
|
-
export declare const TMSaveFormButtonPrevious: ({ btnStyle, formMode, isModified, onPrev, canPrev, iconColor, onSaveAsync }: ITMSaveFormButtonPreviousProps) =>
|
|
16
|
+
export declare const TMSaveFormButtonPrevious: ({ btnStyle, formMode, isModified, onPrev, canPrev, iconColor, onSaveAsync }: ITMSaveFormButtonPreviousProps) => React.JSX.Element;
|
|
17
17
|
interface ITMSaveFormButtonNextProps extends ITMSaveFormButtonBase {
|
|
18
18
|
canNext?: boolean;
|
|
19
19
|
onNext?: () => void;
|
|
20
20
|
onSaveAsync?: () => Promise<void>;
|
|
21
21
|
}
|
|
22
|
-
export declare const TMSaveFormButtonNext: ({ btnStyle, formMode, isModified, onNext, canNext, iconColor, onSaveAsync }: ITMSaveFormButtonNextProps) =>
|
|
22
|
+
export declare const TMSaveFormButtonNext: ({ btnStyle, formMode, isModified, onNext, canNext, iconColor, onSaveAsync }: ITMSaveFormButtonNextProps) => React.JSX.Element;
|
|
23
23
|
interface ITMSaveFormButtonSaveProps extends ITMSaveFormButtonBase {
|
|
24
24
|
errorsCount: number;
|
|
25
25
|
onSaveAsync?: () => Promise<void>;
|
|
26
26
|
}
|
|
27
|
-
export declare const TMSaveFormButtonSave: ({ btnStyle, errorsCount, isModified, iconColor, width, advancedColor, advancedType, onSaveAsync }: ITMSaveFormButtonSaveProps) =>
|
|
27
|
+
export declare const TMSaveFormButtonSave: ({ btnStyle, errorsCount, isModified, iconColor, width, advancedColor, advancedType, onSaveAsync }: ITMSaveFormButtonSaveProps) => React.JSX.Element;
|
|
28
28
|
interface ITMSaveFormButtonUndoProps extends ITMSaveFormButtonBase {
|
|
29
29
|
onUndo?: () => void;
|
|
30
30
|
}
|
|
31
|
-
export declare const TMSaveFormButtonUndo: ({ btnStyle, isModified, iconColor, width, advancedColor, advancedType, onUndo, color, showTooltip }: ITMSaveFormButtonUndoProps) =>
|
|
31
|
+
export declare const TMSaveFormButtonUndo: ({ btnStyle, isModified, iconColor, width, advancedColor, advancedType, onUndo, color, showTooltip }: ITMSaveFormButtonUndoProps) => React.JSX.Element;
|