@topconsultnpm/sdkui-react 6.19.0-test.1 → 6.19.0-test2

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 (208) hide show
  1. package/lib/assets/IconsS4t/add.svg +12 -12
  2. package/lib/assets/IconsS4t/aggiorna.svg +18 -18
  3. package/lib/assets/IconsS4t/bookmark.svg +42 -42
  4. package/lib/assets/IconsS4t/cancella.svg +15 -15
  5. package/lib/assets/IconsS4t/check-box.svg +19 -19
  6. package/lib/assets/IconsS4t/down-arrow-signBook.svg +40 -40
  7. package/lib/assets/IconsS4t/down.svg +28 -28
  8. package/lib/assets/IconsS4t/edit-file.svg +19 -19
  9. package/lib/assets/IconsS4t/edita.svg +32 -32
  10. package/lib/assets/IconsS4t/firma.svg +19 -19
  11. package/lib/assets/IconsS4t/icona_download.svg +16 -16
  12. package/lib/assets/IconsS4t/info.svg +51 -51
  13. package/lib/assets/IconsS4t/left.svg +20 -20
  14. package/lib/assets/IconsS4t/line.svg +40 -40
  15. package/lib/assets/IconsS4t/more.svg +19 -19
  16. package/lib/assets/IconsS4t/plus.svg +23 -23
  17. package/lib/assets/IconsS4t/printer.svg +49 -49
  18. package/lib/assets/IconsS4t/radio-on-button.svg +25 -25
  19. package/lib/assets/IconsS4t/rectangle.svg +41 -41
  20. package/lib/assets/IconsS4t/redo.svg +19 -19
  21. package/lib/assets/IconsS4t/right-arrow-signBook-finish.svg +40 -40
  22. package/lib/assets/IconsS4t/right-arrow-signBook.svg +40 -40
  23. package/lib/assets/IconsS4t/right.svg +22 -22
  24. package/lib/assets/IconsS4t/searchbar.svg +21 -21
  25. package/lib/assets/IconsS4t/text-box.svg +36 -36
  26. package/lib/assets/IconsS4t/tick.svg +8 -8
  27. package/lib/assets/IconsS4t/trash-white.svg +10 -10
  28. package/lib/assets/IconsS4t/undo.svg +19 -19
  29. package/lib/assets/IconsS4t/up.svg +32 -32
  30. package/lib/assets/IconsS4t/video-streaming.svg +2 -2
  31. package/lib/assets/IconsS4t/zoom-in.svg +58 -58
  32. package/lib/assets/IconsS4t/zoom-out.svg +56 -56
  33. package/lib/assets/icomoon.svg +96 -96
  34. package/lib/assets/italy.svg +16 -16
  35. package/lib/assets/six.svg +3 -3
  36. package/lib/assets/thumbnails/index.ts +39 -39
  37. package/lib/assets/topmedia-six.svg +65 -65
  38. package/lib/assets/topmeida-six-bianco.svg +65 -65
  39. package/lib/components/base/Styled.js +302 -302
  40. package/lib/components/base/TMAccordion.js +43 -43
  41. package/lib/components/base/TMAccordionNew.d.ts +28 -0
  42. package/lib/components/base/TMAccordionNew.js +326 -0
  43. package/lib/components/base/TMAreaManager.js +23 -23
  44. package/lib/components/base/TMButton.d.ts +1 -0
  45. package/lib/components/base/TMButton.js +136 -136
  46. package/lib/components/base/TMClosableList.js +46 -46
  47. package/lib/components/base/TMConfirm.js +20 -20
  48. package/lib/components/base/TMContextMenu.js +4 -4
  49. package/lib/components/base/TMContextMenuOLD.js +25 -25
  50. package/lib/components/base/TMCounterBar.js +32 -32
  51. package/lib/components/base/TMCounterContainer.js +30 -30
  52. package/lib/components/base/TMCustomButton.d.ts +1 -1
  53. package/lib/components/base/TMCustomButton.js +90 -35
  54. package/lib/components/base/TMDataGridExportForm.d.ts +1 -1
  55. package/lib/components/base/TMDataGridExportForm.js +9 -3
  56. package/lib/components/base/TMDropDownMenu.js +24 -24
  57. package/lib/components/base/TMFileManager.js +12 -3
  58. package/lib/components/base/TMFileManagerDataGridView.d.ts +2 -0
  59. package/lib/components/base/TMFileManagerDataGridView.js +12 -3
  60. package/lib/components/base/TMFileManagerThumbnailItems.d.ts +2 -0
  61. package/lib/components/base/TMFileManagerThumbnailItems.js +12 -2
  62. package/lib/components/base/TMFileManagerThumbnailsView.d.ts +2 -0
  63. package/lib/components/base/TMFileManagerThumbnailsView.js +2 -2
  64. package/lib/components/base/TMFileManagerUtils.js +19 -19
  65. package/lib/components/base/TMFloatingToolbar.js +34 -34
  66. package/lib/components/base/TMLayout.js +44 -44
  67. package/lib/components/base/TMList.js +34 -34
  68. package/lib/components/base/TMModal.d.ts +2 -0
  69. package/lib/components/base/TMModal.js +79 -34
  70. package/lib/components/base/TMPanel.js +57 -57
  71. package/lib/components/base/TMPopUp.js +186 -117
  72. package/lib/components/base/TMProgressBar.js +20 -20
  73. package/lib/components/base/TMResizableMenu.js +28 -28
  74. package/lib/components/base/TMRightSidebar.js +40 -40
  75. package/lib/components/base/TMSpinner.js +121 -121
  76. package/lib/components/base/TMTab.js +11 -11
  77. package/lib/components/base/TMToggleButton.js +36 -36
  78. package/lib/components/base/TMToolbarCard.js +35 -35
  79. package/lib/components/base/TMTooltip.d.ts +1 -1
  80. package/lib/components/base/TMTooltip.js +1 -1
  81. package/lib/components/base/TMTreeView.js +16 -16
  82. package/lib/components/base/TMUserAvatar.js +7 -7
  83. package/lib/components/base/TMWaitPanel.js +30 -24
  84. package/lib/components/choosers/TMCultureIDPicker.js +35 -35
  85. package/lib/components/choosers/TMDataListItemChooser.js +1 -1
  86. package/lib/components/choosers/TMDataListItemPicker.js +54 -54
  87. package/lib/components/choosers/TMDcmtTypeChooser.js +2 -2
  88. package/lib/components/choosers/TMMetadataChooser.d.ts +4 -1
  89. package/lib/components/choosers/TMMetadataChooser.js +31 -8
  90. package/lib/components/choosers/TMUserChooser.d.ts +4 -0
  91. package/lib/components/choosers/TMUserChooser.js +21 -5
  92. package/lib/components/editors/TMCheckBox.js +24 -24
  93. package/lib/components/editors/TMDateBox.d.ts +1 -1
  94. package/lib/components/editors/TMDropDown.js +43 -43
  95. package/lib/components/editors/TMEditorStyled.js +71 -71
  96. package/lib/components/editors/TMHtmlContentDisplay.js +16 -16
  97. package/lib/components/editors/TMLocalizedTextBox.js +31 -31
  98. package/lib/components/editors/TMMetadataValues.js +62 -21
  99. package/lib/components/editors/TMRadioButton.js +39 -39
  100. package/lib/components/editors/TMSummary.js +39 -39
  101. package/lib/components/editors/TMTextArea.d.ts +1 -0
  102. package/lib/components/editors/TMTextArea.js +56 -22
  103. package/lib/components/editors/TMTextBox.js +53 -23
  104. package/lib/components/editors/TMTextExpression.js +36 -28
  105. package/lib/components/features/assistant/ToppyDraggableHelpCenter.d.ts +30 -0
  106. package/lib/components/features/assistant/ToppyDraggableHelpCenter.js +471 -0
  107. package/lib/components/features/assistant/ToppySpeechBubble.d.ts +9 -0
  108. package/lib/components/features/assistant/ToppySpeechBubble.js +117 -0
  109. package/lib/components/features/blog/TMBlogCommentForm.d.ts +2 -0
  110. package/lib/components/features/blog/TMBlogCommentForm.js +21 -9
  111. package/lib/components/features/documents/TMDcmtBlog.js +1 -1
  112. package/lib/components/features/documents/TMDcmtForm.js +321 -62
  113. package/lib/components/features/documents/TMDcmtIcon.js +17 -12
  114. package/lib/components/features/documents/TMDcmtPreview.js +75 -38
  115. package/lib/components/features/documents/TMFileUploader.js +21 -21
  116. package/lib/components/features/documents/TMRelationViewer.js +56 -23
  117. package/lib/components/features/search/TMSavedQuerySelector.js +52 -52
  118. package/lib/components/features/search/TMSearch.js +2 -2
  119. package/lib/components/features/search/TMSearchQueryEditor.js +14 -14
  120. package/lib/components/features/search/TMSearchQueryPanel.js +40 -58
  121. package/lib/components/features/search/TMSearchResult.js +160 -35
  122. package/lib/components/features/search/TMSearchResultsMenuItems.d.ts +2 -1
  123. package/lib/components/features/search/TMSearchResultsMenuItems.js +117 -60
  124. package/lib/components/features/search/TMSignSettingsForm.d.ts +9 -0
  125. package/lib/components/features/search/TMSignSettingsForm.js +621 -0
  126. package/lib/components/features/search/TMTreeSelector.js +66 -66
  127. package/lib/components/features/tasks/TMTaskForm.js +42 -36
  128. package/lib/components/features/tasks/TMTasksAgenda.js +4 -4
  129. package/lib/components/features/tasks/TMTasksCalendar.js +2 -2
  130. package/lib/components/features/tasks/TMTasksHeader.js +1 -1
  131. package/lib/components/features/tasks/TMTasksUtils.d.ts +2 -1
  132. package/lib/components/features/tasks/TMTasksUtils.js +18 -3
  133. package/lib/components/features/tasks/TMTasksUtilsView.js +26 -4
  134. package/lib/components/features/tasks/TMTasksView.js +12 -6
  135. package/lib/components/features/wg/TMWGsCopyMoveForm.js +9 -9
  136. package/lib/components/features/workflow/TMWorkflowPopup.js +44 -44
  137. package/lib/components/features/workflow/diagram/ConnectionComponent.js +29 -29
  138. package/lib/components/features/workflow/diagram/ConnectionForm.js +10 -10
  139. package/lib/components/features/workflow/diagram/DiagramItemComponent.js +57 -57
  140. package/lib/components/features/workflow/diagram/DiagramItemForm.js +40 -35
  141. package/lib/components/features/workflow/diagram/DiagramItemSvgContent.js +12 -12
  142. package/lib/components/features/workflow/diagram/RecipientList.js +39 -39
  143. package/lib/components/features/workflow/diagram/WFDiagram.js +317 -285
  144. package/lib/components/features/workflow/diagram/WorkitemRecipientsEditor.js +4 -4
  145. package/lib/components/forms/Login/Chooser.js +35 -35
  146. package/lib/components/forms/Login/Menu.js +22 -22
  147. package/lib/components/forms/Login/SelectBox.js +46 -46
  148. package/lib/components/forms/Login/TMLoginForm.js +14 -14
  149. package/lib/components/forms/Login/TextBox.js +57 -57
  150. package/lib/components/forms/TMResultDialog.js +8 -2
  151. package/lib/components/forms/TMSaveForm.js +3 -11
  152. package/lib/components/grids/TMBlogAttachments.d.ts +0 -14
  153. package/lib/components/grids/TMBlogAttachments.js +10 -5
  154. package/lib/components/grids/TMBlogsPost.d.ts +8 -3
  155. package/lib/components/grids/TMBlogsPost.js +100 -39
  156. package/lib/components/grids/TMBlogsPostUtils.d.ts +1 -0
  157. package/lib/components/grids/TMBlogsPostUtils.js +32 -11
  158. package/lib/components/grids/TMRecentsManager.js +51 -51
  159. package/lib/components/grids/TMValidationItemsList.js +48 -48
  160. package/lib/components/index.d.ts +2 -1
  161. package/lib/components/index.js +2 -1
  162. package/lib/components/layout/panelManager/TMPanelManagerContainer.d.ts +1 -0
  163. package/lib/components/layout/panelManager/TMPanelManagerContainer.js +14 -14
  164. package/lib/components/layout/panelManager/TMPanelManagerContext.js +0 -1
  165. package/lib/components/layout/panelManager/TMPanelManagerToolbar.js +36 -35
  166. package/lib/components/layout/panelManager/types.d.ts +1 -0
  167. package/lib/components/pages/TMPage.js +1 -1
  168. package/lib/components/query/TMQueryEditor.js +17 -17
  169. package/lib/components/query/TMQuerySummary.d.ts +1 -0
  170. package/lib/components/query/TMQuerySummary.js +15 -15
  171. package/lib/components/settings/SettingsAppearance.js +9 -1
  172. package/lib/components/sidebar/TMCommandsPanel.js +10 -10
  173. package/lib/components/sidebar/TMHeader.js +307 -307
  174. package/lib/components/sidebar/TMSidebar.js +24 -24
  175. package/lib/components/sidebar/TMSidebarItem.js +21 -21
  176. package/lib/components/viewers/TMDataListItemViewer.d.ts +1 -1
  177. package/lib/components/viewers/TMMidViewer.d.ts +1 -1
  178. package/lib/components/viewers/TMTidViewer.d.ts +1 -1
  179. package/lib/components/wizard/TMStepIndicator.js +102 -102
  180. package/lib/components/wizard/TMWizard.js +29 -29
  181. package/lib/helper/GlobalStyles.d.ts +2 -0
  182. package/lib/helper/GlobalStyles.js +10 -0
  183. package/lib/helper/Globalization.d.ts +1 -0
  184. package/lib/helper/Globalization.js +30 -0
  185. package/lib/helper/SDKUI_Globals.d.ts +2 -0
  186. package/lib/helper/SDKUI_Globals.js +9 -1
  187. package/lib/helper/SDKUI_Localizator.d.ts +50 -2
  188. package/lib/helper/SDKUI_Localizator.js +502 -22
  189. package/lib/helper/TMCustomSearchBar.js +1 -1
  190. package/lib/helper/TMIcons.d.ts +4 -1
  191. package/lib/helper/TMIcons.js +14 -2
  192. package/lib/helper/TMToppyMessage.d.ts +1 -0
  193. package/lib/helper/TMToppyMessage.js +33 -32
  194. package/lib/helper/TMUtils.d.ts +42 -4
  195. package/lib/helper/TMUtils.js +227 -60
  196. package/lib/helper/dcmtsHelper.d.ts +2 -1
  197. package/lib/helper/dcmtsHelper.js +56 -17
  198. package/lib/helper/helpers.d.ts +1 -1
  199. package/lib/helper/helpers.js +12 -17
  200. package/lib/helper/index.d.ts +1 -0
  201. package/lib/helper/index.js +1 -0
  202. package/lib/hooks/useDcmtOperations.d.ts +1 -1
  203. package/lib/hooks/useDcmtOperations.js +10 -6
  204. package/lib/hooks/useRelatedDocuments.js +35 -26
  205. package/lib/ts/types.d.ts +3 -1
  206. package/package.json +54 -54
  207. package/lib/components/features/assistant/ToppyHelpCenter.d.ts +0 -12
  208. package/lib/components/features/assistant/ToppyHelpCenter.js +0 -173
