@topconsultnpm/sdkui-react 6.22.0-dev2.3 → 6.22.0-dev2.30

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 (118) hide show
  1. package/lib/components/NewComponents/ContextMenu/TMContextMenu.js +1 -1
  2. package/lib/components/NewComponents/FloatingMenuBar/TMFloatingMenuBar.js +1 -1
  3. package/lib/components/base/TMButton.d.ts +13 -0
  4. package/lib/components/base/TMButton.js +137 -5
  5. package/lib/components/base/TMDataGrid.d.ts +2 -0
  6. package/lib/components/base/TMDataGrid.js +81 -8
  7. package/lib/components/base/TMEditorBase.d.ts +2 -0
  8. package/lib/components/base/TMFileManager.js +5 -3
  9. package/lib/components/base/TMFileManagerUtils.d.ts +1 -0
  10. package/lib/components/base/TMFileManagerUtils.js +16 -0
  11. package/lib/components/base/TMModal.d.ts +4 -0
  12. package/lib/components/base/TMModal.js +42 -11
  13. package/lib/components/base/TMPanel.d.ts +1 -0
  14. package/lib/components/base/TMPanel.js +79 -20
  15. package/lib/components/base/TMPopUp.js +3 -0
  16. package/lib/components/base/TMTooltip.d.ts +2 -1
  17. package/lib/components/base/TMTooltip.js +23 -6
  18. package/lib/components/base/TMTreeView.js +108 -67
  19. package/lib/components/choosers/TMDcmtTypeChooser.js +4 -3
  20. package/lib/components/choosers/TMDistinctValues.d.ts +9 -7
  21. package/lib/components/choosers/TMDistinctValues.js +149 -142
  22. package/lib/components/choosers/TMMetadataChooser.js +1 -1
  23. package/lib/components/choosers/TMQuickSearchInfo.d.ts +12 -0
  24. package/lib/components/choosers/TMQuickSearchInfo.js +279 -0
  25. package/lib/components/choosers/TMQuickSearchSettingsForm.d.ts +16 -0
  26. package/lib/components/choosers/TMQuickSearchSettingsForm.js +94 -0
  27. package/lib/components/choosers/TMSelectedValuesSummary.d.ts +13 -0
  28. package/lib/components/choosers/TMSelectedValuesSummary.js +91 -0
  29. package/lib/components/editors/TMDropDown.d.ts +3 -0
  30. package/lib/components/editors/TMDropDown.js +197 -5
  31. package/lib/components/editors/TMMetadataEditor.d.ts +5 -1
  32. package/lib/components/editors/TMMetadataEditor.js +8 -3
  33. package/lib/components/editors/TMTextBox.js +2 -2
  34. package/lib/components/features/documents/TMBatchUpdateForm.js +19 -5
  35. package/lib/components/features/documents/TMDcmtBlog.d.ts +3 -0
  36. package/lib/components/features/documents/TMDcmtBlog.js +4 -4
  37. package/lib/components/features/documents/TMDcmtForm.d.ts +7 -0
  38. package/lib/components/features/documents/TMDcmtForm.js +112 -45
  39. package/lib/components/features/documents/TMDcmtFormActionButtons.d.ts +11 -0
  40. package/lib/components/features/documents/TMDcmtFormActionButtons.js +74 -7
  41. package/lib/components/features/documents/TMDcmtPreview.js +10 -6
  42. package/lib/components/features/documents/TMMasterDetailDcmts.js +95 -33
  43. package/lib/components/features/documents/TMMasterInfoFields.d.ts +19 -0
  44. package/lib/components/features/documents/TMMasterInfoFields.js +186 -0
  45. package/lib/components/features/documents/TMMultiMasterDetailDcmtsForm.d.ts +40 -0
  46. package/lib/components/features/documents/TMMultiMasterDetailDcmtsForm.js +296 -0
  47. package/lib/components/features/documents/TMMultiMasterDetailDcmtsUtils.d.ts +363 -0
  48. package/lib/components/features/documents/TMMultiMasterDetailDcmtsUtils.js +259 -0
  49. package/lib/components/features/documents/TMRelationViewer.d.ts +14 -1
  50. package/lib/components/features/documents/TMRelationViewer.js +69 -20
  51. package/lib/components/features/search/TMSearch.js +29 -16
  52. package/lib/components/features/search/TMSearchQueryEditor.js +5 -3
  53. package/lib/components/features/search/TMSearchQueryPanel.d.ts +1 -1
  54. package/lib/components/features/search/TMSearchQueryPanel.js +28 -7
  55. package/lib/components/features/search/TMSearchResult.d.ts +9 -0
  56. package/lib/components/features/search/TMSearchResult.js +419 -108
  57. package/lib/components/features/search/TMTreeSelector.js +18 -5
  58. package/lib/components/features/workflow/TMWorkflowPopup.d.ts +10 -0
  59. package/lib/components/features/workflow/TMWorkflowPopup.js +8 -4
  60. package/lib/components/layout/panelManager/TMPanelManagerContainer.d.ts +1 -0
  61. package/lib/components/layout/panelManager/TMPanelManagerContainer.js +24 -14
  62. package/lib/components/layout/panelManager/TMPanelManagerContext.js +68 -93
  63. package/lib/components/layout/panelManager/TMPanelWrapper.js +2 -2
  64. package/lib/components/layout/panelManager/types.d.ts +3 -0
  65. package/lib/components/layout/panelManager/utils.js +13 -11
  66. package/lib/components/viewers/TMMidViewer.js +4 -1
  67. package/lib/components/viewers/TMTidViewer.js +25 -11
  68. package/lib/helper/SDKUI_Globals.d.ts +82 -0
  69. package/lib/helper/SDKUI_Globals.js +119 -0
  70. package/lib/helper/SDKUI_Localizator.d.ts +24 -0
  71. package/lib/helper/SDKUI_Localizator.js +240 -0
  72. package/lib/helper/TMIcons.d.ts +1 -0
  73. package/lib/helper/TMIcons.js +3 -0
  74. package/lib/helper/dataGridSearchHelper.d.ts +28 -0
  75. package/lib/helper/dataGridSearchHelper.js +51 -0
  76. package/lib/helper/dcmtsHelper.d.ts +20 -0
  77. package/lib/helper/dcmtsHelper.js +58 -1
  78. package/lib/helper/helpers.d.ts +20 -0
  79. package/lib/helper/helpers.js +55 -1
  80. package/lib/helper/index.d.ts +1 -0
  81. package/lib/helper/index.js +1 -0
  82. package/lib/helper/queryHelper.d.ts +2 -0
  83. package/lib/helper/queryHelper.js +3 -1
  84. package/lib/hooks/tmDistinctValuesGridHelper.d.ts +16 -0
  85. package/lib/hooks/tmDistinctValuesGridHelper.js +31 -0
  86. package/lib/hooks/useArchiveListForm.d.ts +39 -0
  87. package/lib/hooks/useArchiveListForm.js +46 -0
  88. package/lib/hooks/useCaseFlowApprove.d.ts +56 -0
  89. package/lib/hooks/useCaseFlowApprove.js +157 -0
  90. package/lib/hooks/useDataUserIdItem.d.ts +1 -0
  91. package/lib/hooks/useDataUserIdItem.js +1 -0
  92. package/lib/hooks/useDocumentOperations.d.ts +2 -0
  93. package/lib/hooks/useDocumentOperations.js +28 -5
  94. package/lib/hooks/useMultiMasterDetailDcmts.d.ts +100 -0
  95. package/lib/hooks/useMultiMasterDetailDcmts.js +587 -0
  96. package/lib/hooks/useRelatedDocuments.js +2 -26
  97. package/lib/hooks/useTMDistinctValuesMetadataDisplay.d.ts +18 -0
  98. package/lib/hooks/useTMDistinctValuesMetadataDisplay.js +103 -0
  99. package/lib/hooks/useTMDistinctValuesQuickSearch.d.ts +49 -0
  100. package/lib/hooks/useTMDistinctValuesQuickSearch.js +307 -0
  101. package/lib/hooks/useTMDistinctValuesSelection.d.ts +42 -0
  102. package/lib/hooks/useTMDistinctValuesSelection.js +103 -0
  103. package/lib/hooks/useTMDistinctValuesSource.d.ts +29 -0
  104. package/lib/hooks/useTMDistinctValuesSource.js +105 -0
  105. package/lib/index.d.ts +1 -0
  106. package/lib/index.js +1 -0
  107. package/lib/services/caseflow/CaseFlowService.d.ts +236 -0
  108. package/lib/services/caseflow/CaseFlowService.js +693 -0
  109. package/lib/services/caseflow/CaseFlowTemplateCacheService.d.ts +28 -0
  110. package/lib/services/caseflow/CaseFlowTemplateCacheService.js +121 -0
  111. package/lib/services/caseflow/caseFlowNameCache.d.ts +32 -0
  112. package/lib/services/caseflow/caseFlowNameCache.js +116 -0
  113. package/lib/services/caseflow/caseFlowWorkItemUtils.d.ts +61 -0
  114. package/lib/services/caseflow/caseFlowWorkItemUtils.js +113 -0
  115. package/lib/services/index.d.ts +4 -0
  116. package/lib/services/index.js +4 -0
  117. package/lib/services/platform_services.d.ts +1 -1
  118. package/package.json +66 -66
