@topconsultnpm/sdkui-react 6.20.0-dev2.51 → 6.20.0-dev2.53
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.
- package/lib/components/base/TMTreeView.js +2 -2
- package/lib/components/features/documents/TMDcmtForm.js +1 -1
- package/lib/components/features/documents/TMDcmtTasks.d.ts +3 -1
- package/lib/components/features/documents/TMDcmtTasks.js +2 -2
- package/lib/components/features/documents/TMMasterDetailDcmts.js +1 -78
- package/lib/components/features/tasks/TMTaskForm.js +2 -2
- package/lib/components/features/tasks/TMTaskFormUtils.d.ts +2 -1
- package/lib/components/features/tasks/TMTaskFormUtils.js +48 -60
- package/lib/helper/Enum_Localizator.js +5 -5
- package/lib/helper/SDKUI_Localizator.d.ts +1 -0
- package/lib/helper/SDKUI_Localizator.js +10 -0
- package/lib/helper/helpers.js +1 -0
- package/package.json +2 -2
|
@@ -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 }),
|
|
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
|
};
|
|
@@ -1348,7 +1348,7 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
|
|
|
1348
1348
|
did: Number(DID),
|
|
1349
1349
|
name: fromDTD?.nameLoc ?? SDKUI_Localizator.Widget_Activities,
|
|
1350
1350
|
},
|
|
1351
|
-
}, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, afterTaskSaved: afterTaskSaved }));
|
|
1351
|
+
}, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, afterTaskSaved: afterTaskSaved, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers }));
|
|
1352
1352
|
}, [allTasks, TID, DID, fromDTD]);
|
|
1353
1353
|
const normalizedTID = TID !== undefined ? Number(TID) : undefined;
|
|
1354
1354
|
const defaultPanelDimensions = {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { FormModes, TaskContext } from "../../../ts";
|
|
2
|
-
import { TaskDescriptor } from "@topconsultnpm/sdk-ts";
|
|
2
|
+
import { HomeBlogPost, TaskDescriptor } from "@topconsultnpm/sdk-ts";
|
|
3
3
|
interface TMDcmtTasksProps {
|
|
4
4
|
taskContext: TaskContext;
|
|
5
5
|
allTasks: Array<TaskDescriptor>;
|
|
@@ -8,6 +8,8 @@ interface TMDcmtTasksProps {
|
|
|
8
8
|
addTaskCallback: (task: TaskDescriptor) => Promise<void>;
|
|
9
9
|
editTaskCallback: (task: TaskDescriptor) => Promise<void>;
|
|
10
10
|
afterTaskSaved: (task: TaskDescriptor | undefined, formMode: FormModes | undefined, forceRefresh?: boolean) => Promise<void>;
|
|
11
|
+
handleNavigateToWGs?: (value: HomeBlogPost | number) => Promise<void>;
|
|
12
|
+
handleNavigateToDossiers?: (value: HomeBlogPost | number) => Promise<void>;
|
|
11
13
|
}
|
|
12
14
|
declare const TMDcmtTasks: (props: TMDcmtTasksProps) => import("react/jsx-runtime").JSX.Element;
|
|
13
15
|
export default TMDcmtTasks;
|
|
@@ -6,7 +6,7 @@ import { useTMPanelManagerContext } from "../../layout/panelManager/TMPanelManag
|
|
|
6
6
|
import TMPanel from "../../base/TMPanel";
|
|
7
7
|
import TMTasksPanelContent from "../tasks/TMTasksPanelContent";
|
|
8
8
|
const TMDcmtTasks = (props) => {
|
|
9
|
-
const { taskContext, allTasks, getAllTasks, deleteTaskByIdsCallback, addTaskCallback, editTaskCallback, afterTaskSaved } = props;
|
|
9
|
+
const { taskContext, allTasks, getAllTasks, deleteTaskByIdsCallback, addTaskCallback, editTaskCallback, afterTaskSaved, handleNavigateToWGs, handleNavigateToDossiers } = props;
|
|
10
10
|
// Get the current device type (e.g., mobile, tablet, desktop) using a custom hook.
|
|
11
11
|
const deviceType = useDeviceType();
|
|
12
12
|
// This avoids unnecessary re-renders by only recalculating when deviceType changes.
|
|
@@ -19,6 +19,6 @@ const TMDcmtTasks = (props) => {
|
|
|
19
19
|
text: SDKUI_Localizator.Refresh,
|
|
20
20
|
},
|
|
21
21
|
], children: _jsx(IconMenuVertical, { id: "TMTaksPanel-Commands-Header", color: 'white', cursor: 'pointer' }) }), []);
|
|
22
|
-
return _jsx("div", { style: { width: "100%", height: "100%", position: 'relative' }, children: _jsx(TMPanel, { title: SDKUI_Localizator.Widget_Activities, allowMaximize: !isMobile && countVisibleLeafPanels() > 1, onClose: countVisibleLeafPanels() > 1 ? () => togglePanelVisibility("tmDcmtTasks") : undefined, onMaximize: countVisibleLeafPanels() > 1 ? () => toggleMaximize("tmDcmtTasks") : undefined, toolbar: toolbar, children: _jsx(TMTasksPanelContent, { id: "dcmtTasks", taskContext: taskContext, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: () => { return Promise.resolve(); }, handleNavigateToDossiers: () => { return Promise.resolve(); }, afterTaskSaved: afterTaskSaved }) }) });
|
|
22
|
+
return _jsx("div", { style: { width: "100%", height: "100%", position: 'relative' }, children: _jsx(TMPanel, { title: SDKUI_Localizator.Widget_Activities, allowMaximize: !isMobile && countVisibleLeafPanels() > 1, onClose: countVisibleLeafPanels() > 1 ? () => togglePanelVisibility("tmDcmtTasks") : undefined, onMaximize: countVisibleLeafPanels() > 1 ? () => toggleMaximize("tmDcmtTasks") : undefined, toolbar: toolbar, children: _jsx(TMTasksPanelContent, { id: "dcmtTasks", taskContext: taskContext, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs ? handleNavigateToWGs : () => { return Promise.resolve(); }, handleNavigateToDossiers: handleNavigateToDossiers ? handleNavigateToDossiers : () => { return Promise.resolve(); }, afterTaskSaved: afterTaskSaved }) }) });
|
|
23
23
|
};
|
|
24
24
|
export default TMDcmtTasks;
|
|
@@ -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,
|
|
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' }) })] });
|
|
@@ -265,11 +265,11 @@ const TMTaskForm = (props) => {
|
|
|
265
265
|
console.warn(`Unhandled object type: ${ref.objClass}`);
|
|
266
266
|
}
|
|
267
267
|
};
|
|
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) => {
|
|
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.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
269
|
if (newValue === undefined)
|
|
270
270
|
return;
|
|
271
271
|
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
|
|
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, 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
273
|
if (newValue === undefined)
|
|
274
274
|
return;
|
|
275
275
|
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: (
|
|
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 = (
|
|
90
|
-
const
|
|
91
|
-
const
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
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;
|
|
@@ -510,10 +498,10 @@ export const STATUS_TRANSITIONS = {
|
|
|
510
498
|
},
|
|
511
499
|
// Destinatario del task: può modificare lo stato liberamente, ma solo riaprire o chiudere se completato
|
|
512
500
|
receiver: {
|
|
513
|
-
[Task_States.NotStarted]: [Task_States.InProgress, Task_States.Waiting, Task_States.Deferred, Task_States.Completed],
|
|
514
|
-
[Task_States.InProgress]: [Task_States.InProgress, Task_States.Waiting, Task_States.Deferred, Task_States.Completed],
|
|
515
|
-
[Task_States.Waiting]: [Task_States.InProgress, Task_States.Waiting, Task_States.Deferred, Task_States.Completed],
|
|
516
|
-
[Task_States.Deferred]: [Task_States.InProgress, Task_States.Waiting, Task_States.Deferred, Task_States.Completed],
|
|
501
|
+
[Task_States.NotStarted]: [Task_States.NotStarted, Task_States.InProgress, Task_States.Waiting, Task_States.Deferred, Task_States.Completed],
|
|
502
|
+
[Task_States.InProgress]: [Task_States.NotStarted, Task_States.InProgress, Task_States.Waiting, Task_States.Deferred, Task_States.Completed],
|
|
503
|
+
[Task_States.Waiting]: [Task_States.NotStarted, Task_States.InProgress, Task_States.Waiting, Task_States.Deferred, Task_States.Completed],
|
|
504
|
+
[Task_States.Deferred]: [Task_States.NotStarted, Task_States.InProgress, Task_States.Waiting, Task_States.Deferred, Task_States.Completed],
|
|
517
505
|
[Task_States.Completed]: [Task_States.Closed, Task_States.InProgress],
|
|
518
506
|
[Task_States.Closed]: [Task_States.NotStarted, Task_States.InProgress, Task_States.Waiting, Task_States.Deferred, Task_States.Completed, Task_States.Closed]
|
|
519
507
|
}
|
|
@@ -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
|
-
|
|
106
|
-
|
|
107
|
-
|
|
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";
|
package/lib/helper/helpers.js
CHANGED
|
@@ -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.
|
|
3
|
+
"version": "6.20.0-dev2.53",
|
|
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.
|
|
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",
|