@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
@@ -3,7 +3,6 @@ import { useCallback, useEffect, useRef, useState } from 'react';
3
3
  import { PlatformObjectValidator, WhereItem, SDK_Localizator, OrderByItem, SelectItem, SelectItemVisibilities, SDK_Globals, SavedQueryCacheService, SearchEngine, QueryOperators } from '@topconsultnpm/sdk-ts';
4
4
  import styled from 'styled-components';
5
5
  import TMSearchQueryEditor from './TMSearchQueryEditor';
6
- import Toppy from '../../../assets/Toppy-generico.png';
7
6
  import { getDcmtTypesByQdAsync, SDKUI_Localizator, getQD, IconMenuVertical, IconAddCircleOutline, IconEdit, IconEasy, IconAdvanced, deepCompare, IconSearch, IconClear, getDefaultOperator, prepareQdForSearchAsync, IsParametricQuery, SDKUI_Globals, IconArrowRight, IconMenuCAArchive, getListMaxItems } from '../../../helper';
8
7
  import { useQueryParametersDialog } from '../../../hooks/useQueryParametersDialog';
9
8
  import { FormModes } from '../../../ts';
@@ -13,7 +12,6 @@ import ShowAlert from '../../base/TMAlert';
13
12
  import TMButton from '../../base/TMButton';
14
13
  import { useDeviceType, DeviceType } from '../../base/TMDeviceProvider';
15
14
  import TMDropDownMenu from '../../base/TMDropDownMenu';
16
- import TMLayoutContainer from '../../base/TMLayout';
17
15
  import { TMExceptionBoxManager } from '../../base/TMPopUp';
18
16
  import TMSpinner from '../../base/TMSpinner';
19
17
  import TMPanel from '../../base/TMPanel';
@@ -22,6 +20,7 @@ import { TMMetadataChooserForm } from '../../choosers/TMMetadataChooser';
22
20
  import TMQueryEditor from '../../query/TMQueryEditor';
23
21
  import TMSavedQueryForm from './TMSavedQueryForm';
24
22
  import { AdvancedMenuButtons } from '../../editors/TMMetadataValues';
23
+ import TMToppyMessage from '../../../helper/TMToppyMessage';
25
24
  const TMSearchQueryPanel = ({ fromDTD, showBackToResultButton, isExpertMode = SDKUI_Globals.userSettings.advancedSettings.expertMode === 1, SQD, inputMids, onSearchCompleted, onSqdSaved, onBack, onClosePanel, allowMaximize = true, onMaximizePanel, onBackToResult, passToArchiveCallback }) => {
26
25
  const [confirmQueryParams, ConfirmQueryParamsDialog] = useQueryParametersDialog();
27
26
  const [qd, setQd] = useState();
@@ -317,36 +316,19 @@ const TMSearchQueryPanel = ({ fromDTD, showBackToResultButton, isExpertMode = SD
317
316
  : _jsx(_Fragment, {}) }), children: [_jsx(ConfirmQueryParamsDialog, {}), SQD
318
317
  ? _jsxs("div", { style: { height: '100%', width: '100%', position: 'relative', display: 'flex', flexDirection: 'column', gap: 5 }, children: [showAdvancedSearch
319
318
  ? _jsx(TMQueryEditor, { formMode: FormModes.Update, showToolbar: false, inputData: qd, validateSelect: true, showApply: false, onQDChanged: handleQdChanged })
320
- : _jsx(TMSearchQueryEditor, { qd: qd, dcmtTypesList: dcmtTypesList, isExpertMode: isExpertMode, showAllMdWhere: showAllMdWhere, onQdChanged: handleQdChanged, onFocusedMetadataChanged: setFocusedTidMid, onAdvancedMenuClick: handleAdvancedMenuClick }), _jsx("div", { style: { display: 'flex', justifyContent: 'center', alignItems: 'center', gap: '80px', padding: '15px', position: 'relative' }, children: _jsxs("div", { style: {
321
- display: 'flex',
322
- justifyContent: 'space-between',
323
- alignItems: 'center',
324
- flexWrap: 'wrap',
325
- gap: '10px',
326
- padding: '15px',
327
- width: '100%',
328
- boxSizing: 'border-box'
329
- }, children: [_jsxs("div", { style: {
330
- display: 'flex',
331
- justifyContent: 'center',
332
- alignItems: 'center',
333
- gap: '10px',
334
- flex: '1 1 auto',
335
- minWidth: 0,
336
- }, children: [_jsx(TMButton, { btnStyle: 'advanced', icon: _jsx(IconSearch, {}), showTooltip: false, width: '90px', caption: SDKUI_Localizator.Search, advancedColor: '#4A96D2', onClick: handleSearchButtonClick }), _jsx(TMButton, { width: '90px', btnStyle: 'advanced', advancedType: 'primary', showTooltip: false, caption: SDKUI_Localizator.Clear, icon: _jsx(IconClear, {}), advancedColor: 'white', color: 'primaryOutline', onClick: clearFilters })] }), (!showAdvancedSearch && qd?.where && qd.where.length > initialMaxItems) && (_jsx("div", { style: { flex: '0 0 auto' }, children: _jsx(TMButton, { width: '120px', btnStyle: isMobile ? 'icon' : 'advanced', advancedColor: TMColors.button_primary, caption: captionText, showTooltip: false, icon: isMobile ? (_jsx("div", { style: {
337
- backgroundColor: TMColors.button_primary,
338
- minWidth: '30px',
339
- minHeight: '30px',
340
- borderRadius: '10px',
341
- display: 'flex',
342
- alignItems: 'center',
343
- justifyContent: 'center',
344
- }, children: _jsx("p", { style: { color: 'white', margin: 0 }, children: showAllMdWhere ? `-${diff}` : `+${diff}` }) })) : (_jsx("p", { style: { color: 'white', margin: 0 }, children: showAllMdWhere ? `-${diff}` : `+${diff}` })), onClick: () => setShowAllMdWhere(!showAllMdWhere) }) }))] }) }), showFiltersConfig &&
319
+ : _jsx(TMSearchQueryEditor, { qd: qd, dcmtTypesList: dcmtTypesList, isExpertMode: isExpertMode, showAllMdWhere: showAllMdWhere, onQdChanged: handleQdChanged, onFocusedMetadataChanged: setFocusedTidMid, onAdvancedMenuClick: handleAdvancedMenuClick }), _jsxs("div", { style: {
320
+ display: 'flex',
321
+ flexWrap: 'wrap',
322
+ justifyContent: 'center',
323
+ alignItems: 'center',
324
+ gap: '10px',
325
+ width: '100%'
326
+ }, children: [_jsx(TMButton, { btnStyle: 'advanced', icon: _jsx(IconSearch, {}), showTooltip: false, width: '90px', caption: SDKUI_Localizator.Search, advancedColor: '#4A96D2', onClick: handleSearchButtonClick }), _jsx(TMButton, { width: '90px', btnStyle: 'advanced', advancedType: 'primary', showTooltip: false, caption: SDKUI_Localizator.Clear, icon: _jsx(IconClear, {}), advancedColor: 'white', color: 'primaryOutline', onClick: clearFilters }), (!showAdvancedSearch && qd?.where && qd.where.length > initialMaxItems) && (_jsx(TMButton, { width: '120px', btnStyle: isMobile ? 'icon' : 'advanced', advancedColor: TMColors.button_primary, caption: captionText, showTooltip: false, icon: isMobile ? (_jsx("div", { children: _jsx("p", { children: showAllMdWhere ? `-${diff}` : `+${diff}` }) })) : (_jsx("p", { children: showAllMdWhere ? `-${diff}` : `+${diff}` })), onClick: () => setShowAllMdWhere(!showAllMdWhere) }))] }), showFiltersConfig &&
345
327
  _jsx(TMMetadataChooserForm, { allowMultipleSelection: true, height: '500px', width: '600px', allowSysMetadata: true, qd: qd, selectedIDs: qd?.where?.map((w) => ({ tid: w.tid, mid: w.mid })), onClose: handleCloseFiltersConfig, onChoose: handleChooseFilters }), showOutputConfig &&
346
328
  _jsx(TMMetadataChooserForm, { allowMultipleSelection: true, height: '500px', width: '600px', allowSysMetadata: true, qd: qd, selectedIDs: qd?.select?.map((item) => ({ tid: item.tid, mid: item.mid })), onClose: handleCloseOutputConfig, onChoose: handleChooseOutput }), showOrderByConfig &&
347
329
  _jsx(TMMetadataChooserForm, { allowMultipleSelection: true, height: '500px', width: '600px', allowSysMetadata: true, qd: qd, selectedIDs: qd?.orderBy?.map((item) => ({ tid: item.tid, mid: item.mid })), onClose: handleCloseOrderByConfig, onChoose: handleChooseOrderBy })] })
348
330
  :
349
- _jsxs(TMLayoutContainer, { gap: 30, alignItems: 'center', justifyContent: 'center', children: [_jsx(StyledToppyTextContainer, { children: _jsx(StyledToppyText, { title: SDKUI_Localizator.DcmtTypeSelectOrQuickSearch, children: SDKUI_Localizator.DcmtTypeSelectOrQuickSearch }) }), _jsx(StyledToppyImage, { src: Toppy, alt: 'Toppy' })] }), showSqdForm &&
331
+ _jsx(TMToppyMessage, { message: SDKUI_Localizator.DcmtTypeSelectOrQuickSearch, titleTooltip: SDKUI_Localizator.DcmtTypeSelectOrQuickSearch }), showSqdForm &&
350
332
  _jsx(StyledModalContainer, { style: { backgroundColor: `${TMColors.backgroundColorHeader}12` }, children: _jsx(TMSavedQueryForm, { height: '50%', width: '50%', id: formModeSqdForm === FormModes.Create ? -1 : SQD?.id, title: 'Ricerca rapida', formMode: formModeSqdForm, showBackButton: true, qd: qd, isAdvancedSearch: showAdvancedSearch, isModal: false, onClose: () => { setShowSqdForm(false); }, onSaved: onSqdSaved }) })] }), showDistinctValuesPanel &&
