@topconsultnpm/sdkui-react 6.22.0-t1 → 6.22.0-t3
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 +3 -3
- package/lib/components/NewComponents/ContextMenu/hooks.d.ts +1 -1
- package/lib/components/NewComponents/ContextMenu/styles.d.ts +45 -43
- package/lib/components/NewComponents/FloatingMenuBar/TMFloatingMenuBar.js +6 -6
- package/lib/components/NewComponents/FloatingMenuBar/styles.d.ts +80 -73
- package/lib/components/base/Styled.d.ts +92 -76
- package/lib/components/base/Styled.js +7 -5
- package/lib/components/base/TMAccordionNew.js +7 -7
- package/lib/components/base/TMAlert.d.ts +32 -32
- package/lib/components/base/TMAlert.js +6 -8
- package/lib/components/base/TMAreaManager.js +53 -55
- package/lib/components/base/TMButton.d.ts +13 -0
- package/lib/components/base/TMButton.js +139 -7
- package/lib/components/base/TMClosableList.js +3 -3
- package/lib/components/base/TMCustomButton.js +40 -48
- package/lib/components/base/TMDataGrid.d.ts +4 -0
- package/lib/components/base/TMDataGrid.js +292 -12
- package/lib/components/base/TMDataGridExportForm.js +39 -30
- package/lib/components/base/TMDropDownMenu.js +1 -1
- package/lib/components/base/TMEditorBase.d.ts +2 -0
- package/lib/components/base/TMFileManager.js +5 -3
- package/lib/components/base/TMFileManagerDataGridView.js +12 -3
- package/lib/components/base/TMFileManagerThumbnailItems.js +20 -10
- package/lib/components/base/TMFileManagerUtils.d.ts +6 -6
- package/lib/components/base/TMFileManagerUtils.js +37 -1
- package/lib/components/base/TMLayout.d.ts +2 -2
- package/lib/components/base/TMLayout.js +3 -3
- package/lib/components/base/TMList.js +1 -1
- package/lib/components/base/TMListView.js +3 -3
- 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 +141 -28
- package/lib/components/base/TMPopUp.js +5 -2
- package/lib/components/base/TMResizableMenu.js +2 -2
- package/lib/components/base/TMRightSidebar.js +1 -1
- package/lib/components/base/TMShowAllOrMaxItemsButton.js +1 -1
- package/lib/components/base/TMSpinner.d.ts +2 -1
- package/lib/components/base/TMSpinner.js +9 -7
- package/lib/components/base/TMTab.js +2 -2
- package/lib/components/base/TMTabControl.d.ts +106 -0
- package/lib/components/base/TMTabControl.js +664 -0
- package/lib/components/base/TMToggleButton.js +2 -2
- package/lib/components/base/TMToolbarCard.js +3 -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 +13 -7
- package/lib/components/base/TMTreeView.js +143 -70
- package/lib/components/base/TMWaitPanel.js +3 -3
- package/lib/components/base/waitPanel/TMWaitPanelConfirm.d.ts +12 -0
- package/lib/components/base/waitPanel/TMWaitPanelConfirm.js +185 -0
- package/lib/components/base/waitPanel/TMWaitPanelManager.d.ts +169 -0
- package/lib/components/base/waitPanel/TMWaitPanelManager.js +320 -0
- package/lib/components/base/waitPanel/TMWaitPanelView.d.ts +53 -0
- package/lib/components/base/waitPanel/TMWaitPanelView.js +274 -0
- package/lib/components/base/waitPanel/index.d.ts +1 -0
- package/lib/components/base/waitPanel/index.js +1 -0
- package/lib/components/choosers/TMCultureIDPicker.js +2 -2
- package/lib/components/choosers/TMDataListItemChooser.js +1 -1
- package/lib/components/choosers/TMDataListItemPicker.js +2 -2
- package/lib/components/choosers/TMDcmtTypeChooser.js +5 -4
- package/lib/components/choosers/TMDiskChooser.js +1 -1
- package/lib/components/choosers/TMDistinctValues.d.ts +9 -7
- package/lib/components/choosers/TMDistinctValues.js +157 -141
- package/lib/components/choosers/TMDynDataListItemChooser.js +1 -1
- package/lib/components/choosers/TMImageIDChooser.js +1 -1
- package/lib/components/choosers/TMMetadataChooser.js +3 -3
- package/lib/components/choosers/TMPathChooser.js +17 -34
- 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.js +1 -1
- package/lib/components/choosers/TMSelectedValuesSummary.d.ts +13 -0
- package/lib/components/choosers/TMSelectedValuesSummary.js +89 -0
- package/lib/components/choosers/TMUserChooser.js +1 -1
- package/lib/components/editors/TMCheckBox.js +1 -1
- package/lib/components/editors/TMDateBox.d.ts +16 -1
- package/lib/components/editors/TMDateBox.js +90 -22
- package/lib/components/editors/TMDropDown.d.ts +3 -0
- package/lib/components/editors/TMDropDown.js +197 -5
- package/lib/components/editors/TMEditorStyled.d.ts +21 -43
- package/lib/components/editors/TMFormulaEditor.js +1 -1
- package/lib/components/editors/TMHtmlContentDisplay.js +1 -1
- package/lib/components/editors/TMLocalizedTextBox.js +1 -1
- package/lib/components/editors/TMMetadataEditor.d.ts +5 -1
- package/lib/components/editors/TMMetadataEditor.js +27 -23
- package/lib/components/editors/TMMetadataValues.js +6 -6
- package/lib/components/editors/TMRadioButton.js +2 -2
- package/lib/components/editors/TMSummary.js +3 -3
- package/lib/components/editors/TMTextArea.d.ts +1 -0
- package/lib/components/editors/TMTextArea.js +25 -17
- package/lib/components/editors/TMTextBox.d.ts +2 -0
- package/lib/components/editors/TMTextBox.js +32 -21
- package/lib/components/editors/TMTextExpression.js +1 -1
- package/lib/components/features/archive/TMArchive.js +24 -5
- package/lib/components/features/assistant/TMHelpOnLineChat.d.ts +29 -0
- package/lib/components/features/assistant/TMHelpOnLineChat.js +1384 -0
- package/lib/components/features/assistant/TMToppyDraggableHelpCenter.js +4 -4
- package/lib/components/features/assistant/TMToppySpeechBubble.js +1 -1
- package/lib/components/features/assistant/dataset/Designer-Suggested-Questions.json +102 -0
- package/lib/components/features/assistant/dataset/Login-Suggested-Questions.json +32 -0
- package/lib/components/features/assistant/dataset/Surfer-Suggested-Questions.json +102 -0
- package/lib/components/features/documents/TMBatchUpdateForm.js +22 -9
- package/lib/components/features/documents/TMCopyToFolderForm.js +50 -42
- 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 +281 -113
- package/lib/components/features/documents/TMDcmtFormActionButtons.d.ts +11 -0
- package/lib/components/features/documents/TMDcmtFormActionButtons.js +79 -9
- package/lib/components/features/documents/TMDcmtIcon.d.ts +1 -3
- package/lib/components/features/documents/TMDcmtIcon.js +8 -8
- package/lib/components/features/documents/TMDcmtPreview.d.ts +7 -5
- package/lib/components/features/documents/TMDcmtPreview.js +16 -10
- package/lib/components/features/documents/TMDcmtTasks.js +2 -9
- package/lib/components/features/documents/TMDownloadRelationViewerSection.js +1 -1
- package/lib/components/features/documents/TMFileUploader.js +7 -7
- package/lib/components/features/documents/TMMasterDetailDcmts.d.ts +2 -0
- package/lib/components/features/documents/TMMasterDetailDcmts.js +95 -108
- package/lib/components/features/documents/TMMasterInfoFields.d.ts +20 -0
- package/lib/components/features/documents/TMMasterInfoFields.js +185 -0
- package/lib/components/features/documents/TMMergeToPdfForm.d.ts +1 -2
- package/lib/components/features/documents/TMMergeToPdfForm.js +83 -56
- package/lib/components/features/documents/TMMultiMasterDetailDcmtsForm.d.ts +46 -0
- package/lib/components/features/documents/TMMultiMasterDetailDcmtsForm.js +320 -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 +29 -9
- package/lib/components/features/documents/TMRelationViewer.js +310 -208
- package/lib/components/features/documents/copyAndMergeDcmtsShared.d.ts +1 -1
- package/lib/components/features/documents/relationTreeState.d.ts +32 -0
- package/lib/components/features/documents/relationTreeState.js +89 -0
- package/lib/components/features/search/TMMetadataOutputForm.js +1 -1
- package/lib/components/features/search/TMMetadataSorterForm.js +1 -1
- package/lib/components/features/search/TMSavedQuerySelector.js +2 -2
- package/lib/components/features/search/TMSearch.d.ts +1 -1
- package/lib/components/features/search/TMSearch.js +172 -34
- package/lib/components/features/search/TMSearchQueryEditor.js +7 -5
- package/lib/components/features/search/TMSearchQueryPanel.d.ts +14 -4
- package/lib/components/features/search/TMSearchQueryPanel.js +153 -62
- package/lib/components/features/search/TMSearchResult.d.ts +21 -0
- package/lib/components/features/search/TMSearchResult.js +461 -152
- package/lib/components/features/search/TMSignatureInfoContent.js +1 -1
- package/lib/components/features/search/TMTreeSelector.js +130 -83
- package/lib/components/features/search/TMViewHistoryDcmt.js +14 -25
- package/lib/components/features/tasks/TMTaskForm.js +1 -1
- package/lib/components/features/tasks/TMTaskFormUtils.js +3 -3
- package/lib/components/features/tasks/TMTasksAgenda.js +1 -1
- package/lib/components/features/tasks/TMTasksCalendar.js +1 -1
- package/lib/components/features/tasks/TMTasksHeader.js +1 -1
- package/lib/components/features/tasks/TMTasksUtilsView.js +1 -1
- package/lib/components/features/tasks/TMTasksView.js +97 -102
- package/lib/components/features/wg/TMWGsCopyMoveForm.js +92 -92
- package/lib/components/features/workflow/TMWorkflowPopup.d.ts +10 -0
- package/lib/components/features/workflow/TMWorkflowPopup.js +9 -5
- package/lib/components/features/workflow/diagram/ConnectionComponent.js +3 -3
- package/lib/components/features/workflow/diagram/DiagramItemComponent.js +3 -3
- package/lib/components/features/workflow/diagram/DiagramItemForm.js +1 -1
- package/lib/components/features/workflow/diagram/DiagramItemSvgContent.js +1 -1
- package/lib/components/features/workflow/diagram/RecipientList.js +1 -1
- package/lib/components/features/workflow/diagram/WFDiagram.js +4 -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/Menu.js +1 -1
- package/lib/components/forms/Login/OTPReader.js +1 -1
- package/lib/components/forms/Login/PasswordStrengthChecker.js +1 -1
- package/lib/components/forms/Login/RapidAccessLogin.js +2 -2
- package/lib/components/forms/Login/RecoverPasswordFlow.js +2 -2
- package/lib/components/forms/Login/SelectBox.js +1 -1
- package/lib/components/forms/Login/StepIndicator.js +1 -1
- package/lib/components/forms/Login/TMLoginForm.js +7 -7
- package/lib/components/forms/Login/TextBox.js +1 -1
- package/lib/components/forms/TMApplyForm.js +3 -3
- package/lib/components/forms/TMChooserForm.js +1 -1
- package/lib/components/forms/TMResultDialog.js +1 -1
- package/lib/components/forms/TMSaveForm.js +3 -3
- package/lib/components/grids/TMBlogAttachments.js +14 -3
- package/lib/components/grids/TMBlogHeader.js +5 -1
- package/lib/components/grids/TMBlogsPost.d.ts +2 -0
- package/lib/components/grids/TMBlogsPost.js +122 -99
- package/lib/components/grids/TMBlogsPostUtils.d.ts +1 -0
- package/lib/components/grids/TMBlogsPostUtils.js +15 -4
- package/lib/components/grids/TMRecentsManager.js +4 -4
- package/lib/components/grids/TMValidationItemsList.js +1 -1
- package/lib/components/index.d.ts +6 -0
- package/lib/components/index.js +5 -0
- package/lib/components/layout/panelManager/TMPanelManagerContainer.d.ts +1 -0
- package/lib/components/layout/panelManager/TMPanelManagerContainer.js +25 -15
- package/lib/components/layout/panelManager/TMPanelManagerContext.js +68 -93
- package/lib/components/layout/panelManager/TMPanelManagerToolbar.d.ts +4 -5
- package/lib/components/layout/panelManager/TMPanelManagerToolbar.js +1 -1
- package/lib/components/layout/panelManager/TMPanelWrapper.js +3 -3
- package/lib/components/layout/panelManager/types.d.ts +3 -0
- package/lib/components/layout/panelManager/utils.js +13 -11
- package/lib/components/pages/TMPage.js +30 -32
- package/lib/components/query/TMQueryCountButton.js +1 -1
- package/lib/components/query/TMQueryEditor.d.ts +17 -10
- package/lib/components/query/TMQueryEditor.js +9 -8
- package/lib/components/sidebar/TMCommandsPanel.d.ts +4 -4
- package/lib/components/sidebar/TMCommandsPanel.js +1 -1
- package/lib/components/sidebar/TMHeader.d.ts +1 -0
- package/lib/components/sidebar/TMHeader.js +37 -27
- package/lib/components/sidebar/TMSidebar.js +1 -1
- package/lib/components/sidebar/TMSidebarItem.js +1 -1
- package/lib/components/viewers/TMMidViewer.js +6 -3
- package/lib/components/viewers/TMTidViewer.js +89 -28
- package/lib/components/wizard/TMStepIndicator.js +3 -3
- 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/Enum_Localizator.d.ts +4 -4
- package/lib/helper/Enum_Localizator.js +1 -0
- package/lib/helper/Globalization.d.ts +1 -1
- package/lib/helper/SDKUI_Globals.d.ts +110 -0
- package/lib/helper/SDKUI_Globals.js +151 -0
- package/lib/helper/SDKUI_Localizator.d.ts +756 -677
- package/lib/helper/SDKUI_Localizator.js +790 -0
- package/lib/helper/TMAppUpdatedModal.d.ts +2 -0
- package/lib/helper/TMAppUpdatedModal.js +134 -0
- package/lib/helper/TMIcons.d.ts +1 -0
- package/lib/helper/TMIcons.js +4 -3
- package/lib/helper/TMPdfViewer.js +1 -1
- package/lib/helper/TMToppyMessage.js +1 -1
- package/lib/helper/TMUtils.d.ts +51 -4
- package/lib/helper/TMUtils.js +273 -12
- package/lib/helper/ZipManager.d.ts +1 -1
- package/lib/helper/ZipManager.js +2 -1
- package/lib/helper/checkinCheckoutManager.d.ts +1 -1
- package/lib/helper/checkinCheckoutManager.js +1 -1
- package/lib/helper/dataGridSearchHelper.d.ts +28 -0
- package/lib/helper/dataGridSearchHelper.js +51 -0
- package/lib/helper/dcmtsHelper.d.ts +22 -0
- package/lib/helper/dcmtsHelper.js +60 -1
- package/lib/helper/helpers.d.ts +24 -2
- package/lib/helper/helpers.js +59 -3
- 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/useCheckInOutOperations.d.ts +0 -6
- package/lib/hooks/useCheckInOutOperations.js +14 -34
- package/lib/hooks/useDataUserIdItem.d.ts +1 -0
- package/lib/hooks/useDataUserIdItem.js +1 -0
- package/lib/hooks/useDcmtOperations.d.ts +3 -12
- package/lib/hooks/useDcmtOperations.js +187 -179
- package/lib/hooks/useDocumentOperations.d.ts +5 -0
- package/lib/hooks/useDocumentOperations.js +64 -33
- package/lib/hooks/useInputDialog.js +1 -1
- package/lib/hooks/useMultiMasterDetailDcmts.d.ts +98 -0
- package/lib/hooks/useMultiMasterDetailDcmts.js +758 -0
- package/lib/hooks/usePreventFileDrop.js +9 -0
- package/lib/hooks/useQueryParametersDialog.js +1 -1
- 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/hooks/useWorkflowApprove.js +33 -17
- package/lib/index.d.ts +2 -0
- package/lib/index.js +5 -2
- package/lib/services/caseflow/CaseFlowService.d.ts +277 -0
- package/lib/services/caseflow/CaseFlowService.js +761 -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 -4
- package/package.json +16 -13
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
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
3
|
import { PlatformObjectValidator, QueryDescriptor, WhereItem, SDK_Localizator, SelectItemVisibilities, SDK_Globals, SavedQueryCacheService, SearchEngine, QueryOperators, AccessLevelsEx, AccessLevels } from '@topconsultnpm/sdk-ts';
|
|
4
4
|
import styled from 'styled-components';
|
|
@@ -24,11 +24,9 @@ import TMToppyMessage from '../../../helper/TMToppyMessage';
|
|
|
24
24
|
import TMMetadataSorterForm from './TMMetadataSorterForm';
|
|
25
25
|
import TMMetadataOutputForm from './TMMetadataOutputForm';
|
|
26
26
|
import TMTooltip from '../../base/TMTooltip';
|
|
27
|
-
const TMSearchQueryPanel = ({ fromDTD, showBackToResultButton, isExpertMode = SDKUI_Globals.userSettings.advancedSettings.expertMode === 1, SQD, inputMids, onSearchCompleted, onSqdSaved, onBack, onClosePanel, allowMaximize = true, onMaximizePanel, onBackToResult, passToArchiveCallback, maxDcmtsToBeReturned }) => {
|
|
27
|
+
const TMSearchQueryPanel = ({ isSearchViewOnScreen = true, fromDTD, showBackToResultButton, isExpertMode = SDKUI_Globals.userSettings.advancedSettings.expertMode === 1, SQD, inputMids, onSearchCompleted, onSqdSaved, onBack, onClosePanel, allowMaximize = true, onMaximizePanel, onBackToResult, passToArchiveCallback, maxDcmtsToBeReturned, onRefreshRequested, onDcmtTypeReloaded }) => {
|
|
28
28
|
const [confirmQueryParams, ConfirmQueryParamsDialog] = useQueryParametersDialog();
|
|
29
29
|
const [qd, setQd] = useState();
|
|
30
|
-
const [shouldSearch, setShouldSearch] = useState(false);
|
|
31
|
-
const [isQueryPanelActive, setIsQueryPanelActive] = useState(false);
|
|
32
30
|
const [lastQdParams, setLastQdParams] = useState([]);
|
|
33
31
|
const [dcmtTypesList, setDcmtTypesList] = useState([]);
|
|
34
32
|
const [showSqdForm, setShowSqdForm] = useState(false);
|
|
@@ -44,8 +42,32 @@ const TMSearchQueryPanel = ({ fromDTD, showBackToResultButton, isExpertMode = SD
|
|
|
44
42
|
const deviceType = useDeviceType();
|
|
45
43
|
const isMobile = deviceType === DeviceType.MOBILE;
|
|
46
44
|
let initialMaxItems = deviceType === DeviceType.MOBILE ? 8 : 12;
|
|
45
|
+
const tmPanelRef = useRef(null);
|
|
46
|
+
// Contenitore del form: l'Invio avvia la ricerca solo se il focus si trova al suo interno
|
|
47
|
+
const contentRef = useRef(null);
|
|
48
|
+
// Passando nella vista risultati si prenota il focus, che verrà ripreso al rientro nella ricerca
|
|
49
|
+
const shouldRefocusOnReturnRef = useRef(false);
|
|
47
50
|
const appliedInputMidsRef = useRef(null);
|
|
48
51
|
const pendingMidsRef = useRef(null);
|
|
52
|
+
// Impedisce ricerche sovrapposte (doppio Invio, o Invio mentre la precedente e' ancora in corso)
|
|
53
|
+
const isSearchingRef = useRef(false);
|
|
54
|
+
// Snapshot letti da runSearch al momento dell'esecuzione: evitano di cercare con dati stantii
|
|
55
|
+
const qdRef = useRef(undefined);
|
|
56
|
+
const showAdvancedSearchRef = useRef(false);
|
|
57
|
+
const searchAsyncRef = useRef();
|
|
58
|
+
const reloadMetadataAsyncRef = useRef();
|
|
59
|
+
// Tornando dalla vista risultati il pannello dei metadati di ricerca riprende il focus,
|
|
60
|
+
// così è lui quello evidenziato: prendendo il focus gli altri pannelli ricevono l'onBlur e si disattivano
|
|
61
|
+
useEffect(() => {
|
|
62
|
+
if (!isSearchViewOnScreen) {
|
|
63
|
+
shouldRefocusOnReturnRef.current = true;
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
if (!shouldRefocusOnReturnRef.current)
|
|
67
|
+
return;
|
|
68
|
+
shouldRefocusOnReturnRef.current = false;
|
|
69
|
+
tmPanelRef.current?.focusPanel();
|
|
70
|
+
}, [isSearchViewOnScreen]);
|
|
49
71
|
useEffect(() => {
|
|
50
72
|
if (!SQD)
|
|
51
73
|
return;
|
|
@@ -118,36 +140,6 @@ const TMSearchQueryPanel = ({ fromDTD, showBackToResultButton, isExpertMode = SD
|
|
|
118
140
|
setQd({ ...qd, where: newWhere });
|
|
119
141
|
setShowAllMdWhere(true);
|
|
120
142
|
}, [qd, fromDTD, inputMids]);
|
|
121
|
-
// Eseguire la ricerca quando shouldSearch è true e qd è definito
|
|
122
|
-
useEffect(() => {
|
|
123
|
-
if (shouldSearch && qd) {
|
|
124
|
-
const executeSearch = async () => {
|
|
125
|
-
await searchAsync(qd, showAdvancedSearch);
|
|
126
|
-
setShouldSearch(false); // Resetta il trigger dopo la ricerca
|
|
127
|
-
};
|
|
128
|
-
executeSearch();
|
|
129
|
-
}
|
|
130
|
-
}, [shouldSearch, qd, showAdvancedSearch]);
|
|
131
|
-
// Se il pannello è attivo e non ci sono modali aperti, rimuove il focus e avvia la ricerca
|
|
132
|
-
useEffect(() => {
|
|
133
|
-
const handleKeyDown = (e) => {
|
|
134
|
-
if (isQueryPanelActive && !modalIsOpen) {
|
|
135
|
-
if (e.key === 'Enter') {
|
|
136
|
-
e.preventDefault();
|
|
137
|
-
// Disattiva l'elemento attivo per forzare l'onBlur
|
|
138
|
-
if (document.activeElement instanceof HTMLElement) {
|
|
139
|
-
document.activeElement.blur();
|
|
140
|
-
}
|
|
141
|
-
// Attiva il flag di ricerca. L'useEffect sopra gestirà l'attesa di qd.
|
|
142
|
-
setShouldSearch(true);
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
};
|
|
146
|
-
window.addEventListener('keydown', handleKeyDown);
|
|
147
|
-
return () => {
|
|
148
|
-
window.removeEventListener('keydown', handleKeyDown);
|
|
149
|
-
};
|
|
150
|
-
}, [isQueryPanelActive, modalIsOpen]);
|
|
151
143
|
const setDataAsync = async (sqd) => {
|
|
152
144
|
let newSqd = (sqd?.id == 1) ? sqd : await SavedQueryCacheService.GetAsync(sqd?.id);
|
|
153
145
|
let newQd = SearchEngine.NormalizeQueryDescriptor(newSqd?.qd);
|
|
@@ -167,8 +159,9 @@ const TMSearchQueryPanel = ({ fromDTD, showBackToResultButton, isExpertMode = SD
|
|
|
167
159
|
});
|
|
168
160
|
setQd({ ...qd, where: newWhere, orderBy: [] });
|
|
169
161
|
};
|
|
170
|
-
const searchAsync = async (qdInput, isAdvancedSearch) => {
|
|
171
|
-
|
|
162
|
+
const searchAsync = async (qdInput, isAdvancedSearch, append = false) => {
|
|
163
|
+
if (!append)
|
|
164
|
+
onSearchCompleted?.([], undefined); // reset results (solo in ricerca normale, non in accoda)
|
|
172
165
|
let searchParams = { isAdvancedSearch: isAdvancedSearch, lastQdParams: lastQdParams, confirmQueryParams: confirmQueryParams, setLastQdParamsCallback: setLastQdParams };
|
|
173
166
|
let searchResult = await searchByQdAsync(qdInput, searchParams);
|
|
174
167
|
let dcmtsFound = searchResult?.result?.dcmtsFound ?? 0;
|
|
@@ -178,11 +171,92 @@ const TMSearchQueryPanel = ({ fromDTD, showBackToResultButton, isExpertMode = SD
|
|
|
178
171
|
let results = [];
|
|
179
172
|
if (searchResult?.result)
|
|
180
173
|
results.push(searchResult?.result);
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
174
|
+
onSearchCompleted?.(results, searchResult?.qd, append);
|
|
175
|
+
}
|
|
176
|
+
};
|
|
177
|
+
// Tra l'apertura della ricerca e il click su Ricerca la lista dei metadati del tipo documento può essere
|
|
178
|
+
// cambiata (metadati aggiunti o rimossi lato amministrazione): prima di cercare si rileggono dal server.
|
|
179
|
+
// I valori digitati restano, mentre i filtri sui metadati non più disponibili vengono scartati.
|
|
180
|
+
// Restituisce il qd con cui eseguire la ricerca.
|
|
181
|
+
const reloadMetadataAsync = async (qdInput) => {
|
|
182
|
+
if (!qdInput?.from?.tid)
|
|
183
|
+
return qdInput;
|
|
184
|
+
let dcmtTypes;
|
|
185
|
+
try {
|
|
186
|
+
TMSpinner.show({ description: `${SDKUI_Localizator.Loading} ...`, backgroundColor: 'transparent' });
|
|
187
|
+
dcmtTypes = await getDcmtTypesByQdAsync(qdInput, true);
|
|
188
|
+
}
|
|
189
|
+
finally {
|
|
190
|
+
TMSpinner.hide();
|
|
184
191
|
}
|
|
192
|
+
// Rilettura non riuscita: si cerca con i metadati che si hanno, senza scartare nulla
|
|
193
|
+
if (dcmtTypes.length <= 0)
|
|
194
|
+
return qdInput;
|
|
195
|
+
setDcmtTypesList(dcmtTypes);
|
|
196
|
+
const reloadedFromDTD = dcmtTypes.find(o => o.id === qdInput.from?.tid);
|
|
197
|
+
if (reloadedFromDTD)
|
|
198
|
+
onDcmtTypeReloaded?.(reloadedFromDTD);
|
|
199
|
+
const { qd: newQd, removedCount } = dropUnavailableMetadataFromQd(qdInput, dcmtTypes);
|
|
200
|
+
if (removedCount <= 0)
|
|
201
|
+
return qdInput;
|
|
202
|
+
setQd(newQd);
|
|
203
|
+
return newQd;
|
|
185
204
|
};
|
|
205
|
+
// Allineati a ogni render: runSearch li legge quando esegue, non quando viene creata
|
|
206
|
+
qdRef.current = qd;
|
|
207
|
+
showAdvancedSearchRef.current = showAdvancedSearch;
|
|
208
|
+
searchAsyncRef.current = searchAsync;
|
|
209
|
+
reloadMetadataAsyncRef.current = reloadMetadataAsync;
|
|
210
|
+
// Unico punto di avvio della ricerca: bottone Ricerca, Ricerca e accoda e tasto Invio passano tutti da qui
|
|
211
|
+
const runSearch = useCallback((append) => {
|
|
212
|
+
if (isSearchingRef.current)
|
|
213
|
+
return;
|
|
214
|
+
isSearchingRef.current = true;
|
|
215
|
+
// Toglie il focus per far committare il valore del campo in editing
|
|
216
|
+
if (document.activeElement instanceof HTMLElement)
|
|
217
|
+
document.activeElement.blur();
|
|
218
|
+
// Alcuni editor committano il valore in modo asincrono: si attende un tick prima di leggere il qd definitivo
|
|
219
|
+
setTimeout(async () => {
|
|
220
|
+
try {
|
|
221
|
+
// I metadati si rileggono a ogni ricerca: si cerca sempre sulla lista aggiornata
|
|
222
|
+
const qdToSearch = await reloadMetadataAsyncRef.current?.(qdRef.current) ?? qdRef.current;
|
|
223
|
+
await searchAsyncRef.current?.(qdToSearch, showAdvancedSearchRef.current, append);
|
|
224
|
+
}
|
|
225
|
+
catch (ex) {
|
|
226
|
+
TMExceptionBoxManager.show({ exception: ex });
|
|
227
|
+
}
|
|
228
|
+
finally {
|
|
229
|
+
isSearchingRef.current = false;
|
|
230
|
+
}
|
|
231
|
+
}, 0);
|
|
232
|
+
}, []);
|
|
233
|
+
// I dialoghi (TMModal/chooser) escono da contentRef perche' DevExtreme Popup li rende in un portale su document.body:
|
|
234
|
+
// il controllo di contenimento li esclude gia'. Questi flag coprono il caso in cui il focus sia sul contenitore del pannello.
|
|
235
|
+
// NB: si usano solo flag locali affidabili, non modalIsOpen, che resterebbe a true se un chooser venisse smontato senza onClose.
|
|
236
|
+
const isAnyDialogOpen = showFiltersConfig || showOutputConfig || showMetadataSorterForm || showSqdForm || showDistinctValuesPanel;
|
|
237
|
+
// L'Invio avvia SEMPRE la ricerca quando il focus e' nel form di ricerca (o sul pannello che lo contiene).
|
|
238
|
+
// Il criterio e' il contenimento nel DOM, non uno stato di "pannello attivo" che puo' desincronizzarsi.
|
|
239
|
+
useEffect(() => {
|
|
240
|
+
const handleKeyDown = (e) => {
|
|
241
|
+
if (e.key !== 'Enter' || e.repeat)
|
|
242
|
+
return;
|
|
243
|
+
if (isAnyDialogOpen)
|
|
244
|
+
return;
|
|
245
|
+
const content = contentRef.current;
|
|
246
|
+
const target = e.target;
|
|
247
|
+
if (!content || !target)
|
|
248
|
+
return;
|
|
249
|
+
const isInsideForm = content.contains(target);
|
|
250
|
+
// Al rientro dai risultati il focus e' sul contenitore del pannello, che e' antenato del form
|
|
251
|
+
const isPanelContainer = target !== document.body && target !== document.documentElement && target.contains(content);
|
|
252
|
+
if (!isInsideForm && !isPanelContainer)
|
|
253
|
+
return;
|
|
254
|
+
e.preventDefault();
|
|
255
|
+
runSearch(false);
|
|
256
|
+
};
|
|
257
|
+
window.addEventListener('keydown', handleKeyDown);
|
|
258
|
+
return () => { window.removeEventListener('keydown', handleKeyDown); };
|
|
259
|
+
}, [isAnyDialogOpen, runSearch]);
|
|
186
260
|
const updateIsModalOpen = useCallback((isOpen) => {
|
|
187
261
|
setModalIsOpen(isOpen);
|
|
188
262
|
}, []);
|
|
@@ -209,21 +283,15 @@ const TMSearchQueryPanel = ({ fromDTD, showBackToResultButton, isExpertMode = SD
|
|
|
209
283
|
}
|
|
210
284
|
}
|
|
211
285
|
};
|
|
212
|
-
const handleSearchButtonClick = useCallback(
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
}, []);
|
|
286
|
+
const handleSearchButtonClick = useCallback(() => { runSearch(false); }, [runSearch]);
|
|
287
|
+
const handleSearchAndAppendClick = useCallback(() => { runSearch(true); }, [runSearch]);
|
|
288
|
+
const searchButtonSecondaryActions = useMemo(() => [{
|
|
289
|
+
name: SDKUI_Localizator.SearchAndAppend,
|
|
290
|
+
icon: _jsx(IconSearch, {}),
|
|
291
|
+
onClick: handleSearchAndAppendClick
|
|
292
|
+
}], [handleSearchAndAppendClick]);
|
|
220
293
|
const handleQdChanged = useCallback((newQd) => {
|
|
221
|
-
|
|
222
|
-
setQd(newQd);
|
|
223
|
-
}
|
|
224
|
-
}, []);
|
|
225
|
-
const handlePanelActiveChanged = useCallback((isActive) => {
|
|
226
|
-
setIsQueryPanelActive(isActive);
|
|
294
|
+
setQd(prev => deepCompare(prev, newQd) ? prev : newQd);
|
|
227
295
|
}, []);
|
|
228
296
|
const handleAdvancedMenuClick = useCallback((e) => {
|
|
229
297
|
if (e.button === AdvancedMenuButtons.DistinctValues) {
|
|
@@ -270,7 +338,7 @@ const TMSearchQueryPanel = ({ fromDTD, showBackToResultButton, isExpertMode = SD
|
|
|
270
338
|
}, [qd, fromDTD?.metadata, SQD?.masterTID]);
|
|
271
339
|
const handleCloseOutputConfig = useCallback(() => setShowOutputConfig(false), []);
|
|
272
340
|
const contextMenuItems = useMemo(() => [
|
|
273
|
-
...(showBackToResultButton ? [{ icon: _jsx(IconArrowRight, {}), name:
|
|
341
|
+
...(showBackToResultButton ? [{ icon: _jsx(IconArrowRight, {}), name: SDKUI_Localizator.BackToResult, onClick: () => { onBackToResult?.(); } }] : []),
|
|
274
342
|
{ icon: _jsx(IconAddCircleOutline, {}), name: SDKUI_Localizator.SavedQueryNew, beginGroup: showBackToResultButton, onClick: () => { openSqdForm(FormModes.Create); } },
|
|
275
343
|
{ icon: _jsx(IconEdit, {}), name: SDKUI_Localizator.SavedQueryUpdate, disabled: (SQD && SQD.id == 1), onClick: () => { openSqdForm(FormModes.Update); } },
|
|
276
344
|
{ icon: showAdvancedSearch ? _jsx(IconEasy, {}) : _jsx(IconAdvanced, {}), beginGroup: true, name: showAdvancedSearch ? SDKUI_Localizator.Search_Easy : SDKUI_Localizator.Search_Advanced, onClick: () => { changeAdvancedSearchAsync(!showAdvancedSearch); } },
|
|
@@ -321,10 +389,10 @@ const TMSearchQueryPanel = ({ fromDTD, showBackToResultButton, isExpertMode = SD
|
|
|
321
389
|
return false;
|
|
322
390
|
return qd?.orderBy && qd.orderBy.length > 0;
|
|
323
391
|
}, [showAdvancedSearch, qd?.orderBy]);
|
|
324
|
-
return (_jsxs(_Fragment, { children: [_jsxs(TMPanel, { title: fromDTD?.nameLoc ?? SDKUI_Localizator.Search_Metadata, allowMaximize: allowMaximize, onMaximize: onMaximizePanel, onHeaderDoubleClick: onMaximizePanel, onBack: onBack,
|
|
325
|
-
_jsx(ContextMenu, { items: contextMenuItems, trigger: "left", children: _jsx(TMButton, { btnStyle: 'icon', caption: 'Altro', icon: _jsx(IconMenuVertical, { color: 'white' }), showTooltip: false
|
|
392
|
+
return (_jsxs(_Fragment, { children: [_jsxs(TMPanel, { ref: tmPanelRef, title: fromDTD?.nameLoc ?? SDKUI_Localizator.Search_Metadata, allowMaximize: allowMaximize, onMaximize: onMaximizePanel, onHeaderDoubleClick: onMaximizePanel, onBack: onBack, onRefresh: (!SQD || showSqdForm) ? undefined : onRefreshRequested, toolbar: _jsx(_Fragment, { children: (SQD && !showSqdForm) ?
|
|
393
|
+
_jsx(ContextMenu, { items: contextMenuItems, trigger: "left", children: _jsx(TMButton, { btnStyle: 'icon', caption: 'Altro', icon: _jsx(IconMenuVertical, { color: 'white' }), showTooltip: false }) })
|
|
326
394
|
: _jsx(_Fragment, {}) }), children: [_jsx(ConfirmQueryParamsDialog, {}), SQD
|
|
327
|
-
? _jsxs("div", { onContextMenu: (e) => e.preventDefault(), style: { height: '100%', width: '100%', position: 'relative', display: showSqdForm ? 'none' : 'flex', flexDirection: 'column', gap: 5 }, children: [showAdvancedSearch
|
|
395
|
+
? _jsxs("div", { ref: contentRef, onContextMenu: (e) => e.preventDefault(), style: { height: '100%', width: '100%', position: 'relative', display: showSqdForm ? 'none' : 'flex', flexDirection: 'column', gap: 5 }, children: [showAdvancedSearch
|
|
328
396
|
? _jsx(TMQueryEditor, { formMode: FormModes.Update, showToolbar: false, inputData: qd, validateSelect: true, showApply: false, onQDChanged: handleQdChanged, updateIsModalOpen: updateIsModalOpen })
|
|
329
397
|
: _jsx(TMSearchQueryEditor, { qd: qd, dcmtTypesList: dcmtTypesList, isExpertMode: isExpertMode, showAllMdWhere: showAllMdWhere, onQdChanged: handleQdChanged, onFocusedMetadataChanged: setFocusedTidMid, onAdvancedMenuClick: handleAdvancedMenuClick, updateIsModalOpen: updateIsModalOpen }), shouldShowOutputBadges && qd?.select && qd.select.length > 0 && (_jsxs(StyledSelectBadgesContainer, { children: [_jsxs(StyledSelectLabel, { children: [SDK_Localizator.QuerySelect, ":"] }), _jsx(StyledSelectBadgesWrapper, { children: (() => {
|
|
330
398
|
const selectItems = qd.select ?? [];
|
|
@@ -353,7 +421,7 @@ const TMSearchQueryPanel = ({ fromDTD, showBackToResultButton, isExpertMode = SD
|
|
|
353
421
|
alignItems: 'center',
|
|
354
422
|
gap: '10px',
|
|
355
423
|
width: '100%'
|
|
356
|
-
}, children: [_jsx(TMButton, { btnStyle: 'advanced', icon: _jsx(IconSearch, {}), showTooltip: false, width: '
|
|
424
|
+
}, children: [_jsx(TMButton, { btnStyle: 'advanced', icon: _jsx(IconSearch, {}), showTooltip: false, width: '120px', caption: SDKUI_Localizator.Search, advancedColor: '#4A96D2', onClick: handleSearchButtonClick, secondaryActions: searchButtonSecondaryActions }), _jsx(TMButton, { width: '90px', btnStyle: 'advanced', advancedType: 'primary', showTooltip: false, caption: SDKUI_Localizator.Clear, icon: _jsx(IconClear, {}), advancedColor: 'white', color: 'primaryOutline', onClick: clearFilters }), (!showAdvancedSearch && qd?.where && qd.where.length > initialMaxItems) && (_jsx(TMButton, { width: '120px', btnStyle: isMobile ? 'icon' : 'advanced', advancedColor: TMColors.button_primary, caption: captionText, showTooltip: false, icon: isMobile ? (_jsx("div", { children: _jsx("p", { children: showAllMdWhere ? `-${diff}` : `+${diff}` }) })) : (_jsx("p", { children: showAllMdWhere ? `-${diff}` : `+${diff}` })), onClick: () => setShowAllMdWhere(!showAllMdWhere) }))] }), showFiltersConfig &&
|
|
357
425
|
_jsx(TMMetadataChooserForm, { allowMultipleSelection: true, height: '500px', width: '600px', allowSysMetadata: true, filterMetadata: (o => o.perm?.canSearch === AccessLevels.Yes), qd: qd, selectedIDs: qd?.where?.map((w) => ({ tid: w.tid, mid: w.mid })), onClose: handleCloseFiltersConfig, onChoose: handleChooseFilters }), showOutputConfig &&
|
|
358
426
|
_jsx(TMMetadataOutputForm, { qd: qd, selectedSelectItems: qd?.select, allowSysMetadata: true, filterMetadata: (o => o.perm?.canView === AccessLevels.Yes || o.perm?.canUpdate === AccessLevels.Yes), onClose: handleCloseOutputConfig, onChoose: (selectItems) => {
|
|
359
427
|
setQd({ ...qd, select: selectItems });
|
|
@@ -382,6 +450,33 @@ const TMSearchQueryPanel = ({ fromDTD, showBackToResultButton, isExpertMode = SD
|
|
|
382
450
|
} })] }));
|
|
383
451
|
};
|
|
384
452
|
export default TMSearchQueryPanel;
|
|
453
|
+
/** Scarta dal qd filtri, colonne e ordinamenti sui metadati non più esistenti o non più accessibili, in base
|
|
454
|
+
* alla lista dei metadati appena riletta dal server. I valori digitati su quelli ancora presenti si mantengono. */
|
|
455
|
+
const dropUnavailableMetadataFromQd = (qdInput, dcmtTypes) => {
|
|
456
|
+
const metadataOf = (tid) => dcmtTypes.find(o => o.id === tid)?.metadata;
|
|
457
|
+
// Un tipo documento non riletto non è verificabile: i suoi item si mantengono così come sono.
|
|
458
|
+
// Sui metadati di sistema si verifica solo l'esistenza: i loro permessi non li rendono inutilizzabili.
|
|
459
|
+
const isStillAvailable = (tid, mid, isUsable) => {
|
|
460
|
+
const metadata = metadataOf(tid);
|
|
461
|
+
if (!metadata || metadata.length <= 0 || mid == undefined)
|
|
462
|
+
return true;
|
|
463
|
+
const md = metadata.find(o => o.id === mid);
|
|
464
|
+
if (!md)
|
|
465
|
+
return false;
|
|
466
|
+
return md.isSystem == 1 || isUsable(md);
|
|
467
|
+
};
|
|
468
|
+
const canSearch = (md) => md.perm?.canSearch != AccessLevels.No;
|
|
469
|
+
const canOutput = (md) => !(md.perm?.canView == AccessLevels.No && md.perm?.canUpdate == AccessLevels.No);
|
|
470
|
+
const where = qdInput.where?.filter(o => isStillAvailable(o.tid, o.mid, canSearch)) ?? [];
|
|
471
|
+
const select = qdInput.select?.filter(o => isStillAvailable(o.tid, o.mid, canOutput)) ?? [];
|
|
472
|
+
const orderBy = qdInput.orderBy?.filter(o => isStillAvailable(o.tid, o.mid, canOutput)) ?? [];
|
|
473
|
+
const removedCount = ((qdInput.where?.length ?? 0) - where.length)
|
|
474
|
+
+ ((qdInput.select?.length ?? 0) - select.length)
|
|
475
|
+
+ ((qdInput.orderBy?.length ?? 0) - orderBy.length);
|
|
476
|
+
let qd = new QueryDescriptor();
|
|
477
|
+
qd.init({ ...qdInput, where: where, select: select, orderBy: orderBy });
|
|
478
|
+
return { qd: qd, removedCount: removedCount };
|
|
479
|
+
};
|
|
385
480
|
const searchByQdAsync = async (qdInput, searchParams) => {
|
|
386
481
|
let result;
|
|
387
482
|
let qdSearch;
|
|
@@ -420,7 +515,6 @@ export const refreshLastSearch = async (qd) => {
|
|
|
420
515
|
return;
|
|
421
516
|
let searchResults = [];
|
|
422
517
|
try {
|
|
423
|
-
TMSpinner.show({ description: `${SDKUI_Localizator.Search} ...`, backgroundColor: 'transparent' });
|
|
424
518
|
let result = await SDK_Globals.tmSession?.NewSearchEngine().SearchByIDAsync(qd);
|
|
425
519
|
let dcmtsFound = result?.dcmtsFound ?? 0;
|
|
426
520
|
if (dcmtsFound <= 0)
|
|
@@ -431,9 +525,6 @@ export const refreshLastSearch = async (qd) => {
|
|
|
431
525
|
catch (ex) {
|
|
432
526
|
TMExceptionBoxManager.show({ title: SDKUI_Localizator.Search, exception: ex });
|
|
433
527
|
}
|
|
434
|
-
finally {
|
|
435
|
-
TMSpinner.hide();
|
|
436
|
-
}
|
|
437
528
|
return searchResults;
|
|
438
529
|
};
|
|
439
530
|
// =============================================================================
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { DcmtTypeDescriptor, HomeBlogPost, ObjectRef, SearchResultDescriptor, TaskDescriptor, WorkingGroupDescriptor } from '@topconsultnpm/sdk-ts';
|
|
3
3
|
import { IntesiCertificateData } from '../../../helper';
|
|
4
|
+
import { ITMCounterContainerProps } from '../../base/TMCounterContainer';
|
|
4
5
|
import { DcmtInfo, IGraphometricManagerProp, SearchResultContext, TaskContext } from '../../../ts';
|
|
5
6
|
import { TMSearchResultFloatingActionConfig } from './TMSearchResultFloatingActionButton';
|
|
6
7
|
export declare const getSearchResultCountersSingleCategory: (searchResults: SearchResultDescriptor[]) => string;
|
|
@@ -22,9 +23,16 @@ interface ITMSearchResultProps {
|
|
|
22
23
|
openDcmtFormAsModal?: boolean;
|
|
23
24
|
showSearchResultSidebar?: boolean;
|
|
24
25
|
showDcmtFormSidebar?: boolean;
|
|
26
|
+
/** Mostra accanto alla griglia il selettore dei tipi documento trovati:
|
|
27
|
+
* su desktop sono affiancati (30/70),
|
|
28
|
+
* su mobile si naviga a step tra selettore e risultati.
|
|
29
|
+
* Se il risultato ha un solo tipo documento il selettore resta chiuso
|
|
30
|
+
* e lo spazio va tutto alla griglia, riapribile dal menu "Altro" */
|
|
25
31
|
showSelector?: boolean;
|
|
26
32
|
showToolbarHeader?: boolean;
|
|
27
33
|
showBackButton?: boolean;
|
|
34
|
+
backCaption?: string;
|
|
35
|
+
showToolbarCloseButton?: boolean;
|
|
28
36
|
disableAccordionIfSingleCategory?: boolean;
|
|
29
37
|
enablePinIcons?: boolean;
|
|
30
38
|
editPdfForm?: boolean;
|
|
@@ -33,10 +41,23 @@ interface ITMSearchResultProps {
|
|
|
33
41
|
showToppyDraggableHelpCenter?: boolean;
|
|
34
42
|
toppyHelpCenterUsePortal?: boolean;
|
|
35
43
|
showNoDcmtFoundMessage?: boolean;
|
|
44
|
+
showCounterConfig?: boolean;
|
|
45
|
+
/** Mostra in testa alla griglia la colonna con le azioni di riga (modifica, duplica, cancella) */
|
|
46
|
+
showActionsColumn?: boolean;
|
|
47
|
+
/** Rende compatto il paginatore della griglia: utile quando il risultato è dentro pannelli bassi (es. accordion) */
|
|
48
|
+
compactPager?: boolean;
|
|
49
|
+
/** Sostituisce l'azione "duplica" della colonna di riga, che passa qui la riga cliccata: il menu contestuale resta invariato. I valori di riga della griglia sono stringhe */
|
|
50
|
+
onRowDuplicateRequest?: (rowData: {
|
|
51
|
+
TID?: number | string;
|
|
52
|
+
DID?: number | string;
|
|
53
|
+
FILEEXT?: string;
|
|
54
|
+
}) => void;
|
|
55
|
+
counterConfig?: ITMCounterContainerProps;
|
|
36
56
|
onClose?: () => void;
|
|
37
57
|
openInOffice?: (selectedDcmtsOrFocused: Array<DcmtInfo>) => Promise<void>;
|
|
38
58
|
onWFOperationCompleted?: () => Promise<void>;
|
|
39
59
|
onSelectedTIDChanged?: (TID: number) => void;
|
|
60
|
+
onSelectedTIDCleared?: () => void;
|
|
40
61
|
onRefreshSearchAsyncDatagrid?: () => Promise<void>;
|
|
41
62
|
onRefreshAfterAddDcmtToFavs?: () => void;
|
|
42
63
|
onFileOpened?: (blob: File | undefined) => void;
|