@topconsultnpm/sdkui-react 6.20.0-dev2.51 → 6.20.0-dev2.52

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.
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useCallback, useEffect, useRef } from 'react';
3
3
  import styled from 'styled-components';
4
- import { IconChevronDown, IconChevronRight } from '../../helper';
4
+ import { IconChevronDown, IconChevronRight, SDKUI_Localizator } from '../../helper';
5
5
  import TMButton from './TMButton';
6
6
  const TMTreeView = ({ dataSource = [], focusedItem, selectedItems = [], allowMultipleSelection, onDataChanged, calculateItemsForNode, itemRender, onNodeUpdate, onFocusedItemChanged, onSelectionChanged, shouldDelayFocusOnEvent, autoSelectChildren = true, itemsPerPage = 100, showLoadMoreButton = true }) => {
7
7
  useEffect(() => {
@@ -350,7 +350,7 @@ const TMTreeView = ({ dataSource = [], focusedItem, selectedItems = [], allowMul
350
350
  if (input) {
351
351
  input.indeterminate = isIndeterminate(node);
352
352
  }
353
- } })), _jsx("div", { style: { display: 'flex', alignItems: 'center', flex: 1, minWidth: 0 }, onClick: (e) => { handleNodeClick(node, e); }, children: itemRender(node) })] }), node.expanded && node.items && (_jsxs("div", { style: { paddingLeft: 20, width: '100%' }, children: [renderTree(getVisibleItems(node)), needsPagination(node) && (_jsxs(StyledStickyPaginator, { children: [_jsx(TMButton, { onClick: () => handlePageChange(node.key, (node.currentPage ?? 0) - 1), showTooltip: false, caption: "\u25C4", disabled: (node.currentPage ?? 0) <= 0 }), _jsxs("span", { style: { fontSize: '12px', whiteSpace: 'nowrap', fontWeight: 500, overflow: 'hidden', textOverflow: 'ellipsis', minWidth: 0 }, children: ["Pagina ", (node.currentPage ?? 0) + 1, " di ", getTotalPages(node), " (", node.items?.length ?? 0, " elementi)"] }), _jsx(TMButton, { onClick: () => handlePageChange(node.key, (node.currentPage ?? 0) + 1), showTooltip: false, caption: "\u25BA", disabled: (node.currentPage ?? 0) >= getTotalPages(node) - 1 })] }))] }))] }, node.key)));
353
+ } })), _jsx("div", { style: { display: 'flex', alignItems: 'center', flex: 1, minWidth: 0 }, onClick: (e) => { handleNodeClick(node, e); }, children: itemRender(node) })] }), node.expanded && node.items && (_jsxs("div", { style: { paddingLeft: 20, width: '100%' }, children: [renderTree(getVisibleItems(node)), needsPagination(node) && (_jsxs(StyledStickyPaginator, { children: [_jsx(TMButton, { onClick: () => handlePageChange(node.key, (node.currentPage ?? 0) - 1), showTooltip: false, caption: "\u25C4", disabled: (node.currentPage ?? 0) <= 0 }), _jsx("span", { style: { fontSize: '12px', whiteSpace: 'nowrap', fontWeight: 500, overflow: 'hidden', textOverflow: 'ellipsis', minWidth: 0, color: 'white' }, children: SDKUI_Localizator.PaginationInfo.replaceParams((node.currentPage ?? 0) + 1, getTotalPages(node), node.items?.length ?? 0) }), _jsx(TMButton, { onClick: () => handlePageChange(node.key, (node.currentPage ?? 0) + 1), showTooltip: false, caption: "\u25BA", disabled: (node.currentPage ?? 0) >= getTotalPages(node) - 1 })] }))] }))] }, node.key)));
354
354
  }, [handleNodeClick, handleNodeToggle, handleCheckboxChange, focusedItem, selectedItems, allowMultipleSelection, getVisibleItems, needsPagination, handlePageChange, getTotalPages]);
355
355
  return (_jsx("div", { style: { height: '100%', width: '100%', overflowY: 'auto', overflowX: 'hidden', padding: '0px 5px 2px 2px' }, children: renderTree(dataSource) }));
356
356
  };
@@ -4,10 +4,9 @@ import { DcmtTypeListCacheService, SDK_Localizator } from '@topconsultnpm/sdk-ts
4
4
  import styled from 'styled-components';
5
5
  import TMRelationViewer from './TMRelationViewer';