351
333
  _jsx(TMDistinctValues, { isModal: true, tid: focusedTidMid?.tid, mid: focusedTidMid?.mid, separator: ',', onClosePanelCallback: () => setShowDistinctValuesPanel(false), onSelectionChanged: (e) => {
352
334
  if (!e)
@@ -420,36 +402,36 @@ export const refreshLastSearch = async (qd) => {
420
402
  }
421
403
  return searchResults;
422
404
  };
423
- export const StyledToppyTextContainer = styled.div `
424
- padding: 22px 8px;
425
- width: 100%;
426
- max-width: 300px;
427
- border: 1px solid #2559A5;
428
- border-radius: 30px;
429
- display: flex;
430
- align-items: center;
431
- justify-content: center;
432
- box-sizing: border-box;
433
- min-height: 100px;
405
+ export const StyledToppyTextContainer = styled.div `
406
+ padding: 22px 8px;
407
+ width: 100%;
408
+ max-width: 300px;
409
+ border: 1px solid #2559A5;
410
+ border-radius: 30px;
411
+ display: flex;
412
+ align-items: center;
413
+ justify-content: center;
414
+ box-sizing: border-box;
415
+ min-height: 100px;
434
416
  `;
435
- export const StyledToppyText = styled.p `
436
- text-align: center;
437
- color: #2559A5;
438
- font-size: 1rem;
439
- user-select: none;
440
- margin: 0;
441
- display: -webkit-box;
442
- -webkit-box-orient: vertical;
443
- -webkit-line-clamp: 3; /* non è una proprietà standard ma è così diffusa e ben supportata che è considerata una "best practice pragmatica" */
444
- overflow: hidden;
445
- text-overflow: ellipsis;
446
- white-space: normal;
447
- word-break: break-word;
448
- line-height: 1.2;
417
+ export const StyledToppyText = styled.p `
418
+ text-align: center;
419
+ color: #2559A5;
420
+ font-size: 1rem;
421
+ user-select: none;
422
+ margin: 0;
423
+ display: -webkit-box;
424
+ -webkit-box-orient: vertical;
425
+ -webkit-line-clamp: 3; /* non è una proprietà standard ma è così diffusa e ben supportata che è considerata una "best practice pragmatica" */
426
+ overflow: hidden;
427
+ text-overflow: ellipsis;
428
+ white-space: normal;
429
+ word-break: break-word;
430
+ line-height: 1.2;
449
431
  `;
450
- export const StyledToppyImage = styled.img `
451
- width: 100%;
452
- max-width: 120px;
453
- height: auto;
454
- display: block;
432
+ export const StyledToppyImage = styled.img `
433
+ width: 100%;
434
+ max-width: 120px;
435
+ height: auto;
436
+ display: block;
455
437
  `;
@@ -1,25 +1,23 @@
1
1
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import React, { useCallback, useEffect, useMemo, useState } from 'react';
3
- import { SDK_Globals, DataColumnTypes, MetadataDataDomains, DataListViewModes, MetadataFormats, LayoutModes, TemplateTIDs, DcmtTypeListCacheService, AccessLevels, SystemMIDsAsNumber, RetrieveFileOptions, DcmtOpers, GeneralRetrieveFormats, AccessLevelsEx } from '@topconsultnpm/sdk-ts';
3
+ import { SDK_Globals, DataColumnTypes, MetadataDataDomains, DataListViewModes, MetadataFormats, LayoutModes, TemplateTIDs, DcmtTypeListCacheService, AccessLevels, SystemMIDsAsNumber, RetrieveFileOptions, DcmtOpers, GeneralRetrieveFormats, AccessLevelsEx, ResultTypes, LayoutCacheService } from '@topconsultnpm/sdk-ts';
4
4
  import styled from 'styled-components';
5
- import { getCommandsMenuItems, getSelectedDcmtsOrFocused } from './TMSearchResultsMenuItems';
6
- import { genUniqueId, IconShow, IconBoard, IconDcmtTypeSys, IconDetailDcmts, SDKUI_Localizator, IconDelete, IconRefresh, IconMenuVertical, IconDownload, deepCompare, getDataColumnName, searchResultDescriptorToSimpleArray, searchResultToMetadataValues, IconSearchCheck, TMCommandsContextMenu } from '../../../helper';
5
+ import { getAllFieldSelectedDcmtsOrFocused, getCommandsMenuItems, getSelectedDcmtsOrFocused } from './TMSearchResultsMenuItems';
6
+ import { genUniqueId, IconShow, IconBoard, IconDcmtTypeSys, IconDetailDcmts, SDKUI_Localizator, IconDelete, IconRefresh, IconMenuVertical, IconDownload, deepCompare, getDataColumnName, searchResultDescriptorToSimpleArray, searchResultToMetadataValues, IconSearchCheck, TMCommandsContextMenu, getExceptionMessage, IconCheck, svgToString, TMImageLibrary } from '../../../helper';
7
7
  import { useDcmtOperations } from '../../../hooks/useDcmtOperations';
8
8
  import { useInputAttachmentsDialog, useInputCvtFormatDialog } from '../../../hooks/useInputDialog';
9
9
  import { useRelatedDocuments } from '../../../hooks/useRelatedDocuments';
10
- import { DcmtOperationTypes, FormModes, SearchResultContext, DownloadTypes } from '../../../ts';
10
+ import { DcmtOperationTypes, SearchResultContext, DownloadTypes } from '../../../ts';
11
11
  import { Gutters, TMColors } from '../../../utils/theme';
12
- import { StyledModalContainer, StyledBadge, StyledMultiViewPanel } from '../../base/Styled';
12
+ import { StyledModalContainer, StyledMultiViewPanel } from '../../base/Styled';
13
13
  import TMButton from '../../base/TMButton';
14
14
  import TMDataGrid, { TMDataGridPageSize } from '../../base/TMDataGrid';
15
15
  import { useDeviceType, DeviceType } from '../../base/TMDeviceProvider';
16
16
  import { TMSplitterLayout, TMLayoutItem } from '../../base/TMLayout';
17
17
  import { TMMessageBoxManager, ButtonNames, TMExceptionBoxManager } from '../../base/TMPopUp';
18
- import TMTooltip from '../../base/TMTooltip';
19
18
  import { TMLayoutWaitingContainer } from '../../base/TMWaitPanel';
20
19
  import { TMUserIdViewer } from '../../choosers/TMUserChooser';
21
20
  import TMMetadataValues from '../../editors/TMMetadataValues';
22
- import { TMSaveFormButtonPrevious, TMSaveFormButtonNext } from '../../forms/TMSaveForm';
23
21
  import TMDataListItemViewer from '../../viewers/TMDataListItemViewer';
24
22
  import TMTidViewer from '../../viewers/TMTidViewer';
25
23
  import TMDcmtPreview from '../documents/TMDcmtPreview';
@@ -32,8 +30,7 @@ import TMDcmtBlog from '../documents/TMDcmtBlog';
32
30
  import TMDcmtIcon from '../documents/TMDcmtIcon';
33
31
  import { TMPanelManagerProvider, useTMPanelManagerContext } from '../../layout/panelManager/TMPanelManagerContext';
34
32
  import TMPanelManagerContainer from '../../layout/panelManager/TMPanelManagerContainer';
35
- import ToppyHelpCenter from '../assistant/ToppyHelpCenter';
36
- import TMAccordion from '../../base/TMAccordion';
33
+ import TMAccordionNew from '../../base/TMAccordionNew';
37
34
  import TMDataGridExportForm from '../../base/TMDataGridExportForm';
38
35
  import TMSearchResultFloatingActionButton from './TMSearchResultFloatingActionButton';
39
36
  import ShowAlert from '../../base/TMAlert';
@@ -42,6 +39,10 @@ import TMChooserForm from '../../forms/TMChooserForm';
42
39
  import TMModal from '../../base/TMModal';
43
40
  import TMSearch from './TMSearch';
44
41
  import TMArchive from '../archive/TMArchive';
42
+ import { TMResultManager } from '../../forms/TMResultDialog';
43
+ import TMCustomButton from '../../base/TMCustomButton';
44
+ import ToppyDraggableHelpCenter from '../assistant/ToppyDraggableHelpCenter';
45
+ import TMSignSettingsForm from './TMSignSettingsForm';
45
46
  //#region Helper Methods
46
47
  export const getSearchResultCountersSingleCategory = (searchResults) => {
47
48
  // let totDcmtTypes = searchResults.length;
@@ -87,14 +88,18 @@ const TMSearchResult = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, a
87
88
  const [sharedDcmtFile, setSharedDcmtFile] = useState(undefined);
88
89
  // State to control whether the export form (for exporting to Excel/CSV/txt and others) should be shown
89
90
  const [showExportForm, setShowExportForm] = useState(false);
91
+ const [showSignSettingsForm, setShowSignSettingsForm] = useState(false);
90
92
  const [confirmFormat, ConfirmFormatDialog] = useInputCvtFormatDialog();
91
93
  const { openConfirmAttachmentsDialog, ConfirmAttachmentsDialog } = useInputAttachmentsDialog();
92
94
  const { abortController, showWaitPanel, waitPanelTitle, showPrimary, waitPanelTextPrimary, waitPanelValuePrimary, waitPanelMaxValuePrimary, showSecondary, waitPanelTextSecondary, waitPanelValueSecondary, waitPanelMaxValueSecondary, downloadDcmtsAsync, runOperationAsync, getDcmtFileAsync } = useDcmtOperations();
93
95
  const relatedDocuments = useRelatedDocuments({ selectedSearchResult, focusedItem, currentSearchResults });
94
96
  const { relatedDcmts, showRelatedDcmtsChooser, archiveType, isOpenDetails, isOpenMaster, isOpenArchiveRelationForm, archiveRelatedDcmtFormTID, archiveRelatedDcmtFormMids, relatedDcmtsChooserDataSource, showPairDcmtsModal, isPairingManyToMany, pairedSearchResults, manyToManyRelations, selectedManyToManyRelation, showManyToManyChooser, manyToManyChooserDataSource, showPairSearchModal, pairSearchModalTargetTID, pairSearchModalParentTID, pairSearchModalParentDID, pairSearchModalRelation, pairSearchModalInputMids, currentTIDHasDetailRelations, currentTIDHasMasterRelations, canArchiveMasterRelation, canArchiveDetailRelation, hasManyToManyRelation, setIsOpenDetails, setIsOpenMaster, setShowRelatedDcmtsChooser, setShowManyToManyChooser, setShowPairDcmtsModal, setShowPairSearchModal, setIsOpenArchiveRelationForm, setArchiveType, setArchiveRelatedDcmtFormTID, setArchiveRelatedDcmtFormMids, pairFloatingActionConfig, pairSearchModalFloatingActionConfig, archiveMasterDocuments, archiveDetailDocuments, pairManyToMany, checkRelatedDcmtsArchiveCapability, checkManyToManyCapability, archiveRelatedDcmtHandler, executeManyToManyPairing, } = relatedDocuments;
97
+ const [customButtonsLayout, setCustomButtonsLayout] = useState();
98
+ const [customButton, setCustomButton] = useState();
95
99
  const deviceType = useDeviceType();
96
100
  const isMobile = deviceType === DeviceType.MOBILE;
97
101
  const selectedDocs = getSelectedDcmtsOrFocused(selectedItems, focusedItem);
102
+ const allFieldSelectedDocs = useMemo(() => getAllFieldSelectedDcmtsOrFocused(selectedItems, focusedItem), [selectedItems, focusedItem]);
98
103
  // Disable the "Sign/Approve" button if:
99
104
  // 1. No document or multiple documents are selected, OR
100
105
  // 2. Exactly one document is selected but its FILEEXT property is null
@@ -153,6 +158,13 @@ const TMSearchResult = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, a
153
158
  fileSize: currentMetadataValues.find(o => o.mid == SystemMIDsAsNumber.FileSize)?.value,
154
159
  fileExt: currentMetadataValues.find(o => o.mid == SystemMIDsAsNumber.FileExt)?.value
155
160
  });
161
+ const fetchLayout = async () => {
162
+ if (currentDcmt?.tid && dcmtFormLayoutMode === LayoutModes.Update) {
163
+ const layoutDescriptor = await LayoutCacheService.GetAsync(currentDcmt?.tid, LayoutModes.None);
164
+ setCustomButtonsLayout(layoutDescriptor);
165
+ }
166
+ };
167
+ fetchLayout();
156
168
  }, [currentMetadataValues]);
157
169
  const openFormHandler = (layoutMode) => {
158
170
  setIsOpenDcmtForm(true);
@@ -242,6 +254,12 @@ const TMSearchResult = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, a
242
254
  const handleToggleSearch = () => {
243
255
  setShowSearch(prev => !prev);
244
256
  };
257
+ const openSignSettingsForm = () => {
258
+ setShowSignSettingsForm(true);
259
+ };
260
+ const closeSignSettingsForm = useCallback(() => {
261
+ setShowSignSettingsForm(false);
262
+ }, []);
245
263
  const getTitleHeader = () => {
246
264
  let counters = (showSelector && disableAccordionIfSingleCategory && searchResults.length > 1) ? getSearchResultCountersSingleCategory(searchResults) : "";
247
265
  if (title)
@@ -296,15 +314,86 @@ const TMSearchResult = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, a
296
314
  onClose?.();
297
315
  }
298
316
  };
317
+ const customButtonMenuItems = () => {
318
+ const customButtonsItems = customButtonsLayout?.customButtons?.filter((customButton) => customButton.isForSearchResult && customButton.isForSearchResult > 0)
319
+ .map((customButton) => ({
320
+ icon: svgToString(TMImageLibrary({ imageID: customButton.glyphID, showPath: true })),
321
+ text: customButton.title || 'Bottone personalizzato',
322
+ onClick: () => setCustomButton(customButton)
323
+ }));
324
+ return {
325
+ icon: svgToString(_jsx(IconCheck, {})),
326
+ text: SDKUI_Localizator.CustomButtons,
327
+ items: customButtonsItems
328
+ };
329
+ };
299
330
  const onContextMenuPreparing = (e) => {
300
331
  if (e === undefined)
301
332
  return;
302
333
  if (e.target === 'content') {
303
334
  e.items = e.items || [];
304
- const menuItems = getCommandsMenuItems(isMobile, fromDTD, selectedItems, focusedItem, context, showFloatingBar, workingGroupContext, showSearch, setShowFloatingBar, openFormHandler, openSharedArchiveHandler, showSharedDcmtsHandler, downloadDcmtsAsync, runOperationAsync, onRefreshSearchAsync, refreshSelectionDataRowsAsync, onRefreshAfterAddDcmtToFavs, confirmFormat, openConfirmAttachmentsDialog, openTaskFormHandler, openDetailDcmtsFormHandler, openMasterDcmtsFormHandler, openBatchUpdateFormHandler, openExportForm, handleToggleSearch, handleSignApprove, openWGsCopyMoveForm, openCommentFormCallback, openEditPdf, openAddDocumentForm, passToArchiveCallback, archiveMasterDocuments, archiveDetailDocuments, currentTIDHasMasterRelations, currentTIDHasDetailRelations, canArchiveMasterRelation, canArchiveDetailRelation, pairManyToMany, hasManyToManyRelation);
335
+ const menuItems = getCommandsMenuItems(isMobile, fromDTD, selectedItems, focusedItem, context, showFloatingBar, workingGroupContext, showSearch, setShowFloatingBar, openFormHandler, openSharedArchiveHandler, showSharedDcmtsHandler, downloadDcmtsAsync, runOperationAsync, onRefreshSearchAsync, refreshSelectionDataRowsAsync, onRefreshAfterAddDcmtToFavs, confirmFormat, openConfirmAttachmentsDialog, openTaskFormHandler, openDetailDcmtsFormHandler, openMasterDcmtsFormHandler, openBatchUpdateFormHandler, openExportForm, handleToggleSearch, handleSignApprove, openSignSettingsForm, handleCheckOutOperationCallback, openWGsCopyMoveForm, openCommentFormCallback, openEditPdf, openAddDocumentForm, passToArchiveCallback, archiveMasterDocuments, archiveDetailDocuments, currentTIDHasMasterRelations, currentTIDHasDetailRelations, canArchiveMasterRelation, canArchiveDetailRelation, pairManyToMany, hasManyToManyRelation);
305
336
  e.items.push(...menuItems);
337
+ //disabilitato per ora
338
+ //e.items.push(customButtonMenuItems());
306
339
  }
307
340
  };
341
+ const handleCheckOutOperationCallback = async (checkout) => {
342
+ const selectedDocs = getSelectedDcmtsOrFocused(selectedItems, focusedItem);
343
+ const firstDoc = selectedDocs?.[0];
344
+ if (!firstDoc)
345
+ return;
346
+ const title = checkout ? 'Check out' : SDKUI_Localizator.CancelCheckOut;
347
+ const msg = checkout ? SDKUI_Localizator.ExecuteCheckOutQuestion : SDKUI_Localizator.ExecuteCancelCheckOutQuestion;
348
+ TMMessageBoxManager.show({
349
+ title: title,
350
+ message: msg,
351
+ buttons: [ButtonNames.YES, ButtonNames.NO],
352
+ onButtonClick: async (e) => {
353
+ let result = [];
354
+ if (e !== ButtonNames.YES)
355
+ return;
356
+ try {
357
+ const ue = SDK_Globals.tmSession?.NewUpdateEngineByID();
358
+ if (ue) {
359
+ ue.TID = firstDoc.TID;
360
+ ue.DID = firstDoc.DID;
361
+ if (checkout) {
362
+ await ue.CheckOutAsync()
363
+ .then(async () => {
364
+ await downloadDcmtsAsync(getSelectedDcmtsOrFocused(selectedItems, focusedItem), DownloadTypes.Dcmt, "download");
365
+ result.push({ rowIndex: 0, id1: firstDoc.TID, id2: firstDoc.DID, description: SDKUI_Localizator.UpdateCompletedSuccessfully, resultType: ResultTypes.SUCCESS });
366
+ // await refreshSelectionDataRowsAsync();
367
+ await refreshFocusedDataRowAsync(firstDoc.TID, firstDoc.DID, true);
368
+ })
369
+ .catch((error) => {
370
+ result.push({ rowIndex: 0, id1: firstDoc.TID, id2: firstDoc.DID, resultType: ResultTypes.ERROR, description: getExceptionMessage(error) });
371
+ throw error;
372
+ });
373
+ }
374
+ else {
375
+ await ue.UndoCheckOutAsync()
376
+ .then(async () => {
377
+ result.push({ rowIndex: 0, id1: firstDoc.TID, id2: firstDoc.DID, description: SDKUI_Localizator.UpdateCompletedSuccessfully, resultType: ResultTypes.SUCCESS });
378
+ // await refreshSelectionDataRowsAsync();
379
+ await refreshFocusedDataRowAsync(firstDoc.TID, firstDoc.DID, true);
380
+ })
381
+ .catch((error) => {
382
+ result.push({ rowIndex: 0, id1: firstDoc.TID, id2: firstDoc.DID, resultType: ResultTypes.ERROR, description: getExceptionMessage(error) });
383
+ throw error;
384
+ });
385
+ }
386
+ }
387
+ }
388
+ catch (error) {
389
+ result.push({ rowIndex: 0, id1: firstDoc.TID, id2: firstDoc.DID, resultType: ResultTypes.ERROR, description: getExceptionMessage(error) });
390
+ }
391
+ finally {
392
+ TMResultManager.show(result, title, "ID", undefined);
393
+ }
394
+ }
395
+ });
396
+ };
308
397
  const refreshDataGridAfterRemoveAsync = async () => {
309
398
  let index = selectedSearchResult?.dtdResult?.columns?.findIndex(col => col.caption === 'DID');
310
399
  let selectedRows = [];
@@ -418,6 +507,23 @@ const TMSearchResult = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, a
418
507
  }
419
508
  }
420
509
  }
510
+ // Aggiorna focusedItem e selectedItems con i nuovi dati
511
+ if (focusedItem?.TID === tid && focusedItem?.DID === did) {
512
+ const updatedFocusedItem = searchResultDescriptorToSimpleArray(currentResult)?.find(item => item.TID === tid && item.DID === did);
513
+ if (updatedFocusedItem) {
514
+ setFocusedItem(updatedFocusedItem);
515
+ }
516
+ }
517
+ if (selectedItems.length > 0) {
518
+ const updatedSelectedItems = selectedItems.map(item => {
519
+ if (item.TID === tid && item.DID === did) {
520
+ const updatedItem = searchResultDescriptorToSimpleArray(currentResult)?.find(dataItem => dataItem.TID === tid && dataItem.DID === did);
521
+ return updatedItem || item;
522
+ }
523
+ return item;
524
+ });
525
+ setSelectedItems(updatedSelectedItems);
526
+ }
421
527
  if (refreshUI)
422
528
  setLastUpdateSearchTime(new Date(Date.now()));
423
529
  };
@@ -466,8 +572,7 @@ const TMSearchResult = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, a
466
572
  }
467
573
  };
468
574
  const searchResutlToolbar = _jsxs(_Fragment, { children: [(dcmtsReturned != dcmtsFound) && _jsx("p", { style: { backgroundColor: `white`, color: TMColors.primaryColor, textAlign: 'center', padding: '1px 4px', borderRadius: '3px', display: 'flex' }, children: `${dcmtsReturned}/${dcmtsFound} restituiti` }), context === SearchResultContext.FAVORITES_AND_RECENTS &&
469
- _jsx("div", { style: { display: 'flex', alignItems: 'center', gap: '5px' }, children: _jsx(TMButton, { btnStyle: 'icon', icon: _jsx(IconDelete, { color: 'white' }), caption: "Rimuovi da " + (selectedSearchResult?.category === "Favorites" ? '"Preferiti"' : '"Recenti"'), disabled: getSelectedDcmtsOrFocused(selectedItems, focusedItem).length <= 0, onClick: removeDcmtFromFavsOrRecents }) }), _jsx(TMButton, { btnStyle: 'icon', icon: _jsx(IconRefresh, { color: 'white' }), caption: SDKUI_Localizator.Refresh, onClick: onRefreshSearchAsync }), _jsx(IconMenuVertical, { id: `commands-header-${id}`, color: 'white', cursor: 'pointer' }), _jsx(TMCommandsContextMenu, { target: `#commands-header-${id}`, showEvent: "click", menuItems: getCommandsMenuItems(isMobile, fromDTD, selectedItems, focusedItem, context, showFloatingBar, workingGroupContext, showSearch, setShowFloatingBar, openFormHandler, openSharedArchiveHandler, showSharedDcmtsHandler, downloadDcmtsAsync, runOperationAsync, onRefreshSearchAsync, refreshSelectionDataRowsAsync, onRefreshAfterAddDcmtToFavs, confirmFormat, openConfirmAttachmentsDialog, openTaskFormHandler, openDetailDcmtsFormHandler, openMasterDcmtsFormHandler, openBatchUpdateFormHandler, openExportForm, handleToggleSearch, handleSignApprove, openWGsCopyMoveForm, openCommentFormCallback, openEditPdf, openAddDocumentForm, passToArchiveCallback, archiveMasterDocuments, archiveDetailDocuments, currentTIDHasMasterRelations, currentTIDHasDetailRelations, canArchiveMasterRelation, canArchiveDetailRelation, pairManyToMany, hasManyToManyRelation) })] });
470
- const middlePanelToolbar = _jsxs("div", { style: { width: 'max-content', display: 'flex', alignItems: 'center', gap: '10px' }, children: [_jsx(TMSaveFormButtonPrevious, { btnStyle: 'icon', isModified: false, iconColor: TMColors.default_background, formMode: FormModes.ReadOnly, canPrev: canNavigateHandler('prev'), onPrev: () => onNavigateHandler('prev') }), _jsx(TMSaveFormButtonNext, { btnStyle: 'icon', isModified: false, iconColor: TMColors.default_background, formMode: FormModes.ReadOnly, canNext: canNavigateHandler('next'), onNext: () => onNavigateHandler('next') })] });
575
+ _jsx("div", { style: { display: 'flex', alignItems: 'center', gap: '5px' }, children: _jsx(TMButton, { btnStyle: 'icon', icon: _jsx(IconDelete, { color: 'white' }), caption: "Rimuovi da " + (selectedSearchResult?.category === "Favorites" ? '"Preferiti"' : '"Recenti"'), disabled: getSelectedDcmtsOrFocused(selectedItems, focusedItem).length <= 0, onClick: removeDcmtFromFavsOrRecents }) }), _jsx(TMButton, { btnStyle: 'icon', icon: _jsx(IconRefresh, { color: 'white' }), caption: SDKUI_Localizator.Refresh, onClick: onRefreshSearchAsync }), _jsx(IconMenuVertical, { id: `commands-header-${id}`, color: 'white', cursor: 'pointer' }), _jsx(TMCommandsContextMenu, { target: `#commands-header-${id}`, showEvent: "click", menuItems: getCommandsMenuItems(isMobile, fromDTD, selectedItems, focusedItem, context, showFloatingBar, workingGroupContext, showSearch, setShowFloatingBar, openFormHandler, openSharedArchiveHandler, showSharedDcmtsHandler, downloadDcmtsAsync, runOperationAsync, onRefreshSearchAsync, refreshSelectionDataRowsAsync, onRefreshAfterAddDcmtToFavs, confirmFormat, openConfirmAttachmentsDialog, openTaskFormHandler, openDetailDcmtsFormHandler, openMasterDcmtsFormHandler, openBatchUpdateFormHandler, openExportForm, handleToggleSearch, handleSignApprove, openSignSettingsForm, handleCheckOutOperationCallback, openWGsCopyMoveForm, openCommentFormCallback, openEditPdf, openAddDocumentForm, passToArchiveCallback, archiveMasterDocuments, archiveDetailDocuments, currentTIDHasMasterRelations, currentTIDHasDetailRelations, canArchiveMasterRelation, canArchiveDetailRelation, pairManyToMany, hasManyToManyRelation).concat([customButtonMenuItems()]) })] });
471
576
  const handleAddItem = (tid, did) => {
472
577
  let newItem = { TID: tid ?? 0, DID: did ?? 0 };
473
578
  setSecondaryMasterDcmts((prevItems) => [...prevItems, newItem]);
@@ -491,6 +596,9 @@ const TMSearchResult = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, a
491
596
  TMSpinner.hide();
492
597
  }
