@topconsultnpm/sdkui-react 6.22.0-t2 → 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.
Files changed (199) hide show
  1. package/lib/components/NewComponents/ContextMenu/TMContextMenu.js +3 -3
  2. package/lib/components/NewComponents/ContextMenu/hooks.d.ts +1 -1
  3. package/lib/components/NewComponents/FloatingMenuBar/TMFloatingMenuBar.js +6 -6
  4. package/lib/components/NewComponents/FloatingMenuBar/styles.d.ts +15 -15
  5. package/lib/components/base/Styled.js +7 -5
  6. package/lib/components/base/TMAccordionNew.js +7 -7
  7. package/lib/components/base/TMAlert.d.ts +32 -32
  8. package/lib/components/base/TMAlert.js +6 -8
  9. package/lib/components/base/TMAreaManager.js +53 -55
  10. package/lib/components/base/TMButton.js +4 -4
  11. package/lib/components/base/TMClosableList.js +3 -3
  12. package/lib/components/base/TMCustomButton.js +40 -48
  13. package/lib/components/base/TMDataGrid.d.ts +2 -0
  14. package/lib/components/base/TMDataGrid.js +35 -7
  15. package/lib/components/base/TMDropDownMenu.js +1 -1
  16. package/lib/components/base/TMFileManagerDataGridView.js +1 -1
  17. package/lib/components/base/TMFileManagerThumbnailItems.js +2 -2
  18. package/lib/components/base/TMLayout.d.ts +2 -2
  19. package/lib/components/base/TMLayout.js +3 -3
  20. package/lib/components/base/TMList.js +1 -1
  21. package/lib/components/base/TMListView.js +3 -3
  22. package/lib/components/base/TMModal.js +1 -1
  23. package/lib/components/base/TMPanel.js +8 -8
  24. package/lib/components/base/TMPopUp.js +2 -2
  25. package/lib/components/base/TMResizableMenu.js +2 -2
  26. package/lib/components/base/TMRightSidebar.js +1 -1
  27. package/lib/components/base/TMShowAllOrMaxItemsButton.js +1 -1
  28. package/lib/components/base/TMSpinner.d.ts +2 -1
  29. package/lib/components/base/TMSpinner.js +9 -7
  30. package/lib/components/base/TMTab.js +2 -2
  31. package/lib/components/base/TMTabControl.d.ts +106 -0
  32. package/lib/components/base/TMTabControl.js +664 -0
  33. package/lib/components/base/TMToggleButton.js +2 -2
  34. package/lib/components/base/TMToolbarCard.js +3 -3
  35. package/lib/components/base/TMTreeView.js +35 -3
  36. package/lib/components/base/TMWaitPanel.js +3 -3
  37. package/lib/components/base/waitPanel/TMWaitPanelConfirm.d.ts +12 -0
  38. package/lib/components/base/waitPanel/TMWaitPanelConfirm.js +185 -0
  39. package/lib/components/base/waitPanel/TMWaitPanelManager.d.ts +169 -0
  40. package/lib/components/base/waitPanel/TMWaitPanelManager.js +320 -0
  41. package/lib/components/base/waitPanel/TMWaitPanelView.d.ts +53 -0
  42. package/lib/components/base/waitPanel/TMWaitPanelView.js +274 -0
  43. package/lib/components/base/waitPanel/index.d.ts +1 -0
  44. package/lib/components/base/waitPanel/index.js +1 -0
  45. package/lib/components/choosers/TMCultureIDPicker.js +2 -2
  46. package/lib/components/choosers/TMDataListItemChooser.js +1 -1
  47. package/lib/components/choosers/TMDataListItemPicker.js +2 -2
  48. package/lib/components/choosers/TMDcmtTypeChooser.js +1 -1
  49. package/lib/components/choosers/TMDiskChooser.js +1 -1
  50. package/lib/components/choosers/TMDistinctValues.js +28 -19
  51. package/lib/components/choosers/TMDynDataListItemChooser.js +1 -1
  52. package/lib/components/choosers/TMImageIDChooser.js +1 -1
  53. package/lib/components/choosers/TMMetadataChooser.js +2 -2
  54. package/lib/components/choosers/TMPathChooser.js +17 -34
  55. package/lib/components/choosers/TMQuickSearchInfo.js +4 -4
  56. package/lib/components/choosers/TMQuickSearchSettingsForm.js +1 -1
  57. package/lib/components/choosers/TMRelationChooser.js +1 -1
  58. package/lib/components/choosers/TMSelectedValuesSummary.js +1 -3
  59. package/lib/components/choosers/TMUserChooser.js +1 -1
  60. package/lib/components/editors/TMCheckBox.js +1 -1
  61. package/lib/components/editors/TMDropDown.js +7 -7
  62. package/lib/components/editors/TMEditorStyled.d.ts +1 -1
  63. package/lib/components/editors/TMFormulaEditor.js +1 -1
  64. package/lib/components/editors/TMHtmlContentDisplay.js +1 -1
  65. package/lib/components/editors/TMLocalizedTextBox.js +1 -1
  66. package/lib/components/editors/TMMetadataValues.js +6 -6
  67. package/lib/components/editors/TMRadioButton.js +2 -2
  68. package/lib/components/editors/TMSummary.js +3 -3
  69. package/lib/components/editors/TMTextArea.js +3 -3
  70. package/lib/components/editors/TMTextBox.js +3 -3
  71. package/lib/components/editors/TMTextExpression.js +1 -1
  72. package/lib/components/features/archive/TMArchive.js +7 -2
  73. package/lib/components/features/assistant/TMHelpOnLineChat.d.ts +29 -0
  74. package/lib/components/features/assistant/TMHelpOnLineChat.js +1384 -0
  75. package/lib/components/features/assistant/TMToppyDraggableHelpCenter.js +4 -4
  76. package/lib/components/features/assistant/TMToppySpeechBubble.js +1 -1
  77. package/lib/components/features/assistant/dataset/Designer-Suggested-Questions.json +102 -0
  78. package/lib/components/features/assistant/dataset/Login-Suggested-Questions.json +32 -0
  79. package/lib/components/features/assistant/dataset/Surfer-Suggested-Questions.json +102 -0
  80. package/lib/components/features/documents/TMBatchUpdateForm.js +4 -5
  81. package/lib/components/features/documents/TMCopyToFolderForm.js +50 -42
  82. package/lib/components/features/documents/TMDcmtForm.js +53 -64
  83. package/lib/components/features/documents/TMDcmtFormActionButtons.js +2 -2
  84. package/lib/components/features/documents/TMDcmtIcon.d.ts +1 -3
  85. package/lib/components/features/documents/TMDcmtIcon.js +3 -5
  86. package/lib/components/features/documents/TMDcmtPreview.js +6 -4
  87. package/lib/components/features/documents/TMDcmtTasks.js +2 -9
  88. package/lib/components/features/documents/TMDownloadRelationViewerSection.js +1 -1
  89. package/lib/components/features/documents/TMFileUploader.js +7 -7
  90. package/lib/components/features/documents/TMMasterDetailDcmts.d.ts +2 -0
  91. package/lib/components/features/documents/TMMasterDetailDcmts.js +55 -130
  92. package/lib/components/features/documents/TMMasterInfoFields.js +4 -5
  93. package/lib/components/features/documents/TMMergeToPdfForm.js +56 -54
  94. package/lib/components/features/documents/TMMultiMasterDetailDcmtsForm.js +3 -6
  95. package/lib/components/features/documents/TMMultiMasterDetailDcmtsUtils.d.ts +1 -1
  96. package/lib/components/features/documents/TMMultiMasterDetailDcmtsUtils.js +4 -4
  97. package/lib/components/features/documents/TMRelationViewer.d.ts +16 -9
  98. package/lib/components/features/documents/TMRelationViewer.js +240 -168
  99. package/lib/components/features/documents/copyAndMergeDcmtsShared.d.ts +1 -1
  100. package/lib/components/features/documents/relationTreeState.d.ts +32 -0
  101. package/lib/components/features/documents/relationTreeState.js +89 -0
  102. package/lib/components/features/search/TMMetadataOutputForm.js +1 -1
  103. package/lib/components/features/search/TMMetadataSorterForm.js +1 -1
  104. package/lib/components/features/search/TMSavedQuerySelector.js +2 -2
  105. package/lib/components/features/search/TMSearch.d.ts +1 -1
  106. package/lib/components/features/search/TMSearch.js +71 -12
  107. package/lib/components/features/search/TMSearchQueryEditor.js +2 -2
  108. package/lib/components/features/search/TMSearchQueryPanel.js +1 -5
  109. package/lib/components/features/search/TMSearchResult.d.ts +5 -0
  110. package/lib/components/features/search/TMSearchResult.js +34 -18
  111. package/lib/components/features/search/TMSignatureInfoContent.js +1 -1
  112. package/lib/components/features/search/TMTreeSelector.js +38 -36
  113. package/lib/components/features/search/TMViewHistoryDcmt.js +14 -25
  114. package/lib/components/features/tasks/TMTaskForm.js +1 -1
  115. package/lib/components/features/tasks/TMTaskFormUtils.js +3 -3
  116. package/lib/components/features/tasks/TMTasksAgenda.js +1 -1
  117. package/lib/components/features/tasks/TMTasksCalendar.js +1 -1
  118. package/lib/components/features/tasks/TMTasksHeader.js +1 -1
  119. package/lib/components/features/tasks/TMTasksUtilsView.js +1 -1
  120. package/lib/components/features/tasks/TMTasksView.js +97 -102
  121. package/lib/components/features/wg/TMWGsCopyMoveForm.js +92 -92
  122. package/lib/components/features/workflow/TMWorkflowPopup.js +2 -2
  123. package/lib/components/features/workflow/diagram/ConnectionComponent.js +3 -3
  124. package/lib/components/features/workflow/diagram/DiagramItemComponent.js +3 -3
  125. package/lib/components/features/workflow/diagram/DiagramItemForm.js +1 -1
  126. package/lib/components/features/workflow/diagram/DiagramItemSvgContent.js +1 -1
  127. package/lib/components/features/workflow/diagram/RecipientList.js +1 -1
  128. package/lib/components/features/workflow/diagram/WFDiagram.js +4 -4
  129. package/lib/components/forms/Login/Menu.js +1 -1
  130. package/lib/components/forms/Login/OTPReader.js +1 -1
  131. package/lib/components/forms/Login/PasswordStrengthChecker.js +1 -1
  132. package/lib/components/forms/Login/RapidAccessLogin.js +2 -2
  133. package/lib/components/forms/Login/RecoverPasswordFlow.js +2 -2
  134. package/lib/components/forms/Login/SelectBox.js +1 -1
  135. package/lib/components/forms/Login/StepIndicator.js +1 -1
  136. package/lib/components/forms/Login/TMLoginForm.js +7 -7
  137. package/lib/components/forms/Login/TextBox.js +1 -1
  138. package/lib/components/forms/TMApplyForm.js +3 -3
  139. package/lib/components/forms/TMChooserForm.js +1 -1
  140. package/lib/components/forms/TMResultDialog.js +1 -1
  141. package/lib/components/forms/TMSaveForm.js +3 -3
  142. package/lib/components/grids/TMBlogAttachments.js +1 -1
  143. package/lib/components/grids/TMBlogsPost.js +92 -96
  144. package/lib/components/grids/TMBlogsPostUtils.js +1 -1
  145. package/lib/components/grids/TMRecentsManager.js +4 -4
  146. package/lib/components/grids/TMValidationItemsList.js +1 -1
  147. package/lib/components/index.d.ts +6 -0
  148. package/lib/components/index.js +5 -0
  149. package/lib/components/layout/panelManager/TMPanelManagerContainer.js +3 -3
  150. package/lib/components/layout/panelManager/TMPanelManagerToolbar.js +1 -1
  151. package/lib/components/layout/panelManager/TMPanelWrapper.js +1 -1
  152. package/lib/components/pages/TMPage.js +30 -32
  153. package/lib/components/query/TMQueryCountButton.js +1 -1
  154. package/lib/components/query/TMQueryEditor.d.ts +3 -0
  155. package/lib/components/query/TMQueryEditor.js +9 -8
  156. package/lib/components/sidebar/TMCommandsPanel.js +1 -1
  157. package/lib/components/sidebar/TMHeader.d.ts +1 -0
  158. package/lib/components/sidebar/TMHeader.js +9 -9
  159. package/lib/components/sidebar/TMSidebar.js +1 -1
  160. package/lib/components/sidebar/TMSidebarItem.js +1 -1
  161. package/lib/components/viewers/TMMidViewer.js +2 -2
  162. package/lib/components/viewers/TMTidViewer.js +3 -3
  163. package/lib/components/wizard/TMStepIndicator.js +3 -3
  164. package/lib/helper/Enum_Localizator.d.ts +4 -4
  165. package/lib/helper/Enum_Localizator.js +1 -0
  166. package/lib/helper/Globalization.d.ts +1 -1
  167. package/lib/helper/SDKUI_Localizator.d.ts +736 -712
  168. package/lib/helper/SDKUI_Localizator.js +240 -0
  169. package/lib/helper/TMAppUpdatedModal.js +2 -2
  170. package/lib/helper/TMIcons.js +1 -3
  171. package/lib/helper/TMPdfViewer.js +1 -1
  172. package/lib/helper/TMToppyMessage.js +1 -1
  173. package/lib/helper/TMUtils.js +1 -1
  174. package/lib/helper/ZipManager.d.ts +1 -1
  175. package/lib/helper/ZipManager.js +2 -1
  176. package/lib/helper/checkinCheckoutManager.d.ts +1 -1
  177. package/lib/helper/checkinCheckoutManager.js +1 -1
  178. package/lib/helper/dcmtsHelper.d.ts +4 -2
  179. package/lib/helper/dcmtsHelper.js +3 -1
  180. package/lib/helper/helpers.d.ts +1 -1
  181. package/lib/helper/helpers.js +2 -2
  182. package/lib/hooks/tmDistinctValuesGridHelper.d.ts +1 -1
  183. package/lib/hooks/useCaseFlowApprove.d.ts +3 -3
  184. package/lib/hooks/useCheckInOutOperations.d.ts +0 -6
  185. package/lib/hooks/useCheckInOutOperations.js +14 -34
  186. package/lib/hooks/useDcmtOperations.d.ts +3 -12
  187. package/lib/hooks/useDcmtOperations.js +187 -179
  188. package/lib/hooks/useDocumentOperations.d.ts +1 -0
  189. package/lib/hooks/useDocumentOperations.js +16 -27
  190. package/lib/hooks/useInputDialog.js +1 -1
  191. package/lib/hooks/useMultiMasterDetailDcmts.d.ts +1 -16
  192. package/lib/hooks/useMultiMasterDetailDcmts.js +65 -67
  193. package/lib/hooks/usePreventFileDrop.js +9 -0
  194. package/lib/hooks/useQueryParametersDialog.js +1 -1
  195. package/lib/hooks/useWorkflowApprove.js +33 -17
  196. package/lib/services/caseflow/CaseFlowService.d.ts +47 -6
  197. package/lib/services/caseflow/CaseFlowService.js +82 -14
  198. package/lib/services/platform_services.d.ts +4 -4
  199. package/package.json +9 -10