6
6
  import TMContextMenu from '../../NewComponents/ContextMenu/TMContextMenu';
7
- import { genUniqueId, IconMultipleSelection, IconCheckFile, IconDetailDcmts, SDKUI_Localizator, IconMail, IconDcmtTypeOnlyMetadata, IconCopy, IconMenuVertical, IconDataList, IconPreview, IconSearchCheck, IconBoard, IconDcmtTypeSys, IconShow, getMoreInfoTasksForDocument } from '../../../helper';
7
+ import { genUniqueId, IconMultipleSelection, IconCheckFile, IconDetailDcmts, SDKUI_Localizator, IconMenuVertical, IconDataList, IconPreview, IconSearchCheck, IconBoard, IconDcmtTypeSys, IconShow, getMoreInfoTasksForDocument } from '../../../helper';
8
8
  import { FormModes, SearchResultContext } from '../../../ts';
9
9
  import { TMColors } from '../../../utils/theme';
10
- import ShowAlert from '../../base/TMAlert';
11
10
  import { DeviceType } from '../../base/TMDeviceProvider';
12
11
  import { TMSaveFormButtonPrevious, TMSaveFormButtonNext } from '../../forms/TMSaveForm';
13
12
  import TMPanelManagerContainer from '../../layout/panelManager/TMPanelManagerContainer';
@@ -122,82 +121,6 @@ const TMMasterDetailDcmts = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallba
122
121
  onClick: () => {
123
122
  appendMasterDcmts?.(focusedItem?.tid, focusedItem?.did);
124
123
  }
125
- },
126
- {
127
- icon: _jsx(IconMail, {}),
128
- name: "Invia per posta",
129
- disabled: false,
130
- beginGroup: true,
131
- submenu: [
132
- {
133
- icon: _jsx(IconMail, {}),
134
- name: "I documenti selezionati",
135
- disabled: false,
136
- onClick: () => ShowAlert({ message: "TODO", mode: 'info', title: `${"TODO"}`, duration: 3000 })
137
- },
138
- {
139
- icon: _jsx(IconMail, {}),
140
- name: "I documenti di primo livello e tutti i documenti correlati",
141
- disabled: false,
142
- onClick: () => ShowAlert({ message: "TODO", mode: 'info', title: `${"TODO"}`, duration: 3000 })
143
- },
144
- {
145
- icon: _jsx(IconMail, {}),
146
- name: "I documenti di primo livello e i documenti correlati personalizzando l'operazione",
147
- disabled: false,
148
- onClick: () => ShowAlert({ message: "TODO", mode: 'info', title: `${"TODO"}`, duration: 3000 })
149
- },
150
- ]
151
- },
152
- {
153
- icon: _jsx(IconDcmtTypeOnlyMetadata, {}),
154
- name: "Unisci in un file PDF",
155
- disabled: false,
156
- submenu: [
157
- {
158
- icon: _jsx(IconDcmtTypeOnlyMetadata, {}),
159
- name: "I documenti selezionati",
160
- disabled: false,
161
- onClick: () => ShowAlert({ message: "TODO", mode: 'info', title: `${"TODO"}`, duration: 3000 })
162
- },
163
- {
164
- icon: _jsx(IconDcmtTypeOnlyMetadata, {}),
165
- name: "I documenti di primo livello e tutti i documenti correlati",
166
- disabled: false,
167
- onClick: () => ShowAlert({ message: "TODO", mode: 'info', title: `${"TODO"}`, duration: 3000 })
168
- },
169
- {
170
- icon: _jsx(IconDcmtTypeOnlyMetadata, {}),
171
- name: "I documenti di primo livello e i documenti correlati personalizzando l'operazione",
172
- disabled: false,
173
- onClick: () => ShowAlert({ message: "TODO", mode: 'info', title: `${"TODO"}`, duration: 3000 })
174
- },
175
- ]
176
- },
177
- {
178
- icon: _jsx(IconCopy, {}),
179
- name: "Copia in una cartella",
180
- disabled: false,
181
- submenu: [
182
- {
183
- icon: _jsx(IconCopy, {}),
184
- name: "I documenti selezionati",
185
- disabled: false,
186
- onClick: () => ShowAlert({ message: "TODO", mode: 'info', title: `${"TODO"}`, duration: 3000 })
187
- },
188
- {
189
- icon: _jsx(IconCopy, {}),
190
- name: "I documenti di primo livello e tutti i documenti correlati",
191
- disabled: false,
192
- onClick: () => ShowAlert({ message: "TODO", mode: 'info', title: `${"TODO"}`, duration: 3000 })
193
- },
194
- {
195
- icon: _jsx(IconCopy, {}),
196
- name: "I documenti di primo livello e i documenti correlati personalizzando l'operazione",
197
- disabled: false,
198
- onClick: () => ShowAlert({ message: "TODO", mode: 'info', title: `${"TODO"}`, duration: 3000 })
199
- },
200
- ]
201
124
  }
