@topconsultnpm/sdkui-react 6.22.0-dev1.3 → 6.22.0-dev1.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/components/base/TMModal.js +1 -1
- package/lib/components/choosers/TMDynDataListItemChooser.d.ts +2 -0
- package/lib/components/choosers/TMDynDataListItemChooser.js +4 -6
- package/lib/components/editors/TMTextBox.js +10 -5
- package/lib/components/features/documents/TMDcmtForm.d.ts +2 -1
- package/lib/components/features/documents/TMDcmtForm.js +52 -5
- package/lib/components/features/documents/TMMergeToPdfForm.js +1 -1
- package/lib/components/features/search/TMSearch.d.ts +2 -1
- package/lib/components/features/search/TMSearch.js +2 -2
- package/lib/components/features/search/TMSearchResult.d.ts +2 -1
- package/lib/components/features/search/TMSearchResult.js +3 -2
- package/lib/components/features/search/TMSignatureInfoContent.d.ts +4 -2
- package/lib/components/features/search/TMSignatureInfoContent.js +373 -79
- package/lib/components/forms/Login/TMLoginForm.d.ts +2 -0
- package/lib/components/forms/Login/TMLoginForm.js +17 -3
- package/lib/components/forms/Login/TextBox.d.ts +3 -0
- package/lib/components/forms/Login/TextBox.js +2 -2
- package/lib/components/pages/TMPage.js +3 -1
- package/lib/components/query/TMQueryEditor.js +1 -1
- package/lib/helper/SDKUI_Globals.js +22 -2
- package/lib/helper/grafometricSignaturesCache.d.ts +45 -0
- package/lib/helper/grafometricSignaturesCache.js +56 -0
- package/lib/helper/index.d.ts +1 -0
- package/lib/helper/index.js +1 -0
- package/lib/hooks/useDocumentOperations.d.ts +2 -1
- package/lib/hooks/useDocumentOperations.js +15 -15
- package/lib/hooks/usePreventFileDrop.js +14 -3
- package/lib/ts/graphometricTypes.d.ts +62 -0
- package/lib/ts/graphometricTypes.js +1 -0
- package/lib/ts/index.d.ts +1 -0
- package/lib/ts/index.js +1 -0
- package/package.json +66 -61
|
@@ -71,7 +71,7 @@ const IconButton = styled.div `
|
|
|
71
71
|
align-items: center;
|
|
72
72
|
cursor: ${props => !props.$disabled ? 'pointer' : 'default'};
|
|
73
73
|
`;
|
|
74
|
-
const TextBox = forwardRef(({ label, type, additionalIcons = [], cursor = 'text', disabled, icon, onClick, onKeyDown, onValueChanged, placeHolder, readOnly, showSuccess, validationItems = [], value }, ref) => {
|
|
74
|
+
const TextBox = forwardRef(({ label, type, additionalIcons = [], cursor = 'text', disabled, icon, onClick, onKeyDown, onValueChanged, placeHolder, readOnly, showSuccess, validationItems = [], value, name, id, autoComplete }, ref) => {
|
|
75
75
|
const [showPassword, setShowPassword] = useState(false);
|
|
76
76
|
const [isFocused, setIsFocused] = useState(false);
|
|
77
77
|
const mainValidation = useMemo(() => {
|
|
@@ -106,6 +106,6 @@ const TextBox = forwardRef(({ label, type, additionalIcons = [], cursor = 'text'
|
|
|
106
106
|
}
|
|
107
107
|
return color;
|
|
108
108
|
}, [mainValidation]);
|
|
109
|
-
return (_jsxs(Container, { children: [label && _jsx(Label, { "$color": borderColor, children: label }), _jsxs(InputContainer, { "$borderColor": borderColor, "$borderThickness": borderThickness, "$focused": isFocused, "$disabled": disabled, children: [icon && _jsx(IconWrapper, { "$color": validationItems.length > 0 ? borderColor : TMColors.primary, children: icon }), _jsx(Input, { ref: ref, onKeyDown: onKeyDown, onClick: onClick, onFocus: () => setIsFocused(true), onBlur: () => setIsFocused(false), type: type === "password" && showPassword ? "text" : type, value: value, onChange: (e) => onValueChanged?.(e.target.value), placeholder: placeHolder, "$readOnly": readOnly, disabled: disabled, "$color": fontColor, "$cursor": !disabled ? cursor : 'default' }), _jsxs(IconsRow, { children: [additionalIcons.map((iconItem, index) => (iconItem.visible !== false && _jsx(TMTooltip, { content: iconItem.tooltip, children: _jsxs(IconButton, { "$disabled": disabled, "$color": iconItem.color ?? '#313131', onClick: iconItem.onClick, children: [" ", iconItem.icon, " "] }) }, index * 2))), type === "password" && (_jsx(IconButton, { "$disabled": disabled, "$color": '#313131', onClick: () => setShowPassword(!showPassword), children: showPassword ? _jsx(IconShow, {}) : _jsx(IconHide, {}) }))] })] }), _jsx(ValidationMessageContainer, { children: validationMessages.map((val, index) => (_jsx(ValidationMessage, { "$color": val.color, children: val.message }, index * 2))) })] }));
|
|
109
|
+
return (_jsxs(Container, { children: [label && _jsx(Label, { "$color": borderColor, children: label }), _jsxs(InputContainer, { "$borderColor": borderColor, "$borderThickness": borderThickness, "$focused": isFocused, "$disabled": disabled, children: [icon && _jsx(IconWrapper, { "$color": validationItems.length > 0 ? borderColor : TMColors.primary, children: icon }), _jsx(Input, { ref: ref, name: name, id: id, autoComplete: autoComplete, onKeyDown: onKeyDown, onClick: onClick, onFocus: () => setIsFocused(true), onBlur: () => setIsFocused(false), type: type === "password" && showPassword ? "text" : type, value: value, onChange: (e) => onValueChanged?.(e.target.value), placeholder: placeHolder, "$readOnly": readOnly, disabled: disabled, "$color": fontColor, "$cursor": !disabled ? cursor : 'default' }), _jsxs(IconsRow, { children: [additionalIcons.map((iconItem, index) => (iconItem.visible !== false && _jsx(TMTooltip, { content: iconItem.tooltip, children: _jsxs(IconButton, { "$disabled": disabled, "$color": iconItem.color ?? '#313131', onClick: iconItem.onClick, children: [" ", iconItem.icon, " "] }) }, index * 2))), type === "password" && (_jsx(IconButton, { "$disabled": disabled, "$color": '#313131', onClick: () => setShowPassword(!showPassword), children: showPassword ? _jsx(IconShow, {}) : _jsx(IconHide, {}) }))] })] }), _jsx(ValidationMessageContainer, { children: validationMessages.map((val, index) => (_jsx(ValidationMessage, { "$color": val.color, children: val.message }, index * 2))) })] }));
|
|
110
110
|
});
|
|
111
111
|
export default TextBox;
|
|
@@ -219,7 +219,9 @@ const TMPage = ({ id, objClass = ObjectClasses.None, listDisabled = false, lastR
|
|
|
219
219
|
setShowList(false);
|
|
220
220
|
}, showColumnLines: Number(SDKUI_Globals.userSettings?.themeSettings.gridSettings.showColumnLines) === 1, showRowLines: Number(SDKUI_Globals.userSettings?.themeSettings.gridSettings.showRowLines) === 1, onSelectionChanged: (e) => { setSelectedItems(e.selectedRowsData); onSelectionChanged?.(e.selectedRowsData); }, children: [_jsx(GroupPanel, { visible: !!(deviceType !== DeviceType.MOBILE && showAllColumns) }), _jsx(SearchPanel, { visible: false }), _jsx(Grouping, { autoExpandAll: false }), _jsx(HeaderFilter, { visible: true }), _jsx(Selection, { mode: "multiple", showCheckBoxesMode: "onClick", selectAllMode: 'allPages' }), _jsx(Scrolling, { mode: "standard", useNative: Number(SDKUI_Globals.userSettings?.themeSettings.gridSettings.useNativeScrollbar) === 1 }), _jsx(Paging, { pageSize: 25 }), _jsx(Pager, { visible: true, showInfo: true, showNavigationButtons: true }), _jsx(LoadPanel, { enabled: true }), _jsx(Column, { width: 20, cellRender: cellRenderObjectIcon }), _jsx(Column, { width: 'auto', visible: showId, dataField: "id", caption: "ID" }), _jsx(Column, { width: 250, dataField: "name", caption: SDKUI_Localizator.Name, sortOrder: "asc" }), objClass == ObjectClasses.User ?
|
|
221
221
|
_jsxs(_Fragment, { children: [_jsx(Column, { width: 'auto', dataField: "type", caption: SDKUI_Localizator.Type }), _jsx(Column, { width: 'auto', dataField: "fn", caption: SDKUI_Localizator.User_FirstName }), _jsx(Column, { width: 'auto', dataField: "ln", caption: SDKUI_Localizator.User_LastName })] })
|
|
222
|
-
: _jsx(_Fragment, {}), _jsx(Column, { width: 250, visible: objClass == ObjectClasses.User ? true : showAllColumns, dataField: "description", caption: SDKUI_Localizator.Description }),
|
|
222
|
+
: _jsx(_Fragment, {}), _jsx(Column, { width: 250, visible: objClass == ObjectClasses.User ? true : showAllColumns, dataField: "description", caption: SDKUI_Localizator.Description }), objClass == ObjectClasses.Process ?
|
|
223
|
+
_jsx(Column, { width: 'auto', visible: showAllColumns, dataField: "orchPlatforms", caption: 'Piattaforma di orchestrazione' })
|
|
224
|
+
: _jsx(_Fragment, {}), customColumns?.map((item, index) => { return React.cloneElement(item, { key: index, visible: showAllColumns }); }), _jsx(Column, { width: 'auto', visible: showAllColumns, dataField: "ownerID", caption: SDKUI_Localizator.OwnerID }), _jsx(Column, { width: 'auto', visible: showAllColumns, dataField: "ownerName", caption: SDKUI_Localizator.OwnerName }), _jsx(Column, { width: 'auto', dataType: "date", format: Globalization.getDateDisplayFormat(), visible: showAllColumns, dataField: "creationTime", caption: SDKUI_Localizator.CreationTime }), _jsx(Column, { width: 'auto', dataType: "date", format: Globalization.getDateDisplayFormat(), visible: showAllColumns, dataField: "lastUpdateTime", caption: SDKUI_Localizator.LastUpdateTime })] })] }), detailInsteadOfContent ??
|
|
223
225
|
_jsx(TMLayoutItem, { children: selectedItems.length == 1 || formMode == FormModes.Create || formMode == FormModes.Duplicate ?
|
|
224
226
|
_jsx(TMToolbarCard, { onBack: deviceType === DeviceType.MOBILE ? () => setShowList(true) : undefined, title: calcSaveFormTitle(objName, formMode, selectedItems.length == 0 ? -1 : selectedItems[0].id, detailTitlePathKeys), children: getDetailFormWithProps() })
|
|
225
227
|
:
|
|
@@ -986,7 +986,7 @@ const TMQdWhereItemValue = ({ whereItem, index, queryParamsDynDataList, onlyEdit
|
|
|
986
986
|
_jsxs(StyledDivHorizontal, { children: [(editingMode == EditingModes.Chooser) &&
|
|
987
987
|
_jsxs(_Fragment, { children: [showDataListChooseForm && !isEditableList &&
|
|
988
988
|
_jsx(TMDataListItemChooserForm, { height: '500px', width: '450px', allowMultipleSelection: whereItem.operator == QueryOperators.In || whereItem.operator == QueryOperators.NotIn, dataListId: md?.dataListID, selectedIDs: whereItem.value1?.split(',').map((item) => !item.startsWith("'") ? item : item.slice(1, -1)) ?? [], onClose: () => setShowDataListChooseForm(false), onChoose: (IDs) => { IDs && normalizeValue(IDs.length == 1 ? IDs[0] : IDs.map((item) => `${item}`).join(","), true); } }), showDynDataListChooseForm && !isEditableList &&
|
|
989
|
-
_jsx(TMDynDataListItemChooserForm, { TID: whereItem.tid, MID: md?.id, height: '500px', width: '450px', dynDL: dynDl, allowMultipleSelection: whereItem.operator == QueryOperators.In || whereItem.operator == QueryOperators.NotIn, searchResult: dataSource, selectedIDs: [whereItem.value1], onClose: () => setShowDynDataListChooseForm(false), onChoose: (IDs) => {
|
|
989
|
+
_jsx(TMDynDataListItemChooserForm, { TID: whereItem.tid, MID: md?.id, height: '500px', width: '450px', dynDL: dynDl, allowMultipleSelection: whereItem.operator == QueryOperators.In || whereItem.operator == QueryOperators.NotIn, searchResult: dataSource, selectedIDs: [whereItem.value1], queryParamsDynDataList: queryParamsDynDataList, onClose: () => setShowDynDataListChooseForm(false), onChoose: (IDs) => {
|
|
990
990
|
IDs && normalizeValue(IDs.length == 1 ? IDs[0] : IDs.map((item) => `${item}`).join(","), true);
|
|
991
991
|
if (!dynDl)
|
|
992
992
|
return;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { InvoiceRetrieveFormats, LocalStorageService, OrderRetrieveFormats } from "@topconsultnpm/sdk-ts";
|
|
2
2
|
import { FontSize } from "../utils/theme";
|
|
3
3
|
import { SDKUI_Localizator } from "./SDKUI_Localizator";
|
|
4
|
+
import { removeGrafometricSignatures, clearGrafometricSignaturesCache, hasGrafometricSignatures } from "./grafometricSignaturesCache";
|
|
4
5
|
export class DocumentDownloadSettings {
|
|
5
6
|
constructor() {
|
|
6
7
|
this.exportMode = 'copy';
|
|
@@ -18,8 +19,27 @@ export class DocumentDownloadSettings {
|
|
|
18
19
|
export const dcmtsFileCacheDownload = new Map();
|
|
19
20
|
export const dcmtsFileCachePreview = new Map();
|
|
20
21
|
export const CACHE_SIZE_LIMIT = 10;
|
|
21
|
-
export const clearDcmtsFileCache = () => {
|
|
22
|
-
|
|
22
|
+
export const clearDcmtsFileCache = () => {
|
|
23
|
+
dcmtsFileCachePreview.clear();
|
|
24
|
+
dcmtsFileCacheDownload.clear();
|
|
25
|
+
clearGrafometricSignaturesCache(); // Svuota anche la cache delle firme grafometriche
|
|
26
|
+
};
|
|
27
|
+
export const removeDcmtsFileCache = (key) => {
|
|
28
|
+
if (dcmtsFileCachePreview.has(key))
|
|
29
|
+
dcmtsFileCachePreview.delete(key);
|
|
30
|
+
if (dcmtsFileCacheDownload.has(key))
|
|
31
|
+
dcmtsFileCacheDownload.delete(key);
|
|
32
|
+
// Invalida anche la cache delle firme grafometriche quando il file viene rimosso
|
|
33
|
+
// La chiave è nel formato "TID-DID"
|
|
34
|
+
const parts = key.split('-');
|
|
35
|
+
if (parts.length === 2) {
|
|
36
|
+
const tid = parseInt(parts[0], 10);
|
|
37
|
+
const did = parseInt(parts[1], 10);
|
|
38
|
+
if (!isNaN(tid) && !isNaN(did) && hasGrafometricSignatures(tid, did)) {
|
|
39
|
+
removeGrafometricSignatures(tid, did);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
};
|
|
23
43
|
export const isDcmtFileInCache = (key) => dcmtsFileCachePreview.has(key);
|
|
24
44
|
export const DEFAULT_CHECK_IN_OUT_FOLDER = "";
|
|
25
45
|
export class UserSettings {
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { IWacomBiometricData } from "../ts";
|
|
2
|
+
/** Informazioni su una firma grafometrica estratta dal PDF con dati biometrici */
|
|
3
|
+
export interface ExtractedGrafometricSignature {
|
|
4
|
+
biometricData: IWacomBiometricData;
|
|
5
|
+
/** Dati biometrici originali in Base64 (file FSS) */
|
|
6
|
+
originalDataBase64?: string;
|
|
7
|
+
/** Nome file originale dell'attachment */
|
|
8
|
+
originalFileName?: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Recupera le firme grafometriche dalla cache
|
|
12
|
+
* @param tid - TID del documento
|
|
13
|
+
* @param did - DID del documento
|
|
14
|
+
* @returns Le firme grafometriche se presenti in cache, undefined altrimenti
|
|
15
|
+
*/
|
|
16
|
+
export declare const getGrafometricSignatures: (tid: number, did: number) => ExtractedGrafometricSignature[] | undefined;
|
|
17
|
+
/**
|
|
18
|
+
* Salva le firme grafometriche nella cache
|
|
19
|
+
* @param tid - TID del documento
|
|
20
|
+
* @param did - DID del documento
|
|
21
|
+
* @param signatures - Array delle firme grafometriche da salvare
|
|
22
|
+
*/
|
|
23
|
+
export declare const putGrafometricSignatures: (tid: number, did: number, signatures: ExtractedGrafometricSignature[]) => void;
|
|
24
|
+
/**
|
|
25
|
+
* Rimuove le firme grafometriche di un documento specifico dalla cache
|
|
26
|
+
* @param tid - TID del documento
|
|
27
|
+
* @param did - DID del documento
|
|
28
|
+
* @returns true se l'elemento è stato rimosso, false se non esisteva
|
|
29
|
+
*/
|
|
30
|
+
export declare const removeGrafometricSignatures: (tid: number, did: number) => boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Verifica se le firme grafometriche di un documento sono in cache
|
|
33
|
+
* @param tid - TID del documento
|
|
34
|
+
* @param did - DID del documento
|
|
35
|
+
* @returns true se presenti in cache, false altrimenti
|
|
36
|
+
*/
|
|
37
|
+
export declare const hasGrafometricSignatures: (tid: number, did: number) => boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Svuota completamente la cache delle firme grafometriche
|
|
40
|
+
*/
|
|
41
|
+
export declare const clearGrafometricSignaturesCache: () => void;
|
|
42
|
+
/**
|
|
43
|
+
* Restituisce il numero di documenti in cache
|
|
44
|
+
*/
|
|
45
|
+
export declare const getGrafometricSignaturesCacheSize: () => number;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/** Genera una chiave stringa dalla coppia TID/DID */
|
|
2
|
+
const generateKey = (tid, did) => `${tid}_${did}`;
|
|
3
|
+
/** Cache locale per le firme grafometriche */
|
|
4
|
+
const grafometricSignaturesCache = new Map();
|
|
5
|
+
/**
|
|
6
|
+
* Recupera le firme grafometriche dalla cache
|
|
7
|
+
* @param tid - TID del documento
|
|
8
|
+
* @param did - DID del documento
|
|
9
|
+
* @returns Le firme grafometriche se presenti in cache, undefined altrimenti
|
|
10
|
+
*/
|
|
11
|
+
export const getGrafometricSignatures = (tid, did) => {
|
|
12
|
+
const key = generateKey(tid, did);
|
|
13
|
+
return grafometricSignaturesCache.get(key);
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Salva le firme grafometriche nella cache
|
|
17
|
+
* @param tid - TID del documento
|
|
18
|
+
* @param did - DID del documento
|
|
19
|
+
* @param signatures - Array delle firme grafometriche da salvare
|
|
20
|
+
*/
|
|
21
|
+
export const putGrafometricSignatures = (tid, did, signatures) => {
|
|
22
|
+
const key = generateKey(tid, did);
|
|
23
|
+
grafometricSignaturesCache.set(key, signatures);
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Rimuove le firme grafometriche di un documento specifico dalla cache
|
|
27
|
+
* @param tid - TID del documento
|
|
28
|
+
* @param did - DID del documento
|
|
29
|
+
* @returns true se l'elemento è stato rimosso, false se non esisteva
|
|
30
|
+
*/
|
|
31
|
+
export const removeGrafometricSignatures = (tid, did) => {
|
|
32
|
+
const key = generateKey(tid, did);
|
|
33
|
+
return grafometricSignaturesCache.delete(key);
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Verifica se le firme grafometriche di un documento sono in cache
|
|
37
|
+
* @param tid - TID del documento
|
|
38
|
+
* @param did - DID del documento
|
|
39
|
+
* @returns true se presenti in cache, false altrimenti
|
|
40
|
+
*/
|
|
41
|
+
export const hasGrafometricSignatures = (tid, did) => {
|
|
42
|
+
const key = generateKey(tid, did);
|
|
43
|
+
return grafometricSignaturesCache.has(key);
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Svuota completamente la cache delle firme grafometriche
|
|
47
|
+
*/
|
|
48
|
+
export const clearGrafometricSignaturesCache = () => {
|
|
49
|
+
grafometricSignaturesCache.clear();
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* Restituisce il numero di documenti in cache
|
|
53
|
+
*/
|
|
54
|
+
export const getGrafometricSignaturesCacheSize = () => {
|
|
55
|
+
return grafometricSignaturesCache.size;
|
|
56
|
+
};
|
package/lib/helper/index.d.ts
CHANGED
package/lib/helper/index.js
CHANGED
|
@@ -2,7 +2,7 @@ import React, { RefObject } from "react";
|
|
|
2
2
|
import { DcmtTypeDescriptor, FileFormats, HomeBlogPost, LayoutDescriptor, LayoutModes, ObjectRef, SearchResultDescriptor, TaskDescriptor, UserDescriptor, WorkingGroupDescriptor } from "@topconsultnpm/sdk-ts";
|
|
3
3
|
import { IColumnProps } from "devextreme-react/cjs/data-grid";
|
|
4
4
|
import { TMContextMenuItemProps } from '../components/NewComponents/ContextMenu/types';
|
|
5
|
-
import { DcmtInfo, MetadataValueDescriptorEx, SearchResultContext, TaskContext } from "../ts";
|
|
5
|
+
import { DcmtInfo, MetadataValueDescriptorEx, SearchResultContext, TaskContext, IGraphometricManagerProp } from "../ts";
|
|
6
6
|
import { UseCheckInOutOperationsReturn } from "./useCheckInOutOperations";
|
|
7
7
|
import { UseDcmtOperationsReturn } from "./useDcmtOperations";
|
|
8
8
|
import { UseRelatedDocumentsReturn } from "./useRelatedDocuments";
|
|
@@ -62,6 +62,7 @@ export interface UIConfigProps {
|
|
|
62
62
|
showToppyDraggableHelpCenter?: boolean;
|
|
63
63
|
toppyHelpCenterUsePortal?: boolean;
|
|
64
64
|
inputDcmtFormLayoutMode?: LayoutModes;
|
|
65
|
+
graphometricManager?: IGraphometricManagerProp;
|
|
65
66
|
}
|
|
66
67
|
export interface TasksProps {
|
|
67
68
|
allTasks?: Array<TaskDescriptor>;
|
|
@@ -85,7 +85,7 @@ export const useDocumentOperations = (props) => {
|
|
|
85
85
|
const { dataColumns, dataSource, selectedRowKeys, } = exportData ?? {};
|
|
86
86
|
const { visibleItems = [], onRefreshSearchAsyncDatagrid, onRefreshDataRowsAsync, refreshFocusedDataRowAsync, onRefreshBlogDatagrid, onRefreshPreviewDatagrid, refreshOperationsTrigger = 0, onRefreshOperationsDatagrid, } = datagridUtility ?? {};
|
|
87
87
|
const { approvalVID, dcmtDataRowForCicoStatus, selectedDcmtSearchResultRelations, dcmtTIDHasDetailRelations = false, dcmtTIDHasMasterRelations = false, updateCurrentDcmt, onCloseDcmtForm, onRefreshBlogForm, onRefreshPreviewForm, taskFormDialogComponent, s4TViewerDialogComponent } = dcmtUtility ?? {};
|
|
88
|
-
const { floatingBarContainerRef, customButtonsLayout, workingGroupContext, openS4TViewer = false, openDcmtFormAsModal = false, showDcmtFormSidebar = true, allowFloatingBar = true, enablePinIcons = true, allowRelations = true, showTodoDcmtForm = false, showToppyDraggableHelpCenter = true, toppyHelpCenterUsePortal = false, editPdfForm = false, inputDcmtFormLayoutMode = LayoutModes.Update, } = uiConfig;
|
|
88
|
+
const { floatingBarContainerRef, customButtonsLayout, workingGroupContext, openS4TViewer = false, openDcmtFormAsModal = false, showDcmtFormSidebar = true, allowFloatingBar = true, enablePinIcons = true, allowRelations = true, showTodoDcmtForm = false, showToppyDraggableHelpCenter = true, toppyHelpCenterUsePortal = false, editPdfForm = false, inputDcmtFormLayoutMode = LayoutModes.Update, graphometricManager, } = uiConfig;
|
|
89
89
|
const { allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTaskCallback, editTaskCallback } = tasks;
|
|
90
90
|
const {
|
|
91
91
|
// Refresh operations (data consistency)
|
|
@@ -175,6 +175,9 @@ export const useDocumentOperations = (props) => {
|
|
|
175
175
|
const openMasterDcmtsModalHandler = (value) => { setIsOpenMasterModal(value); };
|
|
176
176
|
// State to control whether the export form (for exporting to Excel/CSV/txt and others) should be shown
|
|
177
177
|
const [showExportForm, setShowExportForm] = useState(false);
|
|
178
|
+
// State to control signature info modal
|
|
179
|
+
const [showSignatureInfoModal, setShowSignatureInfoModal] = useState(false);
|
|
180
|
+
const [signatureInfoDcmt, setSignatureInfoDcmt] = useState(undefined);
|
|
178
181
|
const updateShowApprovePopup = (value) => {
|
|
179
182
|
setShowApprovePopup(value);
|
|
180
183
|
};
|
|
@@ -243,14 +246,8 @@ export const useDocumentOperations = (props) => {
|
|
|
243
246
|
});
|
|
244
247
|
return;
|
|
245
248
|
}
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
buttons: [ButtonNames.OK],
|
|
249
|
-
showToppy: false,
|
|
250
|
-
resizable: true,
|
|
251
|
-
initialWidth: !isMobile ? '700px' : undefined,
|
|
252
|
-
message: _jsx(TMSignatureInfoContent, { inputDcmt: inputDcmts[0] })
|
|
253
|
-
});
|
|
249
|
+
setSignatureInfoDcmt(inputDcmts[0]);
|
|
250
|
+
setShowSignatureInfoModal(true);
|
|
254
251
|
}
|
|
255
252
|
catch (error) {
|
|
256
253
|
console.error(error);
|
|
@@ -552,8 +549,8 @@ export const useDocumentOperations = (props) => {
|
|
|
552
549
|
if (!currentDcmt)
|
|
553
550
|
return;
|
|
554
551
|
const cacheKey = `${currentDcmt.TID}-${currentDcmt.DID}`;
|
|
555
|
-
|
|
556
|
-
|
|
552
|
+
// Invalida sempre la cache (file preview/download e firme grafometriche)
|
|
553
|
+
removeDcmtsFileCache(cacheKey);
|
|
557
554
|
await onRefreshPreviewCallback();
|
|
558
555
|
await onRefreshDataRowsAsync?.();
|
|
559
556
|
};
|
|
@@ -912,7 +909,7 @@ export const useDocumentOperations = (props) => {
|
|
|
912
909
|
name: SDKUI_Localizator.ArchiveDetailDocument,
|
|
913
910
|
operationType: 'multiRow',
|
|
914
911
|
disabled: canArchiveDetailRelation !== true,
|
|
915
|
-
onClick: async () => await archiveDetailDocuments
|
|
912
|
+
onClick: async () => await archiveDetailDocuments(selectedDcmtInfos?.[0]?.TID)
|
|
916
913
|
},
|
|
917
914
|
{
|
|
918
915
|
id: 'rel-mst',
|
|
@@ -1383,7 +1380,7 @@ export const useDocumentOperations = (props) => {
|
|
|
1383
1380
|
refreshFocusedDataRowAsync,
|
|
1384
1381
|
onRefreshBlogDatagrid,
|
|
1385
1382
|
onRefreshPreviewDatagrid
|
|
1386
|
-
}, fetchRemoteCertificates: fetchRemoteCertificates })) }), (showHistory && dtd && selectedDcmtInfos.length > 0) && _jsx(TMViewHistoryDcmt, { fromDTD: dtd, deviceType: deviceType, inputDcmt: selectedDcmtInfos[0], onClose: hideHistoryCallback, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers }), (commentFormState.show && selectedDcmtInfos.length > 0) && _jsx(TMBlogCommentForm, { context: { engine: 'SearchEngine', object: { tid: selectedDcmtInfos[0].TID, did: selectedDcmtInfos[0].DID } }, onClose: hideCommentFormCallback, refreshCallback: onRefreshBlog, participants: [], showAttachmentsSection: true, allArchivedDocumentsFileItems: convertSearchResultDescriptorToFileItems(currentSearchResults ?? []), isCommentRequired: commentFormState.isRequired, removeAndEditAttachment: commentFormState.removeAndEditAttachment, selectedAttachmentDid: [Number(selectedDcmtInfos[0].DID)] }), (showCheckoutInformationForm && dtd && selectedDcmtInfos.length > 0) &&
|
|
1383
|
+
}, fetchRemoteCertificates: fetchRemoteCertificates, graphometricManager: graphometricManager })) }), (showHistory && dtd && selectedDcmtInfos.length > 0) && _jsx(TMViewHistoryDcmt, { fromDTD: dtd, deviceType: deviceType, inputDcmt: selectedDcmtInfos[0], onClose: hideHistoryCallback, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers }), (commentFormState.show && selectedDcmtInfos.length > 0) && _jsx(TMBlogCommentForm, { context: { engine: 'SearchEngine', object: { tid: selectedDcmtInfos[0].TID, did: selectedDcmtInfos[0].DID } }, onClose: hideCommentFormCallback, refreshCallback: onRefreshBlog, participants: [], showAttachmentsSection: true, allArchivedDocumentsFileItems: convertSearchResultDescriptorToFileItems(currentSearchResults ?? []), isCommentRequired: commentFormState.isRequired, removeAndEditAttachment: commentFormState.removeAndEditAttachment, selectedAttachmentDid: [Number(selectedDcmtInfos[0].DID)] }), (showCheckoutInformationForm && dtd && selectedDcmtInfos.length > 0) &&
|
|
1387
1384
|
_jsx(TMDcmtCheckoutInfoForm, { dtdName: dtd.name ?? SDKUI_Localizator.SearchResult, selectedDcmtOrFocused: selectedDcmtInfos[0], onClose: hideCheckoutInformationFormCallback }), isOpenDetailsModal && _jsx(TMModal, { width: "95%", height: "95%", onClose: () => setIsOpenDetailsModal(false), title: SDKUI_Localizator.Relations, children: _jsx(TMMasterDetailDcmts, { ...masterDetailDetailsCommonProps, onBack: () => setIsOpenDetailsModal(false) }) }), _jsx(StyledMultiViewPanel, { "$isVisible": isOpenDetails, children: isOpenDetails && _jsx(TMMasterDetailDcmts, { ...masterDetailDetailsCommonProps, onBack: () => setIsOpenDetails(false) }) }), isOpenMasterModal && _jsx(TMModal, { width: "95%", height: "95%", onClose: () => setIsOpenMasterModal(false), title: SDKUI_Localizator.Relations, children: _jsx(TMMasterDetailDcmts, { ...masterDetailMasterCommonProps, onBack: () => setIsOpenMasterModal(false) }) }), _jsxs(StyledMultiViewPanel, { "$isVisible": isOpenMaster, children: [isOpenMaster && _jsx(TMMasterDetailDcmts, { ...masterDetailMasterCommonProps, onBack: () => setIsOpenMaster(false) }), secondaryMasterDcmts.length > 0 && secondaryMasterDcmts.map((dcmt, index) => {
|
|
1388
1385
|
return (_jsx(StyledModalContainer, { style: { backgroundColor: 'white' }, children: _jsx(TMMasterDetailDcmts, { ...masterDetailMasterCommonProps, inputDcmts: [dcmt], allowNavigation: false, onBack: () => handleRemoveItem(dcmt.TID, dcmt.DID) }) }, `${index}-${dcmt.DID}`));
|
|
1389
1386
|
})] }), isOpenArchiveRelationForm && _jsx(TMDcmtForm, { isModal: true, titleModal: SDKUI_Localizator.Archive + ' - ' + (archiveType === 'detail' ? SDKUI_Localizator.DcmtsDetail : SDKUI_Localizator.DcmtsMaster), TID: archiveRelatedDcmtFormTID, layoutMode: LayoutModes.Ark, inputMids: archiveRelatedDcmtFormMids, showBackButton: false, allowButtonsRefs: false, onClose: () => {
|
|
@@ -1397,7 +1394,7 @@ export const useDocumentOperations = (props) => {
|
|
|
1397
1394
|
setArchiveRelatedDcmtFormTID(undefined);
|
|
1398
1395
|
setArchiveRelatedDcmtFormMids([]);
|
|
1399
1396
|
await onRefreshSearchAsyncDatagrid?.();
|
|
1400
|
-
}, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers, showDcmtFormSidebar: showDcmtFormSidebar, openFileUploaderPdfEditor: openFileUploaderPdfEditor, showTodoDcmtForm: showTodoDcmtForm }), showRelatedDcmtsChooser &&
|
|
1397
|
+
}, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers, showDcmtFormSidebar: showDcmtFormSidebar, openFileUploaderPdfEditor: openFileUploaderPdfEditor, showTodoDcmtForm: showTodoDcmtForm, graphometricManager: graphometricManager }), showRelatedDcmtsChooser &&
|
|
1401
1398
|
_jsx(TMChooserForm, { dataSource: relatedDcmtsChooserDataSource, onChoose: async (selectedRelation) => {
|
|
1402
1399
|
try {
|
|
1403
1400
|
setShowRelatedDcmtsChooser(false);
|
|
@@ -1443,7 +1440,10 @@ export const useDocumentOperations = (props) => {
|
|
|
1443
1440
|
updateBatchUpdateForm(false);
|
|
1444
1441
|
setIsModifiedBatchUpdate(false);
|
|
1445
1442
|
await onRefreshDataRowsAsync?.();
|
|
1446
|
-
}, onStatusChanged: (isModified) => { setIsModifiedBatchUpdate(isModified); } }), showApprovePopup && _jsx(WorkFlowApproveRejectPopUp, { deviceType: deviceType, onCompleted: handleWFOperationCompleted, selectedItems: approvalVID ? selectedDcmtInfos.map(item => ({ ...item, TID: approvalVID })) : selectedDcmtInfos, isReject: 0, onClose: () => updateShowApprovePopup(false) }), showRejectPopup && _jsx(WorkFlowApproveRejectPopUp, { deviceType: deviceType, onCompleted: handleWFOperationCompleted, selectedItems: approvalVID ? selectedDcmtInfos.map(item => ({ ...item, TID: approvalVID })) : selectedDcmtInfos, isReject: 1, onClose: () => updateShowRejectPopup(false) }), showReAssignPopup && _jsx(WorkFlowReAssignPopUp, { deviceType: deviceType, onCompleted: handleWFOperationCompleted, selectedItems: approvalVID ? selectedDcmtInfos.map(item => ({ ...item, TID: approvalVID })) : selectedDcmtInfos, onClose: () => updateShowReAssignPopup(false) }), showMoreInfoPopup && _jsx(WorkFlowMoreInfoPopUp, { fromDTD: dtd, TID: contextConfig.approvalTID, DID: focusedItem?.DID, deviceType: deviceType, onCompleted: handleWFOperationCompleted, onClose: () => updateShowMoreInfoPopup(false), allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers, triggerBlogRefresh: onRefreshBlogDatagrid }), openCopyToFolderForm.open && openCopyToFolderForm.operationType === 'mergeToPdf' && _jsx(TMMergeToPdfForm, { mode: openCopyToFolderForm.mode, selectedDcmtInfos: selectedDcmtInfos, selectedItemsFull: selectedItemsFull, onClose: () => setOpenCopyToFolderForm({ open: false, operationType: 'copyToFolder', mode: 'onlySelected' }), showTMRelationViewer: showTMRelationViewerInCopyToFolderForm, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers }), openCopyToFolderForm.open && openCopyToFolderForm.operationType === 'copyToFolder' && _jsx(TMCopyToFolderForm, { mode: openCopyToFolderForm.mode, selectedDcmtInfos: selectedDcmtInfos, onClose: () => setOpenCopyToFolderForm({ open: false, operationType: 'copyToFolder', mode: 'onlySelected' }), showTMRelationViewer: showTMRelationViewerInCopyToFolderForm, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers }), _jsx(ConfirmFormatDialog, {}), _jsx(ConfirmAttachmentsDialog, {}), _jsx(FileSourceDialog, {}), taskFormDialogComponent, s4TViewerDialogComponent, currentCustomButton && _jsx(TMCustomButton, { button: currentCustomButton, formData: currentMetadataValues, selectedItems: selectedItemsFull, onClose: () => setCurrentCustomButton(undefined) })
|
|
1443
|
+
}, onStatusChanged: (isModified) => { setIsModifiedBatchUpdate(isModified); } }), showApprovePopup && _jsx(WorkFlowApproveRejectPopUp, { deviceType: deviceType, onCompleted: handleWFOperationCompleted, selectedItems: approvalVID ? selectedDcmtInfos.map(item => ({ ...item, TID: approvalVID })) : selectedDcmtInfos, isReject: 0, onClose: () => updateShowApprovePopup(false) }), showRejectPopup && _jsx(WorkFlowApproveRejectPopUp, { deviceType: deviceType, onCompleted: handleWFOperationCompleted, selectedItems: approvalVID ? selectedDcmtInfos.map(item => ({ ...item, TID: approvalVID })) : selectedDcmtInfos, isReject: 1, onClose: () => updateShowRejectPopup(false) }), showReAssignPopup && _jsx(WorkFlowReAssignPopUp, { deviceType: deviceType, onCompleted: handleWFOperationCompleted, selectedItems: approvalVID ? selectedDcmtInfos.map(item => ({ ...item, TID: approvalVID })) : selectedDcmtInfos, onClose: () => updateShowReAssignPopup(false) }), showMoreInfoPopup && _jsx(WorkFlowMoreInfoPopUp, { fromDTD: dtd, TID: contextConfig.approvalTID, DID: focusedItem?.DID, deviceType: deviceType, onCompleted: handleWFOperationCompleted, onClose: () => updateShowMoreInfoPopup(false), allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers, triggerBlogRefresh: onRefreshBlogDatagrid }), openCopyToFolderForm.open && openCopyToFolderForm.operationType === 'mergeToPdf' && _jsx(TMMergeToPdfForm, { mode: openCopyToFolderForm.mode, selectedDcmtInfos: selectedDcmtInfos, selectedItemsFull: selectedItemsFull, onClose: () => setOpenCopyToFolderForm({ open: false, operationType: 'copyToFolder', mode: 'onlySelected' }), showTMRelationViewer: showTMRelationViewerInCopyToFolderForm, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers }), openCopyToFolderForm.open && openCopyToFolderForm.operationType === 'copyToFolder' && _jsx(TMCopyToFolderForm, { mode: openCopyToFolderForm.mode, selectedDcmtInfos: selectedDcmtInfos, onClose: () => setOpenCopyToFolderForm({ open: false, operationType: 'copyToFolder', mode: 'onlySelected' }), showTMRelationViewer: showTMRelationViewerInCopyToFolderForm, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers }), _jsx(ConfirmFormatDialog, {}), _jsx(ConfirmAttachmentsDialog, {}), _jsx(FileSourceDialog, {}), taskFormDialogComponent, s4TViewerDialogComponent, currentCustomButton && _jsx(TMCustomButton, { button: currentCustomButton, formData: currentMetadataValues, selectedItems: selectedItemsFull, onClose: () => setCurrentCustomButton(undefined) }), showSignatureInfoModal && signatureInfoDcmt && (_jsx(TMSignatureInfoContent, { inputDcmt: signatureInfoDcmt, graphometricManager: graphometricManager, onClose: () => {
|
|
1444
|
+
setShowSignatureInfoModal(false);
|
|
1445
|
+
setSignatureInfoDcmt(undefined);
|
|
1446
|
+
} }))] }));
|
|
1447
1447
|
return {
|
|
1448
1448
|
operationItems: operationItems(),
|
|
1449
1449
|
renderFloatingBar,
|
|
@@ -3,13 +3,24 @@ const usePreventFileDrop = (allowedDropZones) => {
|
|
|
3
3
|
useEffect(() => {
|
|
4
4
|
const isOverAllowedZone = (event) => allowedDropZones.some((ref) => ref.current?.contains(event.target));
|
|
5
5
|
const handleDragOver = (event) => {
|
|
6
|
-
if (
|
|
6
|
+
if (isOverAllowedZone(event)) {
|
|
7
|
+
// Riafferma "copy" ad ogni dragover: altrimenti un "none"
|
|
8
|
+
// impostato mentre si era fuori zona resta e mostra "not-allowed"
|
|
9
|
+
if (event.dataTransfer)
|
|
10
|
+
event.dataTransfer.dropEffect = "copy";
|
|
11
|
+
document.body.style.cursor = "default";
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
7
14
|
event.preventDefault();
|
|
8
|
-
event.dataTransfer
|
|
15
|
+
if (event.dataTransfer)
|
|
16
|
+
event.dataTransfer.dropEffect = "none";
|
|
9
17
|
}
|
|
10
18
|
};
|
|
11
19
|
const handleDragEnter = (event) => {
|
|
12
|
-
if (
|
|
20
|
+
if (isOverAllowedZone(event)) {
|
|
21
|
+
document.body.style.cursor = "default";
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
13
24
|
document.body.style.cursor = "not-allowed";
|
|
14
25
|
}
|
|
15
26
|
};
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
export interface IWacomBiometricData {
|
|
2
|
+
/** Nome del firmatario */
|
|
3
|
+
signatureName: string;
|
|
4
|
+
/** Motivo della firma */
|
|
5
|
+
reasonForSigning: string;
|
|
6
|
+
/** Data e ora della firma (timestamp) */
|
|
7
|
+
dateTime: number;
|
|
8
|
+
/** Data e ora formattata */
|
|
9
|
+
dateTimeFormatted: string;
|
|
10
|
+
/** Tipo di digitalizzatore (es. "Wacom STU-540") */
|
|
11
|
+
digitizerType: string;
|
|
12
|
+
/** Driver del digitalizzatore */
|
|
13
|
+
digitizerDriver: string;
|
|
14
|
+
/** Sistema operativo */
|
|
15
|
+
operatingSystem: string;
|
|
16
|
+
/** Scheda di rete (Network Interface Card) */
|
|
17
|
+
networkInterfaceCard: string;
|
|
18
|
+
/** Immagine della firma in formato Base64 (PNG) */
|
|
19
|
+
signatureImage: string;
|
|
20
|
+
/** Stato integrità firma (OK, FAIL, MISSING, WRONG_TYPE, INSUFFICIENT_DATA, UNCERTAIN, NOT_SUPPORTED) */
|
|
21
|
+
integrityStatus: string;
|
|
22
|
+
/** Messaggio di warning sull'integrità (se presente) */
|
|
23
|
+
integrityWarning?: string;
|
|
24
|
+
/** Stato della firma (GOOD, NO_HASH, BAD_TYPE, BAD_HASH, ERROR, UNCERTAIN, SIG_MOVED) */
|
|
25
|
+
dataStatus: string;
|
|
26
|
+
/** Messaggio di warning sui dati (se presente) */
|
|
27
|
+
dataWarning?: string;
|
|
28
|
+
/** Dati aggiuntivi specifici del contesto */
|
|
29
|
+
extraData?: Record<string, string>;
|
|
30
|
+
}
|
|
31
|
+
export type IWacomBiometricResult = {
|
|
32
|
+
success: true;
|
|
33
|
+
data: IWacomBiometricData;
|
|
34
|
+
} | {
|
|
35
|
+
success: false;
|
|
36
|
+
error: string;
|
|
37
|
+
};
|
|
38
|
+
export interface ISignatureRenderConfig {
|
|
39
|
+
width?: number;
|
|
40
|
+
height?: number;
|
|
41
|
+
format?: "image/png" | "image/jpeg";
|
|
42
|
+
inkWidth?: number;
|
|
43
|
+
inkColor?: string;
|
|
44
|
+
backgroundColor?: string;
|
|
45
|
+
}
|
|
46
|
+
export type ExtractBiometricDataFn = (signatures: string[]) => Promise<IWacomBiometricResult[]>;
|
|
47
|
+
export interface IGraphometricManagerProp {
|
|
48
|
+
extractGraphometricAttachments(pdfFile: File): Promise<{
|
|
49
|
+
fileName?: string | undefined;
|
|
50
|
+
description?: string | undefined;
|
|
51
|
+
mimeType?: string | undefined;
|
|
52
|
+
creationDate?: Date | undefined;
|
|
53
|
+
modificationDate?: Date | undefined;
|
|
54
|
+
size?: number;
|
|
55
|
+
dataBase64?: string | undefined;
|
|
56
|
+
}[]>;
|
|
57
|
+
extractBiometricData: ExtractBiometricDataFn;
|
|
58
|
+
downloadDecryptedPngWithBiometricData: (attachment: {
|
|
59
|
+
dataBase64: string;
|
|
60
|
+
fileName?: string | undefined;
|
|
61
|
+
}) => Promise<void>;
|
|
62
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/lib/ts/index.d.ts
CHANGED
package/lib/ts/index.js
CHANGED
package/package.json
CHANGED
|
@@ -1,63 +1,68 @@
|
|
|
1
1
|
{
|
|
2
|
-
"name":
|
|
3
|
-
"version":
|
|
4
|
-
"description":
|
|
5
|
-
"scripts":
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
"author":
|
|
17
|
-
"license":
|
|
18
|
-
"devDependencies":
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
"main":
|
|
35
|
-
"types":
|
|
36
|
-
"module":
|
|
37
|
-
"files":
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
"dependencies":
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
"overrides":
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
2
|
+
"name": "@topconsultnpm/sdkui-react",
|
|
3
|
+
"version": "6.22.0-dev1.31",
|
|
4
|
+
"description": "",
|
|
5
|
+
"scripts": {
|
|
6
|
+
"test": "echo \"Error: no test specified\" && exit 1",
|
|
7
|
+
"clean": "node -e \"const fs=require('fs');fs.rmSync('lib',{recursive:true,force:true});fs.mkdirSync('lib')\"",
|
|
8
|
+
"copy-files": "cpx \"src/{assets/*.*,assets/ImageLibrary/*.*,assets/thumbnails/*.*,assets/IconsS4t/*.*,assets/Metadata/*.*,css/tm-sdkui.css}\" lib",
|
|
9
|
+
"tm-build": "npm run clean && tsc && npm run copy-files",
|
|
10
|
+
"tm-watch": "tsc -w",
|
|
11
|
+
"tm-publish": "npm publish --tag latest",
|
|
12
|
+
"tm-publish_wl": "npm publish",
|
|
13
|
+
"storybook": "storybook dev -p 6006",
|
|
14
|
+
"build-storybook": "storybook build"
|
|
15
|
+
},
|
|
16
|
+
"author": "TopConsult",
|
|
17
|
+
"license": "ISC",
|
|
18
|
+
"devDependencies": {
|
|
19
|
+
"@chromatic-com/storybook": "^5.1.2",
|
|
20
|
+
"@storybook/addon-docs": "^10.3.5",
|
|
21
|
+
"@storybook/addon-onboarding": "^10.3.5",
|
|
22
|
+
"@storybook/react-vite": "^10.3.5",
|
|
23
|
+
"@types/node": "^24.12.2",
|
|
24
|
+
"@types/react": "^18.3.3",
|
|
25
|
+
"@types/react-dom": "^18.3.3",
|
|
26
|
+
"cpx2": "^9.0.0",
|
|
27
|
+
"esbuild": "^0.25.0",
|
|
28
|
+
"react": "^18.3.1",
|
|
29
|
+
"react-dom": "^18.3.1",
|
|
30
|
+
"storybook": "^10.3.5",
|
|
31
|
+
"typescript": "^5.9.3",
|
|
32
|
+
"vite": "^6.1.1"
|
|
33
|
+
},
|
|
34
|
+
"main": "dist/cjs/index.js",
|
|
35
|
+
"types": "./index.d.ts",
|
|
36
|
+
"module": "lib/esm/index.js",
|
|
37
|
+
"files": [
|
|
38
|
+
"dist",
|
|
39
|
+
"lib"
|
|
40
|
+
],
|
|
41
|
+
"dependencies": {
|
|
42
|
+
"@topconsultnpm/sdk-ts": "6.22.0-dev1.14",
|
|
43
|
+
"@zip.js/zip.js": "2.8.26",
|
|
44
|
+
"buffer": "^6.0.3",
|
|
45
|
+
"devextreme": "^25.2.6",
|
|
46
|
+
"devextreme-exceljs-fork": "^4.4.10",
|
|
47
|
+
"devextreme-react": "^25.2.6",
|
|
48
|
+
"htmlparser2": "^10.0.0",
|
|
49
|
+
"pdf-lib": "^1.17.1",
|
|
50
|
+
"react-pdf": "^10.4.1",
|
|
51
|
+
"react-window": "^2.2.7",
|
|
52
|
+
"styled-components": "^6.1.1"
|
|
53
|
+
},
|
|
54
|
+
"overrides": {
|
|
55
|
+
"esbuild": "^0.25.0",
|
|
56
|
+
"devextreme-exceljs-fork": {
|
|
57
|
+
"archiver": "^8.0.0"
|
|
58
|
+
},
|
|
59
|
+
"quill-delta": {
|
|
60
|
+
"lodash.isequal": "npm:fast-deep-equal@^3.1.3"
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
"allowScripts": {
|
|
64
|
+
"core-js@3.49.0": true,
|
|
65
|
+
"esbuild@0.25.12": true,
|
|
66
|
+
"inferno@8.2.3": true
|
|
67
|
+
}
|
|
63
68
|
}
|