493
598
  }, []);
599
+ const handleSavedAsyncCallback = useCallback(async (tid, did, metadataResult) => {
600
+ await refreshFocusedDataRowAsync(tid, did, true, metadataResult);
601
+ }, []);
494
602
  const showToppyForApprove = (isVisible && fromDTD?.templateTID === TemplateTIDs.WF_WIApprView && !isOpenDcmtForm && !isOpenDetails && !isOpenMaster);
495
603
  const tmSearchResult = useMemo(() => (!searchResults || searchResults.length <= 0)
496
604
  ? _jsxs("div", { style: { display: 'flex', flexDirection: 'column', alignItems: 'center', justifyContent: 'center', height: '100%', width: '100%' }, children: [_jsx(IconBoard, { fontSize: 96 }), _jsx("div", { style: { fontSize: "15px", marginTop: "10px" }, children: SDKUI_Localizator.NoDcmtFound }), openAddDocumentForm && _jsx("div", { style: { marginTop: "10px" }, children: _jsx(TMButton, { fontSize: "15px", icon: _jsx("i", { className: 'dx-icon-share' }), caption: SDKUI_Localizator.Share, onClick: openAddDocumentForm }) })] })
@@ -499,24 +607,23 @@ const TMSearchResult = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, a
499
607
  _jsx(TMLayoutItem, { children: _jsx(TMSearchResultSelector, { searchResults: currentSearchResults, disableAccordionIfSingleCategory: disableAccordionIfSingleCategory, selectedTID: selectedSearchResultTID, onSelectionChanged: onSearchResultSelectionChanged }) })
500
608
  :
501
609
  _jsx(_Fragment, {}), _jsxs(TMLayoutItem, { children: [_jsx(TMSearchResultGrid, { showSearch: showSearch, inputFocusedItem: focusedItem, inputSelectedItems: selectedItems, searchResult: searchResults.length > 1 ? selectedSearchResult : searchResults[0], lastUpdateSearchTime: lastUpdateSearchTime, openInOffice: openInOffice, onDblClick: () => openFormHandler(LayoutModes.Update), onContextMenuPreparing: onContextMenuPreparing, onSelectionChanged: (items) => { setSelectedItems(items); }, onVisibleItemChanged: setVisibleItems, onFocusedItemChanged: setFocusedItem, onDownloadDcmtsAsync: async (inputDcmts, downloadType, downloadMode, _y, confirmAttachments) => await downloadDcmtsAsync(inputDcmts, downloadType, downloadMode, onFileOpened, confirmAttachments), showExportForm: showExportForm, onCloseExportForm: onCloseExportForm }), allowFloatingBar && showFloatingBar && deviceType !== DeviceType.MOBILE &&
502
- _jsxs(TMFloatingToolbar, { backgroundColor: TMColors.primaryColor, initialLeft: '10px', initialTop: 'calc(100% - 75px)', children: [fromDTD?.perm?.canRetrieveFile === AccessLevels.Yes && _jsx(TMButton, { btnStyle: 'icon', caption: "Download file", disabled: fromDTD?.perm?.canRetrieveFile !== AccessLevels.Yes || !focusedItem?.DID, icon: _jsx(IconDownload, { color: 'white' }), onClick: () => { downloadDcmtsAsync(getSelectedDcmtsOrFocused(selectedItems, focusedItem), DownloadTypes.Dcmt, "download"); } }), allowRelations && _jsx(TMButton, { btnStyle: 'icon', disabled: !currentTIDHasDetailRelations || !focusedItem?.DID, icon: _jsx(IconDetailDcmts, { color: 'white' }), caption: SDKUI_Localizator.DcmtsDetail, onClick: () => setIsOpenDetails(true) }), allowRelations && _jsx(TMButton, { btnStyle: 'icon', disabled: !currentTIDHasMasterRelations || !focusedItem?.DID, icon: _jsx(IconDetailDcmts, { color: 'white', transform: 'scale(-1, 1)' }), caption: SDKUI_Localizator.DcmtsMaster, onClick: () => setIsOpenMaster(true) }), _jsx(IconMenuVertical, { id: `commands-floating-${id}`, color: 'white', cursor: 'pointer' }), _jsx(TMCommandsContextMenu, { target: `#commands-floating-${id}`, showEvent: "click", menuItems: getCommandsMenuItems(isMobile, fromDTD, selectedItems, focusedItem, context, showFloatingBar, workingGroupContext, showSearch, setShowFloatingBar, openFormHandler, openSharedArchiveHandler, showSharedDcmtsHandler, downloadDcmtsAsync, runOperationAsync, onRefreshSearchAsync, refreshSelectionDataRowsAsync, onRefreshAfterAddDcmtToFavs, confirmFormat, openConfirmAttachmentsDialog, openTaskFormHandler, openDetailDcmtsFormHandler, openMasterDcmtsFormHandler, openBatchUpdateFormHandler, openExportForm, handleToggleSearch, handleSignApprove, openWGsCopyMoveForm, openCommentFormCallback, openEditPdf, openAddDocumentForm, passToArchiveCallback, archiveMasterDocuments, archiveDetailDocuments, currentTIDHasMasterRelations, currentTIDHasDetailRelations, canArchiveMasterRelation, canArchiveDetailRelation, pairManyToMany, hasManyToManyRelation) })] })] })] }), showApprovePopup && _jsx(WorkFlowApproveRejectPopUp, { deviceType: deviceType, onCompleted: onWFOperationCompleted, selectedItems: getSelectedDcmtsOrFocused(selectedItems, focusedItem), isReject: 0, onClose: () => setShowApprovePopup(false) }), showRejectPopup && _jsx(WorkFlowApproveRejectPopUp, { deviceType: deviceType, onCompleted: onWFOperationCompleted, selectedItems: getSelectedDcmtsOrFocused(selectedItems, focusedItem), isReject: 1, onClose: () => setShowRejectPopup(false) }), showReAssignPopup && _jsx(WorkFlowReAssignPopUp, { deviceType: deviceType, onCompleted: onWFOperationCompleted, selectedItems: getSelectedDcmtsOrFocused(selectedItems, focusedItem), onClose: () => setShowReAssignPopup(false) }), showMoreInfoPopup && _jsx(WorkFlowMoreInfoPopUp, { TID: focusedItem?.TID, DID: focusedItem?.DID, deviceType: deviceType, onCompleted: onWFOperationCompleted, onClose: () => setShowMoreInfoPopup(false) }), isOpenBatchUpdate && _jsx(TMBatchUpdateForm, { isModal: true, titleModal: `${SDKUI_Localizator.BatchUpdate} (${getSelectionDcmtInfo().length} documenti selezionati)`, inputDcmts: getSelectionDcmtInfo(), TID: focusedItem ? focusedItem?.TID : selectedItems[0]?.TID, DID: focusedItem ? focusedItem?.DID : selectedItems[0]?.DID, onBack: () => {
610
+ _jsxs(TMFloatingToolbar, { backgroundColor: TMColors.primaryColor, initialLeft: '10px', initialTop: 'calc(100% - 75px)', children: [fromDTD?.perm?.canRetrieveFile === AccessLevels.Yes && _jsx(TMButton, { btnStyle: 'icon', caption: "Download file", disabled: fromDTD?.perm?.canRetrieveFile !== AccessLevels.Yes || !focusedItem?.DID, icon: _jsx(IconDownload, { color: 'white' }), onClick: () => { downloadDcmtsAsync(getSelectedDcmtsOrFocused(selectedItems, focusedItem), DownloadTypes.Dcmt, "download"); } }), allowRelations && _jsx(TMButton, { btnStyle: 'icon', disabled: !currentTIDHasDetailRelations || !focusedItem?.DID, icon: _jsx(IconDetailDcmts, { color: 'white' }), caption: SDKUI_Localizator.DcmtsDetail, onClick: () => setIsOpenDetails(true) }), allowRelations && _jsx(TMButton, { btnStyle: 'icon', disabled: !currentTIDHasMasterRelations || !focusedItem?.DID, icon: _jsx(IconDetailDcmts, { color: 'white', transform: 'scale(-1, 1)' }), caption: SDKUI_Localizator.DcmtsMaster, onClick: () => setIsOpenMaster(true) }), _jsx(IconMenuVertical, { id: `commands-floating-${id}`, color: 'white', cursor: 'pointer' }), _jsx(TMCommandsContextMenu, { target: `#commands-floating-${id}`, showEvent: "click", menuItems: getCommandsMenuItems(isMobile, fromDTD, selectedItems, focusedItem, context, showFloatingBar, workingGroupContext, showSearch, setShowFloatingBar, openFormHandler, openSharedArchiveHandler, showSharedDcmtsHandler, downloadDcmtsAsync, runOperationAsync, onRefreshSearchAsync, refreshSelectionDataRowsAsync, onRefreshAfterAddDcmtToFavs, confirmFormat, openConfirmAttachmentsDialog, openTaskFormHandler, openDetailDcmtsFormHandler, openMasterDcmtsFormHandler, openBatchUpdateFormHandler, openExportForm, handleToggleSearch, handleSignApprove, openSignSettingsForm, handleCheckOutOperationCallback, openWGsCopyMoveForm, openCommentFormCallback, openEditPdf, openAddDocumentForm, passToArchiveCallback, archiveMasterDocuments, archiveDetailDocuments, currentTIDHasMasterRelations, currentTIDHasDetailRelations, canArchiveMasterRelation, canArchiveDetailRelation, pairManyToMany, hasManyToManyRelation).concat([customButtonMenuItems()]) })] })] })] }), showApprovePopup && _jsx(WorkFlowApproveRejectPopUp, { deviceType: deviceType, onCompleted: onWFOperationCompleted, selectedItems: getSelectedDcmtsOrFocused(selectedItems, focusedItem), isReject: 0, onClose: () => setShowApprovePopup(false) }), showRejectPopup && _jsx(WorkFlowApproveRejectPopUp, { deviceType: deviceType, onCompleted: onWFOperationCompleted, selectedItems: getSelectedDcmtsOrFocused(selectedItems, focusedItem), isReject: 1, onClose: () => setShowRejectPopup(false) }), showReAssignPopup && _jsx(WorkFlowReAssignPopUp, { deviceType: deviceType, onCompleted: onWFOperationCompleted, selectedItems: getSelectedDcmtsOrFocused(selectedItems, focusedItem), onClose: () => setShowReAssignPopup(false) }), showMoreInfoPopup && _jsx(WorkFlowMoreInfoPopUp, { TID: focusedItem?.TID, DID: focusedItem?.DID, deviceType: deviceType, onCompleted: onWFOperationCompleted, onClose: () => setShowMoreInfoPopup(false) }), isOpenBatchUpdate && _jsx(TMBatchUpdateForm, { isModal: true, titleModal: `${SDKUI_Localizator.BatchUpdate} (${getSelectionDcmtInfo().length} documenti selezionati)`, inputDcmts: getSelectionDcmtInfo(), TID: focusedItem ? focusedItem?.TID : selectedItems[0]?.TID, DID: focusedItem ? focusedItem?.DID : selectedItems[0]?.DID, onBack: () => {
503
611
  setIsOpenBatchUpdate(false);
504
612
  }, onSavedCallbackAsync: async () => {
505
613
  setIsOpenBatchUpdate(false);
506
614
  setIsModifiedBatchUpdate(false);
507
615
  await refreshSelectionDataRowsAsync();
508
- }, onStatusChanged: (isModified) => { setIsModifiedBatchUpdate(isModified); } }), (showToppyForApprove && !showApprovePopup && !showRejectPopup && !showReAssignPopup && !showMoreInfoPopup && !openS4TViewer && !showTodoDcmtForm) &&
509
- _jsx(ToppyHelpCenter, { deviceType: deviceType, content: _jsx("div", { style: { display: 'flex', flexDirection: 'column', gap: '10px' }, children: _jsx(WorkFlowOperationButtons, { deviceType: deviceType, onApprove: () => {
510
- setShowApprovePopup(true);
511
- }, onSignApprove: () => {
512
- handleSignApprove();
513
- }, onReject: () => {
514
- setShowRejectPopup(true);
515
- }, onReAssign: () => {
516
- setShowReAssignPopup(true);
517
- }, onMoreInfo: () => {
518
- setShowMoreInfoPopup(true);
519
- }, approveDisable: selectedDocs.length === 0, signApproveDisable: disableSignApproveDisable, rejectDisable: selectedDocs.length === 0, reassignDisable: selectedDocs.length === 0, infoDisable: selectedDocs.length !== 1, dtd: fromDTD }) }) })] }), _jsx(ConfirmFormatDialog, {}), _jsx(ConfirmAttachmentsDialog, {}), showRelatedDcmtsChooser &&
616
+ }, onStatusChanged: (isModified) => { setIsModifiedBatchUpdate(isModified); } }), _jsx(ToppyDraggableHelpCenter, { initialIsCollapsed: false, deviceType: deviceType, usePortal: true, isVisible: showToppyForApprove && !showApprovePopup && !showRejectPopup && !showReAssignPopup && !showMoreInfoPopup && !openS4TViewer && !showTodoDcmtForm, content: _jsx("div", { style: { display: 'flex', flexDirection: 'column', gap: '10px' }, children: _jsx(WorkFlowOperationButtons, { deviceType: deviceType, onApprove: () => {
617
+ setShowApprovePopup(true);
618
+ }, onSignApprove: () => {
619
+ handleSignApprove();
620
+ }, onReject: () => {
621
+ setShowRejectPopup(true);
622
+ }, onReAssign: () => {
623
+ setShowReAssignPopup(true);
624
+ }, onMoreInfo: () => {
625
+ setShowMoreInfoPopup(true);
626
+ }, approveDisable: selectedDocs.length === 0, signApproveDisable: disableSignApproveDisable, rejectDisable: selectedDocs.length === 0, reassignDisable: selectedDocs.length === 0, infoDisable: selectedDocs.length !== 1, dtd: fromDTD }) }) })] }), _jsx(ConfirmFormatDialog, {}), _jsx(ConfirmAttachmentsDialog, {}), customButton && _jsx(TMCustomButton, { button: customButton, formData: currentMetadataValues, selectedItems: selectedItems, onClose: () => setCustomButton(undefined) }), showRelatedDcmtsChooser &&
520
627
  _jsx(TMChooserForm, { dataSource: relatedDcmtsChooserDataSource, onChoose: async (selectedRelation) => {
521
628
  try {
522
629
  setShowRelatedDcmtsChooser(false);
@@ -676,9 +783,7 @@ const TMSearchResult = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, a
676
783
  :
677
784
  _jsx(TMPanelManagerProvider, { panels: initialPanels, initialVisibility: allInitialPanelVisibility, defaultDimensions: initialPanelDimensions, initialDimensions: initialPanelDimensions, initialMobilePanelId: 'tmSearchResult', children: _jsx(TMPanelManagerContainer, { panels: initialPanels, direction: "horizontal", parentId: groupId, showToolbar: showSearchResultSidebar }) }) }) }), _jsx(StyledMultiViewPanel, { "$isVisible": isOpenDetails, children: isOpenDetails && _jsx(TMMasterDetailDcmts, { deviceType: deviceType, isForMaster: false, inputDcmts: getSelectionDcmtInfo(), allowNavigation: focusedItem && selectedItems.length <= 0, canNext: canNavigateHandler('next'), canPrev: canNavigateHandler('prev'), onNext: () => onNavigateHandler('next'), onPrev: () => onNavigateHandler('prev'), onBack: () => setIsOpenDetails(false), allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers }) }), _jsxs(StyledMultiViewPanel, { "$isVisible": isOpenMaster, children: [isOpenMaster && _jsx(TMMasterDetailDcmts, { deviceType: deviceType, inputDcmts: getSelectionDcmtInfo(), isForMaster: true, allowNavigation: focusedItem && selectedItems.length <= 0, canNext: canNavigateHandler('next'), canPrev: canNavigateHandler('prev'), onNext: () => onNavigateHandler('next'), onPrev: () => onNavigateHandler('prev'), onBack: () => setIsOpenMaster(false), appendMasterDcmts: handleAddItem, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers }), secondaryMasterDcmts.length > 0 && secondaryMasterDcmts.map((dcmt, index) => {
678
785
  return (_jsx(StyledModalContainer, { style: { backgroundColor: 'white' }, children: _jsx(TMMasterDetailDcmts, { deviceType: deviceType, inputDcmts: [dcmt], isForMaster: true, allowNavigation: false, onBack: () => handleRemoveItem(dcmt.TID, dcmt.DID), appendMasterDcmts: handleAddItem, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers }) }, `${index}-${dcmt.DID}`));
679
- })] }), _jsx(StyledMultiViewPanel, { "$isVisible": isOpenDcmtForm, children: isOpenDcmtForm && _jsx(TMDcmtForm, { isModal: openDcmtFormAsModal || (dcmtFormLayoutMode === LayoutModes.Ark && focusedItem?.DID), titleModal: fromDTD?.name ?? '', TID: focusedItem?.TID, DID: focusedItem?.DID, allowButtonsRefs: true, layoutMode: dcmtFormLayoutMode, count: visibleItems.length, itemIndex: visibleItems.findIndex(o => o.rowIndex === focusedItem?.rowIndex) + 1, canNext: canNavigateHandler('next'), canPrev: canNavigateHandler('prev'), onNext: () => onNavigateHandler('next'), onPrev: () => onNavigateHandler('prev'), onClose: () => { setIsOpenDcmtForm(false); }, onWFOperationCompleted: onWFOperationCompleted, onTaskCreateRequest: onTaskCreateRequest, onSavedAsyncCallback: async (tid, did, metadataResult) => {
680
- await refreshFocusedDataRowAsync(tid, did, true, metadataResult);
681
- }, onOpenS4TViewerRequest: onOpenS4TViewerRequest, onReferenceClick: onReferenceClick, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers }) }), isOpenArchiveRelationForm && _jsx(TMDcmtForm, { isModal: true, titleModal: SDKUI_Localizator.Archive + ' - ' + (archiveType === 'detail' ? SDKUI_Localizator.DcmtsDetail : SDKUI_Localizator.DcmtsMaster), TID: archiveRelatedDcmtFormTID, layoutMode: LayoutModes.Ark, inputMids: archiveRelatedDcmtFormMids, showBackButton: false, allowButtonsRefs: false, onClose: () => {
786
+ })] }), _jsx(StyledMultiViewPanel, { "$isVisible": isOpenDcmtForm, children: isOpenDcmtForm && _jsx(TMDcmtForm, { isModal: openDcmtFormAsModal || (dcmtFormLayoutMode === LayoutModes.Ark && focusedItem?.DID), titleModal: fromDTD?.name ?? '', TID: focusedItem?.TID, DID: focusedItem?.DID, allowButtonsRefs: true, layoutMode: dcmtFormLayoutMode, count: visibleItems.length, itemIndex: visibleItems.findIndex(o => o.rowIndex === focusedItem?.rowIndex) + 1, canNext: canNavigateHandler('next'), canPrev: canNavigateHandler('prev'), onNext: () => onNavigateHandler('next'), onPrev: () => onNavigateHandler('prev'), onClose: () => { setIsOpenDcmtForm(false); }, onWFOperationCompleted: onWFOperationCompleted, onTaskCreateRequest: onTaskCreateRequest, onSavedAsyncCallback: handleSavedAsyncCallback, onOpenS4TViewerRequest: onOpenS4TViewerRequest, onReferenceClick: onReferenceClick, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers }) }), isOpenArchiveRelationForm && _jsx(TMDcmtForm, { isModal: true, titleModal: SDKUI_Localizator.Archive + ' - ' + (archiveType === 'detail' ? SDKUI_Localizator.DcmtsDetail : SDKUI_Localizator.DcmtsMaster), TID: archiveRelatedDcmtFormTID, layoutMode: LayoutModes.Ark, inputMids: archiveRelatedDcmtFormMids, showBackButton: false, allowButtonsRefs: false, onClose: () => {
682
787
  setIsOpenArchiveRelationForm(false);
683
788
  setArchiveType(undefined);
684
789
  setArchiveRelatedDcmtFormTID(undefined);
@@ -689,10 +794,12 @@ const TMSearchResult = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, a
689
794
  setArchiveRelatedDcmtFormTID(undefined);
690
795
  setArchiveRelatedDcmtFormMids([]);
691
796
  await onRefreshSearchAsync?.();
692
- }, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers })] }));
797
+ }, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers }), (showSignSettingsForm && fromDTD) && _jsx(TMSignSettingsForm, { fromDTD: fromDTD, inputDcmts: allFieldSelectedDocs, onCloseSignSettingsForm: closeSignSettingsForm, onSavedAsyncCallback: handleSavedAsyncCallback })] }));
693
798
  };