202
125
  ];
203
126
  const toolbar = _jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: '10px' }, children: [allowMultipleSelection && _jsx("p", { style: { color: TMColors.colorHeader, textAlign: 'center', padding: '1px 4px', borderRadius: '3px', display: 'flex' }, children: `${selectedItems.length} selezionati` }), allowNavigation && canPrev != undefined && _jsx(TMSaveFormButtonPrevious, { btnStyle: 'icon', iconColor: 'white', isModified: false, formMode: FormModes.ReadOnly, canPrev: canPrev, onPrev: onPrev }), allowNavigation && canNext != undefined && _jsx(TMSaveFormButtonNext, { btnStyle: 'icon', iconColor: 'white', isModified: false, formMode: FormModes.ReadOnly, canNext: canNext, onNext: onNext }), _jsx(TMContextMenu, { items: commandsMenuItems, trigger: 'left', children: _jsx(IconMenuVertical, { color: 'white', cursor: 'pointer' }) })] });
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { useEffect, useRef, useState } from 'react';
3
- import { ObjectClasses, TaskDescriptor, PdGs, UserListCacheService, SDK_Localizator } from '@topconsultnpm/sdk-ts';
3
+ import { ObjectClasses, TaskDescriptor, PdGs, UserListCacheService, SDK_Localizator, Task_States } from '@topconsultnpm/sdk-ts';
4
4
  import { gotoPDGExtendedLabel, taskValidatorAsync } from './TMTasksUtils';
5
5
  import ScrollView from 'devextreme-react/scroll-view';
6
6
  import TMLayoutContainer from '../../base/TMLayout';
