@topconsultnpm/sdkui-react 6.20.0-dev1.4 → 6.20.0-dev1.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/components/NewComponents/ContextMenu/TMContextMenu.d.ts +4 -0
- package/lib/components/NewComponents/ContextMenu/TMContextMenu.js +307 -0
- package/lib/components/NewComponents/ContextMenu/hooks.d.ts +13 -0
- package/lib/components/NewComponents/ContextMenu/hooks.js +61 -0
- package/lib/components/NewComponents/ContextMenu/index.d.ts +2 -0
- package/lib/components/NewComponents/ContextMenu/index.js +1 -0
- package/lib/components/NewComponents/ContextMenu/styles.d.ts +31 -0
- package/lib/components/NewComponents/ContextMenu/styles.js +336 -0
- package/lib/components/NewComponents/ContextMenu/types.d.ts +38 -0
- package/lib/components/NewComponents/ContextMenu/types.js +1 -0
- package/lib/components/NewComponents/FloatingMenuBar/TMFloatingMenuBar.d.ts +4 -0
- package/lib/components/NewComponents/FloatingMenuBar/TMFloatingMenuBar.js +471 -0
- package/lib/components/NewComponents/FloatingMenuBar/index.d.ts +2 -0
- package/lib/components/NewComponents/FloatingMenuBar/index.js +2 -0
- package/lib/components/NewComponents/FloatingMenuBar/styles.d.ts +47 -0
- package/lib/components/NewComponents/FloatingMenuBar/styles.js +346 -0
- package/lib/components/NewComponents/FloatingMenuBar/types.d.ts +29 -0
- package/lib/components/NewComponents/FloatingMenuBar/types.js +1 -0
- package/lib/components/base/TMCustomButton.js +61 -17
- package/lib/components/base/TMDataGrid.d.ts +7 -4
- package/lib/components/base/TMDataGrid.js +112 -11
- package/lib/components/choosers/TMMetadataChooser.js +8 -1
- package/lib/components/editors/TMHtmlEditor.js +1 -1
- package/lib/components/editors/TMMetadataValues.js +20 -2
- package/lib/components/features/documents/TMDcmtBlog.d.ts +1 -7
- package/lib/components/features/documents/TMDcmtBlog.js +29 -2
- package/lib/components/features/documents/TMDcmtForm.js +269 -169
- package/lib/components/features/documents/TMDcmtPreview.js +37 -66
- package/lib/components/features/documents/TMMasterDetailDcmts.js +1 -1
- package/lib/components/features/search/TMDcmtCheckoutInfoForm.d.ts +8 -0
- package/lib/components/features/search/{TMSearchResultCheckoutInfoForm.js → TMDcmtCheckoutInfoForm.js} +6 -11
- package/lib/components/features/search/TMSearch.js +30 -5
- package/lib/components/features/search/TMSearchQueryPanel.js +13 -12
- package/lib/components/features/search/TMSearchResult.js +71 -120
- package/lib/components/features/search/TMSearchResultsMenuItems.d.ts +3 -3
- package/lib/components/features/search/TMSearchResultsMenuItems.js +216 -180
- package/lib/components/features/search/TMSignSettingsForm.js +1 -1
- package/lib/components/features/search/TMSignatureInfoContent.d.ts +6 -0
- package/lib/components/features/search/TMSignatureInfoContent.js +140 -0
- package/lib/components/features/search/TMViewHistoryDcmt.js +1 -1
- package/lib/components/features/tasks/TMTasksView.js +2 -2
- package/lib/components/forms/Login/LoginValidatorService.d.ts +2 -0
- package/lib/components/forms/Login/LoginValidatorService.js +7 -2
- package/lib/components/forms/Login/TMLoginForm.js +34 -6
- package/lib/components/forms/TMChooserForm.js +1 -1
- package/lib/components/index.d.ts +0 -1
- package/lib/components/index.js +0 -1
- package/lib/css/tm-sdkui.css +1 -1
- package/lib/helper/SDKUI_Globals.d.ts +19 -14
- package/lib/helper/SDKUI_Globals.js +9 -0
- package/lib/helper/SDKUI_Localizator.d.ts +8 -0
- package/lib/helper/SDKUI_Localizator.js +98 -0
- package/lib/helper/TMIcons.d.ts +1 -0
- package/lib/helper/TMIcons.js +3 -0
- package/lib/helper/TMPdfViewer.d.ts +8 -0
- package/lib/helper/TMPdfViewer.js +187 -0
- package/lib/helper/TMUtils.d.ts +3 -1
- package/lib/helper/TMUtils.js +51 -0
- package/lib/helper/checkinCheckoutManager.d.ts +85 -0
- package/lib/helper/checkinCheckoutManager.js +348 -0
- package/lib/helper/devextremeCustomMessages.d.ts +30 -0
- package/lib/helper/devextremeCustomMessages.js +30 -0
- package/lib/helper/helpers.js +7 -1
- package/lib/helper/index.d.ts +2 -0
- package/lib/helper/index.js +2 -0
- package/lib/helper/queryHelper.js +29 -0
- package/lib/hooks/useCheckInOutOperations.d.ts +28 -0
- package/lib/hooks/useCheckInOutOperations.js +223 -0
- package/lib/services/platform_services.d.ts +1 -1
- package/package.json +5 -2
- package/lib/components/features/search/TMSearchResultCheckoutInfoForm.d.ts +0 -8
- package/lib/helper/cicoHelper.d.ts +0 -31
- package/lib/helper/cicoHelper.js +0 -155
|
@@ -278,6 +278,16 @@ export class SDKUI_Localizator {
|
|
|
278
278
|
default: return "Alfabetico";
|
|
279
279
|
}
|
|
280
280
|
}
|
|
281
|
+
static get Anomalies() {
|
|
282
|
+
switch (this._cultureID) {
|
|
283
|
+
case CultureIDs.De_DE: return "Anomalien";
|
|
284
|
+
case CultureIDs.En_US: return "Anomalies";
|
|
285
|
+
case CultureIDs.Es_ES: return "Anomalías";
|
|
286
|
+
case CultureIDs.Fr_FR: return "Anomalies";
|
|
287
|
+
case CultureIDs.Pt_PT: return "Anomalias";
|
|
288
|
+
default: return "Anomalie";
|
|
289
|
+
}
|
|
290
|
+
}
|
|
281
291
|
static get Answer() {
|
|
282
292
|
switch (this._cultureID) {
|
|
283
293
|
case CultureIDs.De_DE: return "Antwort";
|
|
@@ -835,6 +845,22 @@ export class SDKUI_Localizator {
|
|
|
835
845
|
default: return "Check in";
|
|
836
846
|
}
|
|
837
847
|
}
|
|
848
|
+
static get CheckInElementConfirm() {
|
|
849
|
+
switch (this._cultureID) {
|
|
850
|
+
case CultureIDs.De_DE:
|
|
851
|
+
return "Das Element '{{0}}' einchecken?";
|
|
852
|
+
case CultureIDs.En_US:
|
|
853
|
+
return "Check in the element '{{0}}'?";
|
|
854
|
+
case CultureIDs.Es_ES:
|
|
855
|
+
return "¿Realizar el check-in del elemento '{{0}}'?";
|
|
856
|
+
case CultureIDs.Fr_FR:
|
|
857
|
+
return "Effectuer le check-in de l’élément '{{0}}'?";
|
|
858
|
+
case CultureIDs.Pt_PT:
|
|
859
|
+
return "Efetuar o check-in do elemento '{{0}}'?";
|
|
860
|
+
default:
|
|
861
|
+
return "Eseguire il check-in dell’elemento '{{0}}'?";
|
|
862
|
+
}
|
|
863
|
+
}
|
|
838
864
|
static get CheckInOutSettingsNotice() {
|
|
839
865
|
switch (this._cultureID) {
|
|
840
866
|
case CultureIDs.De_DE:
|
|
@@ -852,6 +878,22 @@ export class SDKUI_Localizator {
|
|
|
852
878
|
return "Puoi modificare questa impostazione in “Ricerca → Check in/Check out” in qualsiasi momento.";
|
|
853
879
|
}
|
|
854
880
|
}
|
|
881
|
+
static get CheckInSuccessMessage() {
|
|
882
|
+
switch (this._cultureID) {
|
|
883
|
+
case CultureIDs.De_DE:
|
|
884
|
+
return "Check-in erfolgreich abgeschlossen! Löschen Sie die Datei aus dem Dateisystem.";
|
|
885
|
+
case CultureIDs.En_US:
|
|
886
|
+
return "Check-in completed successfully! Delete the document from the file system.";
|
|
887
|
+
case CultureIDs.Es_ES:
|
|
888
|
+
return "¡Check-in completado con éxito! Elimine el archivo del sistema de archivos.";
|
|
889
|
+
case CultureIDs.Fr_FR:
|
|
890
|
+
return "Check-in terminé avec succès ! Supprimez le fichier du système de fichiers.";
|
|
891
|
+
case CultureIDs.Pt_PT:
|
|
892
|
+
return "Check-in concluído com sucesso! Elimine o ficheiro do sistema de ficheiros.";
|
|
893
|
+
default:
|
|
894
|
+
return "Check-in completato con successo! Cancella il documento dal file system.";
|
|
895
|
+
}
|
|
896
|
+
}
|
|
855
897
|
static get Checkmark() {
|
|
856
898
|
switch (this._cultureID) {
|
|
857
899
|
case CultureIDs.De_DE: return "Häkchen";
|
|
@@ -1274,6 +1316,16 @@ export class SDKUI_Localizator {
|
|
|
1274
1316
|
default: return "Lingua";
|
|
1275
1317
|
}
|
|
1276
1318
|
}
|
|
1319
|
+
static get Current() {
|
|
1320
|
+
switch (this._cultureID) {
|
|
1321
|
+
case CultureIDs.De_DE: return "Aktuell";
|
|
1322
|
+
case CultureIDs.En_US: return "Current";
|
|
1323
|
+
case CultureIDs.Es_ES: return "Actual";
|
|
1324
|
+
case CultureIDs.Fr_FR: return "Actuel";
|
|
1325
|
+
case CultureIDs.Pt_PT: return "Atual";
|
|
1326
|
+
default: return "Corrente";
|
|
1327
|
+
}
|
|
1328
|
+
}
|
|
1277
1329
|
static get CurrentUserExtract() {
|
|
1278
1330
|
switch (this._cultureID) {
|
|
1279
1331
|
case CultureIDs.De_DE: return "Auszug aus dem aktuellen Benutzer und änderbar";
|
|
@@ -2093,6 +2145,22 @@ export class SDKUI_Localizator {
|
|
|
2093
2145
|
default: return "Ordine elettronico";
|
|
2094
2146
|
}
|
|
2095
2147
|
}
|
|
2148
|
+
static get ElementNameConventionError() {
|
|
2149
|
+
switch (this._cultureID) {
|
|
2150
|
+
case CultureIDs.De_DE:
|
|
2151
|
+
return "Der Name des Elements ist nicht konform";
|
|
2152
|
+
case CultureIDs.En_US:
|
|
2153
|
+
return "The element name does not comply";
|
|
2154
|
+
case CultureIDs.Es_ES:
|
|
2155
|
+
return "El nombre del elemento no es conforme";
|
|
2156
|
+
case CultureIDs.Fr_FR:
|
|
2157
|
+
return "Le nom de l’élément n’est pas conforme";
|
|
2158
|
+
case CultureIDs.Pt_PT:
|
|
2159
|
+
return "O nome do elemento não está conforme";
|
|
2160
|
+
default:
|
|
2161
|
+
return "Il nome dell’elemento non è conforme";
|
|
2162
|
+
}
|
|
2163
|
+
}
|
|
2096
2164
|
static get EmailIsNotValid() {
|
|
2097
2165
|
switch (this._cultureID) {
|
|
2098
2166
|
case CultureIDs.De_DE: return "Dies ist keine gültige e-mail Adresse";
|
|
@@ -2299,6 +2367,16 @@ export class SDKUI_Localizator {
|
|
|
2299
2367
|
default: return "Valuta il risultato";
|
|
2300
2368
|
}
|
|
2301
2369
|
}
|
|
2370
|
+
static get Expected() {
|
|
2371
|
+
switch (this._cultureID) {
|
|
2372
|
+
case CultureIDs.De_DE: return "Erwartet";
|
|
2373
|
+
case CultureIDs.En_US: return "Expected";
|
|
2374
|
+
case CultureIDs.Es_ES: return "Esperado";
|
|
2375
|
+
case CultureIDs.Fr_FR: return "Attendu";
|
|
2376
|
+
case CultureIDs.Pt_PT: return "Esperado";
|
|
2377
|
+
default: return "Atteso";
|
|
2378
|
+
}
|
|
2379
|
+
}
|
|
2302
2380
|
static get Expiration() {
|
|
2303
2381
|
switch (this._cultureID) {
|
|
2304
2382
|
case CultureIDs.De_DE: return "Ablaufdatum";
|
|
@@ -4870,6 +4948,16 @@ export class SDKUI_Localizator {
|
|
|
4870
4948
|
default: return "Legenda delle priorità";
|
|
4871
4949
|
}
|
|
4872
4950
|
}
|
|
4951
|
+
static get ProceedAnyway() {
|
|
4952
|
+
switch (this._cultureID) {
|
|
4953
|
+
case CultureIDs.De_DE: return "Dennoch fortfahren?";
|
|
4954
|
+
case CultureIDs.En_US: return "Proceed anyway?";
|
|
4955
|
+
case CultureIDs.Es_ES: return "¿Proceder de todos modos?";
|
|
4956
|
+
case CultureIDs.Fr_FR: return "Procéder quand même ?";
|
|
4957
|
+
case CultureIDs.Pt_PT: return "Prosseguir mesmo assim?";
|
|
4958
|
+
default: return "Procedere comunque?";
|
|
4959
|
+
}
|
|
4960
|
+
}
|
|
4873
4961
|
static get ProcessedItems() {
|
|
4874
4962
|
switch (this._cultureID) {
|
|
4875
4963
|
case CultureIDs.De_DE: return "Durchdachte Elemente";
|
|
@@ -5798,6 +5886,16 @@ export class SDKUI_Localizator {
|
|
|
5798
5886
|
default: return "Mostra tutti";
|
|
5799
5887
|
}
|
|
5800
5888
|
}
|
|
5889
|
+
static get ShowColumnSelection() {
|
|
5890
|
+
switch (this._cultureID) {
|
|
5891
|
+
case CultureIDs.De_DE: return "Spaltenauswahl anzeigen";
|
|
5892
|
+
case CultureIDs.En_US: return "Show column selection";
|
|
5893
|
+
case CultureIDs.Es_ES: return "Mostrar selección de columnas";
|
|
5894
|
+
case CultureIDs.Fr_FR: return "Afficher la sélection de colonnes";
|
|
5895
|
+
case CultureIDs.Pt_PT: return "Mostrar seleção de colunas";
|
|
5896
|
+
default: return "Mostra selezione colonne";
|
|
5897
|
+
}
|
|
5898
|
+
}
|
|
5801
5899
|
static get ShowFloatingBar() {
|
|
5802
5900
|
switch (this._cultureID) {
|
|
5803
5901
|
case CultureIDs.De_DE: return "Floating-Leiste anzeigen";
|
package/lib/helper/TMIcons.d.ts
CHANGED
|
@@ -275,4 +275,5 @@ export declare function IconUnpair(props: React.SVGProps<SVGSVGElement>): import
|
|
|
275
275
|
export declare function IconCtrlWorkflow(props: React.SVGProps<SVGSVGElement>): import("react/jsx-runtime").JSX.Element;
|
|
276
276
|
export declare function IconBackhandIndexPointingRight(props: Readonly<React.SVGProps<SVGSVGElement>>): import("react/jsx-runtime").JSX.Element;
|
|
277
277
|
export declare function IconMoveToFolder(props: React.SVGProps<SVGSVGElement>): import("react/jsx-runtime").JSX.Element;
|
|
278
|
+
export declare function IconCustom(props: React.SVGProps<SVGSVGElement>): import("react/jsx-runtime").JSX.Element;
|
|
278
279
|
export { Icon123, IconABC, IconAccessPoint, IconAddressBook, IconSignCert, IconServerService, IconActivity, IconActivityLog, IconAdd, IconAddCircleOutline, IconAll, IconApply, IconApplyAndClose, IconArchive, IconArchiveDoc, IconArrowDown, IconArrowLeft, IconArrowRight, IconArrowUp, IconAtSign, IconAttachment, IconAutoConfig, IconBackward, IconBasket, IconBoard, IconBoxArchiveIn, IconBxInfo, IconBxLock, IconCalendar, IconCloseCircle, IconCloseOutline, IconCloud, IconCircleInfo, IconClear, IconColumns, IconCommand, IconCopy, IconCount, IconCrown, IconDashboard, IconDcmtType, IconDcmtTypeOnlyMetadata, IconDcmtTypeSys, IconDelete, IconDetails, IconDown, IconDownload, IconDotsVerticalCircleOutline, IconDuplicate, IconEdit, IconEqual, IconEqualNot, IconEraser, IconExpandRight, IconExport, IconFastBackward, IconFoldeAdd, IconFolderSearch, IconFolderZip, IconFastForward, IconFastSearch, IconFileDots, IconFilter, IconForceStop, IconForward, IconFreeze, IconFreeSearch, IconGreaterThan, IconGreaterThanOrEqual, IconHistory, IconImport, IconTag, IconInfo, IconInsertAbove, IconInsertBelow, IconHeart, IconHide, IconLanguage, IconLeft, IconLessThan, IconLessThanOrEqual, IconLock, IconLockClosed, IconLogin, IconLink, IconLogout, IconMail, IconMapping, IconMic, IconMenuHorizontal, IconMenuKebab, IconMenuVertical, IconMetadata, IconMetadata_Computed, IconMetadata_DataList, IconMetadata_Date, IconMetadata_DynamicDataList, IconMetadata_Numerator, IconMetadata_Numeric, IconMetadata_Special, IconMetadata_Text, IconMetadata_User, IconMonitor, IconOpenInNew, IconNotification, IconPassword, IconPencil, IconPlatform, IconPlay, IconPreview, IconPrinter, IconPrintOutline, IconProcess, IconProgressAbortRequested, IconProgressCompleted, IconProgressNotCompleted, IconProgressReady, IconProgressRunning, IconProgressStarted, IconRefresh, IconReset, IconRecentlyViewed, IconRight, IconSave, IconSearch, IconSelected, IconSettings, IconShow, IconSort, IconStop, IconStopwatch, IconSuccess, IconAlarmPlus, IconHourglass, IconNone, IconNotStarted, IconProgress, IconSuccessCirlce, IconSuitcase, IconSupport, IconUndo, IconUnFreeze, IconUp, IconUpdate, IconUpload, IconUser, IconUserProfile, IconVisible, IconWarning, IconWeb, IconWifi, IconWindowMaximize, IconWindowMinimize, IconWorkflow, IconWorkspace, IconUserGroup, IconUserGroupOutline, IconUserLevelMember, IconUserLevelAdministrator, IconUserLevelSystemAdministrator, IconUserLevelAutonomousAdministrator, IconDraggabledots, IconRelation, IconEasy, IconSum, IconDisk, IconDataList, IconPalette, IconFormatPageSplit, IconPaste, IconFileSearch, IconStar, IconStarRemove, IconSearchCheck, IconLightningFill, IconArrowUnsorted, IconArrowSortedUp, IconArrowSortedDown, IconConvertFilePdf, IconExportTo, IconSharedDcmt, IconShare, IconBatchUpdate, IconCheckFile, IconStatistics, IconSubstFile, IconAdvanced, IconSync, IconSavedQuery, IconSignature, IconSignaturePencil, IconRecursiveOps, IconCheckIn, IconTree, IconGrid, IconList, IconFolder, IconFolderOpen, IconFactory, IconTest, IconCheck, IconUncheck, IconSortAsc, IconSortDesc, IconRoundFileUpload, IconSortAscLetters, IconSortDescLetters, IconRotate, IconSortAscNumbers, IconSortDescNumbers, IconSortAscClock, IconSortDescClock, IconLayerGroup, IconBell, IconBellCheck, IconBellOutline, IconBellCheckOutline, IconEnvelopeOpenText, IconChangeUser, IconUserCheck, IconRelationManyToMany, IconRelationOneToMany, IconUserExpired, IconKey, IconZoomInLinear, IconZoomOutLinear, IconMenuCAWorkingGroups, IconCADossier, IconMenuCACaseflow, IconMenuDashboard, IconMenuCAAreas, IconMenuTask, IconMenuSearch, IconMenuFullTextSearch, IconMenuFavourite, IconSAPLogin, IconSAPLogin2, IconView, IconNewSignature };
|
package/lib/helper/TMIcons.js
CHANGED
|
@@ -687,4 +687,7 @@ export function IconBackhandIndexPointingRight(props) {
|
|
|
687
687
|
export function IconMoveToFolder(props) {
|
|
688
688
|
return (_jsx("svg", { fontSize: props.fontSize ?? FONTSIZE, xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 28 28", width: "1em", height: "1em", ...props, children: _jsx("path", { d: "M21.5 15a5.5 5.5 0 1 1 0 11a5.5 5.5 0 0 1 0-11zM10.207 4c.46 0 .908.141 1.284.402l.156.12L14.022 6.5h9.728a2.25 2.25 0 0 1 2.229 1.938l.016.158l.005.154v7.06a6.518 6.518 0 0 0-1.499-1.077L24.5 8.75a.75.75 0 0 0-.648-.743L23.75 8h-9.729l-2.374 1.978a2.25 2.25 0 0 1-1.244.513l-.196.009l-6.707-.001V21.75c0 .38.282.693.648.743l.102.007h11.064a6.47 6.47 0 0 0 .709 1.501L4.25 24a2.25 2.25 0 0 1-2.245-2.096L2 21.75V6.25a2.25 2.25 0 0 1 2.096-2.245L4.25 4h5.957zm11.585 13.545l-.076.044l-.07.057l-.057.07a.5.5 0 0 0 0 .568l.057.07l1.646 1.645l-4.798.001l-.09.008a.5.5 0 0 0-.402.402l-.008.09l.008.09a.5.5 0 0 0 .402.402l.09.008l4.8-.001l-1.648 1.647l-.057.07a.5.5 0 0 0 .695.695l.07-.057l2.535-2.541l.031-.042l.042-.08l.026-.083l.01-.064l-.002-.11l-.008-.042l-.026-.083l-.042-.08l-.037-.05l-2.53-2.533l-.069-.057a.5.5 0 0 0-.492-.044zM10.207 5.5H4.25a.75.75 0 0 0-.743.648L3.5 6.25v2.749L10.207 9a.75.75 0 0 0 .395-.113l.085-.06l1.891-1.578l-1.89-1.575a.75.75 0 0 0-.377-.167l-.104-.007z", fill: "currentColor", fillRule: "nonzero" }) }));
|
|
689
689
|
}
|
|
690
|
+
export function IconCustom(props) {
|
|
691
|
+
return (_jsx("svg", { fontSize: props.fontSize ?? FONTSIZE, xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", width: "1em", height: "1em", ...props, children: _jsx("path", { fill: "none", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeMiterlimit: "10", strokeWidth: "1.5", d: "M14 17h6m-3 3v-6M5.6 4h2.8A1.6 1.6 0 0 1 10 5.6v2.8A1.6 1.6 0 0 1 8.4 10H5.6A1.6 1.6 0 0 1 4 8.4V5.6A1.6 1.6 0 0 1 5.6 4m0 10h2.8a1.6 1.6 0 0 1 1.6 1.6v2.8A1.6 1.6 0 0 1 8.4 20H5.6A1.6 1.6 0 0 1 4 18.4v-2.8A1.6 1.6 0 0 1 5.6 14m10-10h2.8A1.6 1.6 0 0 1 20 5.6v2.8a1.6 1.6 0 0 1-1.6 1.6h-2.8A1.6 1.6 0 0 1 14 8.4V5.6A1.6 1.6 0 0 1 15.6 4" }) }));
|
|
692
|
+
}
|
|
690
693
|
export { Icon123, IconABC, IconAccessPoint, IconAddressBook, IconSignCert, IconServerService, IconActivity, IconActivityLog, IconAdd, IconAddCircleOutline, IconAll, IconApply, IconApplyAndClose, IconArchive, IconArchiveDoc, IconArrowDown, IconArrowLeft, IconArrowRight, IconArrowUp, IconAtSign, IconAttachment, IconAutoConfig, IconBackward, IconBasket, IconBoard, IconBoxArchiveIn, IconBxInfo, IconBxLock, IconCalendar, IconCloseCircle, IconCloseOutline, IconCloud, IconCircleInfo, IconClear, IconColumns, IconCommand, IconCopy, IconCount, IconCrown, IconDashboard, IconDcmtType, IconDcmtTypeOnlyMetadata, IconDcmtTypeSys, IconDelete, IconDetails, IconDown, IconDownload, IconDotsVerticalCircleOutline, IconDuplicate, IconEdit, IconEqual, IconEqualNot, IconEraser, IconExpandRight, IconExport, IconFastBackward, IconFoldeAdd, IconFolderSearch, IconFolderZip, IconFastForward, IconFastSearch, IconFileDots, IconFilter, IconForceStop, IconForward, IconFreeze, IconFreeSearch, IconGreaterThan, IconGreaterThanOrEqual, IconHistory, IconImport, IconTag, IconInfo, IconInsertAbove, IconInsertBelow, IconHeart, IconHide, IconLanguage, IconLeft, IconLessThan, IconLessThanOrEqual, IconLock, IconLockClosed, IconLogin, IconLink, IconLogout, IconMail, IconMapping, IconMic, IconMenuHorizontal, IconMenuKebab, IconMenuVertical, IconMetadata, IconMetadata_Computed, IconMetadata_DataList, IconMetadata_Date, IconMetadata_DynamicDataList, IconMetadata_Numerator, IconMetadata_Numeric, IconMetadata_Special, IconMetadata_Text, IconMetadata_User, IconMonitor, IconOpenInNew, IconNotification, IconPassword, IconPencil, IconPlatform, IconPlay, IconPreview, IconPrinter, IconPrintOutline, IconProcess, IconProgressAbortRequested, IconProgressCompleted, IconProgressNotCompleted, IconProgressReady, IconProgressRunning, IconProgressStarted, IconRefresh, IconReset, IconRecentlyViewed, IconRight, IconSave, IconSearch, IconSelected, IconSettings, IconShow, IconSort, IconStop, IconStopwatch, IconSuccess, IconAlarmPlus, IconHourglass, IconNone, IconNotStarted, IconProgress, IconSuccessCirlce, IconSuitcase, IconSupport, IconUndo, IconUnFreeze, IconUp, IconUpdate, IconUpload, IconUser, IconUserProfile, IconVisible, IconWarning, IconWeb, IconWifi, IconWindowMaximize, IconWindowMinimize, IconWorkflow, IconWorkspace, IconUserGroup, IconUserGroupOutline, IconUserLevelMember, IconUserLevelAdministrator, IconUserLevelSystemAdministrator, IconUserLevelAutonomousAdministrator, IconDraggabledots, IconRelation, IconEasy, IconSum, IconDisk, IconDataList, IconPalette, IconFormatPageSplit, IconPaste, IconFileSearch, IconStar, IconStarRemove, IconSearchCheck, IconLightningFill, IconArrowUnsorted, IconArrowSortedUp, IconArrowSortedDown, IconConvertFilePdf, IconExportTo, IconSharedDcmt, IconShare, IconBatchUpdate, IconCheckFile, IconStatistics, IconSubstFile, IconAdvanced, IconSync, IconSavedQuery, IconSignature, IconSignaturePencil, IconRecursiveOps, IconCheckIn, IconTree, IconGrid, IconList, IconFolder, IconFolderOpen, IconFactory, IconTest, IconCheck, IconUncheck, IconSortAsc, IconSortDesc, IconRoundFileUpload, IconSortAscLetters, IconSortDescLetters, IconRotate, IconSortAscNumbers, IconSortDescNumbers, IconSortAscClock, IconSortDescClock, IconLayerGroup, IconBell, IconBellCheck, IconBellOutline, IconBellCheckOutline, IconEnvelopeOpenText, IconChangeUser, IconUserCheck, IconRelationManyToMany, IconRelationOneToMany, IconUserExpired, IconKey, IconZoomInLinear, IconZoomOutLinear, IconMenuCAWorkingGroups, IconCADossier, IconMenuCACaseflow, IconMenuDashboard, IconMenuCAAreas, IconMenuTask, IconMenuSearch, IconMenuFullTextSearch, IconMenuFavourite, IconSAPLogin, IconSAPLogin2, IconView, IconNewSignature };
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useState, useRef, useCallback } from "react";
|
|
3
|
+
import styled from "styled-components";
|
|
4
|
+
import { LoadIndicator } from 'devextreme-react/load-indicator';
|
|
5
|
+
import { IconCloseOutline } from "./TMIcons";
|
|
6
|
+
import { SDKUI_Localizator } from "./SDKUI_Localizator";
|
|
7
|
+
import { TMColors } from "../utils/theme";
|
|
8
|
+
// Dynamic imports for optional dependencies
|
|
9
|
+
let pdfjs;
|
|
10
|
+
let Document;
|
|
11
|
+
let Page;
|
|
12
|
+
let isReactPdfAvailable = false;
|
|
13
|
+
try {
|
|
14
|
+
const reactPdf = require('react-pdf');
|
|
15
|
+
pdfjs = reactPdf.pdfjs;
|
|
16
|
+
Document = reactPdf.Document;
|
|
17
|
+
Page = reactPdf.Page;
|
|
18
|
+
// Configura il worker PDF.js PRIMA del rendering
|
|
19
|
+
pdfjs.GlobalWorkerOptions.workerSrc = `https://unpkg.com/pdfjs-dist@${pdfjs.version}/build/pdf.worker.min.mjs`;
|
|
20
|
+
isReactPdfAvailable = true;
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
// react-pdf not available - will use iframe fallback
|
|
24
|
+
// console.warn('react-pdf is not installed. TMPdfViewer will use iframe fallback.');
|
|
25
|
+
}
|
|
26
|
+
const PDFViewerContainer = styled.div `
|
|
27
|
+
width: 100%;
|
|
28
|
+
height: 100%;
|
|
29
|
+
overflow-y: auto;
|
|
30
|
+
overflow-x: hidden;
|
|
31
|
+
background-color: #f5f5f5;
|
|
32
|
+
position: relative;
|
|
33
|
+
|
|
34
|
+
.react-pdf__Document {
|
|
35
|
+
display: flex;
|
|
36
|
+
flex-direction: column;
|
|
37
|
+
align-items: center;
|
|
38
|
+
gap: 10px;
|
|
39
|
+
padding: 10px 0;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.react-pdf__Page {
|
|
43
|
+
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
|
44
|
+
margin: 0 auto;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.react-pdf__Page__canvas {
|
|
48
|
+
max-width: 100%;
|
|
49
|
+
height: auto !important;
|
|
50
|
+
}
|
|
51
|
+
`;
|
|
52
|
+
const LoadingOverlay = styled.div `
|
|
53
|
+
position: absolute;
|
|
54
|
+
top: 0;
|
|
55
|
+
left: 0;
|
|
56
|
+
width: 100%;
|
|
57
|
+
height: 100%;
|
|
58
|
+
background-color: rgba(245, 245, 245, 0.95);
|
|
59
|
+
display: flex;
|
|
60
|
+
justify-content: center;
|
|
61
|
+
align-items: center;
|
|
62
|
+
z-index: 1000;
|
|
63
|
+
`;
|
|
64
|
+
const TMPdfViewer = (props) => {
|
|
65
|
+
const { pdfBlob, title = "Anteprima PDF", isResizingActive, enableFitToWidth = false } = props;
|
|
66
|
+
const [isMobile, setIsMobile] = useState(false);
|
|
67
|
+
const [totalPagesNumber, setTotalPagesNumber] = useState(0);
|
|
68
|
+
const [loadedPagesNumber, setLoadedPagesNumber] = useState(0);
|
|
69
|
+
const [visiblePages, setVisiblePages] = useState(new Set([1]));
|
|
70
|
+
const [pdfUrl, setPdfUrl] = useState("");
|
|
71
|
+
const observerRef = useRef(null);
|
|
72
|
+
useEffect(() => {
|
|
73
|
+
const checkIsMobile = () => {
|
|
74
|
+
const userAgent = navigator.userAgent || navigator.vendor || window.opera;
|
|
75
|
+
// Detect actual mobile/tablet devices
|
|
76
|
+
const isMobileDevice =
|
|
77
|
+
// User agent detection (phones and tablets)
|
|
78
|
+
/android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/i.test(userAgent) ||
|
|
79
|
+
// Media query for touch devices with coarse pointer (more reliable than screen width)
|
|
80
|
+
(window.matchMedia?.('(hover: none) and (pointer: coarse)').matches ?? false) ||
|
|
81
|
+
// Touch-capable devices excluding desktop OS
|
|
82
|
+
(navigator.maxTouchPoints > 1 && !/Win|Mac|Linux x86_64/i.test(userAgent));
|
|
83
|
+
setIsMobile(isMobileDevice);
|
|
84
|
+
};
|
|
85
|
+
checkIsMobile();
|
|
86
|
+
// Create URL for iframe
|
|
87
|
+
const url = URL.createObjectURL(pdfBlob);
|
|
88
|
+
setPdfUrl(url);
|
|
89
|
+
return () => {
|
|
90
|
+
if (url) {
|
|
91
|
+
URL.revokeObjectURL(url);
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
}, [pdfBlob]);
|
|
95
|
+
/**
|
|
96
|
+
* Callback per l'Intersection Observer che gestisce il lazy loading delle pagine PDF.
|
|
97
|
+
* Viene chiamato ogni volta che una pagina entra o esce dal viewport (area visibile).
|
|
98
|
+
*
|
|
99
|
+
* - Monitora quando gli elementi (pagine) diventano visibili
|
|
100
|
+
* - Aggiunge il numero di pagina al Set delle pagine visibili quando entra nel viewport
|
|
101
|
+
* - Il rootMargin di 500px carica le pagine prima che siano effettivamente visibili (preloading)
|
|
102
|
+
*/
|
|
103
|
+
const pageObserverCallback = useCallback((entries) => {
|
|
104
|
+
entries.forEach(entry => {
|
|
105
|
+
const pageNum = parseInt(entry.target.getAttribute('data-page-number') || '0');
|
|
106
|
+
if (entry.isIntersecting) {
|
|
107
|
+
// Aggiunge la pagina al Set di quelle da renderizzare
|
|
108
|
+
setVisiblePages(prev => new Set([...prev, pageNum]));
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
}, []);
|
|
112
|
+
/**
|
|
113
|
+
* Crea e configura l'Intersection Observer per il lazy loading.
|
|
114
|
+
*
|
|
115
|
+
* Configurazione:
|
|
116
|
+
* - root: null → osserva rispetto al viewport del browser
|
|
117
|
+
* - rootMargin: '500px' → inizia il caricamento 500px prima che la pagina sia visibile (buffer)
|
|
118
|
+
* - threshold: 0.01 → trigger quando anche solo l'1% dell'elemento è visibile
|
|
119
|
+
*
|
|
120
|
+
* Benefici:
|
|
121
|
+
* - Non blocca l'UI durante il rendering
|
|
122
|
+
* - Carica solo le pagine necessarie
|
|
123
|
+
* - Migliora le performance su PDF con molte pagine
|
|
124
|
+
*/
|
|
125
|
+
useEffect(() => {
|
|
126
|
+
observerRef.current = new IntersectionObserver(pageObserverCallback, {
|
|
127
|
+
root: null,
|
|
128
|
+
rootMargin: '500px',
|
|
129
|
+
threshold: 0.01
|
|
130
|
+
});
|
|
131
|
+
return () => {
|
|
132
|
+
// Cleanup: disconnette l'observer quando il componente viene smontato
|
|
133
|
+
observerRef.current?.disconnect();
|
|
134
|
+
};
|
|
135
|
+
}, [pageObserverCallback]);
|
|
136
|
+
// Use iframe se react-pdf non è disponibile O se è desktop
|
|
137
|
+
if (!isReactPdfAvailable || (!isMobile && pdfUrl)) {
|
|
138
|
+
return (_jsx(PDFViewerContainer, { children: _jsx("iframe", { src: `${pdfUrl}#${enableFitToWidth ? 'view=FitH&' : ''}scrollbar=1`, title: title, style: {
|
|
139
|
+
width: '100%',
|
|
140
|
+
height: '100%',
|
|
141
|
+
border: 'none',
|
|
142
|
+
zIndex: 0,
|
|
143
|
+
pointerEvents: isResizingActive === true ? "none" : "auto"
|
|
144
|
+
} }, pdfUrl) }));
|
|
145
|
+
}
|
|
146
|
+
// Usa react-pdf solo per mobile e solo se disponibile
|
|
147
|
+
return _jsxs(PDFViewerContainer, { children: [loadedPagesNumber === 0 && totalPagesNumber > 0 && _jsx(LoadingOverlay, { children: _jsxs("div", { style: {
|
|
148
|
+
display: 'flex',
|
|
149
|
+
justifyContent: 'center',
|
|
150
|
+
alignItems: 'center',
|
|
151
|
+
flexDirection: 'column',
|
|
152
|
+
gap: '10px'
|
|
153
|
+
}, children: [_jsx(LoadIndicator, { height: 60, width: 60 }), _jsxs("div", { children: [SDKUI_Localizator.Loading, "..."] })] }) }), _jsx("div", { style: { display: loadedPagesNumber > 0 && totalPagesNumber > 0 ? 'block' : 'none' }, children: _jsx(Document, { file: pdfBlob, onLoadSuccess: ({ numPages }) => {
|
|
154
|
+
setTotalPagesNumber(numPages);
|
|
155
|
+
setLoadedPagesNumber(0);
|
|
156
|
+
}, loading: _jsxs("div", { style: {
|
|
157
|
+
display: 'flex',
|
|
158
|
+
justifyContent: 'center',
|
|
159
|
+
alignItems: 'center',
|
|
160
|
+
height: '100%',
|
|
161
|
+
flexDirection: 'column',
|
|
162
|
+
gap: '10px'
|
|
163
|
+
}, children: [_jsx(LoadIndicator, { height: 60, width: 60 }), _jsxs("div", { children: [SDKUI_Localizator.Loading, "..."] })] }), error: _jsxs("div", { style: {
|
|
164
|
+
display: 'flex',
|
|
165
|
+
justifyContent: 'center',
|
|
166
|
+
alignItems: 'center',
|
|
167
|
+
height: '100%',
|
|
168
|
+
flexDirection: 'column',
|
|
169
|
+
gap: '10px'
|
|
170
|
+
}, children: [_jsx(IconCloseOutline, { fontSize: 64, color: TMColors.error }), _jsx("div", { children: "Errore nel caricamento del PDF" })] }), children: Array.from(new Array(totalPagesNumber), (el, index) => {
|
|
171
|
+
const pageNumber = index + 1;
|
|
172
|
+
const shouldRender = visiblePages.has(pageNumber);
|
|
173
|
+
return (_jsx("div", { "data-page-number": pageNumber, ref: (el) => {
|
|
174
|
+
if (el && observerRef.current) {
|
|
175
|
+
observerRef.current.observe(el);
|
|
176
|
+
}
|
|
177
|
+
}, style: {
|
|
178
|
+
minHeight: shouldRender ? 'auto' : '1000px',
|
|
179
|
+
display: 'flex',
|
|
180
|
+
justifyContent: 'center',
|
|
181
|
+
alignItems: 'center'
|
|
182
|
+
}, children: shouldRender && (_jsx(Page, { pageNumber: pageNumber, renderTextLayer: false, renderAnnotationLayer: false, width: Math.min(window.innerWidth - 40, 1200), loading: _jsx("div", { style: { padding: '20px' }, children: _jsx(LoadIndicator, { height: 40, width: 40 }) }), onLoadSuccess: () => {
|
|
183
|
+
setLoadedPagesNumber(prev => prev + 1);
|
|
184
|
+
} })) }, `page_${pageNumber}`));
|
|
185
|
+
}) }) })] });
|
|
186
|
+
};
|
|
187
|
+
export default TMPdfViewer;
|
package/lib/helper/TMUtils.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { FileItem } from '../components';
|
|
3
|
+
import { DataColumnDescriptor, PdGs, SearchResultDescriptor } from '@topconsultnpm/sdk-ts';
|
|
3
4
|
export declare const getFileIcon: (fileExtension: string | undefined, fileCount: number | undefined, tooltipContent?: JSX.Element | string) => import("react/jsx-runtime").JSX.Element;
|
|
4
5
|
export declare function formatBytes(bytes: number | undefined, decimalPlaces?: number): string;
|
|
5
6
|
export interface RowData {
|
|
@@ -64,4 +65,5 @@ export declare const parseSignatureConfiguration: (did: number, informationSign:
|
|
|
64
65
|
allowCopyright: boolean;
|
|
65
66
|
copyrightValue: string;
|
|
66
67
|
};
|
|
68
|
+
export declare const convertSearchResultDescriptorToFileItems: (documents: Array<SearchResultDescriptor>) => Array<FileItem>;
|
|
67
69
|
export {};
|
package/lib/helper/TMUtils.js
CHANGED
|
@@ -382,3 +382,54 @@ export const parseSignatureConfiguration = (did, informationSign, firstName, las
|
|
|
382
382
|
throw error;
|
|
383
383
|
}
|
|
384
384
|
};
|
|
385
|
+
export const convertSearchResultDescriptorToFileItems = (documents) => {
|
|
386
|
+
const fileItems = [];
|
|
387
|
+
documents.forEach((doc, docIndex) => {
|
|
388
|
+
const columns = doc.dtdResult?.columns || [];
|
|
389
|
+
const rows = doc.dtdResult?.rows || [];
|
|
390
|
+
// Map column captions to their indexes for quick lookup
|
|
391
|
+
const colIndexMap = {};
|
|
392
|
+
columns.forEach((col, i) => {
|
|
393
|
+
if (col.caption !== undefined) {
|
|
394
|
+
colIndexMap[col.caption] = i;
|
|
395
|
+
}
|
|
396
|
+
});
|
|
397
|
+
const getVal = (row, caption) => {
|
|
398
|
+
const idx = colIndexMap[caption];
|
|
399
|
+
return idx !== undefined ? row[idx] : undefined;
|
|
400
|
+
};
|
|
401
|
+
rows.forEach((row, rowIndex) => {
|
|
402
|
+
let baseName = doc.fromName || `Document ${docIndex + 1}`;
|
|
403
|
+
const did = getVal(row, 'DID');
|
|
404
|
+
const fileExt = getVal(row, 'FileExt');
|
|
405
|
+
const tid = getVal(row, 'TID');
|
|
406
|
+
const fileSize = getVal(row, 'FileSize');
|
|
407
|
+
if (did) {
|
|
408
|
+
baseName += ` (DID: ${did})`;
|
|
409
|
+
}
|
|
410
|
+
if (fileExt) {
|
|
411
|
+
baseName += `.${fileExt}`;
|
|
412
|
+
}
|
|
413
|
+
fileItems.push({
|
|
414
|
+
id: did ? Number(did) : Number(`${docIndex}${rowIndex}`),
|
|
415
|
+
name: baseName,
|
|
416
|
+
isDirectory: false,
|
|
417
|
+
items: [],
|
|
418
|
+
tid: tid !== undefined ? Number(tid) : undefined,
|
|
419
|
+
did: did !== undefined ? Number(did) : undefined,
|
|
420
|
+
ext: fileExt ?? undefined,
|
|
421
|
+
size: fileSize !== undefined ? Number(fileSize) : 1,
|
|
422
|
+
creationTime: undefined,
|
|
423
|
+
lastUpdateTime: undefined,
|
|
424
|
+
updaterID: undefined,
|
|
425
|
+
updaterName: undefined,
|
|
426
|
+
description: undefined,
|
|
427
|
+
checkOutUserID: undefined,
|
|
428
|
+
checkOutUserName: undefined,
|
|
429
|
+
checkoutDate: null,
|
|
430
|
+
version: undefined,
|
|
431
|
+
});
|
|
432
|
+
});
|
|
433
|
+
});
|
|
434
|
+
return fileItems;
|
|
435
|
+
};
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { AccessLevels, DcmtTypeDescriptor, FileDescriptor, UserDescriptor } from "@topconsultnpm/sdk-ts";
|
|
3
|
+
import { DcmtInfo, DownloadModes, DownloadTypes } from "../ts/types";
|
|
4
|
+
import { FileItem } from "../components";
|
|
5
|
+
/**
|
|
6
|
+
* Check-in/Check-out Manager
|
|
7
|
+
* Questo modulo gestisce tutte le operazioni di check-in e check-out
|
|
8
|
+
* dei documenti e delle bozze dei gruppi di lavoro.
|
|
9
|
+
*
|
|
10
|
+
* Operazioni gestite:
|
|
11
|
+
* - Generazione nomi file per download e checkout con timestamp e identificatori univoci
|
|
12
|
+
* - Download di documenti in modalità checkout
|
|
13
|
+
* - Gestione dello storage locale delle informazioni di checkout (aggiunta, aggiornamento, rimozione)
|
|
14
|
+
* - Validazione dei nomi file secondo le convenzioni di naming CICO
|
|
15
|
+
* - Rendering dell'interfaccia utente per conferma check-in con visualizzazione anomalie
|
|
16
|
+
* - Determinazione dello stato di check-out dei documenti (editMode/lockMode)
|
|
17
|
+
* - Verifica permessi e abilitazione funzionalità CICO per tipo documento
|
|
18
|
+
*/
|
|
19
|
+
export interface CheckoutInfo {
|
|
20
|
+
DID: string;
|
|
21
|
+
TID: string;
|
|
22
|
+
checkoutFolder: string;
|
|
23
|
+
checkoutName: string;
|
|
24
|
+
}
|
|
25
|
+
interface CheckoutStatusResult {
|
|
26
|
+
isCheckedOut: boolean;
|
|
27
|
+
mode: 'editMode' | 'lockMode' | '';
|
|
28
|
+
version: number;
|
|
29
|
+
icon: React.ReactNode | null;
|
|
30
|
+
editLockTooltipText: React.ReactNode | null;
|
|
31
|
+
}
|
|
32
|
+
export type DownloadSource = {
|
|
33
|
+
type: 'fileItem';
|
|
34
|
+
fileItem: FileItem;
|
|
35
|
+
} | {
|
|
36
|
+
type: 'dcmtInfo';
|
|
37
|
+
dcmtInfo: DcmtInfo;
|
|
38
|
+
originalFileName: string;
|
|
39
|
+
};
|
|
40
|
+
export declare const getCicoDownloadFileName: (source: DownloadSource, checkout: boolean, withTimestampAndExt: boolean) => string;
|
|
41
|
+
export declare const cicoDownloadFilesCallback: (sources: Array<DownloadSource>, checkout: boolean, downloadDcmtsAsync: (inputDcmts: Array<DcmtInfo> | undefined, downloadType?: DownloadTypes, downloadMode?: DownloadModes, onFileDownloaded?: (dcmtFile: File) => void, confirmAttachments?: (list: FileDescriptor[]) => Promise<string[] | undefined>, skipConfirmation?: boolean) => Promise<void>) => Promise<void>;
|
|
42
|
+
export declare const updateCicoCheckoutStorageItem: (item: CheckoutInfo, type: "fileItem" | "dcmtInfo", action?: "addOrUpdate" | "remove") => void;
|
|
43
|
+
export declare const validateCicoFileName: (source: DownloadSource, fileName: string) => FileNameValidation;
|
|
44
|
+
type ValidationResult = {
|
|
45
|
+
expected: string | number | undefined;
|
|
46
|
+
current: string | number | undefined;
|
|
47
|
+
isValid: boolean;
|
|
48
|
+
};
|
|
49
|
+
type FileNameValidationItems = {
|
|
50
|
+
name: ValidationResult;
|
|
51
|
+
archiveID: ValidationResult;
|
|
52
|
+
did: ValidationResult;
|
|
53
|
+
tid: ValidationResult;
|
|
54
|
+
fileExtension: ValidationResult;
|
|
55
|
+
};
|
|
56
|
+
type FileNameValidation = {
|
|
57
|
+
isValid: boolean;
|
|
58
|
+
validationResults?: FileNameValidationItems;
|
|
59
|
+
};
|
|
60
|
+
export declare const renderCicoCheckInContent: (source: DownloadSource, selectedFilename: File, isValid: boolean, validationItems: FileNameValidationItems | undefined, color?: string) => React.ReactNode;
|
|
61
|
+
interface CheckInCheckOutDcmtInfo {
|
|
62
|
+
CICO: number;
|
|
63
|
+
CanCICO: AccessLevels;
|
|
64
|
+
CanDelChronology: AccessLevels;
|
|
65
|
+
UserID_MID: number;
|
|
66
|
+
Date_MID: number;
|
|
67
|
+
Ver_MID: number;
|
|
68
|
+
UserID_CanViewOrUpdate: AccessLevels;
|
|
69
|
+
Date_CanViewOrUpdate: AccessLevels;
|
|
70
|
+
Ver_CanViewOrUpdate: AccessLevels;
|
|
71
|
+
}
|
|
72
|
+
export declare const getDcmtCicoInfo: (dtd: DcmtTypeDescriptor | undefined) => CheckInCheckOutDcmtInfo;
|
|
73
|
+
/**
|
|
74
|
+
* Determina lo stato di check-in/check-out di un documento
|
|
75
|
+
*
|
|
76
|
+
* @param dcmt - Il documento in formato array (MetadataValueDescriptorEx[]) o oggetto piatto
|
|
77
|
+
* @param allUsers - Lista di tutti gli utenti per risolvere i nomi
|
|
78
|
+
* @param dtd - Descrittore del tipo documento contenente le definizioni dei metadati CICO
|
|
79
|
+
* @returns Oggetto con cicoEnabled (se CICO è abilitato) e checkoutStatus (dettagli dello stato)
|
|
80
|
+
*/
|
|
81
|
+
export declare const getDcmtCicoStatus: (dcmt: any, allUsers: Array<UserDescriptor>, dtd: DcmtTypeDescriptor | undefined) => {
|
|
82
|
+
cicoEnabled: boolean;
|
|
83
|
+
checkoutStatus: CheckoutStatusResult;
|
|
84
|
+
};
|
|
85
|
+
export {};
|