@@ -20,65 +20,69 @@ export var ButtonNames;
20
20
  ButtonNames["OK"] = "OK";
21
21
  ButtonNames["CANCEL"] = "Cancel";
22
22
  })(ButtonNames || (ButtonNames = {}));
23
- const StyledExeptionToolbar = styled.div `
24
- display: flex;
25
- flex-direction: row;
26
- justify-content: center;
27
- align-items: center;
28
- gap: 5px;
29
- padding: 5px;
30
- user-select: none;
31
- border-top: 1px solid #f3f3f3;
32
- /* background-color: ${TMColors.primary_container}; */
33
- background-color: white;
23
+ // Dimensioni minime di default per i popup
24
+ const DEFAULT_MIN_WIDTH = 500;
25
+ const DEFAULT_MIN_HEIGHT = 400;
26
+ const StyledExeptionToolbar = styled.div `
27
+ display: flex;
28
+ flex-direction: row;
29
+ justify-content: center;
30
+ align-items: center;
31
+ gap: 5px;
32
+ padding: 5px;
33
+ user-select: none;
34
+ border-top: 1px solid #f3f3f3;
35
+ /* background-color: ${TMColors.primary_container}; */
36
+ background-color: white;
34
37
  `;
35
- const StyledMessageToolbar = styled.div `
36
- position: relative;
37
- display: flex;
38
- flex-direction: row;
39
- justify-content: flex-end;
40
- align-items: center;
41
- gap: clamp(2px, 1vw, 5px);
42
- padding: clamp(3px, 1vw, 5px);
43
- user-select: none;
44
- border-top: 1px solid #f3f3f3;
45
- background-color: #ffffff;
46
- z-index: 100;
47
- flex-wrap: wrap;
48
-
49
- @media (max-width: 200px) {
50
- flex-direction: column;
51
- gap: 2px;
52
- padding: 3px;
53
- justify-content: center;
54
- }
55
-
56
- @media (max-width: 150px) {
57
- padding: 2px;
58
- gap: 1px;
59
- }
38
+ const StyledMessageToolbar = styled.div `
39
+ position: sticky;
40
+ bottom: 0;
41
+ display: flex;
42
+ flex-direction: row;
43
+ justify-content: flex-end;
44
+ align-items: center;
45
+ gap: clamp(2px, 1vw, 5px);
46
+ padding: clamp(3px, 1vw, 5px);
47
+ user-select: none;
48
+ border-top: 1px solid #f3f3f3;
49
+ background-color: #ffffff;
50
+ z-index: 1;
51
+ flex-wrap: wrap;
52
+
53
+ @media (max-width: 200px) {
54
+ flex-direction: column;
55
+ gap: 2px;
56
+ padding: 3px;
57
+ justify-content: center;
58
+ }
59
+
60
+ @media (max-width: 150px) {
61
+ padding: 2px;
62
+ gap: 1px;
63
+ }
60
64
  `;