@@ -22,6 +22,12 @@ const TMTaskForm = (props) => {
22
22
  const sfo = new SaveFormOptions();
23
23
  sfo.objClass = ObjectClasses.Task;
24
24
  const customizeFormData = (task) => {
25
+ if (formMode === FormModes.Duplicate) {
26
+ task.toID = undefined;
27
+ task.toName = undefined;
28
+ task.state = Task_States.NotStarted;
29
+ return task;
30
+ }
25
31
  if (!isContextualCreate)
26
32
  return task;
27
33
  if (formMode !== FormModes.Create)
@@ -265,11 +271,11 @@ const TMTaskForm = (props) => {
265
271
  console.warn(`Unhandled object type: ${ref.objClass}`);
266
272
  }
267
273
  };
268
- return (_jsx("div", { style: { width: "100%", height: "100%", overflow: "auto" }, ref: containerRef, children: _jsxs(TMSaveForm, { width: width, height: height, id: id, title: title, isModal: isModal, formMode: formMode, onSaveAsync: saveDataAsync, onClose: onCloseCallback, showUndoButton: formMode === FormModes.Update, onUndo: onUndoCallback, exception: exception, isModified: calcIsModified(formData, formDataOrig), validationItems: validationItems, showBackButton: showBackButton, hasNavigation: (hasNavigation && formMode !== FormModes.Create), canNext: canNext(), onNext: onNextCallback, canPrev: canPrev(), onPrev: onPrevCallback, showToolbar: !(showDcmtForm && formData?.iD1 && formData?.iD2), children: [_jsxs(_Fragment, { children: [_jsx(ScrollView, { direction: "vertical", useNative: true, height: formData && (formMode === FormModes.Create || formMode === FormModes.None) ? "calc(100% - 70px)" : "calc(100% - 35px)", children: _jsx("div", { style: { marginRight: "5px" }, children: _jsxs(TMLayoutContainer, { direction: 'vertical', gap: 2, children: [(formMode === FormModes.Create || formMode === FormModes.None) && _jsxs("div", { style: { width: '100%', height: '100%' }, children: [_jsx(RenderNameField, { fieldsReadOnly: fieldsReadOnly, setFormData: setFormData, formData: formData, formDataOrig: formDataOrig, validationItems: validationItems }), _jsx(RenderDescriptionField, { fieldsReadOnly: fieldsReadOnly, setFormData: setFormData, formData: formData, formDataOrig: formDataOrig, validationItems: validationItems }), _jsx(TaskAssigneeField, { formMode: formMode, formData: formData, formDataOrig: formDataOrig, taskContext: taskContext, validationItems: validationItems, fieldsReadOnly: fieldsReadOnly, usersList: usersList, onValueChanged: (newValue) => {
274
+ return (_jsx("div", { style: { width: "100%", height: "100%", overflow: "auto" }, ref: containerRef, children: _jsxs(TMSaveForm, { width: width, height: height, id: id, title: title, isModal: isModal, formMode: formMode, onSaveAsync: saveDataAsync, onClose: onCloseCallback, showUndoButton: formMode === FormModes.Update, onUndo: onUndoCallback, exception: exception, isModified: calcIsModified(formData, formDataOrig), validationItems: validationItems, showBackButton: showBackButton, hasNavigation: (hasNavigation && formMode !== FormModes.Create), canNext: canNext(), onNext: onNextCallback, canPrev: canPrev(), onPrev: onPrevCallback, showToolbar: !(showDcmtForm && formData?.iD1 && formData?.iD2), children: [_jsxs(_Fragment, { children: [_jsx(ScrollView, { direction: "vertical", useNative: true, height: formData && (formMode === FormModes.Create || formMode === FormModes.None) ? "calc(100% - 70px)" : "calc(100% - 35px)", children: _jsx("div", { style: { marginRight: "5px" }, children: _jsxs(TMLayoutContainer, { direction: 'vertical', gap: 2, children: [(formMode === FormModes.Create || formMode === FormModes.Duplicate || formMode === FormModes.None) && _jsxs("div", { style: { width: '100%', height: '100%' }, children: [_jsx(RenderNameField, { fieldsReadOnly: fieldsReadOnly, setFormData: setFormData, formData: formData, formDataOrig: formDataOrig, validationItems: validationItems }), _jsx(RenderDescriptionField, { fieldsReadOnly: fieldsReadOnly, setFormData: setFormData, formData: formData, formDataOrig: formDataOrig, validationItems: validationItems }), _jsx(TaskAssigneeField, { formMode: formMode, formData: formData, formDataOrig: formDataOrig, taskContext: taskContext, validationItems: validationItems, fieldsReadOnly: fieldsReadOnly, usersList: usersList, onValueChanged: (newValue) => {
269
275
  if (newValue === undefined)
270
276
  return;
271
277
  setFormData({ ...formData ?? {}, toID: newValue[0] });
272
- } }), _jsx(RenderStartDateField, { fieldsReadOnly: fieldsReadOnly, formData: formData, formDataOrig: formDataOrig, validationItems: validationItems, setFormData: setFormData, onContentReady: handleStartTimeContentReady }), _jsx(RenderEndDateField, { fieldsReadOnly: fieldsReadOnly, formData: formData, formDataOrig: formDataOrig, validationItems: validationItems, setFormData: setFormData, onContentReady: handleEndTimeContentReady }), _jsx(RenderRemindDateField, { fieldsReadOnly: fieldsReadOnly, formData: formData, formDataOrig: formDataOrig, validationItems: validationItems, setFormData: setFormData }), _jsx(RenderPriorityField, { formData: formData, formDataOrig: formDataOrig, fieldsReadOnly: fieldsReadOnly, onPriorityValueChange: onPriorityValueChange }), _jsx(TaskFormContextualAttachments, { taskContext: taskContext })] }), (formMode === FormModes.Update || formMode === FormModes.Duplicate) && _jsxs("div", { style: { width: '100%', height: '100%' }, children: [_jsx(RenderNameField, { fieldsReadOnly: fieldsReadOnly, setFormData: setFormData, formData: formData, formDataOrig: formDataOrig, validationItems: validationItems }), _jsx(RenderDescriptionField, { fieldsReadOnly: fieldsReadOnly, setFormData: setFormData, formData: formData, formDataOrig: formDataOrig, validationItems: validationItems }), _jsx(TaskAssigneeField, { formMode: formMode, formData: formData, formDataOrig: formDataOrig, taskContext: taskContext, validationItems: validationItems, fieldsReadOnly: fieldsReadOnly, usersList: usersList, onValueChanged: (newValue) => {
278
+ } }), _jsx(RenderStartDateField, { fieldsReadOnly: fieldsReadOnly, formData: formData, formDataOrig: formDataOrig, validationItems: validationItems, setFormData: setFormData, onContentReady: handleStartTimeContentReady }), _jsx(RenderEndDateField, { fieldsReadOnly: fieldsReadOnly, formData: formData, formDataOrig: formDataOrig, validationItems: validationItems, setFormData: setFormData, onContentReady: handleEndTimeContentReady }), _jsx(RenderRemindDateField, { fieldsReadOnly: fieldsReadOnly, formData: formData, formDataOrig: formDataOrig, validationItems: validationItems, setFormData: setFormData }), _jsx(RenderPriorityField, { formData: formData, formDataOrig: formDataOrig, fieldsReadOnly: fieldsReadOnly, onPriorityValueChange: onPriorityValueChange }), _jsx(TaskFormContextualAttachments, { taskContext: taskContext, currentTask: formData })] }), (formMode === FormModes.Update) && _jsxs("div", { style: { width: '100%', height: '100%' }, children: [_jsx(RenderNameField, { fieldsReadOnly: fieldsReadOnly, setFormData: setFormData, formData: formData, formDataOrig: formDataOrig, validationItems: validationItems }), _jsx(RenderDescriptionField, { fieldsReadOnly: fieldsReadOnly, setFormData: setFormData, formData: formData, formDataOrig: formDataOrig, validationItems: validationItems }), _jsx(TaskAssigneeField, { formMode: formMode, formData: formData, formDataOrig: formDataOrig, taskContext: taskContext, validationItems: validationItems, fieldsReadOnly: fieldsReadOnly, usersList: usersList, onValueChanged: (newValue) => {
273
279
  if (newValue === undefined)
274
280
  return;
275
281
  setFormData({ ...formData ?? {}, toID: newValue[0] });
@@ -15,9 +15,10 @@ interface RenderContextBlockParams {
15
15
  }
16
16
  export declare const RenderAttachmentBlock: ({ condition, pdg, label }: RenderContextBlockParams) => JSX.Element | null;
17
17
  interface TaskFormContextualAttachmentsProps {
18
+ currentTask: TaskDescriptor | undefined;
18
19
  taskContext: TaskContext | undefined;
19
20
  }
20
- export declare const TaskFormContextualAttachments: ({ taskContext }: TaskFormContextualAttachmentsProps) => JSX.Element | null;
21
+ export declare const TaskFormContextualAttachments: (props: TaskFormContextualAttachmentsProps) => import("react/jsx-runtime").JSX.Element;
21
22
  interface TaskFormAssignedToProps {
22
23
  formMode: FormModes;
23
24
  formData: TaskDescriptor | undefined;
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import React, { useEffect, useMemo, useState } from "react";
2
+ import React, { useCallback, useEffect, useMemo, useState } from "react";
3
3
  import { PdGs, Priorities, SDK_Globals, Task_States } from "@topconsultnpm/sdk-ts";
4
4
  import { FormModes } from "../../../ts";
5
5
  import { calcResponsiveSizes, DateDisplayTypes, getPdgsIconMap, IconSave, SDKUI_Localizator } from "../../../helper";
@@ -84,15 +84,50 @@ export const TaskFormAssignmentNoticeBadge = (props) => {
84
84
  export const RenderAttachmentBlock = ({ condition, pdg, label }) => {
85
85
  if (!condition || !label)
86
86
  return null;
87
- return (_jsxs("span", { style: { display: 'inline-flex', alignItems: 'center', gap: 4 }, children: [SDKUI_Localizator.Attachment, ": ", getPdgsIconMap().get(pdg), " ", label] }));
87
+ return (_jsxs("span", { style: { display: 'inline-flex', alignItems: 'center', gap: 4 }, children: [SDKUI_Localizator.Attachment, ": ", _jsx("span", { style: { flexShrink: 0 }, children: getPdgsIconMap().get(pdg) }), " ", label] }));
88
88
  };
89
- export const TaskFormContextualAttachments = ({ taskContext }) => {
90
- const hasWorkingGroup = !!taskContext?.workingGroup?.id;
91
- const hasDossier = !!taskContext?.dossier?.id;
92
- const hasDocument = !!taskContext?.document?.tid && !!taskContext?.document?.did;
93
- const hasWorkItem = !!taskContext?.workItem?.tid && !!taskContext?.workItem?.did;
94
- const hasAnyAttachment = hasWorkingGroup || hasDossier || hasDocument || hasWorkItem;
95
- return (_jsx("div", { style: { width: '100%', marginTop: 15, marginLeft: 5 }, children: !hasAnyAttachment ? (_jsxs("span", { children: [SDKUI_Localizator.Attachment, ": ", _jsx("span", { style: { color: '#6c757d', fontStyle: 'italic' }, children: 'Nessun allegato' })] })) : (_jsxs(_Fragment, { children: [_jsx(RenderAttachmentBlock, { condition: hasWorkingGroup, pdg: PdGs.WG, label: SDKUI_Localizator.WorkGroup + ' "' + getOriginLabel(PdGs.WG, taskContext?.workingGroup?.name) + '"' }), _jsx(RenderAttachmentBlock, { condition: hasDossier, pdg: PdGs.CF, label: SDKUI_Localizator.Dossier + ' "' + getOriginLabel(PdGs.CF, taskContext?.dossier?.name) + '"' }), _jsx(RenderAttachmentBlock, { condition: hasDocument, pdg: PdGs.DT, label: SDKUI_Localizator.Document + ' "' + getOriginLabel(PdGs.DT, taskContext?.document?.name) + '"' }), _jsx(RenderAttachmentBlock, { condition: hasWorkItem, pdg: PdGs.DT, label: SDKUI_Localizator.Document + ' "' + getOriginLabel(PdGs.DT, taskContext?.workItem?.name) + '"' })] })) }));
89
+ export const TaskFormContextualAttachments = (props) => {
90
+ const { currentTask, taskContext } = props;
91
+ const getAttachmentInfo = useCallback(() => {
92
+ let hasWorkingGroup = false;
93
+ let workingGroupName;
94
+ let hasDossier = false;
95
+ let dossierName;
96
+ let hasDocument = false;
97
+ let documentName;
98
+ let hasWorkItem = false;
99
+ let workItemName;
100
+ if (taskContext) {
101
+ hasWorkingGroup = !!taskContext?.workingGroup?.id;
102
+ workingGroupName = taskContext?.workingGroup?.name;
103
+ hasDossier = !!taskContext?.dossier?.id;
104
+ dossierName = taskContext?.dossier?.name;
105
+ hasDocument = !!taskContext?.document?.tid && !!taskContext?.document?.did;
106
+ documentName = taskContext?.document?.name;
107
+ hasWorkItem = !!taskContext?.workItem?.tid && !!taskContext?.workItem?.did;
108
+ workItemName = taskContext?.workItem?.name;
109
+ }
110
+ else if (currentTask) {
111
+ switch (currentTask.pdG) {
112
+ case PdGs.WG:
113
+ hasWorkingGroup = true;
114
+ workingGroupName = currentTask.iD1Name;
115
+ break;
116
+ case PdGs.CF:
117
+ hasDossier = true;
118
+ dossierName = currentTask.iD1Name;
119
+ break;
120
+ case PdGs.DT:
121
+ hasDocument = true;
122
+ documentName = currentTask.iD1Name;
123
+ break;
124
+ }
125
+ }
126
+ const hasAnyAttachment = hasWorkingGroup || hasDossier || hasDocument || hasWorkItem;
127
+ return { hasWorkingGroup, workingGroupName, hasDossier, dossierName, hasDocument, documentName, hasWorkItem, workItemName, hasAnyAttachment };
128
+ }, [currentTask, taskContext]);
129
+ const { hasWorkingGroup, workingGroupName, hasDossier, dossierName, hasDocument, documentName, hasWorkItem, workItemName, hasAnyAttachment } = useMemo(() => getAttachmentInfo(), [getAttachmentInfo]);
130
+ return (_jsx("div", { style: { width: '100%', marginTop: 15, marginLeft: 5 }, children: !hasAnyAttachment ? (_jsxs("span", { children: [SDKUI_Localizator.Attachment, ":", " ", _jsx("span", { style: { color: "#6c757d", fontStyle: "italic" }, children: "Nessun allegato" })] })) : (_jsxs(_Fragment, { children: [_jsx(RenderAttachmentBlock, { condition: hasWorkingGroup, pdg: PdGs.WG, label: `${SDKUI_Localizator.WorkGroup} "${getOriginLabel(PdGs.WG, workingGroupName)}"` }), _jsx(RenderAttachmentBlock, { condition: hasDossier, pdg: PdGs.CF, label: `${SDKUI_Localizator.Dossier} "${getOriginLabel(PdGs.CF, dossierName)}"` }), _jsx(RenderAttachmentBlock, { condition: hasDocument, pdg: PdGs.DT, label: `${SDKUI_Localizator.Document} "${getOriginLabel(PdGs.DT, documentName)}"` }), _jsx(RenderAttachmentBlock, { condition: hasWorkItem, pdg: PdGs.DT, label: `${SDKUI_Localizator.Document} "${getOriginLabel(PdGs.DT, workItemName)}"` })] })) }));
96
131
  };
97
132
  const TaskPdgOriginNavigator = (props) => {
98
133
  const { formMode, formData, isMobile, gotoPDGExtendedLabelClickCallback } = props;
@@ -195,7 +230,6 @@ const FloatingFieldLabel = styled.label `
195
230
  align-items: center;
196
231
  gap: 6px;
197
232
  `;
198
- // Nuovo Styled component semplice per StatusFieldValue
199
233
  const StatusFieldLabel = styled.div `
200
234
  display: flex;
201
235
  align-items: center;
@@ -221,49 +255,6 @@ const StatusValue = styled.span `
221
255
  color: ${props => props.$isModifiedWhen ? "#B46900" : "#3A3A3A"};
222
256
  transition: all 0.2s ease;
223
257
  `;
224
- const ResponseReadOnlyContainer = styled.div `width: 100%;`;
225
- const ResponseReadOnlyLabel = styled.div `
226
- font-size: 1rem;
227
- color: #000;
228
- margin-bottom: 6px;
229
- `;
230
- const ResponseReadOnlyValue = styled.div `
231
- border: 1px solid #dee2e6;
232
- border-radius: 8px;
233
- padding: 12px 14px;
234
- font-size: 0.95rem;
235
- color: #495057;
236
- line-height: 1.5;
237
- white-space: pre-wrap;
238
- word-wrap: break-word;
239
- background: ${props => props.$isModifiedWhen
240
- ? "#FFF4E0"
241
- : `linear-gradient(#F6F7F9, #F6F7F9) padding-box,
242
- linear-gradient(270deg, #46B5A2 16%, #3BAABC 34%, #3BAABC 34%, #3681AD 54%, #3368A5 72%, #2F549D 88%, #304F99 100%) border-box`};
243
- ${props => props.$isModifiedWhen && `border-color: #FFD79A;`}
244
- /* Limite a 3 righe con scrollbar */
245
- max-height: calc(1.5em * 3 + 24px); /* 3 righe + padding */
246
- overflow-y: auto;
247
-
248
- /* Scrollbar stilizzata */
249
- &::-webkit-scrollbar {
250
- width: 6px;
251
- }
252
- &::-webkit-scrollbar-track {
253
- background: #f1f1f1;
254
- border-radius: 3px;
255
- }
256
- &::-webkit-scrollbar-thumb {
257
- background: linear-gradient(180deg, #46B5A2, #3681AD);
258
- border-radius: 3px;
259
- }
260
- &::-webkit-scrollbar-thumb:hover {
261
- background: linear-gradient(180deg, #3a9a89, #2d6d94);
262
- }
263
-
264
- /* Permette selezione testo */
265
- user-select: text;
266
- `;
267
258
  const ResponseCommentWrapper = styled.div `
268
259
  position: relative;
269
260
  width: 100%;
@@ -367,9 +358,6 @@ export const RenderTaskFormStateField = (props) => {
367
358
  // Condizione per mostrare il pulsante
368
359
  const showCloseButton = taskRole === 'sender' && formDataOrig?.state === Task_States.Completed;
369
360
  const showModifyButton = !(taskRole === 'sender' && formDataOrig?.state === Task_States.Completed);
370
- console.log(taskRole);
371
- console.log("showCloseButton", showCloseButton);
372
- console.log("showModifyButton", showModifyButton);
373
361
  const closeTaskCallback = () => {
374
362
  if (!formData || !formData.id)
375
363
  return;
@@ -101,11 +101,11 @@ export function LocalizeJobTypes(value) {
101
101
  case CultureIDs.It_IT: return value?.toString();
102
102
  default: return "CustomsDrawerPlus";
103
103
  }
104
- case JobTypes.CassettoDoganaleDistiller:
105
- switch (cultureID) {
106
- case CultureIDs.It_IT: return value?.toString();
107
- default: return "CustomsDrawerDistiller";
108
- }
104
+ // case JobTypes.CassettoDoganaleDistiller:
105
+ // switch (cultureID) {
106
+ // case CultureIDs.It_IT: return value?.toString();
107
+ // default: return "CustomsDrawerDistiller";
108
+ // }
109
109
  default: return value?.toString() ?? '';
110
110
  }
111
111
  }
@@ -462,6 +462,7 @@ export declare class SDKUI_Localizator {
462
462
  static get ParametricFilterTypes_ByUserID(): "Filtern nach {@UserID}" | "Filter on {@UserID}" | "Filtro en {@UserID}" | "Filtre sur {@UserID}" | "Filtre on {@UserID}" | "Filtro su {@UserID}";
463
463
  static get ParametricFilterTypes_ByUserName(): "Filtern nach {@Benutzername} (=)" | "Filter on {@UserName} (=)" | "Filtro en {@UserName} (=)" | "Filtre sur {@UserName} (=)" | "Filtre on {@UserName} (=)" | "Filtro su {@UserName} (=)";
464
464
  static get ParametricFilterTypes_ByUserNameC(): "Filter nach {@Benutzername} (Enthält)" | "Filter on {@UserName} (Contains)" | "Filtro en {@UserName} (Contiene)" | "Filtre sur {@UserName} (Contient)" | "Filtre on {@UserName} (Contém)" | "Filtro su {@UserName} (Contiene)";
465
+ static get PaginationInfo(): string;
465
466
  static get Participants(): "Teilnehmer" | "Participants" | "Participantes" | "Partecipanti";
466
467
  static get Password(): "Passwort" | "Password" | "Contraseña" | "Mot de passe" | "Senha";
467
468
  static get PassToArchive(): "Zur Archivierung übergeben" | "Pass to archive" | "Pasar a archivo" | "Passer à l'archivage" | "Passar para arquivo" | "Passa ad archiviazione";
@@ -4578,6 +4578,16 @@ export class SDKUI_Localizator {
4578
4578
  default: return "Filtro su {@UserName} (Contiene)";
4579
4579
  }
4580
4580
  }
4581
+ static get PaginationInfo() {
4582
+ switch (this._cultureID) {
4583
+ case CultureIDs.De_DE: return "Seite {{0}} von {{1}} ({{2}} Elemente)";
4584
+ case CultureIDs.En_US: return "Page {{0}} of {{1}} ({{2}} items)";
4585
+ case CultureIDs.Es_ES: return "Página {{0}} de {{1}} ({{2}} elementos)";
4586
+ case CultureIDs.Fr_FR: return "Page {{0}} sur {{1}} ({{2}} éléments)";
4587
+ case CultureIDs.Pt_PT: return "Página {{0}} de {{1}} ({{2}} itens)";
4588
+ default: return "Pagina {{0}} di {{1}} ({{2}} elementi)";
4589
+ }
4590
+ }
4581
4591
  static get Participants() {
4582
4592
  switch (this._cultureID) {
4583
4593
  case CultureIDs.De_DE: return "Teilnehmer";
@@ -17,6 +17,7 @@ const calcResponsiveSizes = (deviceType, desktopSize, tabletSize, mobileSize) =>
17
17
  const taskModalSizes = (deviceType, formMode) => {
18
18
  switch (formMode) {
19
19
  case FormModes.Create:
20
+ case FormModes.Duplicate:
20
21
  return {
21
22
  width: calcResponsiveSizes(deviceType, '500px', '90%', '95%'),
22
23
  height: calcResponsiveSizes(deviceType, '600px', '90%', '95%'),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@topconsultnpm/sdkui-react",
3
- "version": "6.20.0-dev2.51",
3
+ "version": "6.20.0-dev2.52",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "test": "echo \"Error: no test specified\" && exit 1",
@@ -40,7 +40,7 @@
40
40
  "lib"
41
41
  ],
42
42
  "dependencies": {
43
- "@topconsultnpm/sdk-ts": "6.20.0-dev2.12",
43
+ "@topconsultnpm/sdk-ts": "6.20.0-dev2.13",
44
44
  "buffer": "^6.0.3",
45
45
  "devextreme": "25.2.4",
46
46
  "devextreme-react": "25.2.4",