694
799
  export default TMSearchResult;
695
- const renderDcmtIcon = (cellData, onDownloadDcmtsAsync, openInOffice) => _jsx(TMDcmtIcon, { tid: cellData.data.TID, did: cellData.data.DID, fileExtension: cellData.data.FILEEXT, fileCount: cellData.data.FILECOUNT, isLexProt: cellData.data.IsLexProt, isMail: cellData.data.ISMAIL, isShared: cellData.data.ISSHARED, isSigned: cellData.data.ISSIGNED, downloadMode: 'openInNewWindow', onDownloadDcmtsAsync: onDownloadDcmtsAsync, openInOffice: openInOffice });
800
+ const renderDcmtIcon = (cellData, onDownloadDcmtsAsync, openInOffice) => {
801
+ return _jsx(TMDcmtIcon, { tid: cellData.data.TID, did: cellData.data.DID, fileExtension: cellData.data.FILEEXT, fileCount: cellData.data.FILECOUNT, isLexProt: cellData.data.IsLexProt, isMail: cellData.data.ISMAIL, isShared: cellData.data.ISSHARED, isSigned: cellData.data.ISSIGNED, downloadMode: 'openInNewWindow', onDownloadDcmtsAsync: onDownloadDcmtsAsync, openInOffice: openInOffice });
802
+ };
696
803
  const TMSearchResultGrid = ({ openInOffice, inputFocusedItem, showSearch, allowMultipleSelection = true, showExportForm = false, onCloseExportForm, onFocusedItemChanged, onDownloadDcmtsAsync, onVisibleItemChanged, inputSelectedItems = [], lastUpdateSearchTime, searchResult, onContextMenuPreparing, onSelectionChanged, onDblClick }) => {
697
804
  const [dataSource, setDataSource] = useState();
698
805
  const [columns, setColumns] = useState([]);
@@ -906,7 +1013,7 @@ const TMSearchResultGrid = ({ openInOffice, inputFocusedItem, showSearch, allowM
906
1013
  width: 50,
907
1014
  cellRender: (cellData) => renderDcmtIcon(cellData, onDownloadDcmtsAsync, openInOffice),
908
1015
  allowResizing: false,
909
- filterOperations: ['=']
1016
+ filterOperations: ['=', "anyof"]
910
1017
  },
911
1018
  ...columns.filter(col => col.dataField !== 'FILEEXT')
912
1019
  ];
@@ -923,9 +1030,9 @@ const TMSearchResultGrid = ({ openInOffice, inputFocusedItem, showSearch, allowM
923
1030
  return _jsxs("div", { style: { width: "100%", height: "100%" }, children: [_jsx(TMDataGrid, { id: "tm-search-result", keyExpr: "rowIndex", dataColumns: dataColumns, dataSource: dataSource, repaintChangesOnly: true, selectedRowKeys: selectedRowKeys, focusedRowKey: Number(focusedItem?.rowIndex ?? 0), showSearchPanel: showSearch, showFilterPanel: true, sorting: { mode: "multiple" }, selection: { mode: allowMultipleSelection ? 'multiple' : 'single' }, pageSize: TMDataGridPageSize.Small, onSelectionChanged: handleSelectionChange, onFocusedRowChanged: handleFocusedRowChange, onRowDblClick: onRowDblClick, onContentReady: onContentReady, onContextMenuPreparing: onContextMenuPreparing, onKeyDown: onKeyDown, counterConfig: { show: true } }), (showExportForm && searchResult && onCloseExportForm) && _jsx(TMDataGridExportForm, { dataColumns: dataColumns, dataSource: dataSource, selectedRowKeys: selectedRowKeys, onCloseExportForm: onCloseExportForm, searchResult: searchResult })] });
924
1031
  };
925
1032
  //#region TMSearchResultSelector
926
- const StyledItemTemplate = styled.div `
927
- background: ${(props) => props.$isSelected ? 'oklch(from var(--dx-color-primary) l c h / .2) !important' : 'transparent'};
928
- cursor: pointer;
1033
+ const StyledItemTemplate = styled.div `
1034
+ background: ${(props) => props.$isSelected ? 'oklch(from var(--dx-color-primary) l c h / .2) !important' : 'transparent'};
1035
+ cursor: pointer;
929
1036
  `;
930
1037
  const MemoizedStyledItemTemplate = React.memo(StyledItemTemplate);
931
1038
  const TMSearchResultSelector = ({ searchResults = [], disableAccordionIfSingleCategory = false, selectedTID, onSelectionChanged }) => {
@@ -995,12 +1102,30 @@ const TMSearchResultSelector = ({ searchResults = [], disableAccordionIfSingleCa
995
1102
  }
996
1103
  };
997
1104
  const renderItemTemplate = useCallback((data) => (_jsxs("div", { style: { width: '100%', padding: '5px', display: 'flex', alignItems: 'center', justifyContent: 'space-between' }, children: [_jsx(TMTidViewer, { tid: data.fromTID, did: Number(data.dtdResult?.rows?.[0]?.[1]), showIcon: true, color: TMColors.primary }), _jsx("div", { style: { padding: 3, display: 'flex', alignItems: 'center', justifyContent: 'center', backgroundColor: 'white', color: 'gray', borderRadius: 3 }, children: data.dcmtsReturned })] })), []);
1105
+ const accordionGroups = useMemo(() => sortedCategories.map((category, index) => ({
1106
+ id: category,
1107
+ title: getHeaderTitle(category),
1108
+ dataSource: groupedResults[category],
1109
+ isExpanded: index === 0,
1110
+ badges: [
1111
+ {
1112
+ badge: searchResults.length > 1 ? searchResults?.filter(data => data.category === category || (data?.category === undefined && category === "Uncategorized")).length : 0,
1113
+ tooltip: 'Numero di tipi documento'
1114
+ },
1115
+ {
1116
+ badge: resultDcmtCounter(category),
1117
+ tooltip: 'Numero di tutti documenti'
1118
+ }
1119
+ ],
1120
+ renderItem: (result, isSelected) => (_jsxs("div", { style: { width: '100%', padding: '5px', display: 'flex', alignItems: 'center', justifyContent: 'space-between' }, children: [_jsx(TMTidViewer, { tid: result.fromTID, did: Number(result.dtdResult?.rows?.[0]?.[1]), showIcon: true, color: TMColors.primary }), _jsx("div", { style: { padding: 3, display: 'flex', alignItems: 'center', justifyContent: 'center', backgroundColor: 'white', color: 'gray', borderRadius: 3 }, children: result.dcmtsReturned })] })),
1121
+ itemHeight: 40
1122
+ })), [sortedCategories, groupedResults, searchResults]);
998
1123
  const renderCategoryItems = (category) => (_jsx("div", { style: { padding: '5px' }, children: groupedResults[category].map((result, index) => (_jsx(MemoizedStyledItemTemplate, { "$isSelected": selectedResult === result, onClick: () => handleSelect(result), children: renderItemTemplate(result) }, index))) }));
999
1124
  if (disableAccordionIfSingleCategory && sortedCategories.length === 1) {
1000
1125
  const category = sortedCategories[0];
1001
1126
  return renderCategoryItems(category);
1002
1127
  }
1003
- return (_jsx("div", { style: { height: '100%', width: '100%', overflow: 'auto' }, children: sortedCategories.map((category, index) => (_jsx(TMAccordion, { title: getHeaderTitle(category), titleSize: 'Small', firstCounter: _jsx(TMTooltip, { content: 'Numero di tipi documento', children: _jsx(StyledBadge, { style: { width: 'max-content' }, "$backgroundColor": TMColors.primaryColor, children: searchResults.length > 1 && searchResults?.filter(data => data.category === category || (data?.category === undefined && category === "Uncategorized")).length }) }), secondCounter: _jsx(TMTooltip, { content: 'Numero di tutti documenti', children: _jsx(StyledBadge, { style: { width: 'max-content' }, "$backgroundColor": TMColors.tertiary, children: resultDcmtCounter(category) }) }), defaultOpen: (index === 0), children: renderCategoryItems(category) }, category))) }));
1128
+ return (_jsx(TMAccordionNew, { groups: accordionGroups, selectedItem: selectedResult, onSelectedItemChange: (result) => handleSelect(result) }));
1004
1129
  };
1005
1130
  //#endregion TMSearchResultSelector
1006
1131
  const TMDcmtPreviewWrapper = ({ currentDcmt, isVisible }) => {
@@ -3,8 +3,9 @@ import { DcmtTypeDescriptor, FileDescriptor, FileFormats, LayoutModes, WorkingGr
3
3
  import { TMDataGridContextMenuItem } from '../../base/TMDataGrid';
4
4
  import { DcmtInfo, DcmtOperationTypes, DownloadModes, DownloadTypes, SearchResultContext } from '../../../ts';
5
5
  export declare const getSelectedDcmtsOrFocused: (selectedItems: Array<any>, focusedItem: any, fileFormat?: FileFormats) => DcmtInfo[];
6
+ export declare const getAllFieldSelectedDcmtsOrFocused: (selectedItems: Array<any>, focusedItem: any, fileFormat?: FileFormats) => any[];
6
7
  export declare const signatureInformationCallback: (isMobile: boolean, inputDcmts: DcmtInfo[] | undefined) => Promise<void>;
7
- export declare const getCommandsMenuItems: (isMobile: boolean, dtd: DcmtTypeDescriptor | undefined, selectedItems: Array<any>, focusedItem: any, context: SearchResultContext, showFloatingBar: boolean, workingGroupContext: WorkingGroupDescriptor | undefined, showSearch: boolean, setShowFloatingBar: React.Dispatch<React.SetStateAction<boolean>>, openFormHandler: (layoutMode: LayoutModes) => void, openSharedArchiveHandler: () => Promise<void>, showSharedDcmtsHandler: () => Promise<void>, downloadDcmtsAsync: (inputDcmts: DcmtInfo[] | undefined, downloadType: DownloadTypes, downloadMode: DownloadModes, onFileDownloaded?: (dcmtFile: File | undefined) => void, confirmAttachments?: (list: FileDescriptor[]) => Promise<string[] | undefined>) => Promise<void>, runOperationAsync: (inputDcmts: DcmtInfo[] | undefined, dcmtOperationType: DcmtOperationTypes, actionAfterOperationAsync?: () => Promise<void>) => Promise<void>, onRefreshSearchAsync: (() => Promise<void>) | undefined, onRefreshDataRowsAsync: (() => Promise<void>) | undefined, onRefreshAfterAddDcmtToFavs: (() => void) | undefined, confirmFormat: () => Promise<FileFormats>, confirmAttachments: (list: FileDescriptor[]) => Promise<string[] | undefined>, openTaskFormHandler: () => void, openDetailDcmtsFormHandler: (value: boolean) => void, openMasterDcmtsFormHandler: (value: boolean) => void, openBatchUpdateFormHandler: (value: boolean) => void, openExportForm: () => void, handleToggleSearch: () => void, handleSignApprove: () => void, openWGsCopyMoveForm?: ((mode: "copyToWgDraft" | "copyToWgArchivedDoc", dcmtTypeDescriptor: DcmtTypeDescriptor, documents: Array<DcmtInfo>) => void), openCommentFormCallback?: ((documents: Array<DcmtInfo>) => void), openEditPdf?: ((documents: Array<DcmtInfo>) => void), openAddDocumentForm?: () => void, passToArchiveCallback?: (outputMids: Array<{
8
+ export declare const getCommandsMenuItems: (isMobile: boolean, dtd: DcmtTypeDescriptor | undefined, selectedItems: Array<any>, focusedItem: any, context: SearchResultContext, showFloatingBar: boolean, workingGroupContext: WorkingGroupDescriptor | undefined, showSearch: boolean, setShowFloatingBar: React.Dispatch<React.SetStateAction<boolean>>, openFormHandler: (layoutMode: LayoutModes) => void, openSharedArchiveHandler: () => Promise<void>, showSharedDcmtsHandler: () => Promise<void>, downloadDcmtsAsync: (inputDcmts: DcmtInfo[] | undefined, downloadType: DownloadTypes, downloadMode: DownloadModes, onFileDownloaded?: (dcmtFile: File | undefined) => void, confirmAttachments?: (list: FileDescriptor[]) => Promise<string[] | undefined>, skipConfirmation?: boolean) => Promise<void>, runOperationAsync: (inputDcmts: DcmtInfo[] | undefined, dcmtOperationType: DcmtOperationTypes, actionAfterOperationAsync?: () => Promise<void>) => Promise<void>, onRefreshSearchAsync: (() => Promise<void>) | undefined, onRefreshDataRowsAsync: (() => Promise<void>) | undefined, onRefreshAfterAddDcmtToFavs: (() => void) | undefined, confirmFormat: () => Promise<FileFormats>, confirmAttachments: (list: FileDescriptor[]) => Promise<string[] | undefined>, openTaskFormHandler: () => void, openDetailDcmtsFormHandler: (value: boolean) => void, openMasterDcmtsFormHandler: (value: boolean) => void, openBatchUpdateFormHandler: (value: boolean) => void, openExportForm: () => void, handleToggleSearch: () => void, handleSignApprove: () => void, openSignSettingsForm: () => void, handleCheckOutOperationCallback: (checkout: boolean) => Promise<void>, openWGsCopyMoveForm?: ((mode: "copyToWgDraft" | "copyToWgArchivedDoc", dcmtTypeDescriptor: DcmtTypeDescriptor, documents: Array<DcmtInfo>) => void), openCommentFormCallback?: ((documents: Array<DcmtInfo>) => void), openEditPdf?: ((documents: Array<DcmtInfo>) => void), openAddDocumentForm?: () => void, passToArchiveCallback?: (outputMids: Array<{
8
9
  mid: number;
9
10
  value: string;
10
11
  }>, tid?: number) => void, archiveMasterDocuments?: (tid: number | undefined) => Promise<void>, archiveDetailDocuments?: (tid: number | undefined) => Promise<void>, hasMasterRelation?: boolean, hasDetailRelation?: boolean, canArchiveMasterRelation?: boolean, canArchiveDetailRelation?: boolean, pairManyToManyDocuments?: (isPairing: boolean) => Promise<void>, hasManyToManyRelation?: boolean) => Array<TMDataGridContextMenuItem>;