61
- const TabContextContainer = styled.div `
62
- padding: 10px;
63
- height: 100%;
64
- width: 100%;
65
- border-radius: 5px;
66
- overflow: auto;
67
- user-select: none;
68
- position: relative;
65
+ const TabContextContainer = styled.div `
66
+ padding: 10px;
67
+ height: 100%;
68
+ width: 100%;
69
+ border-radius: 5px;
70
+ overflow: auto;
71
+ user-select: none;
72
+ position: relative;
69
73
  `;
70
- const StyledAppVersionText = styled.p `
71
- width: '200px';
72
- display: 'flex';
73
- flex-direction: row;
74
- justify-content: space-between;
75
- align-items: center;
76
- color: ${props => props.$color};
74
+ const StyledAppVersionText = styled.p `
75
+ width: '200px';
76
+ display: 'flex';
77
+ flex-direction: row;
78
+ justify-content: space-between;
79
+ align-items: center;
80
+ color: ${props => props.$color};
77
81
  `;
78
- const StyledCopyInclipBoardButtonContainer = styled.div `
79
- position: absolute;
80
- bottom: 10px;
81
- right: 10px;
82
+ const StyledCopyInclipBoardButtonContainer = styled.div `
83
+ position: absolute;
84
+ bottom: 10px;
85
+ right: 10px;
82
86
  `;
83
87
  const Message = ({ msg }) => {
84
88
  let wrapper = document.createElement('div');
@@ -89,68 +93,70 @@ const Message = ({ msg }) => {
89
93
  }, []);
90
94
  return (_jsx("div", { ref: containerRef }));
91
95
  };
92
- const ResponsiveMessageContainer = styled.div `
93
- display: flex;
94
- flex-direction: column;
95
- height: 100%;
96
- width: 100%;
97
- background-color: #ffffff;
96
+ const ResponsiveMessageContainer = styled.div `
97
+ display: flex;
98
+ flex-direction: column;
99
+ height: 100%;
100
+ width: 100%;
101
+ background-color: #ffffff;
102
+ overflow: hidden;
98
103
  `;