@@ -48,6 +48,16 @@ export class SDKUI_Localizator {
48
48
  default: return "Interrompere l'elaborazione?";
49
49
  }
50
50
  }
51
+ static get Aborting() {
52
+ switch (this._cultureID) {
53
+ case CultureIDs.De_DE: return "Wird gestoppt...";
54
+ case CultureIDs.En_US: return "Aborting...";
55
+ case CultureIDs.Es_ES: return "Deteniendo...";
56
+ case CultureIDs.Fr_FR: return "Arrêt en cours...";
57
+ case CultureIDs.Pt_PT: return "A parar...";
58
+ default: return "Interruzione...";
59
+ }
60
+ }
51
61
  static get About() {
52
62
  switch (this._cultureID) {
53
63
  case CultureIDs.De_DE: return "Informationen";
@@ -158,6 +168,16 @@ export class SDKUI_Localizator {
158
168
  default: return "Aggiungi partecipanti";
159
169
  }
160
170
  }
171
+ static get AddTab() {
172
+ switch (this._cultureID) {
173
+ case CultureIDs.De_DE: return "Tab hinzufügen";
174
+ case CultureIDs.En_US: return "Add tab";
175
+ case CultureIDs.Es_ES: return "Añadir pestaña";
176
+ case CultureIDs.Fr_FR: return "Ajouter un onglet";
177
+ case CultureIDs.Pt_PT: return "Adicionar aba";
178
+ default: return "Aggiungi tab";
179
+ }
180
+ }
161
181
  static get AddTo() {
162
182
  switch (this._cultureID) {
163
183
  case CultureIDs.De_DE: return "Hinzufügen zu";
@@ -1200,6 +1220,26 @@ export class SDKUI_Localizator {
1200
1220
  default: return "Chiudi";
1201
1221
  }
1202
1222
  }
1223
+ static get CloseOtherTabs() {
1224
+ switch (this._cultureID) {
1225
+ case CultureIDs.De_DE: return "Andere Tabs schließen";
1226
+ case CultureIDs.En_US: return "Close other tabs";
1227
+ case CultureIDs.Es_ES: return "Cerrar las otras pestañas";
1228
+ case CultureIDs.Fr_FR: return "Fermer les autres onglets";
1229
+ case CultureIDs.Pt_PT: return "Fechar as outras abas";
1230
+ default: return "Chiudi le altre schede";
1231
+ }
1232
+ }
1233
+ static get CloseTabs_ConfirmForN() {
1234
+ switch (this._cultureID) {
1235
+ case CultureIDs.De_DE: return "Sind Sie sicher, dass Sie {{0}} Tabs schließen möchten?";
1236
+ case CultureIDs.En_US: return "Are you sure you want to close {{0}} tabs?";
1237
+ case CultureIDs.Es_ES: return "¿Está seguro de que desea cerrar {{0}} pestañas?";
1238
+ case CultureIDs.Fr_FR: return "Êtes-vous sûr de vouloir fermer {{0}} onglets ?";
1239
+ case CultureIDs.Pt_PT: return "Tem certeza de que deseja fechar {{0}} abas?";
1240
+ default: return "Sei sicuro di voler chiudere {{0}} schede?";
1241
+ }
1242
+ }
1203
1243
  static get Closed() {
1204
1244
  switch (this._cultureID) {
1205
1245
  case CultureIDs.De_DE: return "Geschlossen";
@@ -2529,6 +2569,26 @@ export class SDKUI_Localizator {
2529
2569
  default: return "Download file";
2530
2570
  }
2531
2571
  }
2572
+ static get DownloadInterrupted() {
2573
+ switch (this._cultureID) {
2574
+ case CultureIDs.De_DE: return "Download abgebrochen";
2575
+ case CultureIDs.En_US: return "Download interrupted";
2576
+ case CultureIDs.Es_ES: return "Descarga interrumpida";
2577
+ case CultureIDs.Fr_FR: return "Téléchargement interrompu";
2578
+ case CultureIDs.Pt_PT: return "Download interrompido";
2579
+ default: return "Download interrotto";
2580
+ }
2581
+ }
2582
+ static get DownloadInterruptedFiles() {
2583
+ switch (this._cultureID) {
2584
+ case CultureIDs.De_DE: return "Download abgebrochen: {{0}} von {{1}} Dateien heruntergeladen";
2585
+ case CultureIDs.En_US: return "Download interrupted: {{0}} of {{1}} files downloaded";
2586
+ case CultureIDs.Es_ES: return "Descarga interrumpida: {{0}} de {{1}} archivos descargados";
2587
+ case CultureIDs.Fr_FR: return "Téléchargement interrompu : {{0}} fichiers sur {{1}} téléchargés";
2588
+ case CultureIDs.Pt_PT: return "Download interrompido: {{0}} de {{1}} arquivos baixados";
2589
+ default: return "Download interrotto: scaricati {{0}} file su {{1}}";
2590
+ }
2591
+ }
2532
2592
  static get Download_in_Process() {
2533
2593
  switch (this._cultureID) {
2534
2594
  case CultureIDs.De_DE: return "Download läuft";
@@ -2725,6 +2785,16 @@ export class SDKUI_Localizator {
2725
2785
  default: return "Configurazione Editor";
2726
2786
  }
2727
2787
  }
2788
+ static get Elapsed() {
2789
+ switch (this._cultureID) {
2790
+ case CultureIDs.De_DE: return "vergangen";
2791
+ case CultureIDs.En_US: return "elapsed";
2792
+ case CultureIDs.Es_ES: return "transcurridos";
2793
+ case CultureIDs.Fr_FR: return "écoulés";
2794
+ case CultureIDs.Pt_PT: return "decorridos";
2795
+ default: return "trascorsi";
2796
+ }
2797
+ }
2728
2798
  static get ElectronicInvoice() {
2729
2799
  switch (this._cultureID) {
2730
2800
  case CultureIDs.De_DE: return "Elektronische Rechnung";
@@ -3117,6 +3187,16 @@ export class SDKUI_Localizator {
3117
3187
  default: return "Espansione {{0}} di {{1}}...";
3118
3188
  }
3119
3189
  }
3190
+ static get ExpansionProgressIsEstimated() {
3191
+ switch (this._cultureID) {
3192
+ case CultureIDs.De_DE: return "Während der Erweiterung werden weitere Knoten gefunden: Der Gesamtwert steigt und der Prozentsatz ist ein Richtwert.";
3193
+ case CultureIDs.En_US: return "More nodes are found during the expansion: the total increases and the percentage is approximate.";
3194
+ case CultureIDs.Es_ES: return "Durante la expansión se encuentran más nodos: el total aumenta y el porcentaje es orientativo.";
3195
+ case CultureIDs.Fr_FR: return "D'autres nœuds sont trouvés pendant l'expansion : le total augmente et le pourcentage est indicatif.";
3196
+ case CultureIDs.Pt_PT: return "Durante a expansão são encontrados mais nós: o total aumenta e a percentagem é indicativa.";
3197
+ default: return "Durante l'espansione vengono trovati altri nodi: il totale aumenta e la percentuale è indicativa.";
3198
+ }
3199
+ }
3120
3200
  static get Expected() {
3121
3201
  switch (this._cultureID) {
3122
3202
  case CultureIDs.De_DE: return "Erwartet";
@@ -4218,6 +4298,116 @@ export class SDKUI_Localizator {
4218
4298
  default: return "Griglie";
4219
4299
  }
4220
4300
  }
4301
+ static get HelpOnLineShiftEnterHint() {
4302
+ switch (this._cultureID) {
4303
+ case CultureIDs.De_DE: return "Enter zum Senden, Umschalt+Enter für eine neue Zeile";
4304
+ case CultureIDs.En_US: return "Press Enter to send, Shift+Enter for a new line";
4305
+ case CultureIDs.Es_ES: return "Pulsa Intro para enviar, Mayús+Intro para una nueva línea";
4306
+ case CultureIDs.Fr_FR: return "Appuyez sur Entrée pour envoyer, Maj+Entrée pour aller à la ligne";
4307
+ case CultureIDs.Pt_PT: return "Prima Enter para enviar, Shift+Enter para uma nova linha";
4308
+ default: return "Premi Invio per inviare, Maiusc+Invio per andare a capo";
4309
+ }
4310
+ }
4311
+ static get HelpOnLineThinking01() {
4312
+ switch (this._cultureID) {
4313
+ case CultureIDs.De_DE: return "Ich denke darüber nach";
4314
+ case CultureIDs.En_US: return "Thinking about it";
4315
+ case CultureIDs.Es_ES: return "Lo estoy pensando";
4316
+ case CultureIDs.Fr_FR: return "J'y réfléchis";
4317
+ case CultureIDs.Pt_PT: return "Estou a pensar nisso";
4318
+ default: return "Ci sto pensando";
4319
+ }
4320
+ }
4321
+ static get HelpOnLineThinking02() {
4322
+ switch (this._cultureID) {
4323
+ case CultureIDs.De_DE: return "Ich durchsuche die Informationen";
4324
+ case CultureIDs.En_US: return "Searching through the information";
4325
+ case CultureIDs.Es_ES: return "Estoy buscando entre la información";
4326
+ case CultureIDs.Fr_FR: return "Je cherche parmi les informations";
4327
+ case CultureIDs.Pt_PT: return "Estou a procurar nas informações";
4328
+ default: return "Sto cercando tra le informazioni";
4329
+ }
4330
+ }
4331
+ static get HelpOnLineThinking03() {
4332
+ switch (this._cultureID) {
4333
+ case CultureIDs.De_DE: return "Ich lese die relevantesten Inhalte";
4334
+ case CultureIDs.En_US: return "Reading the most relevant content";
4335
+ case CultureIDs.Es_ES: return "Estoy leyendo los contenidos más relevantes";
4336
+ case CultureIDs.Fr_FR: return "Je lis les contenus les plus pertinents";
4337
+ case CultureIDs.Pt_PT: return "Estou a ler os conteúdos mais relevantes";
4338
+ default: return "Sto leggendo i contenuti più pertinenti";
4339
+ }
4340
+ }
4341
+ static get HelpOnLineThinking04() {
4342
+ switch (this._cultureID) {
4343
+ case CultureIDs.De_DE: return "Ich verbinde die Punkte";
4344
+ case CultureIDs.En_US: return "Connecting the dots";
4345
+ case CultureIDs.Es_ES: return "Estoy atando cabos";
4346
+ case CultureIDs.Fr_FR: return "Je relie les points";
4347
+ case CultureIDs.Pt_PT: return "Estou a ligar os pontos";
4348
+ default: return "Sto collegando i punti";
4349
+ }
4350
+ }
4351
+ static get HelpOnLineThinking05() {
4352
+ switch (this._cultureID) {
4353
+ case CultureIDs.De_DE: return "Ich überprüfe die Details";
4354
+ case CultureIDs.En_US: return "Checking the details";
4355
+ case CultureIDs.Es_ES: return "Estoy verificando los detalles";
4356
+ case CultureIDs.Fr_FR: return "Je vérifie les détails";
4357
+ case CultureIDs.Pt_PT: return "Estou a verificar os detalhes";
4358
+ default: return "Sto verificando i dettagli";
4359
+ }
4360
+ }
4361
+ static get HelpOnLineThinking06() {
4362
+ switch (this._cultureID) {
4363
+ case CultureIDs.De_DE: return "Ich bringe die Antwort in Ordnung";
4364
+ case CultureIDs.En_US: return "Putting the answer together";
4365
+ case CultureIDs.Es_ES: return "Estoy ordenando la respuesta";
4366
+ case CultureIDs.Fr_FR: return "Je mets de l'ordre dans la réponse";
4367
+ case CultureIDs.Pt_PT: return "Estou a organizar a resposta";
4368
+ default: return "Sto mettendo in ordine la risposta";
4369
+ }
4370
+ }
4371
+ static get HelpOnLineThinking07() {
4372
+ switch (this._cultureID) {
4373
+ case CultureIDs.De_DE: return "Fast geschafft";
4374
+ case CultureIDs.En_US: return "Almost there";
4375
+ case CultureIDs.Es_ES: return "Ya casi está";
4376
+ case CultureIDs.Fr_FR: return "On y est presque";
4377
+ case CultureIDs.Pt_PT: return "Estamos quase lá";
4378
+ default: return "Ci siamo quasi";
4379
+ }
4380
+ }
4381
+ static get HelpOnLineThinking08() {
4382
+ switch (this._cultureID) {
4383
+ case CultureIDs.De_DE: return "Noch einen Moment, ich feile noch daran";
4384
+ case CultureIDs.En_US: return "Just a moment more, polishing it up";
4385
+ case CultureIDs.Es_ES: return "Un momento más, estoy puliendo los detalles";
4386
+ case CultureIDs.Fr_FR: return "Encore un instant, je peaufine";
4387
+ case CultureIDs.Pt_PT: return "Só mais um momento, estou a finalizar";
4388
+ default: return "Ancora un momento, sto rifinendo";
4389
+ }
4390
+ }
4391
+ static get HelpOnLineThinking09() {
4392
+ switch (this._cultureID) {
4393
+ case CultureIDs.De_DE: return "Schwierige Frage, das dauert etwas länger";
4394
+ case CultureIDs.En_US: return "Tough question, this takes a little longer";
4395
+ case CultureIDs.Es_ES: return "Pregunta difícil, necesito un momento más";
4396
+ case CultureIDs.Fr_FR: return "Question difficile, il faut un peu plus de temps";
4397
+ case CultureIDs.Pt_PT: return "Pergunta difícil, preciso de mais um momento";
4398
+ default: return "Domanda impegnativa, ci vuole un attimo in più";
4399
+ }
4400
+ }
4401
+ static get HelpOnLineThinking10() {
4402
+ switch (this._cultureID) {
4403
+ case CultureIDs.De_DE: return "Letzter Schritt, ich vervollständige die Antwort";
4404
+ case CultureIDs.En_US: return "One last push, completing the answer";
4405
+ case CultureIDs.Es_ES: return "Último esfuerzo, estoy completando la respuesta";
4406
+ case CultureIDs.Fr_FR: return "Dernier effort, je termine la réponse";
4407
+ case CultureIDs.Pt_PT: return "Último esforço, estou a completar a resposta";
4408
+ default: return "Ultimo sforzo, sto completando la risposta";
4409
+ }
4410
+ }
4221
4411
  static get Hide_CompleteName() {
4222
4412
  switch (this._cultureID) {
4223
4413
  case CultureIDs.De_DE: return "Vollständigen Namen ausblenden";
@@ -4578,6 +4768,16 @@ export class SDKUI_Localizator {
4578
4768
  default: return "\"{{0}}\" non è un indirizzo e-mail valido.";
4579
4769
  }
4580
4770
  }
4771
+ static get InvalidFormatValue() {
4772
+ switch (this._cultureID) {
4773
+ case CultureIDs.De_DE: return "Der eingegebene Wert entspricht nicht dem erforderlichen Format.";
4774
+ case CultureIDs.En_US: return "The value entered does not match the required format.";
4775
+ case CultureIDs.Es_ES: return "El valor introducido no respeta el formato requerido.";
4776
+ case CultureIDs.Fr_FR: return "La valeur saisie ne respecte pas le format requis.";
4777
+ case CultureIDs.Pt_PT: return "O valor introduzido não respeita o formato exigido.";
4778
+ default: return "Il valore inserito non rispetta il formato richiesto.";
4779
+ }
4780
+ }
4581
4781
  static get InvalidTaxCode() {
4582
4782
  switch (this._cultureID) {
4583
4783
  case CultureIDs.De_DE: return "\"{{0}}\" ist kein gültiger Steuerkennzeichen.";
@@ -6943,6 +7143,26 @@ export class SDKUI_Localizator {
6943
7143
  default: return "Calcolo delle correlazioni interrotto: vengono mostrate solo le correlazioni già calcolate.";
6944
7144
  }
6945
7145
  }
7146
+ static get RelationsCalculationStoppedProgress() {
7147
+ switch (this._cultureID) {
7148
+ case CultureIDs.De_DE: return "Berechnung unterbrochen: {{0}} von {{1}} Dokumenten verarbeitet.";
7149
+ case CultureIDs.En_US: return "Calculation stopped: {{0}} of {{1}} documents processed.";
7150
+ case CultureIDs.Es_ES: return "Cálculo interrumpido: {{0}} de {{1}} documentos procesados.";
7151
+ case CultureIDs.Fr_FR: return "Calcul interrompu : {{0}} sur {{1}} documents traités.";
7152
+ case CultureIDs.Pt_PT: return "Cálculo interrompido: {{0}} de {{1}} documentos processados.";
7153
+ default: return "Calcolo interrotto: elaborati {{0}} documenti su {{1}}.";
7154
+ }
7155
+ }
7156
+ static get RelationsCalculationStoppedEmpty() {
7157
+ switch (this._cultureID) {
7158
+ case CultureIDs.De_DE: return "Berechnung unterbrochen: kein Dokument verarbeitet.";
7159
+ case CultureIDs.En_US: return "Calculation stopped: no documents processed.";
7160
+ case CultureIDs.Es_ES: return "Cálculo interrumpido: ningún documento procesado.";
7161
+ case CultureIDs.Fr_FR: return "Calcul interrompu : aucun document traité.";
7162
+ case CultureIDs.Pt_PT: return "Cálculo interrompido: nenhum documento processado.";
7163
+ default: return "Calcolo interrotto: nessun documento elaborato.";
7164
+ }
7165
+ }
6946
7166
  static get RelatedDcmtsNotFound() {
6947
7167
  switch (this._cultureID) {
6948
7168
  case CultureIDs.De_DE: return "Für das ausgewählte Dokument wurden keine zugehörigen Dokumente gefunden.";
@@ -7209,6 +7429,16 @@ export class SDKUI_Localizator {
7209
7429
  default: return "Aggiorna";
7210
7430
  }
7211
7431
  }
7432
+ static get Remaining() {
7433
+ switch (this._cultureID) {
7434
+ case CultureIDs.De_DE: return "verbleibend";
7435
+ case CultureIDs.En_US: return "remaining";
7436
+ case CultureIDs.Es_ES: return "restantes";
7437
+ case CultureIDs.Fr_FR: return "restants";
7438
+ case CultureIDs.Pt_PT: return "restantes";
7439
+ default: return "rimanenti";
7440
+ }
7441
+ }
7212
7442
  static get Reminder() {
7213
7443
  switch (this._cultureID) {
7214
7444
  case CultureIDs.De_DE: return "Erinnerung";
@@ -7269,6 +7499,16 @@ export class SDKUI_Localizator {
7269
7499
  default: return "Rimuovi oggetti selezionati";
7270
7500
  }
7271
7501
  }
7502
+ static get Rename() {
7503
+ switch (this._cultureID) {
7504
+ case CultureIDs.De_DE: return "Umbenennen";
7505
+ case CultureIDs.En_US: return "Rename";
7506
+ case CultureIDs.Es_ES: return "Renombrar";
7507
+ case CultureIDs.Fr_FR: return "Renommer";
7508
+ case CultureIDs.Pt_PT: return "Renomear";
7509
+ default: return "Rinomina";
7510
+ }
7511
+ }
7272
7512
  static get RenameFolder() {
7273
7513
  switch (this._cultureID) {
7274
7514
  case CultureIDs.De_DE: return "Ordner erfolgreich umbenannt";
@@ -128,7 +128,7 @@ export const TMAppUpdatedModal = () => {
128
128
  const onClose = () => { setIsOpen(false); };
129
129
  if (!isOpen)
130
130
  return null;
131
- return (_jsx(TMModal, { width: calcResponsiveSizes(deviceType, '520px', '520px', '95%'), height: 'auto', showHeader: false, resizable: false, onClose: onClose, children: _jsxs(Content, { children: [_jsxs(Header, { "$backgroundColor": appModuleColors.base, children: [_jsx(HeaderIcon, { children: _jsx(IconUpdate, { fontSize: 34 }) }), _jsx(HeaderTitle, { children: SDKUI_Localizator.AppUpdatedTitle }), _jsx(VersionBadge, { children: `${SDK_Globals.appModule} ${currentVersion}` })] }), _jsxs(Body, { children: [_jsx(Message, { children: previousVersion
131
+ return (_jsx(TMModal, { width: calcResponsiveSizes(deviceType, '520px', '520px', '95%'), height: 'auto', showHeader: false, resizable: false, onClose: onClose, children: _jsxs(Content, { children: [_jsxs(Header, { $backgroundColor: appModuleColors.base, children: [_jsx(HeaderIcon, { children: _jsx(IconUpdate, { fontSize: 34 }) }), _jsx(HeaderTitle, { children: SDKUI_Localizator.AppUpdatedTitle }), _jsx(VersionBadge, { children: `${SDK_Globals.appModule} ${currentVersion}` })] }), _jsxs(Body, { children: [_jsx(Message, { children: previousVersion
132
132
  ? SDKUI_Localizator.AppUpdatedMessageFromTo.replaceParams(previousVersion, currentVersion)
133
- : SDKUI_Localizator.AppUpdatedMessage.replaceParams(currentVersion) }), _jsx(SubMessage, { children: SDKUI_Localizator.AppUpdatedSubMessage })] }), _jsxs(Footer, { children: [_jsxs(PrimaryButton, { "$base": appModuleColors.base, "$hover": appModuleColors.hover, "$shadow": appModuleColors.shadow, onClick: () => window.open(WHATS_NEWS_LINK_URL, '_blank', 'noopener,noreferrer'), children: [_jsx(IconOpenInNew, { fontSize: 18 }), SDKUI_Localizator.DiscoverWhatsNew] }), _jsx(SecondaryButton, { onClick: onClose, children: SDKUI_Localizator.Close })] })] }) }));
133
+ : SDKUI_Localizator.AppUpdatedMessage.replaceParams(currentVersion) }), _jsx(SubMessage, { children: SDKUI_Localizator.AppUpdatedSubMessage })] }), _jsxs(Footer, { children: [_jsxs(PrimaryButton, { $base: appModuleColors.base, $hover: appModuleColors.hover, $shadow: appModuleColors.shadow, onClick: () => window.open(WHATS_NEWS_LINK_URL, '_blank', 'noopener,noreferrer'), children: [_jsx(IconOpenInNew, { fontSize: 18 }), SDKUI_Localizator.DiscoverWhatsNew] }), _jsx(SecondaryButton, { onClick: onClose, children: SDKUI_Localizator.Close })] })] }) }));
134
134
  };
@@ -497,9 +497,7 @@ function IconLock(props) { return (_jsxs("svg", { fontSize: props.fontSize ? pro
497
497
  function IconLockClosed(props) { return (_jsxs("svg", { fontSize: props?.fontSize ? props?.fontSize : FONTSIZE, viewBox: "0 0 24 24", fill: "currentColor", height: "1em", width: "1em", ...props, children: [" ", _jsx("path", { d: "M7 10V7a5 5 0 1110 0v3h2a2 2 0 012 2v8a2 2 0 01-2 2H5a2 2 0 01-2-2v-8c0-1.1.9-2 2-2h2zm2 0h6V7a3 3 0 00-6 0v3zm-4 2v8h14v-8H5zm7 2a1 1 0 011 1v2a1 1 0 01-2 0v-2a1 1 0 011-1z" }), " "] })); }
498
498
  function IconBxLock(props) { return (_jsxs("svg", { fontSize: props?.fontSize ? props.fontSize : FONTSIZE, viewBox: "0 0 24 24", fill: "currentColor", height: "1em", width: "1em", ...props, children: [" ", _jsx("path", { d: "M12 2C9.243 2 7 4.243 7 7v2H6c-1.103 0-2 .897-2 2v9c0 1.103.897 2 2 2h12c1.103 0 2-.897 2-2v-9c0-1.103-.897-2-2-2h-1V7c0-2.757-2.243-5-5-5zM9 7c0-1.654 1.346-3 3-3s3 1.346 3 3v2H9V7zm9.002 13H13v-2.278c.595-.347 1-.985 1-1.722 0-1.103-.897-2-2-2s-2 .897-2 2c0 .736.405 1.375 1 1.722V20H6v-9h12l.002 9z" }), " "] })); }
499
499
  function IconFolder(props) {
500
- return (
501
- // <svg fontSize={props?.fontSize ? props?.fontSize : FONTSIZE} viewBox="0 0 1024 1024" fill="currentColor" height="1em" width="1em" {...props} > <path d="M880 298.4H521L403.7 186.2a8.15 8.15 0 00-5.5-2.2H144c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V330.4c0-17.7-14.3-32-32-32z" /> </svg>
502
- _jsx("svg", { focusable: "false", viewBox: "0 0 24 24", height: "1em", width: "1em", ...props, fill: "currentColor", children: _jsxs("g", { children: [_jsx("path", { d: "M10 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2h-8l-2-2z" }), _jsx("path", { d: "M0 0h24v24H0z", fill: "none" })] }) }));
500
+ return (_jsx("svg", { focusable: "false", viewBox: "0 0 24 24", height: "1em", width: "1em", ...props, fill: "currentColor", children: _jsxs("g", { children: [_jsx("path", { d: "M10 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2h-8l-2-2z" }), _jsx("path", { d: "M0 0h24v24H0z", fill: "none" })] }) }));
503
501
  }
504
502
  export function IconFolderForCSS({ fill = "#9fc6e7", ...props }) {
505
503
  return (_jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", width: "20", height: "20", ...props, children: _jsxs("g", { children: [_jsx("path", { d: "M10 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2h-8l-2-2z", fill: fill }), _jsx("path", { d: "M0 0h24v24H0z", fill: "none" })] }) }));
@@ -1,4 +1,4 @@
1
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useEffect, useState, useRef, useCallback, Component } from "react";
3
3
  import styled from "styled-components";
4
4
  import { LoadIndicator } from 'devextreme-react/load-indicator';
@@ -42,6 +42,6 @@ const StyledToppyImage = styled.img `
42
42
  `;
43
43
  const TMToppyMessage = (props) => {
44
44
  const { message, titleTooltip, maxWidth } = props;
45
- return (_jsxs(TMLayoutContainer, { gap: 30, alignItems: "center", justifyContent: "center", onContextMenu: (e) => e.preventDefault(), children: [_jsx(StyledToppyTextContainer, { "$maxWidth": maxWidth, children: _jsx(StyledToppyText, { title: titleTooltip || undefined, children: message }) }), _jsx(StyledToppyImage, { src: Toppy, alt: "Toppy", draggable: false, onMouseDown: (e) => e.stopPropagation() })] }));
45
+ return (_jsxs(TMLayoutContainer, { gap: 30, alignItems: "center", justifyContent: "center", onContextMenu: (e) => e.preventDefault(), children: [_jsx(StyledToppyTextContainer, { $maxWidth: maxWidth, children: _jsx(StyledToppyText, { title: titleTooltip || undefined, children: message }) }), _jsx(StyledToppyImage, { src: Toppy, alt: "Toppy", draggable: false, onMouseDown: (e) => e.stopPropagation() })] }));
46
46
  };
47
47
  export default TMToppyMessage;
@@ -137,7 +137,7 @@ export const getFileIcon = (fileExtension, fileCount, tooltipContent) => {
137
137
  fileBgColor = '#576D7E';
138
138
  break;
139
139
  }
140
- return (_jsx(StyledIconFileContainer, { children: _jsx(StyledIconFileExt, { "$backgroundColor": (fileCount === 0 || !fileExtension) ? "#424040" : fileBgColor, "$color": fileColor, children: (fileCount === 0 || !fileExtOri)
140
+ return (_jsx(StyledIconFileContainer, { children: _jsx(StyledIconFileExt, { $backgroundColor: (fileCount === 0 || !fileExtension) ? "#424040" : fileBgColor, $color: fileColor, children: (fileCount === 0 || !fileExtOri)
141
141
  ? _jsxs(TMTooltip, { content: SDKUI_Localizator.MetadataOnlyDocument, children: [" ", _jsx(IconKey, { fontSize: 17, color: '#f8d775' }), " "] })
142
142
  : _jsx(TMTooltip, { content: tooltipContent ?? fileExtOri, children: fileExtension.toUpperCase() }) }) }));
143
143
  };
@@ -19,7 +19,7 @@ export interface ZipCreateOptions {
19
19
  encryptionStrength?: 1 | 2 | 3;
20
20
  /** Commento globale ZIP */
21
21
  comment?: string;
22
- /** Callback progresso: (indice, totale, nomeFile) */
22
+ /** Callback progresso, invocata a voce conclusa: (voci completate, totale, nomeFile appena aggiunto) */
23
23
  onProgress?: (index: number, total: number, filename: string) => void;
24
24
  /** Callback progresso singolo file: (bytesElaborati, bytesTotali) */
25
25
  onEntryProgress?: (progress: number, total: number) => void;
@@ -50,7 +50,6 @@ export class ZipManager {
50
50
  throw new DOMException("Operazione annullata", "AbortError");
51
51
  }
52
52
  const file = files[i];
53
- onProgress?.(i + 1, total, file.filename);
54
53
  const reader = this.createReader(file.data, { BlobReader, TextReader, Uint8ArrayReader });
55
54
  await zipWriter.add(file.filename, reader, {
56
55
  comment: file.comment,
@@ -60,6 +59,8 @@ export class ZipManager {
60
59
  encryptionStrength,
61
60
  onprogress: onEntryProgress ? (progress, total) => onEntryProgress(progress, total) : undefined
62
61
  });
62
+ // A voce conclusa, non prima: con un solo file la barra partirebbe gia' al 100%.
63
+ onProgress?.(i + 1, total, file.filename);
63
64
  }
64
65
  const commentBytes = comment ? new TextEncoder().encode(comment) : undefined;
65
66
  return await zipWriter.close(commentBytes);
@@ -44,7 +44,7 @@ export type DownloadSource = {
44
44
  };
45
45
  export declare const getCicoDownloadFileName: (source: DownloadSource, checkout: boolean, withTimestampAndExt: boolean) => string;
46
46
  export declare const cicoDownloadFilesCallback: (sources: Array<DownloadSource>, checkout: boolean, downloadDcmtsAsync: (params: DownloadDcmtsAsyncParams) => Promise<void>) => Promise<void>;
47
- export declare const updateCicoCheckoutStorageItem: (item: CheckoutInfo, type: "fileItem" | "dcmtInfo", action?: "addOrUpdate" | "remove") => void;
47
+ export declare const updateCicoCheckoutStorageItem: (item: CheckoutInfo, type: 'fileItem' | 'dcmtInfo', action?: "addOrUpdate" | "remove") => void;
48
48
  export declare const validateCicoFileName: (source: DownloadSource, fileName: string, checkoutDate?: string | null) => FileNameValidation;
49
49
  type ValidationResult = {
50
50
  expected: string | number | undefined;
@@ -1,4 +1,4 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { AccessLevels, CICO_MetadataNames, SDK_Globals, SystemMIDsAsNumber } from "@topconsultnpm/sdk-ts";
3
3
  import TMTooltip from "../components/base/TMTooltip";
4
4
  import { dcmtsFileCachePreview, Globalization, removeDcmtsFileCache, SDKUI_Globals, SDKUI_Localizator } from "./index";
@@ -2,6 +2,8 @@ import { DcmtTypeDescriptor, MetadataDataTypes, MetadataDescriptor, MetadataForm
2
2
  import { MetadataValueDescriptorEx } from "../ts";
3
3
  /** Metadati utente (esclusi quelli di sistema) del tipo documento, in ordine di visualizzazione */
4
4
  export declare const getUserMetadataSorted: (dtd: DcmtTypeDescriptor | undefined) => Array<MetadataDescriptor>;
5
+ /** Metadato visibile all'utente: stessa regola del risultato di ricerca (vedi getQD), serve almeno la visualizzazione o la modifica */
6
+ export declare const canViewMetadata: (md: MetadataDescriptor) => boolean;
5
7
  /** Formatta un valore scalare (non lista dati): date e numeri rispettano Format e FormatCulture del metadato */
6
8
  export declare const formatScalarValue: (value: any, dataType: MetadataDataTypes | undefined, format: MetadataFormats | undefined, formatCulture: string | undefined) => string;
7
9
  /** Check if dcmtType (mTID) has configured Detail or Many-to-Many relations */
@@ -12,11 +14,11 @@ export declare const getDcmtMetadataByMid: (dcmt: {
12
14
  TID?: number;
13
15
  DID?: number;
14
16
  } | undefined) => Promise<Map<number, any>>;
15
- export declare const mapAssociationsFromMetadata: (relation: RelationDescriptor, type: "detail" | "master", metadataByMid: Map<number, any>) => Array<{
17
+ export declare const mapAssociationsFromMetadata: (relation: RelationDescriptor, type: 'detail' | 'master', metadataByMid: Map<number, any>) => Array<{
16
18
  mid: number;
17
19
  value: string;
18
20
  }>;
19
- export declare const mapRelationAssociationsToMids: (relation: RelationDescriptor, type: "detail" | "master", dcmt: {
21
+ export declare const mapRelationAssociationsToMids: (relation: RelationDescriptor, type: 'detail' | 'master', dcmt: {
20
22
  TID?: number;
21
23
  DID?: number;
22
24
  } | undefined) => Promise<Array<{
@@ -1,4 +1,4 @@
1
- import { MetadataDataTypes, RelationCacheService, RelationTypes, SDK_Globals } from "@topconsultnpm/sdk-ts";
1
+ import { AccessLevels, MetadataDataTypes, RelationCacheService, RelationTypes, SDK_Globals } from "@topconsultnpm/sdk-ts";
2
2
  import { formatDateTimeByMetadataFormat, formatNumberByMetadataFormat } from "./TMUtils";
3
3
  /** Metadati utente (esclusi quelli di sistema) del tipo documento, in ordine di visualizzazione */
4
4
  export const getUserMetadataSorted = (dtd) => {
@@ -6,6 +6,8 @@ export const getUserMetadataSorted = (dtd) => {
6
6
  .filter(md => md.id !== undefined && md.id > 100 && md.isSystem !== 1)
7
7
  .sort((a, b) => (a.ordinalPosition ?? 0) - (b.ordinalPosition ?? 0));
8
8
  };
9
+ /** Metadato visibile all'utente: stessa regola del risultato di ricerca (vedi getQD), serve almeno la visualizzazione o la modifica */
10
+ export const canViewMetadata = (md) => !(md.perm?.canView == AccessLevels.No && md.perm?.canUpdate == AccessLevels.No);
9
11
  /** Formatta un valore scalare (non lista dati): date e numeri rispettano Format e FormatCulture del metadato */
10
12
  export const formatScalarValue = (value, dataType, format, formatCulture) => {
11
13
  if (value === undefined || value === null || value === '')
@@ -18,7 +18,7 @@ declare const taskModalSizes: (deviceType: DeviceType | undefined, formMode: For
18
18
  };
19
19
  declare const TABLET_WIDTH = 1024;
20
20
  declare const MOBILE_WIDTH = 640;
21
- declare const calcResponsiveDirection: (deviceType: DeviceType, desktopDir: "horizontal" | "vertical", tabletDir: "horizontal" | "vertical", mobileDir: "horizontal" | "vertical") => "horizontal" | "vertical";
21
+ declare const calcResponsiveDirection: (deviceType: DeviceType, desktopDir: 'horizontal' | 'vertical', tabletDir: 'horizontal' | 'vertical', mobileDir: 'horizontal' | 'vertical') => 'horizontal' | 'vertical';
22
22
  declare const openApps: (appModule: AppModules, tmSession: ITopMediaSession, appRoutes?: any[]) => Promise<void>;
23
23
  export declare const setSDK_GlobalsInfoAsync: (tms: ITopMediaSession | undefined) => Promise<ITopMediaSession | undefined>;
24
24
  declare const getColor: (color: ColorsType) => string;
@@ -1,4 +1,4 @@
1
- import { Fragment as _Fragment, jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Colors } from "../utils/theme";
3
3
  import { ButtonNames, DeviceType, TMExceptionBoxManager, TMMessageBoxManager, TMSpinner } from "../components";
4
4
  import { AccessLevels, MetadataDataDomains, MetadataDataTypes, MetadataDescriptor, MetadataFormatDescriptor, MetadataFormats, MetadataPermission, SDK_Globals, SetGlobalsInfoAsync, SystemMIDs, SystemMIDsAsNumber, Task_States, TopMediaServer, WorkItemMetadataNames } from "@topconsultnpm/sdk-ts";
@@ -7,6 +7,7 @@ import { buildTypes, FileExtensionHandler, FormModes, moduleTypes } from "../ts"
7
7
  import { SDKUI_Localizator } from "./SDKUI_Localizator";
8
8
  import ReactDOMServer from "react-dom/server";
9
9
  import { DeepCompareHelper } from "./DeepCompareHelper";
10
+ import { UserSettings } from "./SDKUI_Globals";
10
11
  /**
11
12
  * Handler di hover per elementi con stili inline: applica `over` all'ingresso del mouse e `out` all'uscita.
12
13
  * Da spandere sull'elemento: `{...hoverStyle({ background: 'red' }, { background: 'transparent' })}`
@@ -70,7 +71,6 @@ export const setSDK_GlobalsInfoAsync = async (tms) => {
70
71
  try {
71
72
  const result = await SetGlobalsInfoAsync(tms);
72
73
  if (result?.SessionDescr?.userID && result?.SessionDescr?.archiveID) {
73
- const { UserSettings } = await import('./SDKUI_Globals');
74
74
  UserSettings.LoadSettings(result.SessionDescr.userID, result.SessionDescr.archiveID);
75
75
  }
76
76
  return result;
@@ -4,7 +4,7 @@ import { DataColumnDescriptor, DataColumnTypes, MetadataDescriptor, MetadataForm
4
4
  * stanno fuori dagli hook perché non dipendono da alcuno stato.
5
5
  */
6
6
  export declare const withRowIndex: <T>(rows: Array<T>) => T[];
7
- export declare const toGridDataType: (dataType: DataColumnTypes | undefined) => "string" | "number" | "datetime" | "boolean";
7
+ export declare const toGridDataType: (dataType: DataColumnTypes | undefined) => "boolean" | "datetime" | "number" | "string";
8
8
  export declare const getMetadataName: (columnMd: MetadataDescriptor | undefined) => string | undefined;
9
9
  export declare const getDateDisplayFormat: (format: MetadataFormats | undefined, formatCulture: string | undefined | null) => {
10
10
  formatter: (value: string | number | Date) => string;
@@ -50,7 +50,7 @@ export declare const completeCaseFlowSignatureForDcmt: (tid: number | string, di
50
50
  */
51
51
  export declare const useCaseFlowApprove: (tid?: number | string, did?: number | string) => {
52
52
  caseFlowWorkItems: CaseFlowDcmtWorkItem[];
53
- refreshCaseFlowApprove: (force?: boolean) => Promise<void>;
54
- completeCaseFlowWorkItem: (item: CaseFlowDcmtWorkItem, comment?: string) => Promise<void>;
55
- rejectCaseFlowWorkItem: (item: CaseFlowDcmtWorkItem, reason: string) => Promise<void>;
53
+ refreshCaseFlowApprove: typeof refreshCaseFlowApproveData;
54
+ completeCaseFlowWorkItem: typeof completeCaseFlowWorkItem;
55
+ rejectCaseFlowWorkItem: typeof rejectCaseFlowWorkItem;
56
56
  };
@@ -20,11 +20,5 @@ export interface UseCheckInOutOperationsReturn {
20
20
  copyCheckoutPathToClipboardCallback: (dcmt: DcmtInfo, filename: string) => void;
21
21
  handleCheckOutCallback: (dcmt: DcmtInfo, checkout: boolean, filename: string, downloadDcmtsAsync: (params: DownloadDcmtsAsyncParams) => Promise<void>, onRefreshAsync?: (tid: number | undefined, did: number | undefined, refreshUI?: boolean, metadataResult?: SearchResultDescriptor | null) => Promise<void>) => Promise<void>;
22
22
  handleCheckInCallback: (dcmt: DcmtInfo, checkoutDate?: string | null, onRefreshAsync?: (tid: number | undefined, did: number | undefined, refreshUI?: boolean, metadataResult?: SearchResultDescriptor | null) => Promise<void>) => Promise<void>;
23
- showCicoWaitPanel: boolean;
24
- cicoWaitPanelTitle: string;
25
- showCicoPrimaryProgress: boolean;
26
- cicoPrimaryProgressText: string;
27
- cicoPrimaryProgressValue: number;
28
- cicoPrimaryProgressMax: number;
29
23
  }
30
24
  export declare const useCheckInOutOperations: (props: UseCheckInOutOperationsProps) => UseCheckInOutOperationsReturn;
@@ -1,6 +1,6 @@
1
1
  import { useCallback, useMemo, useState } from 'react';
2
2
  import { cicoDownloadFilesCallback, dcmtsFileCachePreview, getCicoDownloadFileName, getExceptionMessage, removeDcmtsFileCache, renderCicoCheckInContent, SDKUI_Globals, SDKUI_Localizator, updateCicoCheckoutStorageItem, validateCicoFileName } from '../helper';
3
- import { ButtonNames, DeviceType, ShowAlert, TMMessageBoxManager, TMResultManager, useDeviceType } from '../components';
3
+ import { ButtonNames, DeviceType, ShowAlert, TMMessageBoxManager, TMResultManager, TMWaitPanelManager, useDeviceType } from '../components';
4
4
  import { ResultTypes, SDK_Globals } from '@topconsultnpm/sdk-ts';
5
5
  let abortController = new AbortController();
6
6
  export const useCheckInOutOperations = (props) => {
@@ -18,18 +18,13 @@ export const useCheckInOutOperations = (props) => {
18
18
  const deviceType = useDeviceType();
19
19
  // This avoids unnecessary re-renders by only recalculating when deviceType changes.
20
20
  let isMobile = useMemo(() => { return deviceType === DeviceType.MOBILE; }, [deviceType]);
21
- // State variable to control the visibility of the wait panel
22
- const [showCicoWaitPanel, setShowCicoWaitPanel] = useState(false);
23
- // State variable to store the title of the wait panel
24
- const [cicoWaitPanelTitle, setCicoWaitPanelTitle] = useState('');
25
- // State variable to control the visibility of the primary section of the wait panel
26
- const [showCicoPrimaryProgress, setShowCicoPrimaryProgress] = useState(false);
27
- // State variable to store the primary text of the wait panel
28
- const [cicoPrimaryProgressText, setCicoPrimaryProgressText] = useState('');
29
- // State variable to track the current value of the primary progress indicator in the wait panel
30
- const [cicoPrimaryProgressValue, setCicoPrimaryProgressValue] = useState(0);
31
- // State variable to define the maximum value for the primary progress indicator in the wait panel
32
- const [cicoPrimaryProgressMax, setCicoPrimaryProgressMax] = useState(0);
21
+ // Check in e check out non riportano avanzamento: il pannello e' solo il "sto lavorando".
22
+ const showCicoWaitPanel = (title) => TMWaitPanelManager.show({
23
+ title,
24
+ showCounters: false,
25
+ cancelable: true,
26
+ onAbort: () => abortController.abort(),
27
+ });
33
28
  const showHistoryCallback = useCallback(() => {
34
29
  setShowHistory(true);
35
30
  }, []);
@@ -73,11 +68,9 @@ export const useCheckInOutOperations = (props) => {
73
68
  if (e !== ButtonNames.YES)
74
69
  return;
75
70
  let result = [];
71
+ abortController = new AbortController();
72
+ const panel = showCicoWaitPanel(title);
76
73
  try {
77
- setCicoWaitPanelTitle(title);
78
- setShowCicoWaitPanel(true);
79
- setShowCicoPrimaryProgress(true);
80
- abortController = new AbortController();
81
74
  const ue = SDK_Globals.tmSession?.NewUpdateEngineByID();
82
75
  if (!ue)
83
76
  throw new Error("Update Engine not available");
@@ -113,10 +106,7 @@ export const useCheckInOutOperations = (props) => {
113
106
  result.push({ rowIndex: 1, id1: dcmt.TID, id2: dcmt.DID, resultType: ResultTypes.ERROR, description: getExceptionMessage(error) });
114
107
  }
115
108
  finally {
116
- setCicoPrimaryProgressText('');
117
- setCicoPrimaryProgressMax(0);
118
- setCicoPrimaryProgressValue(0);
119
- setShowCicoWaitPanel(false);
109
+ panel.close();
120
110
  TMResultManager.show(result, title, "ID", undefined);
121
111
  }
122
112
  }
@@ -158,13 +148,12 @@ export const useCheckInOutOperations = (props) => {
158
148
  onButtonClick: async (e) => {
159
149
  if (e !== ButtonNames.YES)
160
150
  return;
161
- setCicoWaitPanelTitle('Check in');
162
- setShowCicoWaitPanel(true);
163
- setShowCicoPrimaryProgress(true);
164
151
  abortController = new AbortController();
165
152
  let result = [];
166
153
  let i = 0;
167
154
  if (dcmt.TID && dcmt.DID) {
155
+ // Aperto qui e non prima: fuori da questo ramo nessuno lo chiuderebbe.
156
+ const panel = showCicoWaitPanel('Check in');
168
157
  try {
169
158
  const ue = SDK_Globals.tmSession?.NewUpdateEngineByID();
170
159
  if (ue) {
@@ -187,10 +176,7 @@ export const useCheckInOutOperations = (props) => {
187
176
  result.push({ rowIndex: i, id1: i, id2: i, resultType: ResultTypes.ERROR, description: getExceptionMessage(err) });
188
177
  }
189
178
  finally {
190
- setCicoPrimaryProgressText('');
191
- setCicoPrimaryProgressMax(0);
192
- setCicoPrimaryProgressValue(0);
193
- setShowCicoWaitPanel(false);
179
+ panel.close();
194
180
  TMResultManager.show(result, 'Check in', "ID", undefined, SDKUI_Localizator.CheckInSuccessMessage, 6000);
195
181
  }
196
182
  }
@@ -211,11 +197,5 @@ export const useCheckInOutOperations = (props) => {
211
197
  copyCheckoutPathToClipboardCallback,
212
198
  handleCheckOutCallback,
213
199
  handleCheckInCallback,
214
- showCicoWaitPanel,
215
- cicoWaitPanelTitle,
216
- showCicoPrimaryProgress,
217
- cicoPrimaryProgressText,
218
- cicoPrimaryProgressValue,
219
- cicoPrimaryProgressMax,
220
200
  };
221
201
  };