@@ -444,6 +444,16 @@ export class SDKUI_Localizator {
444
444
  default: return "Consenti solo archiviazioni di metadati";
445
445
  }
446
446
  }
447
+ static get ArchivedDetails() {
448
+ switch (this._cultureID) {
449
+ case CultureIDs.De_DE: return "Bereits archivierte Details";
450
+ case CultureIDs.En_US: return "Already archived details";
451
+ case CultureIDs.Es_ES: return "Detalles ya archivados";
452
+ case CultureIDs.Fr_FR: return "Détails déjà archivés";
453
+ case CultureIDs.Pt_PT: return "Detalhes já arquivados";
454
+ default: return "Dettagli già archiviati";
455
+ }
456
+ }
447
457
  static get ArchivedDocuments() {
448
458
  switch (this._cultureID) {
449
459
  case CultureIDs.De_DE: return "Archivierte Dokumente";
@@ -484,6 +494,46 @@ export class SDKUI_Localizator {
484
494
  default: return "Archivia documento master";
485
495
  }
486
496
  }
497
+ static get ArchiveMultipleDetailDocuments() {
498
+ switch (this._cultureID) {
499
+ case CultureIDs.De_DE: return "Mehrere Details archivieren";
500
+ case CultureIDs.En_US: return "Archive multiple details";
501
+ case CultureIDs.Es_ES: return "Archivar múltiples detalles";
502
+ case CultureIDs.Fr_FR: return "Archiver plusieurs détails";
503
+ case CultureIDs.Pt_PT: return "Arquivar múltiplos detalhes";
504
+ default: return "Archivia dettagli multipli";
505
+ }
506
+ }
507
+ static get ArchiveMasterAndMultipleDetailDocuments() {
508
+ switch (this._cultureID) {
509
+ case CultureIDs.De_DE: return "Master mit mehreren Details archivieren";
510
+ case CultureIDs.En_US: return "Archive master with multiple details";
511
+ case CultureIDs.Es_ES: return "Archivar maestro con múltiples detalles";
512
+ case CultureIDs.Fr_FR: return "Archiver le maître avec plusieurs détails";
513
+ case CultureIDs.Pt_PT: return "Arquivar mestre com múltiplos detalhes";
514
+ default: return "Archivia master con dettagli multipli";
515
+ }
516
+ }
517
+ static get ArchiveMasterAndDetails_Confirm() {
518
+ switch (this._cultureID) {
519
+ case CultureIDs.De_DE: return "Master archivieren und mit den Details fortfahren?";
520
+ case CultureIDs.En_US: return "Archive the master and proceed with the details?";
521
+ case CultureIDs.Es_ES: return "¿Archivar el maestro y continuar con los detalles?";
522
+ case CultureIDs.Fr_FR: return "Archiver le maître et poursuivre avec les détails ?";
523
+ case CultureIDs.Pt_PT: return "Arquivar o mestre e prosseguir com os detalhes?";
524
+ default: return "Archiviare il master e proseguire con i dettagli?";
525
+ }
526
+ }
527
+ static get ExitWithoutArchiving_Confirm() {
528
+ switch (this._cultureID) {
529
+ case CultureIDs.De_DE: return "Möchten Sie wirklich beenden? Die eingegebenen Dokumente werden nicht archiviert. Fortfahren?";
530
+ case CultureIDs.En_US: return "Are you sure you want to exit? The entered documents will not be archived. Continue?";
531
+ case CultureIDs.Es_ES: return "¿Está seguro de que desea salir? Los documentos introducidos no se archivarán. ¿Continuar?";
532
+ case CultureIDs.Fr_FR: return "Êtes-vous sûr de vouloir quitter ? Les documents saisis ne seront pas archivés. Continuer ?";
533
+ case CultureIDs.Pt_PT: return "Tem a certeza de que pretende sair? Os documentos introduzidos não serão arquivados. Continuar?";
534
+ default: return "Sei sicuro di voler uscire? I documenti inseriti non verranno archiviati. Continuare?";
535
+ }
536
+ }
487
537
  static get Archiving() {
488
538
  switch (this._cultureID) {
489
539
  case CultureIDs.De_DE: return "Archivierung";
@@ -715,6 +765,16 @@ export class SDKUI_Localizator {
715
765
  default: return "Indietro";
716
766
  }
717
767
  }
768
+ static get BackToResult() {
769
+ switch (this._cultureID) {
770
+ case CultureIDs.De_DE: return "Zum Ergebnis";
771
+ case CultureIDs.En_US: return "Go to result";
772
+ case CultureIDs.Es_ES: return "Ir al resultado";
773
+ case CultureIDs.Fr_FR: return "Aller au résultat";
774
+ case CultureIDs.Pt_PT: return "Ir para o resultado";
775
+ default: return "Vai a risultato";
776
+ }
777
+ }
718
778
  static get BatchUpdate() {
719
779
  switch (this._cultureID) {
720
780
  case CultureIDs.De_DE: return "Mehrfachbearbeitung";
@@ -1662,6 +1722,16 @@ export class SDKUI_Localizator {
1662
1722
  default: return "Dettagli";
1663
1723
  }
1664
1724
  }
1725
+ static get DetailsToArchive() {
1726
+ switch (this._cultureID) {
1727
+ case CultureIDs.De_DE: return "Zu archivierende Details";
1728
+ case CultureIDs.En_US: return "Details to archive";
1729
+ case CultureIDs.Es_ES: return "Detalles a archivar";
1730
+ case CultureIDs.Fr_FR: return "Détails à archiver";
1731
+ case CultureIDs.Pt_PT: return "Detalhes a arquivar";
1732
+ default: return "Dettagli da archiviare";
1733
+ }
1734
+ }
1665
1735
  static get Delete() {
1666
1736
  switch (this._cultureID) {
1667
1737
  case CultureIDs.De_DE: return "Löschen";
@@ -1702,6 +1772,16 @@ export class SDKUI_Localizator {
1702
1772
  default: return "Eliminare il commento?";
1703
1773
  }
1704
1774
  }
1775
+ static get DeleteAllRowsToChangeDcmtType() {
1776
+ switch (this._cultureID) {
1777
+ case CultureIDs.De_DE: return "Löschen Sie alle Zeilen, um den Dokumenttyp zu ändern";
1778
+ case CultureIDs.En_US: return "Delete all rows to change the document type";
1779
+ case CultureIDs.Es_ES: return "Elimine todas las filas para poder cambiar el tipo de documento";
1780
+ case CultureIDs.Fr_FR: return "Supprimez toutes les lignes pour pouvoir changer le type de document";
1781
+ case CultureIDs.Pt_PT: return "Elimine todas as linhas para poder alterar o tipo de documento";
1782
+ default: return "Elimina tutte le righe per poter cambiare tipo documento";
1783
+ }
1784
+ }
1705
1785
  static get DeleteDeletedMessages() {
1706
1786
  switch (this._cultureID) {
1707
1787
  case CultureIDs.De_DE: return "Gelöschte Nachrichten löschen";
@@ -4008,6 +4088,36 @@ export class SDKUI_Localizator {
4008
4088
  default: return "Nascondi tutti";
4009
4089
  }
4010
4090
  }
4091
+ static get HideArchivedDetails() {
4092
+ switch (this._cultureID) {
4093
+ case CultureIDs.De_DE: return "Bereits archivierte Details ausblenden";
4094
+ case CultureIDs.En_US: return "Hide already archived details";
4095
+ case CultureIDs.Es_ES: return "Ocultar los detalles ya archivados";
4096
+ case CultureIDs.Fr_FR: return "Masquer les détails déjà archivés";
4097
+ case CultureIDs.Pt_PT: return "Ocultar os detalhes já arquivados";
4098
+ default: return "Nascondi i dettagli già archiviati";
4099
+ }
4100
+ }
4101
+ static get HideDcmtTypes() {
4102
+ switch (this._cultureID) {
4103
+ case CultureIDs.De_DE: return "Dokumenttypen ausblenden";
4104
+ case CultureIDs.En_US: return "Hide document types";
4105
+ case CultureIDs.Es_ES: return "Ocultar tipos de documento";
4106
+ case CultureIDs.Fr_FR: return "Masquer les types de document";
4107
+ case CultureIDs.Pt_PT: return "Ocultar tipos de documento";
4108
+ default: return "Nascondi tipi documento";
4109
+ }
4110
+ }
4111
+ static get HideDetailsToArchive() {
4112
+ switch (this._cultureID) {
4113
+ case CultureIDs.De_DE: return "Zu archivierende Details ausblenden";
4114
+ case CultureIDs.En_US: return "Hide details to archive";
4115
+ case CultureIDs.Es_ES: return "Ocultar los detalles a archivar";
4116
+ case CultureIDs.Fr_FR: return "Masquer les détails à archiver";
4117
+ case CultureIDs.Pt_PT: return "Ocultar os detalhes a arquivar";
4118
+ default: return "Nascondi i dettagli da archiviare";
4119
+ }
4120
+ }
4011
4121
  static get HideDetailsWithZeroDocs() {
4012
4122
  switch (this._cultureID) {
4013
4123
  case CultureIDs.De_DE: return "Details mit 0 Dokumenten ausblenden";
@@ -4058,6 +4168,16 @@ export class SDKUI_Localizator {
4058
4168
  default: return "Nascondi opzioni di formattazione";
4059
4169
  }
4060
4170
  }
4171
+ static get HideMasterInfo() {
4172
+ switch (this._cultureID) {
4173
+ case CultureIDs.De_DE: return "Master-Informationen ausblenden";
4174
+ case CultureIDs.En_US: return "Hide master information";
4175
+ case CultureIDs.Es_ES: return "Ocultar la información del maestro";
4176
+ case CultureIDs.Fr_FR: return "Masquer les informations du maître";
4177
+ case CultureIDs.Pt_PT: return "Ocultar as informações do mestre";
4178
+ default: return "Nascondi le informazioni del master";
4179
+ }
4180
+ }
4061
4181
  static get HideMetadata() {
4062
4182
  switch (this._cultureID) {
4063
4183
  case CultureIDs.De_DE: return "Metadaten ausblenden";
@@ -6522,6 +6642,16 @@ export class SDKUI_Localizator {
6522
6642
  default: return "Valorizza parametri query";
6523
6643
  }
6524
6644
  }
6645
+ static get QuickSearchSettings_DeleteConfirmFor1() {
6646
+ switch (this._cultureID) {
6647
+ case CultureIDs.De_DE: return "Schnellsuche-Konfiguration für '{{0}}' löschen?";
6648
+ case CultureIDs.En_US: return "Delete the quick search setup for '{{0}}'?";
6649
+ case CultureIDs.Es_ES: return "¿Eliminar la configuración de la búsqueda rápida de '{{0}}'?";
6650
+ case CultureIDs.Fr_FR: return "Supprimer la configuration de la recherche rapide de '{{0}}' ?";
6651
+ case CultureIDs.Pt_PT: return "Eliminar a configuração da pesquisa rápida de '{{0}}'?";
6652
+ default: return "Eliminare la configurazione della ricerca rapida di '{{0}}'?";
6653
+ }
6654
+ }
6525
6655
  static get ReadOnly() {
6526
6656
  switch (this._cultureID) {
6527
6657
  case CultureIDs.De_DE: return "Nur Lesen";
@@ -6623,6 +6753,26 @@ export class SDKUI_Localizator {
6623
6753
  default: return "Nessuna correlazione trovata";
6624
6754
  }
6625
6755
  }
6756
+ static get StopRelationsCalculation() {
6757
+ switch (this._cultureID) {
6758
+ case CultureIDs.De_DE: return "Berechnung unterbrechen und die bereits berechneten Korrelationen anzeigen";
6759
+ case CultureIDs.En_US: return "Stop the calculation and show the already calculated correlations";
6760
+ case CultureIDs.Es_ES: return "Interrumpir el cálculo y mostrar las correlaciones ya calculadas";
6761
+ case CultureIDs.Fr_FR: return "Interrompre le calcul et afficher les corrélations déjà calculées";
6762
+ case CultureIDs.Pt_PT: return "Interromper o cálculo e mostrar as correlações já calculadas";
6763
+ default: return "Interrompi il calcolo e mostra le correlazioni già calcolate";
6764
+ }
6765
+ }
6766
+ static get RelationsCalculationStopped() {
6767
+ switch (this._cultureID) {
6768
+ case CultureIDs.De_DE: return "Berechnung der Korrelationen unterbrochen: Es werden nur die bereits berechneten Korrelationen angezeigt.";
6769
+ case CultureIDs.En_US: return "Correlations calculation stopped: only the already calculated correlations are shown.";
6770
+ case CultureIDs.Es_ES: return "Cálculo de correlaciones interrumpido: solo se muestran las correlaciones ya calculadas.";
6771
+ case CultureIDs.Fr_FR: return "Calcul des corrélations interrompu : seules les corrélations déjà calculées sont affichées.";
6772
+ case CultureIDs.Pt_PT: return "Cálculo das correlações interrompido: são mostradas apenas as correlações já calculadas.";
6773
+ default: return "Calcolo delle correlazioni interrotto: vengono mostrate solo le correlazioni già calcolate.";
6774
+ }
6775
+ }
6626
6776
  static get RelatedDcmtsNotFound() {
6627
6777
  switch (this._cultureID) {
6628
6778
  case CultureIDs.De_DE: return "Für das ausgewählte Dokument wurden keine zugehörigen Dokumente gefunden.";
@@ -6663,6 +6813,16 @@ export class SDKUI_Localizator {
6663
6813
  default: return "Rimuovi filtro contestuale";
6664
6814
  }
6665
6815
  }
6816
+ static get RemoveDetailFromSummary_Confirm() {
6817
+ switch (this._cultureID) {
6818
+ case CultureIDs.De_DE: return "Detail entfernen? Es wird nicht archiviert.";
6819
+ case CultureIDs.En_US: return "Remove this detail? It won't be archived.";
6820
+ case CultureIDs.Es_ES: return "¿Eliminar este detalle? No se archivará.";
6821
+ case CultureIDs.Fr_FR: return "Supprimer ce détail ? Il ne sera pas archivé.";
6822
+ case CultureIDs.Pt_PT: return "Remover este detalhe? Não será arquivado.";
6823
+ default: return "Rimuovere questo dettaglio? Non verrà archiviato.";
6824
+ }
6825
+ }
6666
6826
  static get RemoveFromCache() {
6667
6827
  switch (this._cultureID) {
6668
6828
  case CultureIDs.De_DE: return "Element aus Cache entfernen";
@@ -7149,6 +7309,16 @@ export class SDKUI_Localizator {
7149
7309
  default: return "Cerca";
7150
7310
  }
7151
7311
  }
7312
+ static get SearchAndAppend() {
7313
+ switch (this._cultureID) {
7314
+ case CultureIDs.De_DE: return "Suchen und anhängen";
7315
+ case CultureIDs.En_US: return "Search and append";
7316
+ case CultureIDs.Es_ES: return "Buscar y añadir";
7317
+ case CultureIDs.Fr_FR: return "Rechercher et ajouter";
7318
+ case CultureIDs.Pt_PT: return "Pesquisar e acrescentar";
7319
+ default: return "Ricerca e accoda";
7320
+ }
7321
+ }
7152
7322
  static get Search_Advanced() {
7153
7323
  switch (this._cultureID) {
7154
7324
  case CultureIDs.De_DE: return "Erweiterte Suche";
@@ -7259,6 +7429,16 @@ export class SDKUI_Localizator {
7259
7429
  default: return "Seleziona un documento per visualizzare i dettagli";
7260
7430
  }
7261
7431
  }
7432
+ static get SelectDcmtTypeForDetailArchiving() {
7433
+ switch (this._cultureID) {
7434
+ case CultureIDs.De_DE: return "Dokumenttyp auswählen, für den die Details archiviert werden sollen";
7435
+ case CultureIDs.En_US: return "Select the document type for which to archive the details";
7436
+ case CultureIDs.Es_ES: return "Seleccionar el tipo de documento sobre el cual archivar los detalles";
7437
+ case CultureIDs.Fr_FR: return "Sélectionner le type de document sur lequel archiver les détails";
7438
+ case CultureIDs.Pt_PT: return "Selecionar o tipo de documento no qual arquivar os detalhes";
7439
+ default: return "Selezionare il tipo documento sul quale effettuare l'archiviazione dei dettagli";
7440
+ }
7441
+ }
7262
7442
  static get SelectArchiveToStart() {
7263
7443
  switch (this._cultureID) {
7264
7444
  case CultureIDs.De_DE: return "Klicken Sie auf Archivieren, um zu beginnen.";
@@ -7590,6 +7770,16 @@ export class SDKUI_Localizator {
7590
7770
  default: return "Mostra tutti";
7591
7771
  }
7592
7772
  }
7773
+ static get ShowArchivedDetails() {
7774
+ switch (this._cultureID) {
7775
+ case CultureIDs.De_DE: return "Bereits archivierte Details anzeigen";
7776
+ case CultureIDs.En_US: return "Show already archived details";
7777
+ case CultureIDs.Es_ES: return "Mostrar los detalles ya archivados";
7778
+ case CultureIDs.Fr_FR: return "Afficher les détails déjà archivés";
7779
+ case CultureIDs.Pt_PT: return "Mostrar os detalhes já arquivados";
7780
+ default: return "Mostra i dettagli già archiviati";
7781
+ }
7782
+ }
7593
7783
  static get ShowColumnSelection() {
7594
7784
  switch (this._cultureID) {
7595
7785
  case CultureIDs.De_DE: return "Spaltenauswahl anzeigen";
@@ -7600,6 +7790,16 @@ export class SDKUI_Localizator {
7600
7790
  default: return "Mostra selezione colonne";
7601
7791
  }
7602
7792
  }
7793
+ static get ShowDcmtTypes() {
7794
+ switch (this._cultureID) {
7795
+ case CultureIDs.De_DE: return "Dokumenttypen anzeigen";
7796
+ case CultureIDs.En_US: return "Show document types";
7797
+ case CultureIDs.Es_ES: return "Mostrar tipos de documento";
7798
+ case CultureIDs.Fr_FR: return "Afficher les types de document";
7799
+ case CultureIDs.Pt_PT: return "Mostrar tipos de documento";
7800
+ default: return "Mostra tipi documento";
7801
+ }
7802
+ }
7603
7803
  static get ShowFloatingBar() {
7604
7804
  switch (this._cultureID) {
7605
7805
  case CultureIDs.De_DE: return "Floating-Leiste anzeigen";
@@ -7640,6 +7840,16 @@ export class SDKUI_Localizator {
7640
7840
  default: return "Mostra dettagli";
7641
7841
  }
7642
7842
  }
7843
+ static get ShowDetailsToArchive() {
7844
+ switch (this._cultureID) {
7845
+ case CultureIDs.De_DE: return "Zu archivierende Details anzeigen";
7846
+ case CultureIDs.En_US: return "Show details to archive";
7847
+ case CultureIDs.Es_ES: return "Mostrar los detalles a archivar";
7848
+ case CultureIDs.Fr_FR: return "Afficher les détails à archiver";
7849
+ case CultureIDs.Pt_PT: return "Mostrar os detalhes a arquivar";
7850
+ default: return "Mostra i dettagli da archiviare";
7851
+ }
7852
+ }
7643
7853
  static get ShowDetailsWithZeroDocs() {
7644
7854
  switch (this._cultureID) {
7645
7855
  case CultureIDs.De_DE: return "Details mit 0 Dokumenten anzeigen";
@@ -7690,6 +7900,26 @@ export class SDKUI_Localizator {
7690
7900
  default: return "Mostra il pannello sinistro";
7691
7901
  }
7692
7902
  }
7903
+ static get ShowMasterInfo() {
7904
+ switch (this._cultureID) {
7905
+ case CultureIDs.De_DE: return "Master-Informationen anzeigen";
7906
+ case CultureIDs.En_US: return "Show master information";
7907
+ case CultureIDs.Es_ES: return "Mostrar la información del maestro";
7908
+ case CultureIDs.Fr_FR: return "Afficher les informations du maître";
7909
+ case CultureIDs.Pt_PT: return "Mostrar as informações do mestre";
7910
+ default: return "Mostra le informazioni del master";
7911
+ }
7912
+ }
7913
+ static get ShowPartialResults() {
7914
+ switch (this._cultureID) {
7915
+ case CultureIDs.De_DE: return "Teilergebnisse anzeigen";
7916
+ case CultureIDs.En_US: return "Show partial results";
7917
+ case CultureIDs.Es_ES: return "Mostrar resultados parciales";
7918
+ case CultureIDs.Fr_FR: return "Afficher les résultats partiels";
7919
+ case CultureIDs.Pt_PT: return "Mostrar resultados parciais";
7920
+ default: return "Mostra risultati parziali";
7921
+ }
7922
+ }
7693
7923
  static get ShowSearch() {
7694
7924
  switch (this._cultureID) {
7695
7925
  case CultureIDs.De_DE: return "Suche anzeigen";
@@ -7950,6 +8180,16 @@ export class SDKUI_Localizator {
7950
8180
  default: return "Stato e risposta";
7951
8181
  }
7952
8182
  }
8183
+ static get StopOnFirstError() {
8184
+ switch (this._cultureID) {
8185
+ case CultureIDs.De_DE: return "Beim ersten Fehler abbrechen";
8186
+ case CultureIDs.En_US: return "Stop at the first error";
8187
+ case CultureIDs.Es_ES: return "Detener en el primer error";
8188
+ case CultureIDs.Fr_FR: return "Arrêter à la première erreur";
8189
+ case CultureIDs.Pt_PT: return "Parar no primeiro erro";
8190
+ default: return "Interrompi al primo errore";
8191
+ }
8192
+ }
7953
8193
  static get Subject() {
7954
8194
  switch (this._cultureID) {
7955
8195
  case CultureIDs.De_DE: return "Betreff";
@@ -271,6 +271,7 @@ export declare function IconWizard4(props: React.SVGProps<SVGSVGElement>): impor
271
271
  export declare function IconNew(props: React.SVGProps<SVGSVGElement>): import("react/jsx-runtime").JSX.Element;
272
272
  export declare function IconFileOpenOutline(props: Readonly<React.SVGProps<SVGSVGElement>>): import("react/jsx-runtime").JSX.Element;
273
273
  export declare function IconArchiveDetail(props: React.SVGProps<SVGSVGElement>): import("react/jsx-runtime").JSX.Element;
274
+ export declare function IconArchiveMultipleDetailDocuments(props: React.SVGProps<SVGSVGElement>): import("react/jsx-runtime").JSX.Element;
274
275
  export declare function IconArchiveMaster(props: React.SVGProps<SVGSVGElement>): import("react/jsx-runtime").JSX.Element;
275
276
  export declare function IconPair(props: React.SVGProps<SVGSVGElement>): import("react/jsx-runtime").JSX.Element;
276
277
  export declare function IconUnpair(props: React.SVGProps<SVGSVGElement>): import("react/jsx-runtime").JSX.Element;
@@ -673,6 +673,9 @@ export function IconFileOpenOutline(props) {
673
673
  export function IconArchiveDetail(props) {
674
674
  return (_jsxs("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: "currentColor", d: "m20.54 5.23l-1.39-1.68C18.88 3.21 18.47 3 18 3H6c-.47 0-.88.21-1.16.55L3.46 5.23C3.17 5.57 3 6.02 3 6.5V19c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V6.5c0-.48-.17-.93-.46-1.27M12 17.5L6.5 12H10v-2h4v2h3.5zM5.12 5l.81-1h12l.94 1z" }), " "] }));
675
675
  }
676
+ export function IconArchiveMultipleDetailDocuments(props) {
677
+ return (_jsxs("svg", { fontSize: props.fontSize ?? FONTSIZE, xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 48 48", width: "1em", height: "1em", ...props, children: [_jsx("path", { fill: "currentColor", d: "M40,35v5H8v-5H4v5c0,2.2,1.8,4,4,4h32c2.2,0,4-1.8,4-4v-5H40z" }), _jsxs("g", { fill: "currentColor", children: [_jsx("polygon", { points: "24,23.4 17,15 31,15" }), _jsx("rect", { x: "22", y: "4", width: "4", height: "14" }), _jsx("path", { d: "M31.5,26.9L30.8,28l3.5,1.9l0.6-1.2c1.6-3,2.6-4.7,3.5-5.2C39.3,23,41,23,44,23v-4C36.3,19,35.6,19.4,31.5,26.9z" }), _jsx("polygon", { points: "38.4,31 29.4,35 28,25" }), _jsx("path", { d: "M16.5,26.9l0.6,1.2L13.6,30L13,28.8c-1.6-3-2.6-4.7-3.5-5.2C8.7,23,7,23,4,23v-4C11.7,19,12.4,19.4,16.5,26.9z" }), _jsx("polygon", { points: "20,25 18.6,35 9.6,31" })] })] }));
678
+ }
676
679
  export function IconArchiveMaster(props) {
677
680
  return (_jsxs("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: "currentColor", d: "m20.55 5.22l-1.39-1.68A1.51 1.51 0 0 0 18 3H6c-.47 0-.88.21-1.15.55L3.46 5.22C3.17 5.57 3 6.01 3 6.5V19a2 2 0 0 0 2 2h14c1.1 0 2-.9 2-2V6.5c0-.49-.17-.93-.45-1.28M12 9.5l5.5 5.5H14v2h-4v-2H6.5zM5.12 5l.82-1h12l.93 1z" }), " "] }));
678
681
  }
@@ -0,0 +1,28 @@
1
+ import { MetadataFormats } from '@topconsultnpm/sdk-ts';
2
+ /** Testo mostrato in una colonna per una riga: è quello su cui va cercato ciò che l'utente digita */
3
+ export type SearchTextGetter = (rowData: any) => string;
4
+ /** Testo con cui una data viene mostrata nella griglia: è quello che l'utente vede e quindi quello che cerca */
5
+ export declare const getDateDisplayText: (value: any, format: MetadataFormats | undefined, formatCulture: string | undefined | null) => string;
6
+ /** Testo con cui un numero viene mostrato nella griglia (separatore delle migliaia, valuta, decimali) */
7
+ export declare const getNumberDisplayText: (value: any, format: MetadataFormats | undefined, formatCulture: string) => string;
8
+ /**
9
+ * Dirotta la ricerca della griglia sul testo mostrato, per le colonne indicate (chiave: il `dataField`).
10
+ *
11
+ * La ricerca di DevExtreme lavora sul valore archiviato, quindi non trova nulla dove il testo mostrato è
12
+ * diverso:
13
+ * - **date**, che nei dati sono stringhe ISO: DevExtreme prova a interpretare il testo digitato con il
14
+ * formato della colonna, non riesce (il formato è un formatter personalizzato, non un pattern) e scarta
15
+ * la colonna dalla ricerca — cercando `29/01/2023` non trova nulla;
16
+ * - **numeri formattati**, per lo stesso motivo (separatore delle migliaia, simbolo di valuta);
17
+ * - **liste dati e utenti**, dove viene confrontata la chiave archiviata invece della descrizione
18
+ * visualizzata — cercando `FATTURA` non trova nulla, cercando `TD01` sì.
19
+ *
20
+ * Da passare a `customizeColumns` della griglia. Va fatto lì perché solo lì è disponibile la
21
+ * `calculateFilterExpression` predefinita di DevExtreme, che resta in uso per il filtro di intestazione e
22
+ * per il generatore di filtri: quelli funzionano già correttamente e vanno lasciati intatti.
23
+ *
24
+ * @example
25
+ * const searchTextGetters = useMemo(() => new Map([['TM_1_2', (row) => getDateDisplayText(row?.TM_1_2, format, culture)]]), [...]);
26
+ * const customizeColumns = useMemo(() => customizeSearchByDisplayText(searchTextGetters), [searchTextGetters]);
27
+ */
28
+ export declare const customizeSearchByDisplayText: (searchTextGetters: Map<string, SearchTextGetter>) => (columns: Array<any>) => void;
@@ -0,0 +1,51 @@
1
+ import { formatDateTimeByMetadataFormat, formatNumberByMetadataFormat } from './TMUtils';
2
+ /** Testo con cui una data viene mostrata nella griglia: è quello che l'utente vede e quindi quello che cerca */
3
+ export const getDateDisplayText = (value, format, formatCulture) => {
4
+ if (value === undefined || value === null || value === '')
5
+ return '';
6
+ const date = value instanceof Date ? value : new Date(value);
7
+ return Number.isNaN(date.getTime()) ? '' : formatDateTimeByMetadataFormat(date, format, formatCulture);
8
+ };
9
+ /** Testo con cui un numero viene mostrato nella griglia (separatore delle migliaia, valuta, decimali) */
10
+ export const getNumberDisplayText = (value, format, formatCulture) => {
11
+ if (value === undefined || value === null || value === '')
12
+ return '';
13
+ return formatNumberByMetadataFormat(value, format, formatCulture);
14
+ };
15
+ /**
16
+ * Dirotta la ricerca della griglia sul testo mostrato, per le colonne indicate (chiave: il `dataField`).
17
+ *
18
+ * La ricerca di DevExtreme lavora sul valore archiviato, quindi non trova nulla dove il testo mostrato è
19
+ * diverso:
20
+ * - **date**, che nei dati sono stringhe ISO: DevExtreme prova a interpretare il testo digitato con il
21
+ * formato della colonna, non riesce (il formato è un formatter personalizzato, non un pattern) e scarta
22
+ * la colonna dalla ricerca — cercando `29/01/2023` non trova nulla;
23
+ * - **numeri formattati**, per lo stesso motivo (separatore delle migliaia, simbolo di valuta);
24
+ * - **liste dati e utenti**, dove viene confrontata la chiave archiviata invece della descrizione
25
+ * visualizzata — cercando `FATTURA` non trova nulla, cercando `TD01` sì.
26
+ *
27
+ * Da passare a `customizeColumns` della griglia. Va fatto lì perché solo lì è disponibile la
28
+ * `calculateFilterExpression` predefinita di DevExtreme, che resta in uso per il filtro di intestazione e
29
+ * per il generatore di filtri: quelli funzionano già correttamente e vanno lasciati intatti.
30
+ *
31
+ * @example
32
+ * const searchTextGetters = useMemo(() => new Map([['TM_1_2', (row) => getDateDisplayText(row?.TM_1_2, format, culture)]]), [...]);
33
+ * const customizeColumns = useMemo(() => customizeSearchByDisplayText(searchTextGetters), [searchTextGetters]);
34
+ */
35
+ export const customizeSearchByDisplayText = (searchTextGetters) => (columns) => {
36
+ columns.forEach((column) => {
37
+ const getSearchText = column?.dataField ? searchTextGetters.get(column.dataField) : undefined;
38
+ // customizeColumns viene richiamata a ogni aggiornamento delle colonne: senza il marcatore i wrapper si anniderebbero
39
+ if (!getSearchText || column.tmSearchByDisplayText)
40
+ return;
41
+ const defaultCalculateFilterExpression = column.calculateFilterExpression;
42
+ // Senza questo DevExtreme prova a convertire il testo digitato nel tipo della colonna e, non riuscendo, la scarta
43
+ column.parseValue = (text) => text;
44
+ column.calculateFilterExpression = function (filterValue, selectedFilterOperation, target) {
45
+ if (target === 'search')
46
+ return [getSearchText, 'contains', filterValue];
47
+ return defaultCalculateFilterExpression?.apply(this, arguments);
48
+ };
49
+ column.tmSearchByDisplayText = true;
50
+ });
51
+ };
@@ -1,8 +1,28 @@
1
+ import { DcmtTypeDescriptor, MetadataDataTypes, MetadataDescriptor, MetadataFormats, RelationDescriptor } from "@topconsultnpm/sdk-ts";
1
2
  import { MetadataValueDescriptorEx } from "../ts";
3
+ /** Metadati utente (esclusi quelli di sistema) del tipo documento, in ordine di visualizzazione */
4
+ export declare const getUserMetadataSorted: (dtd: DcmtTypeDescriptor | undefined) => Array<MetadataDescriptor>;
5
+ /** Formatta un valore scalare (non lista dati): date e numeri rispettano Format e FormatCulture del metadato */
6
+ export declare const formatScalarValue: (value: any, dataType: MetadataDataTypes | undefined, format: MetadataFormats | undefined, formatCulture: string | undefined) => string;
2
7
  /** Check if dcmtType (mTID) has configured Detail or Many-to-Many relations */
3
8
  export declare const hasDetailRelations: (mTID: number | undefined) => Promise<boolean>;
4
9
  /** Check if dcmtType (mTID) has configured Master or Many-to-Many relations */
5
10
  export declare const hasMasterRelations: (mTID: number | undefined) => Promise<boolean>;
11
+ export declare const getDcmtMetadataByMid: (dcmt: {
12
+ TID?: number;
13
+ DID?: number;
14
+ } | undefined) => Promise<Map<number, any>>;
15
+ export declare const mapAssociationsFromMetadata: (relation: RelationDescriptor, type: "detail" | "master", metadataByMid: Map<number, any>) => Array<{
16
+ mid: number;
17
+ value: string;
18
+ }>;
19
+ export declare const mapRelationAssociationsToMids: (relation: RelationDescriptor, type: "detail" | "master", dcmt: {
20
+ TID?: number;
21
+ DID?: number;
22
+ } | undefined) => Promise<Array<{
23
+ mid: number;
24
+ value: string;
25
+ }>>;
6
26
  export declare const isXMLFileExt: (fileExt: string | undefined) => boolean;
7
27
  export declare const getButtonAttributes: (args: string | undefined, formData: MetadataValueDescriptorEx[] | undefined, selectedItems: Array<any> | undefined) => Record<string, any> | undefined;
8
28
  export declare const getSelectedItem: (args: string | undefined, formData: MetadataValueDescriptorEx[] | undefined, item: any) => Record<string, any> | undefined;
@@ -1,4 +1,21 @@
1
- import { RelationCacheService, RelationTypes, SDK_Globals } from "@topconsultnpm/sdk-ts";
1
+ import { MetadataDataTypes, RelationCacheService, RelationTypes, SDK_Globals } from "@topconsultnpm/sdk-ts";
2
+ import { formatDateTimeByMetadataFormat, formatNumberByMetadataFormat } from "./TMUtils";
3
+ /** Metadati utente (esclusi quelli di sistema) del tipo documento, in ordine di visualizzazione */
4
+ export const getUserMetadataSorted = (dtd) => {
5
+ return (dtd?.metadata ?? [])
6
+ .filter(md => md.id !== undefined && md.id > 100 && md.isSystem !== 1)
7
+ .sort((a, b) => (a.ordinalPosition ?? 0) - (b.ordinalPosition ?? 0));
8
+ };
9
+ /** Formatta un valore scalare (non lista dati): date e numeri rispettano Format e FormatCulture del metadato */
10
+ export const formatScalarValue = (value, dataType, format, formatCulture) => {
11
+ if (value === undefined || value === null || value === '')
12
+ return '';
13
+ switch (dataType) {
14
+ case MetadataDataTypes.DateTime: return formatDateTimeByMetadataFormat(value instanceof Date ? value : new Date(value), format, formatCulture);
15
+ case MetadataDataTypes.Number: return formatNumberByMetadataFormat(value, format, formatCulture ?? window.navigator.language);
16
+ default: return String(value);
17
+ }
18
+ };
2
19
  /** Check if dcmtType (mTID) has configured Detail or Many-to-Many relations */
3
20
  export const hasDetailRelations = async (mTID) => {
4
21
  let allRelations = await RelationCacheService.GetAllAsync();
@@ -13,6 +30,46 @@ export const hasMasterRelations = async (mTID) => {
13
30
  let rdlManyToMany = allRelations?.filter(o => o.relationType == RelationTypes.ManyToMany && (o.masterTID == mTID || o.detailTID == mTID)) ?? [];
14
31
  return rdlManyToMany.length > 0 || rdlOneToMany.length > 0;
15
32
  };
33
+ // Legge i metadati di un documento
34
+ export const getDcmtMetadataByMid = async (dcmt) => {
35
+ const metadataMap = new Map();
36
+ if (!dcmt?.TID || !dcmt?.DID)
37
+ return metadataMap; // Documento non identificabile: mappa vuota
38
+ const searchEngine = SDK_Globals.tmSession?.NewSearchEngine();
39
+ if (!searchEngine)
40
+ return metadataMap; // Nessuna sessione attiva: mappa vuota
41
+ const allMetadata = await searchEngine.GetMetadataAsync(dcmt.TID, dcmt.DID, false);
42
+ const row = allMetadata?.dtdResult?.rows?.[0]; // Prima (e unica) riga = il documento richiesto
43
+ const mids = allMetadata?.selectMIDs; // MID nello stesso ordine dei valori di riga
44
+ if (row && mids)
45
+ mids.forEach((mid, index) => metadataMap.set(mid, row[index])); // Accoppia mid -> valore per posizione
46
+ return metadataMap;
47
+ };
48
+ // Mappa le associazioni della relazione nei MID di destinazione, usando i metadati sorgente già letti.
49
+ // 'detail' = archivio dettagli dal master (sorgente item1 -> destinazione item2); 'master' = archivio master dal dettaglio (item2 -> item1).
50
+ // Emette una voce per ogni associazione, anche vuota, per coprire tutti i collegamenti.
51
+ export const mapAssociationsFromMetadata = (relation, type, metadataByMid) => {
52
+ if (!relation.associations || relation.associations.length === 0)
53
+ return []; // Relazione senza collegamenti
54
+ return relation.associations.map(assoc => {
55
+ const sourceMid = type === 'detail' ? (assoc.item1 ?? 0) : (assoc.item2 ?? 0); // MID da cui leggere il valore
56
+ const targetMid = type === 'detail' ? (assoc.item2 ?? 0) : (assoc.item1 ?? 0); // MID da valorizzare
57
+ const value = metadataByMid.get(sourceMid); // Valore sorgente (può mancare)
58
+ return { mid: targetMid, value: value !== undefined && value !== null ? value.toString() : '' }; // Assente/null -> stringa vuota
59
+ });
60
+ };
61
+ // Legge il documento sorgente (master per 'detail', dettaglio per 'master') e mappa le associazioni nei MID di destinazione.
62
+ // Per letture ripetute dello stesso documento, riusare la mappa e chiamare direttamente `mapAssociationsFromMetadata`.
63
+ export const mapRelationAssociationsToMids = async (relation, type, dcmt) => {
64
+ if (!relation.associations || relation.associations.length === 0)
65
+ return []; // Relazione senza collegamenti
66
+ if (!dcmt?.TID || !dcmt?.DID)
67
+ return []; // Documento sorgente non identificabile
68
+ const metadataByMid = await getDcmtMetadataByMid(dcmt);
69
+ if (metadataByMid.size === 0)
70
+ return []; // Nessun metadato leggibile: [] come nel flusso originale (niente collegamenti a vuoto)
71
+ return mapAssociationsFromMetadata(relation, type, metadataByMid);
72
+ };
16
73
  export const isXMLFileExt = (fileExt) => {
17
74
  const fileExtension = fileExt?.toLowerCase() ?? '';
18
75
  switch (fileExtension) {
@@ -2,6 +2,15 @@ import { Colors as ColorsType } from "../components/base/TMEditorBase";
2
2
  import { DeviceType } from "../components";
3
3
  import { AppModules, DataColumnDescriptor, DcmtTypeDescriptor, ITopMediaSession, MetadataDescriptor, QueryDescriptor, SearchResultDescriptor, TaskDescriptor } from "@topconsultnpm/sdk-ts";
4
4
  import { FileExtensionHandler, FormModes, moduleTypes } from "../ts";
5
+ import React from "react";
6
+ /**
7
+ * Handler di hover per elementi con stili inline: applica `over` all'ingresso del mouse e `out` all'uscita.
8
+ * Da spandere sull'elemento: `{...hoverStyle({ background: 'red' }, { background: 'transparent' })}`
9
+ */
10
+ export declare const hoverStyle: (over: React.CSSProperties, out: React.CSSProperties) => {
11
+ onMouseEnter: (e: React.MouseEvent<HTMLElement>) => CSSStyleDeclaration & React.CSSProperties;
12
+ onMouseLeave: (e: React.MouseEvent<HTMLElement>) => CSSStyleDeclaration & React.CSSProperties;
13
+ };
5
14
  declare const calcResponsiveSizes: (deviceType: DeviceType | undefined, desktopSize: string, tabletSize: string, mobileSize: string) => string;
6
15
  declare const taskModalSizes: (deviceType: DeviceType | undefined, formMode: FormModes) => {
7
16
  width: string;
@@ -35,6 +44,17 @@ export declare const getDataColumnName: (fromTID: number | undefined, dtColumn:
35
44
  */
36
45
  export declare const generateUniqueColumnKeys: (columns: DataColumnDescriptor[] | undefined, fromTID: number | undefined) => string[];
37
46
  export declare const searchResultDescriptorToSimpleArray: (searchResult: SearchResultDescriptor | undefined) => any[] | undefined;
47
+ /**
48
+ * Unisce ("accoda") il risultato di una nuova ricerca a quello precedente, sullo stesso tipo documento.
49
+ * - Le righe della nuova ricerca vengono messe in cima (più recenti in alto)
50
+ * - Le righe duplicate sono accettate: lo stesso documento può comparire più volte
51
+ * - Aggiorna i contatori globali (dcmtsFound / dcmtsReturned) sul totale unito
52
+ *
53
+ * @param previous Risultato attualmente in memoria (può essere undefined al primo giro)
54
+ * @param next Nuovo risultato appena ottenuto
55
+ * @returns Un nuovo SearchResultDescriptor con le righe unite, oppure il singolo risultato disponibile
56
+ */
57
+ export declare const mergeSearchResultsAppend: (previous: SearchResultDescriptor | undefined, next: SearchResultDescriptor | undefined) => SearchResultDescriptor | undefined;
38
58
  export declare const getCompleteMetadataName: (dcmtTypeName: string | undefined, metadataName: string | undefined) => string;
39
59
  export declare const getQueryCountAsync: (qd: QueryDescriptor, showSpinner: boolean) => Promise<void>;
40
60
  export declare function getTIDByMID(mid: number | undefined, defaultTid?: number): number;