99
- const ResponsiveMessageContent = styled.div `
100
- flex: 1;
101
- display: flex;
102
- flex-direction: column;
103
- align-items: center;
104
- justify-content: center;
105
- gap: clamp(8px, 2vw, 20px);
106
- padding: clamp(8px, 3vw, 25px) clamp(5px, 2vw, 30px);
107
- min-height: clamp(80px, 15vh, 120px);
108
-
109
- @media (min-width: 300px) {
110
- flex-direction: ${props => props.$isMobile ? 'column' : 'row'};
111
- }
112
-
113
- @media (max-width: 200px) {
114
- padding: 5px;
115
- gap: 5px;
116
- min-height: 60px;
117
- }
104
+ const ResponsiveMessageContent = styled.div `
105
+ flex: 1;
106
+ display: flex;
107
+ flex-direction: column;
108
+ align-items: center;
109
+ justify-content: center;
110
+ gap: clamp(8px, 2vw, 20px);
111
+ padding: clamp(8px, 3vw, 25px) clamp(5px, 2vw, 30px);
112
+ min-height: clamp(80px, 15vh, 120px);
113
+ overflow: auto;
114
+
115
+ @media (min-width: 300px) {
116
+ flex-direction: ${props => props.$isMobile ? 'column' : 'row'};
117
+ }
118
+
119
+ @media (max-width: 200px) {
120
+ padding: 5px;
121
+ gap: 5px;
122
+ min-height: 60px;
123
+ }
118
124
  `;
119
- const ResponsiveToppyImage = styled.img `
120
- width: clamp(25px, 8vw, 60px);
121
- height: clamp(31px, 10vw, 75px);
122
- flex-shrink: 0;
123
- transform: ${props => props.$isMobile ? 'none' : 'translateY(8px)'};
124
-
125
- @media (max-width: 200px) {
126
- width: 20px;
127
- height: 25px;
128
- transform: none;
129
- }
130
-
131
- @media (min-width: 300px) {
132
- transform: ${props => props.$isMobile ? 'none' : 'translateY(8px)'};
133
- }
125
+ const ResponsiveToppyImage = styled.img `
126
+ width: clamp(25px, 8vw, 60px);
127
+ height: clamp(31px, 10vw, 75px);
128
+ flex-shrink: 0;
129
+ transform: ${props => props.$isMobile ? 'none' : 'translateY(8px)'};
130
+
131
+ @media (max-width: 200px) {
132
+ width: 20px;
133
+ height: 25px;
134
+ transform: none;
135
+ }
136
+
137
+ @media (min-width: 300px) {
138
+ transform: ${props => props.$isMobile ? 'none' : 'translateY(8px)'};
139
+ }
134
140
  `;
135
- const ResponsiveMessageText = styled.div `
136
- flex: 1;
137
- text-align: center;
138
- font-size: clamp(12px, 2.5vw, 14px);
139
- line-height: clamp(1.2, 1.4, 1.4);
140
- color: #333;
141
- word-wrap: break-word;
142
- overflow-wrap: break-word;
143
- hyphens: auto;
144
- min-width: 0;
145
-
146
- @media (min-width: 300px) {
147
- text-align: ${props => props.$isMobile ? 'center' : 'left'};
148
- }
149
-
150
- @media (max-width: 150px) {
151
- font-size: 8px;
152
- line-height: 1.1;
153
- }
141
+ const ResponsiveMessageText = styled.div `
142
+ flex: 1;
143
+ text-align: center;
144
+ font-size: clamp(12px, 2.5vw, 14px);
145
+ line-height: clamp(1.2, 1.4, 1.4);
146
+ color: #333;
147
+ word-wrap: break-word;
148
+ overflow-wrap: break-word;
149
+ hyphens: auto;
150
+ min-width: 0;
151
+
152
+ @media (min-width: 300px) {
153
+ text-align: ${props => props.$isMobile ? 'center' : 'left'};
154
+ }
155
+
156
+ @media (max-width: 150px) {
157
+ font-size: 8px;
158
+ line-height: 1.1;
159
+ }
154
160
  `;
155
161
  // ResponsiveButton wrapper component to avoid circular dependency
156
162
  const ResponsiveButton = (props) => {
@@ -163,8 +169,11 @@ const ResponsiveMessageBody = ({ message, isMobile, MessageToolbar, showToppy })
163
169
  const TMMessageBox = ({ resizable = false, onButtonClick, title = 'TopMedia', message = '', buttons, onClose, confirmOnEnter = false, showToppy = true, initialWidth = 'clamp(100px, 90vw, 400px)', initialHeight = 'auto' }) => {
164
170
  let deviceType = useDeviceType();
165
171
  const isMobile = useMemo(() => { return deviceType === DeviceType.MOBILE; }, [deviceType]);
172
+ const popupRef = useRef(null);
166
173
  const [width, setWidth] = useState(initialWidth);
167
174
  const [height, setHeight] = useState(initialHeight);
175
+ const [minWidth, setMinWidth] = useState(0);
176
+ const [minHeight, setMinHeight] = useState(0);
168
177
  const [isVisible, setIsVisible] = useState(true);
169
178
  const [btns, setBtns] = useState(buttons || []);
170
179
  useEffect(() => {
@@ -176,6 +185,34 @@ const TMMessageBox = ({ resizable = false, onButtonClick, title = 'TopMedia', me
176
185
  setBtns(arr);
177
186
  }
178
187
  }, [buttons]);
188
+ /**
189
+ * Gestore chiamato quando il popup viene mostrato.
190
+ * Calcola e imposta le dimensioni minime del popup in base allo spazio disponibile.
191
+ * Le dimensioni minime sono il valore più piccolo tra le dimensioni effettive del parent e le dimensioni minime di default
192
+ */
193
+ const handleShown = () => {
194
+ // Usa requestAnimationFrame per attendere il completamento del rendering
195
+ requestAnimationFrame(() => {
196
+ if (popupRef.current && popupRef.current.instance) {
197
+ const instance = popupRef.current.instance();
198
+ if (instance) {
199
+ // Ottiene l'elemento content del popup
200
+ const element = instance.content();
201
+ if (element) {
202
+ const parentElement = element.parentElement;
203
+ if (parentElement) {
204
+ // Legge le dimensioni effettive del contenitore parent
205
+ const widthPx = parentElement.offsetWidth;
206
+ const heightPx = parentElement.offsetHeight;
207
+ // Imposta le dimensioni minime usando il valore più piccolo tra le dimensioni disponibili e quelle di default
208
+ setMinWidth(widthPx < DEFAULT_MIN_WIDTH ? widthPx : DEFAULT_MIN_WIDTH);
209
+ setMinHeight(heightPx < DEFAULT_MIN_HEIGHT ? heightPx : DEFAULT_MIN_HEIGHT);
210
+ }
211
+ }
212
+ }
213
+ }
214
+ });
215
+ };
179
216
  const handleKeyDown = useCallback((e) => {
180
217
  if (confirmOnEnter && e.key === 'Enter') {
181
218
  e.preventDefault();
@@ -210,19 +247,51 @@ const TMMessageBox = ({ resizable = false, onButtonClick, title = 'TopMedia', me
210
247
  setWidth(e.width.toString());
211
248
  setHeight(e.height.toString());
212
249
  };
213
- return (_jsx(Popup, { animation: undefined, visible: isVisible, showCloseButton: true, width: width, height: height, minHeight: 'clamp(100px, 20vh, 180px)', title: title, onHidden: () => { onClose?.(); setIsVisible(false); }, resizeEnabled: resizable, onResizeEnd: handleResizeEnd, wrapperAttr: { id: 'tm-messagebox-wrapper' }, onShown: () => {
250
+ return (_jsx(Popup, { ref: popupRef, animation: undefined, visible: isVisible, showCloseButton: true, width: width, height: height, minWidth: minWidth, minHeight: minHeight || 'clamp(100px, 20vh, 180px)', maxHeight: '95%', maxWidth: '95%', title: title, onHidden: () => { onClose?.(); setIsVisible(false); }, resizeEnabled: resizable, onShown: () => {
251
+ handleShown();
214
252
  const el = document.getElementById('tm-messagebox-wrapper');
215
253
  if (el)
216
254
  el.style.zIndex = '20000';
217
- }, children: _jsx(ResponsiveMessageBody, { message: message, isMobile: isMobile, MessageToolbar: MessageToolbar, showToppy: showToppy }) }));
255
+ }, onResizeEnd: handleResizeEnd, wrapperAttr: { id: 'tm-messagebox-wrapper' }, children: _jsx(ResponsiveMessageBody, { message: message, isMobile: isMobile, MessageToolbar: MessageToolbar, showToppy: showToppy }) }));
218
256
  };
219
257
  const TMExceptionBox = ({ resizable = false, exception, title = `${SDK_Globals.appModule} v. ${SDK_Globals.appVersion}`, onClose }) => {
258
+ const popupRef = useRef(null);
220
259
  const [isVisible, setIsVisible] = useState(true);
260
+ const [minWidth, setMinWidth] = useState(0);
261
+ const [minHeight, setMinHeight] = useState(0);
221
262
  let d = new Date();
222
263
  let dateString = d.getDate() + '/' + d.getMonth() + 1 + '/' + d.getFullYear();
223
264
  let timeString = d.getHours() + ':' + d.getMinutes() + ':' + d.getSeconds() + ':' + d.getMilliseconds();
224
265
  let message = getExceptionMessage(exception);
225
266
  let deviceType = useDeviceType();
267
+ /**
268
+ * Gestore chiamato quando il popup viene mostrato.
269
+ * Calcola e imposta le dimensioni minime del popup in base allo spazio disponibile.
270
+ * Le dimensioni minime sono il valore più piccolo tra le dimensioni effettive del parent e le dimensioni minime di default
271
+ */
272
+ const handleShown = () => {
273
+ // Usa requestAnimationFrame per attendere il completamento del rendering
274
+ requestAnimationFrame(() => {
275
+ if (popupRef.current && popupRef.current.instance) {
276
+ const instance = popupRef.current.instance();
277
+ if (instance) {
278
+ // Ottiene l'elemento content del popup
279
+ const element = instance.content();
280
+ if (element) {
281
+ const parentElement = element.parentElement;
282
+ if (parentElement) {
283
+ // Legge le dimensioni effettive del contenitore parent
284
+ const widthPx = parentElement.offsetWidth;
285
+ const heightPx = parentElement.offsetHeight;
286
+ // Imposta le dimensioni minime usando il valore più piccolo tra le dimensioni disponibili e quelle di default
287
+ setMinWidth(widthPx < DEFAULT_MIN_WIDTH ? widthPx : DEFAULT_MIN_WIDTH);
288
+ setMinHeight(heightPx < DEFAULT_MIN_HEIGHT ? heightPx : DEFAULT_MIN_HEIGHT);
289
+ }
290
+ }
291
+ }
292
+ }
293
+ });
294
+ };
226
295
  const getFullMessage = () => {
227
296
  let fullMessage = '';
228
297
  fullMessage += `${d}\n${'-' + JSON.stringify(exception)}\n` + `-${SDK_Globals.appModule}: ${SDK_Globals.appVersion}\n` + `-SDKUI: ${SDK_Globals.sdkuiVersion}\n` + `-SDK: ${SDK_Globals.sdkVersion}\n`;
@@ -235,7 +304,7 @@ const TMExceptionBox = ({ resizable = false, exception, title = `${SDK_Globals.a
235
304
  const ExceptionToolbar = () => {
236
305
  return (_jsxs(StyledExeptionToolbar, { children: [_jsx(TMButton, { color: 'primaryOutline', btnStyle: 'text', onClick: () => copyToClipBoard(getFullMessage()), caption: SDKUI_Localizator.CopyToClipboard, showTooltip: false }), _jsx(TMButton, { btnStyle: 'text', onClick: () => { onClose?.(); setIsVisible(false); }, caption: SDKUI_Localizator.Close, showTooltip: false, color: 'error' })] }));
237
306
  };
238
- return (_jsx(Popup, { resizeEnabled: resizable, visible: isVisible, onHidden: () => { onClose?.(); setIsVisible(false); }, showCloseButton: true, width: calcResponsiveSizes(deviceType, '600px', '400px', '350px'), height: '350px', title: title, children: _jsxs(TMLayoutContainer, { children: [_jsx(TMLayoutItem, { height: 'calc(100% - 50px)', children: _jsxs(TMTabGroup, { validationItems: [], children: [_jsxs(TMTab, { label: SDKUI_Localizator.Error, children: [_jsxs(TabContextContainer, { style: { height: 'calc(100% - 68px )', paddingRight: '40px' }, children: [_jsxs("p", { children: [" ", _jsx("span", { style: { color: TMColors.primary }, children: "Messaggio: " }), " ", message] }), _jsx("div", { style: { display: 'flex', flexDirection: 'column', justifyContent: 'flex-start', alignItems: 'flex-start', gap: '5px', marginTop: '5px' }, children: _jsxs("div", { children: [_jsxs("span", { style: { color: TMColors.primary }, children: [SDKUI_Localizator.Date, " ", SDKUI_Localizator.Time.toLowerCase(), ": "] }), d.toString()] }) })] }), _jsxs(StyledCopyInclipBoardButtonContainer, { children: [" ", _jsx(TMButton, { color: 'primaryOutline', onClick: () => copyToClipBoard(`Date: ${dateString}\nTime: ${timeString}\nMessage: ${message}`), btnStyle: 'toolbar', icon: _jsx(IconCopy, { fontSize: 18 }), caption: SDKUI_Localizator.CopyToClipboard }), " "] })] }), _jsxs(TMTab, { label: SDKUI_Localizator.CompleteError, children: [_jsx(TabContextContainer, { style: { paddingRight: '40px' }, children: JSON.stringify(exception).replaceAll('{', '').replaceAll('}', '').split(`,"`).map((t, index) => (_jsxs("div", { style: { padding: '5px', borderBottom: '1px solid rgb(180,180,180)' }, children: ["\u261B", ' ' + (t.toLowerCase().includes('detail') ? (t.replaceAll(`"`, '').replaceAll(`:`, ': ').replaceAll(String.fromCharCode(92), '')) : (t.replaceAll(`"`, '').replaceAll(`:`, ': ')))] }, index))) }), _jsxs(StyledCopyInclipBoardButtonContainer, { children: [" ", _jsx(TMButton, { color: 'primaryOutline', onClick: () => copyToClipBoard(JSON.stringify(exception).replaceAll('{', '').replaceAll('}', '').replaceAll(',', '\n')), btnStyle: 'toolbar', icon: _jsx(IconCopy, { fontSize: 18 }), caption: SDKUI_Localizator.CopyToClipboard }), " "] })] }), _jsxs(TMTab, { label: SDKUI_Localizator.Details, children: [_jsxs(TabContextContainer, { children: [_jsxs(StyledAppVersionText, { "$color": TMColors.primary, children: [SDK_Globals.appModule, " ", _jsx("span", { style: { fontWeight: 'bold' }, children: SDK_Globals.appVersion })] }), _jsxs(StyledAppVersionText, { "$color": TMColors.tertiary, children: ["SDKUI: ", _jsx("span", { style: { fontWeight: 'bold' }, children: SDK_Globals.sdkuiVersion })] }), _jsxs(StyledAppVersionText, { "$color": TMColors.success, children: ["SDK : ", _jsx("span", { style: { fontWeight: 'bold' }, children: SDK_Globals.sdkVersion })] })] }), _jsxs(StyledCopyInclipBoardButtonContainer, { children: [" ", _jsx(TMButton, { color: 'primaryOutline', onClick: () => copyToClipBoard(`-${SDK_Globals.appModule}: ${SDK_Globals.appVersion}\n` + `-SDKUI: ${SDK_Globals.sdkuiVersion}\n` + `-SDK: ${SDK_Globals.sdkVersion}\n`), btnStyle: 'toolbar', icon: _jsx(IconCopy, { fontSize: 18 }), caption: SDKUI_Localizator.CopyToClipboard }), " "] })] })] }) }), _jsx(TMLayoutItem, { height: '40px', children: _jsx(ExceptionToolbar, {}) })] }) }));
307
+ return (_jsx(Popup, { ref: popupRef, resizeEnabled: resizable, visible: isVisible, onHidden: () => { onClose?.(); setIsVisible(false); }, onShown: handleShown, showCloseButton: true, width: calcResponsiveSizes(deviceType, '600px', '400px', '350px'), height: '350px', minWidth: minWidth, minHeight: minHeight, maxHeight: '95%', maxWidth: '95%', title: title, children: _jsxs(TMLayoutContainer, { children: [_jsx(TMLayoutItem, { height: 'calc(100% - 50px)', children: _jsxs(TMTabGroup, { validationItems: [], children: [_jsxs(TMTab, { label: SDKUI_Localizator.Error, children: [_jsxs(TabContextContainer, { style: { height: 'calc(100% - 68px )', paddingRight: '40px' }, children: [_jsxs("p", { children: [" ", _jsx("span", { style: { color: TMColors.primary }, children: "Messaggio: " }), " ", message] }), _jsx("div", { style: { display: 'flex', flexDirection: 'column', justifyContent: 'flex-start', alignItems: 'flex-start', gap: '5px', marginTop: '5px' }, children: _jsxs("div", { children: [_jsxs("span", { style: { color: TMColors.primary }, children: [SDKUI_Localizator.Date, " ", SDKUI_Localizator.Time.toLowerCase(), ": "] }), d.toString()] }) })] }), _jsxs(StyledCopyInclipBoardButtonContainer, { children: [" ", _jsx(TMButton, { color: 'primaryOutline', onClick: () => copyToClipBoard(`Date: ${dateString}\nTime: ${timeString}\nMessage: ${message}`), btnStyle: 'toolbar', icon: _jsx(IconCopy, { fontSize: 18 }), caption: SDKUI_Localizator.CopyToClipboard }), " "] })] }), _jsxs(TMTab, { label: SDKUI_Localizator.CompleteError, children: [_jsx(TabContextContainer, { style: { paddingRight: '40px' }, children: JSON.stringify(exception).replaceAll('{', '').replaceAll('}', '').split(`,"`).map((t, index) => (_jsxs("div", { style: { padding: '5px', borderBottom: '1px solid rgb(180,180,180)' }, children: ["\u261B", ' ' + (t.toLowerCase().includes('detail') ? (t.replaceAll(`"`, '').replaceAll(`:`, ': ').replaceAll(String.fromCharCode(92), '')) : (t.replaceAll(`"`, '').replaceAll(`:`, ': ')))] }, index))) }), _jsxs(StyledCopyInclipBoardButtonContainer, { children: [" ", _jsx(TMButton, { color: 'primaryOutline', onClick: () => copyToClipBoard(JSON.stringify(exception).replaceAll('{', '').replaceAll('}', '').replaceAll(',', '\n')), btnStyle: 'toolbar', icon: _jsx(IconCopy, { fontSize: 18 }), caption: SDKUI_Localizator.CopyToClipboard }), " "] })] }), _jsxs(TMTab, { label: SDKUI_Localizator.Details, children: [_jsxs(TabContextContainer, { children: [_jsxs(StyledAppVersionText, { "$color": TMColors.primary, children: [SDK_Globals.appModule, " ", _jsx("span", { style: { fontWeight: 'bold' }, children: SDK_Globals.appVersion })] }), _jsxs(StyledAppVersionText, { "$color": TMColors.tertiary, children: ["SDKUI: ", _jsx("span", { style: { fontWeight: 'bold' }, children: SDK_Globals.sdkuiVersion })] }), _jsxs(StyledAppVersionText, { "$color": TMColors.success, children: ["SDK : ", _jsx("span", { style: { fontWeight: 'bold' }, children: SDK_Globals.sdkVersion })] })] }), _jsxs(StyledCopyInclipBoardButtonContainer, { children: [" ", _jsx(TMButton, { color: 'primaryOutline', onClick: () => copyToClipBoard(`-${SDK_Globals.appModule}: ${SDK_Globals.appVersion}\n` + `-SDKUI: ${SDK_Globals.sdkuiVersion}\n` + `-SDK: ${SDK_Globals.sdkVersion}\n`), btnStyle: 'toolbar', icon: _jsx(IconCopy, { fontSize: 18 }), caption: SDKUI_Localizator.CopyToClipboard }), " "] })] })] }) }), _jsx(TMLayoutItem, { height: '40px', children: _jsx(ExceptionToolbar, {}) })] }) }));
239
308
  };
240
309
  class TMExceptionBoxManager {
241
310
  static show({ title, exception, onClose }) {
@@ -2,28 +2,28 @@ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import styled from 'styled-components';
3
3
  import { getColor } from '../../helper';
4
4
  import { Colors } from '../../utils/theme';
5
- const StyledWrapper = styled.div `
6
- display: flex;
7
- flex-direction: row;
8
- justify-content: flex-end;
9
- align-items: center;
10
- width: fit-content;
5
+ const StyledWrapper = styled.div `
6
+ display: flex;
7
+ flex-direction: row;
8
+ justify-content: flex-end;
9
+ align-items: center;
10
+ width: fit-content;
11
11
  `;
12
- const StyledProgressBarContainer = styled.div `
13
- width: 200px;
14
- background-color: white;
15
- height: 12px;
16
- border-radius: 5px;
17
- border: 1px solid ${props => getColor(props.color)};
18
- overflow: hidden;
12
+ const StyledProgressBarContainer = styled.div `
13
+ width: 200px;
14
+ background-color: white;
15
+ height: 12px;
16
+ border-radius: 5px;
17
+ border: 1px solid ${props => getColor(props.color)};
18
+ overflow: hidden;
19
19
  `;
20
- const StyledProgressBar = styled.div.withConfig({ shouldForwardProp: prop => !['currentValue'].includes(prop) }) `
21
- width: ${props => `${200 * props.currentValue}px`};
22
- background: rgb(2,0,36);
23
- background: linear-gradient(270deg, ${Colors.primary} 0%, ${Colors.primary} 35%, ${Colors.secondary});
24
- height: 12px;
25
- border-radius: 5px;
26
- /* border: 1px solid ${props => getColor(props.color)}; */
20
+ const StyledProgressBar = styled.div.withConfig({ shouldForwardProp: prop => !['currentValue'].includes(prop) }) `
21
+ width: ${props => `${200 * props.currentValue}px`};
22
+ background: rgb(2,0,36);
23
+ background: linear-gradient(270deg, ${Colors.primary} 0%, ${Colors.primary} 35%, ${Colors.secondary});
24
+ height: 12px;
25
+ border-radius: 5px;
26
+ /* border: 1px solid ${props => getColor(props.color)}; */
27
27
  `;
28
28
  const TMProgressBar = ({ currentValue = 0, color = 'primary', elementStyle, onAbort }) => {
29
29
  // console.log(currentValue)
@@ -65,34 +65,34 @@ export const TMResizableMenu = forwardRef(({ isVisible, onClose, top, left, bott
65
65
  return createPortal(menuContent, portalRoot);
66
66
  });
67
67
  export default TMResizableMenu;
68
- const MenuContainer = styled.div `
69
- position: absolute;
70
- display: ${({ $display }) => $display};
71
- background-color: white;
72
- border: 1px solid #ccc;
73
- box-shadow: 0 2px 12px rgba(0, 0, 0, 0.1);
74
- overflow: auto;
75
- max-width: ${({ $maxWidth }) => ($maxWidth ? `${$maxWidth}px` : 'none')};
76
- max-height: ${({ $maxHeight }) => ($maxHeight ? `${$maxHeight}px` : 'none')};
77
- border-radius: 6px;
78
- padding: ${({ $padding }) => ($padding !== undefined ? `${$padding}px` : '16px')};
79
- z-index: 1532;
80
- min-width: ${({ $minWidth }) => `${$minWidth ?? 350}px`};
81
- min-height: ${({ $minHeight }) => `${$minHeight ?? 500}px`};
68
+ const MenuContainer = styled.div `
69
+ position: absolute;
70
+ display: ${({ $display }) => $display};
71
+ background-color: white;
72
+ border: 1px solid #ccc;
73
+ box-shadow: 0 2px 12px rgba(0, 0, 0, 0.1);
74
+ overflow: auto;
75
+ max-width: ${({ $maxWidth }) => ($maxWidth ? `${$maxWidth}px` : 'none')};
76
+ max-height: ${({ $maxHeight }) => ($maxHeight ? `${$maxHeight}px` : 'none')};
77
+ border-radius: 6px;
78
+ padding: ${({ $padding }) => ($padding !== undefined ? `${$padding}px` : '16px')};
79
+ z-index: 1532;
80
+ min-width: ${({ $minWidth }) => `${$minWidth ?? 350}px`};
81
+ min-height: ${({ $minHeight }) => `${$minHeight ?? 500}px`};
82
82
  `;
83
- const ResizeHandle = styled.div `
84
- position: absolute;
85
- width: 16px;
86
- height: 16px;
87
- right: 0;
88
- bottom: 0;
89
- cursor: se-resize;
90
- background: linear-gradient(135deg, transparent 40%, #ccc 40%, #ccc 60%, transparent 60%);
83
+ const ResizeHandle = styled.div `
84
+ position: absolute;
85
+ width: 16px;
86
+ height: 16px;
87
+ right: 0;
88
+ bottom: 0;
89
+ cursor: se-resize;
90
+ background: linear-gradient(135deg, transparent 40%, #ccc 40%, #ccc 60%, transparent 60%);
91
91
  `;
92
- const ResizeOverlay = styled.div `
93
- position: fixed;
94
- inset: 0;
95
- z-index: 1531;
96
- pointer-events: all;
97
- cursor: se-resize;
92
+ const ResizeOverlay = styled.div `
93
+ position: fixed;
94
+ inset: 0;
95
+ z-index: 1531;
96
+ pointer-events: all;
97
+ cursor: se-resize;
98
98
  `;
@@ -36,45 +36,45 @@ const TMRightSidebar = ({ items = [], onItemClick, selectedItem, showPanel = fal
36
36
  };
37
37
  export default TMRightSidebar;
38
38
  // Styled Components
39
- const SidebarContainer = styled.div `
40
- width: 30px;
41
- height: 100%;
42
- display: flex;
43
- flex-direction: column;
44
- align-items: center;
45
- background-color: #203e5a;
46
- transition: width 0.3s ease;
47
- border-bottom-right-radius: 10px;
39
+ const SidebarContainer = styled.div `
40
+ width: 30px;
41
+ height: 100%;
42
+ display: flex;
43
+ flex-direction: column;
44
+ align-items: center;
45
+ background-color: #203e5a;
46
+ transition: width 0.3s ease;
47
+ border-bottom-right-radius: 10px;
48
48
  `;
49
- const StyledMenuItem = styled.div `
50
- width: 100%;
51
- display: flex;
52
- align-items: center;
53
- padding: 8px 0;
54
- color: ${props => !props.$disabled ? (props.$isSelected ? props.$selectedColor ?? (TMColors.tertiary) : '#fff') : '#929292'};
55
- cursor: ${props => props.$disabled ? 'default' : 'pointer'};
56
- position: relative;
57
- justify-content: center;
58
- background-color: ${props => !props.$disabled ? (props.$isSelected ? '#2e2e2e' : 'transparent') : 'transparent'};
59
- transition: background-color 0.3s ease, color 0.3s ease;
60
-
61
- &:hover {
62
- background-color: ${props => !props.$disabled && (TMColors.primaryColor)};
63
- }
64
-
65
- span {
66
- position: absolute;
67
- right: 40px;
68
- white-space: nowrap;
69
- overflow: hidden;
70
- font-size: 14px;
71
- opacity: ${({ $isHovered }) => ($isHovered ? 1 : 0)};
72
- padding: 4px 8px;
73
- background-color: #222;
74
- border-radius: 4px;
75
- color: #fff;
76
- pointer-events: none;
77
- transition: opacity 0.1s ease, transform 0.1s ease;
78
- transform: ${({ $isHovered }) => ($isHovered ? 'translateX(0)' : 'translateX(20px)')};
79
- }
49
+ const StyledMenuItem = styled.div `
50
+ width: 100%;
51
+ display: flex;
52
+ align-items: center;
53
+ padding: 8px 0;
54
+ color: ${props => !props.$disabled ? (props.$isSelected ? props.$selectedColor ?? (TMColors.tertiary) : '#fff') : '#929292'};
55
+ cursor: ${props => props.$disabled ? 'default' : 'pointer'};
56
+ position: relative;
57
+ justify-content: center;
58
+ background-color: ${props => !props.$disabled ? (props.$isSelected ? '#2e2e2e' : 'transparent') : 'transparent'};
59
+ transition: background-color 0.3s ease, color 0.3s ease;
60
+
61
+ &:hover {
62
+ background-color: ${props => !props.$disabled && (TMColors.primaryColor)};
63
+ }
64
+
65
+ span {
66
+ position: absolute;
67
+ right: 40px;
68
+ white-space: nowrap;
69
+ overflow: hidden;
70
+ font-size: 14px;
71
+ opacity: ${({ $isHovered }) => ($isHovered ? 1 : 0)};
72
+ padding: 4px 8px;
73
+ background-color: #222;
74
+ border-radius: 4px;
75
+ color: #fff;
76
+ pointer-events: none;
77
+ transition: opacity 0.1s ease, transform 0.1s ease;
78
+ transform: ${({ $isHovered }) => ($isHovered ? 'translateX(0)' : 'translateX(20px)')};
79
+ }
80
80
  `;