@topconsultnpm/sdkui-react-beta 6.16.12 → 6.16.13
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/choosers/TMGroupChooser.d.ts +7 -0
- package/lib/components/choosers/TMGroupChooser.js +37 -0
- package/lib/components/features/workflow/diagram/DiagramItemForm.js +78 -1
- package/lib/components/features/workflow/diagram/WorkitemRecipientsEditor.d.ts +27 -0
- package/lib/components/features/workflow/diagram/WorkitemRecipientsEditor.js +287 -0
- package/lib/components/features/workflow/diagram/interfaces.d.ts +2 -2
- package/lib/components/forms/TMChooserForm.js +2 -2
- package/lib/components/index.d.ts +1 -0
- package/lib/components/index.js +1 -0
- package/lib/helper/SDKUI_Localizator.d.ts +3 -0
- package/lib/helper/SDKUI_Localizator.js +30 -0
- package/package.json +2 -2
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { GroupDescriptor } from "@topconsultnpm/sdk-ts-beta";
|
|
2
|
+
import { ITMChooserFormProps } from "../../ts";
|
|
3
|
+
export declare const TMGroupChooserForm: React.FunctionComponent<ITMChooserFormProps<GroupDescriptor>>;
|
|
4
|
+
export declare const TMGroupIdViewer: React.FunctionComponent<{
|
|
5
|
+
groupID: number | undefined;
|
|
6
|
+
showIcon?: boolean;
|
|
7
|
+
}>;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { SDK_Localizator, SDK_Globals } from "@topconsultnpm/sdk-ts-beta";
|
|
3
|
+
import { SDKUI_Localizator, IconUserGroup } from "../../helper";
|
|
4
|
+
import TMSpinner from "../base/TMSpinner";
|
|
5
|
+
import TMChooserForm from "../forms/TMChooserForm";
|
|
6
|
+
import { useEffect, useState } from "react";
|
|
7
|
+
export const TMGroupChooserForm = (props) => {
|
|
8
|
+
const getItems = async () => {
|
|
9
|
+
TMSpinner.show({ description: `${SDKUI_Localizator.Loading} - ${SDK_Localizator.Groups} ...` });
|
|
10
|
+
let items = await SDK_Globals.tmSession?.NewGroupEngine().RetrieveAllAdminAsync();
|
|
11
|
+
TMSpinner.hide();
|
|
12
|
+
return items ?? [];
|
|
13
|
+
};
|
|
14
|
+
return (_jsx(TMChooserForm, { title: SDK_Localizator.Groups, allowMultipleSelection: props.allowMultipleSelection, width: props.width, height: props.height, manageUseLocalizedName: true, hasShowOnlySelectedItems: true, selectedIDs: props.selectedIDs, startWithShowOnlySelectedItems: false, cellRenderIcon: () => _jsx(IconUserGroup, { color: '#767676' }), dataSource: props.dataSource, getItems: getItems, onClose: props.onClose, onChoose: (IDs) => { props.onChoose?.(IDs); } }));
|
|
15
|
+
};
|
|
16
|
+
export const TMGroupIdViewer = (props) => {
|
|
17
|
+
const [group, setGroup] = useState(null);
|
|
18
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
19
|
+
useEffect(() => {
|
|
20
|
+
const fetchGroup = async () => {
|
|
21
|
+
if (props.groupID && props.groupID > 0) {
|
|
22
|
+
setIsLoading(true);
|
|
23
|
+
let fetchedGroup = await SDK_Globals.tmSession?.NewGroupEngine().RetrieveAdminAsync(props.groupID);
|
|
24
|
+
setGroup(fetchedGroup ?? null);
|
|
25
|
+
setIsLoading(false);
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
fetchGroup();
|
|
29
|
+
}, [props.groupID]);
|
|
30
|
+
if (isLoading) {
|
|
31
|
+
return _jsxs("span", { children: [SDKUI_Localizator.Loading, "..."] });
|
|
32
|
+
}
|
|
33
|
+
if (!group) {
|
|
34
|
+
return _jsx("span", { children: SDKUI_Localizator.NoDataToDisplay });
|
|
35
|
+
}
|
|
36
|
+
return _jsxs("span", { children: [props.showIcon && _jsx(IconUserGroup, { color: '#767676', style: { marginRight: '4px' } }), group.name] });
|
|
37
|
+
};
|
|
@@ -8,9 +8,10 @@ import TMMetadataChooser from '../../../choosers/TMMetadataChooser';
|
|
|
8
8
|
import TMButton from '../../../base/TMButton';
|
|
9
9
|
import styled from 'styled-components';
|
|
10
10
|
import TMQuerySummary from '../../../query/TMQuerySummary';
|
|
11
|
-
import { CultureIDs } from '@topconsultnpm/sdk-ts-beta';
|
|
11
|
+
import { CultureIDs, FromItem, SearchEngine } from '@topconsultnpm/sdk-ts-beta';
|
|
12
12
|
import TMLocalizedTextBox from '../../../editors/TMLocalizedTextBox';
|
|
13
13
|
import TMDataListItemPicker from '../../../choosers/TMDataListItemPicker';
|
|
14
|
+
import WorkitemRecipientsEditor from './WorkitemRecipientsEditor';
|
|
14
15
|
const FormContainer = styled.div `
|
|
15
16
|
display: flex;
|
|
16
17
|
flex-direction: column;
|
|
@@ -52,6 +53,11 @@ const DiagramItemForm = ({ itemToEdit, wf, onClose, onApply }) => {
|
|
|
52
53
|
width = '700px';
|
|
53
54
|
height = '230px';
|
|
54
55
|
break;
|
|
56
|
+
case DiagramItemTypes.Approval:
|
|
57
|
+
case DiagramItemTypes.DataEntry:
|
|
58
|
+
width = '700px';
|
|
59
|
+
height = '510px';
|
|
60
|
+
break;
|
|
55
61
|
default:
|
|
56
62
|
width = '50%';
|
|
57
63
|
height = '50%';
|
|
@@ -103,6 +109,30 @@ const DiagramItemForm = ({ itemToEdit, wf, onClose, onApply }) => {
|
|
|
103
109
|
StatusValue: selectedItem.value
|
|
104
110
|
}));
|
|
105
111
|
}, []);
|
|
112
|
+
const handleAllowZeroTosChange = useCallback((newValue) => {
|
|
113
|
+
setLocalItem(prevLocalItem => ({
|
|
114
|
+
...prevLocalItem,
|
|
115
|
+
AllowZeroTos: newValue
|
|
116
|
+
}));
|
|
117
|
+
}, []);
|
|
118
|
+
const handleTosChange = useCallback((newTos) => {
|
|
119
|
+
setLocalItem(prevLocalItem => ({
|
|
120
|
+
...prevLocalItem,
|
|
121
|
+
Tos: newTos
|
|
122
|
+
}));
|
|
123
|
+
}, []);
|
|
124
|
+
const handleSetRuleChange = useCallback((newRule) => {
|
|
125
|
+
setLocalItem(prevLocalItem => ({
|
|
126
|
+
...prevLocalItem,
|
|
127
|
+
SetRule: newRule
|
|
128
|
+
}));
|
|
129
|
+
}, []);
|
|
130
|
+
const handleSetRuleQDChange = useCallback((newQD) => {
|
|
131
|
+
setLocalItem(prevLocalItem => ({
|
|
132
|
+
...prevLocalItem,
|
|
133
|
+
QD: newQD
|
|
134
|
+
}));
|
|
135
|
+
}, []);
|
|
106
136
|
// Gestore per il salvataggio
|
|
107
137
|
const handleSave = () => {
|
|
108
138
|
onApply(localItem);
|
|
@@ -138,6 +168,36 @@ const DiagramItemForm = ({ itemToEdit, wf, onClose, onApply }) => {
|
|
|
138
168
|
return updatedItem;
|
|
139
169
|
});
|
|
140
170
|
}, []);
|
|
171
|
+
const handleLocalizedDescriptionChange = useCallback((lang, newValue) => {
|
|
172
|
+
setLocalItem(prevLocalItem => {
|
|
173
|
+
const updatedItem = { ...prevLocalItem };
|
|
174
|
+
// Aggiungi la logica per aggiornare il campo corretto
|
|
175
|
+
switch (lang) {
|
|
176
|
+
case CultureIDs.It_IT:
|
|
177
|
+
updatedItem.Description_IT = newValue;
|
|
178
|
+
break;
|
|
179
|
+
case CultureIDs.En_US:
|
|
180
|
+
updatedItem.Description_EN = newValue;
|
|
181
|
+
break;
|
|
182
|
+
case CultureIDs.Fr_FR:
|
|
183
|
+
updatedItem.Description_FR = newValue;
|
|
184
|
+
break;
|
|
185
|
+
case CultureIDs.Pt_PT:
|
|
186
|
+
updatedItem.Description_PT = newValue;
|
|
187
|
+
break;
|
|
188
|
+
case CultureIDs.Es_ES:
|
|
189
|
+
updatedItem.Description_ES = newValue;
|
|
190
|
+
break;
|
|
191
|
+
case CultureIDs.De_DE:
|
|
192
|
+
updatedItem.Description_DE = newValue;
|
|
193
|
+
break;
|
|
194
|
+
default:
|
|
195
|
+
updatedItem.Description = newValue;
|
|
196
|
+
break;
|
|
197
|
+
}
|
|
198
|
+
return updatedItem;
|
|
199
|
+
});
|
|
200
|
+
}, []);
|
|
141
201
|
// Function to render common elements like the name textbox
|
|
142
202
|
const renderCommonFields = () => {
|
|
143
203
|
if (localItem.Type !== DiagramItemTypes.Start && localItem.Type !== DiagramItemTypes.End && localItem.Type !== DiagramItemTypes.Exit && localItem.Type !== DiagramItemTypes.Status) {
|
|
@@ -157,6 +217,7 @@ const DiagramItemForm = ({ itemToEdit, wf, onClose, onApply }) => {
|
|
|
157
217
|
const renderExitFields = () => {
|
|
158
218
|
return (_jsx(TMCheckBox, { value: localItem.EndWFInstance ?? 0, label: SDKUI_Localizator.WorkflowEndInstance, isModifiedWhen: localItem.EndWFInstance !== localItemOrig.EndWFInstance, onValueChanged: handleEndWFInstanceChange }));
|
|
159
219
|
};
|
|
220
|
+
// Function to render Condition-specific fields
|
|
160
221
|
const renderConditionFields = () => {
|
|
161
222
|
return (_jsx(TMQuerySummary, { qd: localItem.QD, onValueChanged: handleQDChange }));
|
|
162
223
|
};
|
|
@@ -164,6 +225,18 @@ const DiagramItemForm = ({ itemToEdit, wf, onClose, onApply }) => {
|
|
|
164
225
|
const renderStatusFields = () => {
|
|
165
226
|
return (_jsx(TMDataListItemPicker, { dataListID: wf?.MStatusDLID, selectedValue: localItem.StatusValue, onItemSelect: handleStatusChange }));
|
|
166
227
|
};
|
|
228
|
+
// Function to render Approval-specific fields
|
|
229
|
+
const renderApprovalFields = () => {
|
|
230
|
+
const newQD = () => {
|
|
231
|
+
const qd = SearchEngine.NewQueryDescriptor();
|
|
232
|
+
qd.id = -1;
|
|
233
|
+
qd.from = new FromItem();
|
|
234
|
+
qd.from.tid = wf?.MTID;
|
|
235
|
+
return qd;
|
|
236
|
+
};
|
|
237
|
+
const qdForRecipientsEditor = localItem.QD ?? newQD();
|
|
238
|
+
return (_jsxs(_Fragment, { children: [_jsx(TMLocalizedTextBox, { label: SDKUI_Localizator.Description, value: localItem.Description, value_IT: localItem.Description_IT, value_EN: localItem.Description_EN, value_FR: localItem.Description_FR, value_PT: localItem.Description_PT, value_ES: localItem.Description_ES, value_DE: localItem.Description_DE, onValueChanged: handleLocalizedDescriptionChange }), _jsx(TMCheckBox, { value: localItem.AllowZeroTos ?? 0, label: SDKUI_Localizator.WorkflowAllowZeroTos, isModifiedWhen: localItem.AllowZeroTos !== localItemOrig.AllowZeroTos, onValueChanged: handleAllowZeroTosChange }), _jsx(WorkitemRecipientsEditor, { tos: localItem.Tos ?? '', mTID: wf?.MTID, qd: qdForRecipientsEditor, setRule: localItem.SetRule, onTosChange: handleTosChange, onSetRuleChange: handleSetRuleChange, onQDChange: handleSetRuleQDChange })] }));
|
|
239
|
+
};
|
|
167
240
|
const renderForm = () => {
|
|
168
241
|
let specificFields;
|
|
169
242
|
switch (localItem.Type) {
|
|
@@ -182,6 +255,10 @@ const DiagramItemForm = ({ itemToEdit, wf, onClose, onApply }) => {
|
|
|
182
255
|
case DiagramItemTypes.Status:
|
|
183
256
|
specificFields = renderStatusFields();
|
|
184
257
|
break;
|
|
258
|
+
case DiagramItemTypes.Approval:
|
|
259
|
+
case DiagramItemTypes.DataEntry:
|
|
260
|
+
specificFields = renderApprovalFields();
|
|
261
|
+
break;
|
|
185
262
|
default:
|
|
186
263
|
specificFields = null;
|
|
187
264
|
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { QueryDescriptor, WorkItemSetRules } from '@topconsultnpm/sdk-ts-beta';
|
|
3
|
+
export declare enum WorkItemActorTypes {
|
|
4
|
+
None = 0,
|
|
5
|
+
UID = 1,
|
|
6
|
+
GID = 2,
|
|
7
|
+
MID = 3,
|
|
8
|
+
QID = 4,
|
|
9
|
+
FXID = 5,
|
|
10
|
+
STID = 6
|
|
11
|
+
}
|
|
12
|
+
export interface WorkItemActor {
|
|
13
|
+
ActorType: WorkItemActorTypes;
|
|
14
|
+
ActorID: string;
|
|
15
|
+
Or: number;
|
|
16
|
+
}
|
|
17
|
+
interface WorkitemRecipientsEditorProps {
|
|
18
|
+
tos: string;
|
|
19
|
+
setRule: WorkItemSetRules | undefined;
|
|
20
|
+
qd: QueryDescriptor | undefined;
|
|
21
|
+
mTID: number | undefined;
|
|
22
|
+
onTosChange: (newTos: string) => void;
|
|
23
|
+
onSetRuleChange: (newRule: WorkItemSetRules) => void;
|
|
24
|
+
onQDChange: (newQD: QueryDescriptor | undefined) => void;
|
|
25
|
+
}
|
|
26
|
+
declare const WorkitemRecipientsEditor: React.FC<WorkitemRecipientsEditorProps>;
|
|
27
|
+
export default WorkitemRecipientsEditor;
|
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useMemo, useState } from 'react';
|
|
3
|
+
import styled from 'styled-components';
|
|
4
|
+
import TMButton from '../../../base/TMButton';
|
|
5
|
+
import { IconAdd, IconMetadata, IconSavedQuery, IconUser, IconUserGroup, SDKUI_Localizator } from '../../../../helper'; // Importa anche IconAdd
|
|
6
|
+
import { TMUserChooserForm, TMUserIdViewer } from '../../../choosers/TMUserChooser';
|
|
7
|
+
import { TMGroupChooserForm, TMGroupIdViewer } from '../../../choosers/TMGroupChooser';
|
|
8
|
+
import { SDK_Globals, SDK_Localizator, WorkItemSetRules } from '@topconsultnpm/sdk-ts-beta';
|
|
9
|
+
import { TMMetadataChooserForm } from '../../../choosers/TMMetadataChooser';
|
|
10
|
+
import { FormModes } from '../../../../ts';
|
|
11
|
+
import TMDropDown from '../../../editors/TMDropDown';
|
|
12
|
+
import { TMMidViewer } from '../../../viewers/TMMidViewer';
|
|
13
|
+
import TMQueryEditor from '../../../query/TMQueryEditor';
|
|
14
|
+
import TMModal from '../../../base/TMModal';
|
|
15
|
+
import { ButtonNames, TMMessageBoxManager } from '../../../base/TMPopUp';
|
|
16
|
+
import { useOutsideClick } from '../../../../hooks/useOutsideClick';
|
|
17
|
+
export var WorkItemActorTypes;
|
|
18
|
+
(function (WorkItemActorTypes) {
|
|
19
|
+
WorkItemActorTypes[WorkItemActorTypes["None"] = 0] = "None";
|
|
20
|
+
WorkItemActorTypes[WorkItemActorTypes["UID"] = 1] = "UID";
|
|
21
|
+
WorkItemActorTypes[WorkItemActorTypes["GID"] = 2] = "GID";
|
|
22
|
+
WorkItemActorTypes[WorkItemActorTypes["MID"] = 3] = "MID";
|
|
23
|
+
WorkItemActorTypes[WorkItemActorTypes["QID"] = 4] = "QID";
|
|
24
|
+
WorkItemActorTypes[WorkItemActorTypes["FXID"] = 5] = "FXID";
|
|
25
|
+
WorkItemActorTypes[WorkItemActorTypes["STID"] = 6] = "STID";
|
|
26
|
+
})(WorkItemActorTypes || (WorkItemActorTypes = {}));
|
|
27
|
+
const RecipientsContainer = styled.div `
|
|
28
|
+
display: flex;
|
|
29
|
+
gap: 20px;
|
|
30
|
+
/* padding: 10px 0px; */
|
|
31
|
+
flex-wrap: wrap;
|
|
32
|
+
`;
|
|
33
|
+
const RecipientsColumn = styled.div `
|
|
34
|
+
flex: 1;
|
|
35
|
+
border: 1px solid #ccc;
|
|
36
|
+
border-radius: 5px;
|
|
37
|
+
padding: 10px;
|
|
38
|
+
min-width: 300px;
|
|
39
|
+
position: relative;
|
|
40
|
+
`;
|
|
41
|
+
const HeaderContainer = styled.div `
|
|
42
|
+
display: flex;
|
|
43
|
+
justify-content: space-between;
|
|
44
|
+
align-items: center;
|
|
45
|
+
position: relative;
|
|
46
|
+
margin-bottom: 10px;
|
|
47
|
+
`;
|
|
48
|
+
const RecipientItem = styled.div `
|
|
49
|
+
display: flex;
|
|
50
|
+
align-items: center;
|
|
51
|
+
margin-bottom: 5px;
|
|
52
|
+
gap: 5px;
|
|
53
|
+
`;
|
|
54
|
+
const RecipientRemoveButton = styled.span `
|
|
55
|
+
cursor: pointer;
|
|
56
|
+
color: #c00;
|
|
57
|
+
font-weight: bold;
|
|
58
|
+
`;
|
|
59
|
+
const FloatingMenu = styled.div `
|
|
60
|
+
position: absolute;
|
|
61
|
+
top: 100%; /* Si apre sotto il bottone */
|
|
62
|
+
right: 0; /* Allinea il bordo destro del menu con quello del genitore */
|
|
63
|
+
background-color: white;
|
|
64
|
+
border: 1px solid #ccc;
|
|
65
|
+
border-radius: 5px;
|
|
66
|
+
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
|
|
67
|
+
z-index: 10;
|
|
68
|
+
display: flex;
|
|
69
|
+
flex-direction: column; /* Disposizione verticale */
|
|
70
|
+
gap: 5px;
|
|
71
|
+
padding: 5px;
|
|
72
|
+
min-width: 150px;
|
|
73
|
+
transform: translateY(5px);
|
|
74
|
+
align-items: center; /* Centra i pulsanti orizzontalmente */
|
|
75
|
+
`;
|
|
76
|
+
const FloatingMenuButton = styled(TMButton) `
|
|
77
|
+
width: 100%; /* Rende i pulsanti interni larghi quanto il menu */
|
|
78
|
+
`;
|
|
79
|
+
const WorkitemRecipientsEditor = ({ tos, setRule, qd, mTID, onTosChange, onQDChange, onSetRuleChange }) => {
|
|
80
|
+
const [isAndMenuOpen, setIsAndMenuOpen] = useState(false);
|
|
81
|
+
const [isOrMenuOpen, setIsOrMenuOpen] = useState(false);
|
|
82
|
+
const [showUserChooser, setShowUserChooser] = useState(false);
|
|
83
|
+
const [showGroupChooser, setShowGroupChooser] = useState(false);
|
|
84
|
+
// const [showFxChartChooser, setShowFxChartChooser] = useState(false);
|
|
85
|
+
const [showMetadataChooser, setShowMetadataChooser] = useState(false);
|
|
86
|
+
const [showQdEditor, setShowQdEditor] = useState(false);
|
|
87
|
+
const andMenuRef = useOutsideClick(() => {
|
|
88
|
+
setIsAndMenuOpen(false);
|
|
89
|
+
});
|
|
90
|
+
// Applica il custom hook per il menu OR
|
|
91
|
+
const orMenuRef = useOutsideClick(() => {
|
|
92
|
+
setIsOrMenuOpen(false);
|
|
93
|
+
});
|
|
94
|
+
// useEffect(() => {
|
|
95
|
+
// const handleClickOutside = (event: MouseEvent) => {
|
|
96
|
+
// // Controlla il menu AND
|
|
97
|
+
// if (isAndMenuOpen && andMenuRef.current && !andMenuRef.current.contains(event.target as Node) && andButtonRef.current && !andButtonRef.current.contains(event.target as Node)) {
|
|
98
|
+
// setIsAndMenuOpen(false);
|
|
99
|
+
// }
|
|
100
|
+
// // Controlla il menu OR
|
|
101
|
+
// if (isOrMenuOpen && orMenuRef.current && !orMenuRef.current.contains(event.target as Node) && orButtonRef.current && !orButtonRef.current.contains(event.target as Node)) {
|
|
102
|
+
// setIsOrMenuOpen(false);
|
|
103
|
+
// }
|
|
104
|
+
// };
|
|
105
|
+
// // Aggiungi l'event listener se un menu è aperto
|
|
106
|
+
// if (isAndMenuOpen || isOrMenuOpen) {
|
|
107
|
+
// document.addEventListener('mousedown', handleClickOutside);
|
|
108
|
+
// }
|
|
109
|
+
// // Pulisci l'event listener
|
|
110
|
+
// return () => {
|
|
111
|
+
// document.removeEventListener('mousedown', handleClickOutside);
|
|
112
|
+
// };
|
|
113
|
+
// }, [isAndMenuOpen, isOrMenuOpen]);
|
|
114
|
+
// useEffect(() => {
|
|
115
|
+
// const handleKeyDown = (event: KeyboardEvent) => {
|
|
116
|
+
// if (event.key === 'Escape') {
|
|
117
|
+
// if (isAndMenuOpen) {
|
|
118
|
+
// setIsAndMenuOpen(false);
|
|
119
|
+
// event.stopPropagation(); // Ferma la propagazione per non chiudere anche il modale
|
|
120
|
+
// } else if (isOrMenuOpen) {
|
|
121
|
+
// setIsOrMenuOpen(false);
|
|
122
|
+
// event.stopPropagation(); // Ferma la propagazione per non chiudere anche il modale
|
|
123
|
+
// }
|
|
124
|
+
// }
|
|
125
|
+
// };
|
|
126
|
+
// if (isAndMenuOpen || isOrMenuOpen) {
|
|
127
|
+
// document.addEventListener('keydown', handleKeyDown);
|
|
128
|
+
// }
|
|
129
|
+
// return () => {
|
|
130
|
+
// document.removeEventListener('keydown', handleKeyDown);
|
|
131
|
+
// };
|
|
132
|
+
// }, [isAndMenuOpen, isOrMenuOpen]);
|
|
133
|
+
const parseTos = (tosString) => {
|
|
134
|
+
const andRecipients = [];
|
|
135
|
+
const orRecipients = [];
|
|
136
|
+
if (!tosString)
|
|
137
|
+
return { andRecipients, orRecipients };
|
|
138
|
+
const tokens1 = tosString.split(';');
|
|
139
|
+
for (const t of tokens1) {
|
|
140
|
+
const t1 = t.trim();
|
|
141
|
+
if (!t1)
|
|
142
|
+
continue;
|
|
143
|
+
const tokens2 = t1.split('|');
|
|
144
|
+
if (tokens2.length < 2)
|
|
145
|
+
continue;
|
|
146
|
+
const actorTypeStr = tokens2[0].toUpperCase();
|
|
147
|
+
const actorType = WorkItemActorTypes[actorTypeStr];
|
|
148
|
+
const actorID = tokens2[1];
|
|
149
|
+
const or = tokens2.length === 3 ? parseInt(tokens2[2], 10) : 0;
|
|
150
|
+
if (actorType !== undefined) {
|
|
151
|
+
const actor = {
|
|
152
|
+
ActorType: actorType,
|
|
153
|
+
ActorID: actorID,
|
|
154
|
+
Or: or,
|
|
155
|
+
};
|
|
156
|
+
if (or === 0) {
|
|
157
|
+
andRecipients.push(actor);
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
orRecipients.push(actor);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
return { andRecipients, orRecipients };
|
|
165
|
+
};
|
|
166
|
+
const { andRecipients, orRecipients } = useMemo(() => parseTos(tos), [tos]);
|
|
167
|
+
const actorsToTos = (actors) => {
|
|
168
|
+
return actors.map(actor => `${WorkItemActorTypes[actor.ActorType]}|${actor.ActorID}|${actor.Or}`).join(';');
|
|
169
|
+
};
|
|
170
|
+
const handleRemoveRecipient = (recipientToRemove) => {
|
|
171
|
+
const allRecipients = [...andRecipients, ...orRecipients];
|
|
172
|
+
const updatedRecipients = allRecipients.filter(r => r !== recipientToRemove);
|
|
173
|
+
const newTos = actorsToTos(updatedRecipients);
|
|
174
|
+
onTosChange(newTos);
|
|
175
|
+
};
|
|
176
|
+
const handleAddRecipients = (newRecipients) => {
|
|
177
|
+
const allRecipients = [...andRecipients, ...orRecipients];
|
|
178
|
+
const updatedRecipients = [...allRecipients, ...newRecipients]; // Aggiunge tutti i nuovi destinatari
|
|
179
|
+
const newTos = actorsToTos(updatedRecipients);
|
|
180
|
+
onTosChange(newTos);
|
|
181
|
+
setIsAndMenuOpen(false);
|
|
182
|
+
setIsOrMenuOpen(false);
|
|
183
|
+
setShowUserChooser(false);
|
|
184
|
+
setShowQdEditor(false);
|
|
185
|
+
};
|
|
186
|
+
const handleUserChosen = (IDs, orValue) => {
|
|
187
|
+
if (IDs && IDs.length > 0) {
|
|
188
|
+
const recipientsToAdd = IDs.map(id => ({
|
|
189
|
+
ActorType: WorkItemActorTypes.UID,
|
|
190
|
+
ActorID: id.toString(),
|
|
191
|
+
Or: orValue
|
|
192
|
+
}));
|
|
193
|
+
handleAddRecipients(recipientsToAdd);
|
|
194
|
+
}
|
|
195
|
+
setShowUserChooser(false);
|
|
196
|
+
};
|
|
197
|
+
const handleGroupChosen = (IDs, orValue) => {
|
|
198
|
+
if (IDs && IDs.length > 0) {
|
|
199
|
+
const recipientsToAdd = IDs.map(id => ({
|
|
200
|
+
ActorType: WorkItemActorTypes.GID,
|
|
201
|
+
ActorID: id.toString(),
|
|
202
|
+
Or: orValue
|
|
203
|
+
}));
|
|
204
|
+
handleAddRecipients(recipientsToAdd);
|
|
205
|
+
}
|
|
206
|
+
setShowGroupChooser(false);
|
|
207
|
+
};
|
|
208
|
+
const handleMetadataChosen = (IDs, orValue) => {
|
|
209
|
+
if (IDs && IDs.length > 0) {
|
|
210
|
+
const recipientsToAdd = IDs.map(id => ({
|
|
211
|
+
ActorType: WorkItemActorTypes.MID,
|
|
212
|
+
ActorID: id.mid ? id.mid.toString() : '0',
|
|
213
|
+
Or: orValue
|
|
214
|
+
}));
|
|
215
|
+
handleAddRecipients(recipientsToAdd);
|
|
216
|
+
}
|
|
217
|
+
setShowMetadataChooser(false);
|
|
218
|
+
};
|
|
219
|
+
const handleQdChosen = (newQd, orValue) => {
|
|
220
|
+
if (newQd) {
|
|
221
|
+
// 1. Unisci tutti i destinatari e filtra per rimuovere eventuali QID esistenti.
|
|
222
|
+
const allRecipients = [...andRecipients, ...orRecipients];
|
|
223
|
+
const updatedRecipients = allRecipients.filter(r => r.ActorType !== WorkItemActorTypes.QID);
|
|
224
|
+
// 2. Crea il nuovo destinatario QID
|
|
225
|
+
const recipientToAdd = {
|
|
226
|
+
ActorType: WorkItemActorTypes.QID,
|
|
227
|
+
ActorID: newQd.id ? newQd.id.toString() : '-1',
|
|
228
|
+
Or: orValue
|
|
229
|
+
};
|
|
230
|
+
// 3. Aggiungi il nuovo destinatario alla lista
|
|
231
|
+
updatedRecipients.push(recipientToAdd);
|
|
232
|
+
// 4. Converte la lista aggiornata in una stringa e aggiorna lo stato.
|
|
233
|
+
const newTos = actorsToTos(updatedRecipients);
|
|
234
|
+
onTosChange(newTos);
|
|
235
|
+
onQDChange(newQd);
|
|
236
|
+
}
|
|
237
|
+
setIsAndMenuOpen(false);
|
|
238
|
+
setIsOrMenuOpen(false);
|
|
239
|
+
setShowQdEditor(false);
|
|
240
|
+
};
|
|
241
|
+
const renderActorViewer = (recipient) => {
|
|
242
|
+
const actorId = parseInt(recipient.ActorID, 10);
|
|
243
|
+
switch (recipient.ActorType) {
|
|
244
|
+
case WorkItemActorTypes.UID:
|
|
245
|
+
return _jsx(TMUserIdViewer, { userId: actorId, showIcon: true });
|
|
246
|
+
case WorkItemActorTypes.GID:
|
|
247
|
+
return _jsx(TMGroupIdViewer, { groupID: actorId, showIcon: true });
|
|
248
|
+
case WorkItemActorTypes.MID:
|
|
249
|
+
return _jsx(TMMidViewer, { tid_mid: { tid: mTID, mid: actorId }, showIcon: true });
|
|
250
|
+
case WorkItemActorTypes.QID:
|
|
251
|
+
return (_jsx("span", { onDoubleClick: openQdEditor, style: { cursor: 'pointer' }, children: SDKUI_Localizator.WorkflowGetRecipientsFromQuery }));
|
|
252
|
+
default:
|
|
253
|
+
return _jsxs("span", { children: [WorkItemActorTypes[recipient.ActorType], ": ", recipient.ActorID] });
|
|
254
|
+
}
|
|
255
|
+
};
|
|
256
|
+
const openQdEditor = () => {
|
|
257
|
+
const filteredRecipients = [...andRecipients, ...orRecipients].filter(r => r.ActorType === WorkItemActorTypes.QID);
|
|
258
|
+
if (filteredRecipients.length > 0) {
|
|
259
|
+
TMMessageBoxManager.show({
|
|
260
|
+
buttons: [ButtonNames.OK],
|
|
261
|
+
title: SDK_Globals.appModule,
|
|
262
|
+
message: "Definire solo una query per i destinatari"
|
|
263
|
+
});
|
|
264
|
+
setIsAndMenuOpen(false);
|
|
265
|
+
setIsOrMenuOpen(false);
|
|
266
|
+
return;
|
|
267
|
+
}
|
|
268
|
+
setShowQdEditor(true);
|
|
269
|
+
};
|
|
270
|
+
const renderRecipientList = (recipients, title, orValue) => (_jsxs(RecipientsColumn, { children: [_jsxs(HeaderContainer, { children: [_jsx("p", { style: { fontWeight: 600 }, children: title }), _jsx(TMButton, { btnStyle: 'icon', caption: 'Aggiungi destinatario', icon: _jsx(IconAdd, {}), onClick: () => {
|
|
271
|
+
if (orValue === 0) {
|
|
272
|
+
setIsAndMenuOpen(prevState => !prevState);
|
|
273
|
+
setIsOrMenuOpen(false);
|
|
274
|
+
}
|
|
275
|
+
else {
|
|
276
|
+
setIsOrMenuOpen(prevState => !prevState);
|
|
277
|
+
setIsAndMenuOpen(false);
|
|
278
|
+
}
|
|
279
|
+
} }), (orValue === 0 && isAndMenuOpen) && (_jsxs(FloatingMenu, { ref: andMenuRef, children: [_jsx(FloatingMenuButton, { btnStyle: 'text', icon: _jsx(IconUser, {}), caption: SDK_Localizator.Users, onClick: () => setShowUserChooser(true) }), _jsx(FloatingMenuButton, { btnStyle: 'text', icon: _jsx(IconUserGroup, {}), caption: SDK_Localizator.Groups, onClick: () => setShowGroupChooser(true) }), _jsx(FloatingMenuButton, { btnStyle: 'text', icon: _jsx(IconMetadata, {}), caption: SDK_Localizator.Metadata, onClick: () => setShowMetadataChooser(true) }), _jsx(FloatingMenuButton, { btnStyle: 'text', icon: _jsx(IconSavedQuery, {}), caption: SDK_Localizator.Query, onClick: openQdEditor })] })), (orValue === 1 && isOrMenuOpen) && (_jsxs(FloatingMenu, { ref: orMenuRef, children: [_jsx(FloatingMenuButton, { btnStyle: 'text', icon: _jsx(IconUser, {}), caption: SDK_Localizator.Users, onClick: () => setShowUserChooser(true) }), _jsx(FloatingMenuButton, { btnStyle: 'text', icon: _jsx(IconUserGroup, {}), caption: SDK_Localizator.Groups, onClick: () => setShowGroupChooser(true) }), _jsx(FloatingMenuButton, { btnStyle: 'text', icon: _jsx(IconMetadata, {}), caption: SDK_Localizator.Metadata, onClick: () => setShowMetadataChooser(true) }), _jsx(FloatingMenuButton, { btnStyle: 'text', icon: _jsx(IconSavedQuery, {}), caption: SDK_Localizator.Query, onClick: openQdEditor })] }))] }), _jsx("div", { style: { height: '150px', overflowY: 'auto' }, children: recipients.map((recipient, index) => (_jsxs(RecipientItem, { children: [_jsx(RecipientRemoveButton, { onClick: () => handleRemoveRecipient(recipient), children: "\u274C" }), renderActorViewer(recipient)] }, index))) })] }));
|
|
280
|
+
const SET_RULE_DATASOURCE = [
|
|
281
|
+
{ value: WorkItemSetRules.Ands_AND_Ors, display: "Ands_AND_Ors" },
|
|
282
|
+
{ value: WorkItemSetRules.Ands_OR_Ors, display: "Ands_OR_Ors" }
|
|
283
|
+
];
|
|
284
|
+
return (_jsxs("div", { children: [_jsxs(RecipientsContainer, { children: [renderRecipientList(andRecipients, 'Destinatari in AND', 0), renderRecipientList(orRecipients, 'Destinatari in OR', 1)] }), _jsx("div", { style: { display: 'flex', justifyContent: 'center' }, children: _jsx(TMDropDown, { label: SDKUI_Localizator.WorkflowRecipientSetRule, width: '230px', dataSource: SET_RULE_DATASOURCE, value: setRule, onValueChanged: (e) => { onSetRuleChange?.(e.target.value); } }) }), showUserChooser && _jsx(TMUserChooserForm, { allowMultipleSelection: true, allowSorting: true, onClose: () => setShowUserChooser(false), onChoose: (IDs) => handleUserChosen(IDs, isAndMenuOpen ? 0 : 1) }), showGroupChooser && _jsx(TMGroupChooserForm, { allowMultipleSelection: true, allowSorting: true, onClose: () => setShowGroupChooser(false), onChoose: (IDs) => handleGroupChosen(IDs, isAndMenuOpen ? 0 : 1) }), showMetadataChooser && mTID && _jsx(TMMetadataChooserForm, { allowMultipleSelection: true, allowSorting: true, tids: [mTID], onClose: () => setShowMetadataChooser(false), onChoose: (IDs) => handleMetadataChosen(IDs, isAndMenuOpen ? 0 : 1) }), showQdEditor &&
|
|
285
|
+
_jsx(TMModal, { title: SDKUI_Localizator.QueryDefine, children: _jsx(TMQueryEditor, { inputData: qd, formMode: FormModes.Update, onApplied: (newQd) => handleQdChosen(newQd, isAndMenuOpen ? 0 : 1), onClose: () => { setShowQdEditor(false); } }) })] }));
|
|
286
|
+
};
|
|
287
|
+
export default WorkitemRecipientsEditor;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { QueryDescriptor, WorkItemStatus } from "@topconsultnpm/sdk-ts-beta";
|
|
1
|
+
import { QueryDescriptor, WorkItemSetRules, WorkItemStatus } from "@topconsultnpm/sdk-ts-beta";
|
|
2
2
|
export declare enum DiagramItemTypes {
|
|
3
3
|
None = 0,
|
|
4
4
|
Start = 1,
|
|
@@ -55,7 +55,7 @@ export interface DiagramItem {
|
|
|
55
55
|
RegisterPost?: boolean;
|
|
56
56
|
AllowZeroTos?: boolean;
|
|
57
57
|
Tos?: string;
|
|
58
|
-
SetRule?:
|
|
58
|
+
SetRule?: WorkItemSetRules;
|
|
59
59
|
StartAfterArchive?: number;
|
|
60
60
|
StartAfterUpdate?: number;
|
|
61
61
|
StartAfterUpdateMIDs?: number[];
|
|
@@ -86,8 +86,8 @@ const TMChooserForm = ({ children, title, allowMultipleSelection = false, allowA
|
|
|
86
86
|
...summaryItems ?? {}
|
|
87
87
|
});
|
|
88
88
|
}, [manageUseLocalizedName, summaryItems]);
|
|
89
|
-
return (_jsx(TMModal, { title: renderTitle(), width: width ?? '550px', height: height ?? '600px', toolbar: _jsx(ToolbarButtons, {}), onClose: onClose, children:
|
|
90
|
-
filteredItems.length > 0
|
|
89
|
+
return (_jsx(TMModal, { title: renderTitle(), width: width ?? '550px', height: height ?? '600px', toolbar: _jsx(ToolbarButtons, {}), onClose: onClose, children: children ??
|
|
90
|
+
filteredItems.length > 0
|
|
91
91
|
? _jsx(TMDataGrid, { dataSource: filteredItems, keyExpr: keyName, dataColumns: dataColumns, focusedRowKey: focusedRowKey, selectedRowKeys: selectedRowKeys, searchPanelFocusStarting: true, headerFilter: { visible: true }, selection: { mode: allowMultipleSelection ? 'multiple' : 'single', showCheckBoxesMode: 'always', selectAllMode: 'allPages' }, grouping: allowGrouping ? { autoExpandAll: false, expandMode: 'rowClick' } : undefined, summary: customSummary, onFocusedRowChanged: handleFocusedRowChange, onSelectionChanged: handleSelectionChanged, onRowDblClick: handleRowDoubleClick })
|
|
92
92
|
: _jsx(TMLayoutContainer, { gap: 30, alignItems: 'center', justifyContent: 'center', children: _jsx(TMLayoutItem, { children: _jsx("p", { style: { height: "100%", color: TMColors.primaryColor, fontSize: "1.5rem", display: 'flex', alignItems: 'center', justifyContent: 'center' }, children: SDKUI_Localizator.NoDataToDisplay }) }) }) }));
|
|
93
93
|
};
|
|
@@ -44,6 +44,7 @@ export * from './choosers/TMDistinctValues';
|
|
|
44
44
|
export * from './choosers/TMDiskChooser';
|
|
45
45
|
export * from './choosers/TMDynDataListItemChooser';
|
|
46
46
|
export * from './choosers/TMDcmtTypeChooser';
|
|
47
|
+
export * from './choosers/TMGroupChooser';
|
|
47
48
|
export * from './choosers/TMInvoiceRetrieveFormats';
|
|
48
49
|
export * from './choosers/TMMetadataChooser';
|
|
49
50
|
export * from './choosers/TMOrderRetrieveFormats';
|
package/lib/components/index.js
CHANGED
|
@@ -47,6 +47,7 @@ export * from './choosers/TMDistinctValues';
|
|
|
47
47
|
export * from './choosers/TMDiskChooser';
|
|
48
48
|
export * from './choosers/TMDynDataListItemChooser';
|
|
49
49
|
export * from './choosers/TMDcmtTypeChooser';
|
|
50
|
+
export * from './choosers/TMGroupChooser';
|
|
50
51
|
export * from './choosers/TMInvoiceRetrieveFormats';
|
|
51
52
|
export * from './choosers/TMMetadataChooser';
|
|
52
53
|
export * from './choosers/TMOrderRetrieveFormats';
|
|
@@ -530,6 +530,7 @@ export declare class SDKUI_Localizator {
|
|
|
530
530
|
static get Warning(): "Warnung" | "Warning" | "advertencia" | "avertissement" | "aviso" | "Avviso";
|
|
531
531
|
static get Welcome(): "Willkommen" | "Welcome" | "Bienvenido" | "Bienvenue" | "Bem-vindo" | "Benvenuto";
|
|
532
532
|
static get WelcomeTo(): "Willkommen bei {{0}}" | "Welcome to {{0}}" | "Bienvenido a {{0}}" | "Bienvenue sur {{0}}" | "Bem-vindo à {{0}}" | "Benvenuto su {{0}}";
|
|
533
|
+
static get WorkflowAllowZeroTos(): "0 Empfänger zulassen" | "Allow 0 recipients" | "Permitir 0 destinatarios" | "Autoriser 0 destinataires" | "Permitir 0 destinatários" | "Consenti 0 destinatari";
|
|
533
534
|
static get WorkflowApproval(): "Workflow-Genehmigung" | "Workflow approval" | "Aprobación de flujo de trabajo" | "Approbation de workflow" | "Aprovação de fluxo de trabalho" | "Approvazione workflow";
|
|
534
535
|
static get WorkflowDiagramMissingOrInvalid(): "Diagramm fehlt oder ist ungültig" | "Diagram missing or invalid" | "Diagrama no presente o no válido" | "Schéma manquant ou invalide" | "Diagrama ausente ou inválido" | "Diagramma non presente o non valido";
|
|
535
536
|
static get WorkflowEndInstance(): "Instanz beenden" | "End instance" | "Finalizar instancia" | "Termine l'instance" | "Pare a instância" | "Termina istanza";
|
|
@@ -537,6 +538,8 @@ export declare class SDKUI_Localizator {
|
|
|
537
538
|
static get WorkflowNoInstances(): "Keine Instanzen aktiv" | "No running instances" | "Ninguna instancia en curso" | "Aucune instance en cours" | "Nenhuma instância em execução" | "Nessuna istanza in corso";
|
|
538
539
|
static get WorkflowStartAfterArchive(): "Starten Sie die Instanz beim Archivieren des Dokuments" | "Start the instance when you archive the document" | "Iniciar la instancia cuando se almacena el documento" | "Démarrer l'instance lorsque vous archivez le document" | "Inicie a instância quando você fizer check in no documento" | "Avviare l'istanza quando si archivia il documento";
|
|
539
540
|
static get WorkflowStartAfterUpdate(): "Starten Sie die Instanz beim Bearbeiten der folgenden Methadaten" | "Start the instance when updating the following metadata" | "Iniciar la instancia cuando se modifican los siguientes metadatos" | "Démarrer l'instance lors de l'édition des métadonnées suivantes" | "Inicie a instância ao editar os seguintes metadados" | "Avviare l'istanza quando si modificano i seguenti metadati";
|
|
541
|
+
static get WorkflowGetRecipientsFromQuery(): "Ermitteln Sie die Empfänger aus der ABFRAGE" | "Get the recipients from QUERY" | "Obtenga los destinatarios de QUERY" | "Obtenez les destinataires de QUERY" | "Obtenha os destinatários de QUERY" | "Ottieni i destinatari da QUERY";
|
|
542
|
+
static get WorkflowRecipientSetRule(): "Verwalten Sie Empfänger mit der folgenden Regel" | "Manage recipients with the following rule" | "Gestionar los destinatarios con la siguiente regla" | "Gérer les destinataires avec la règle suivante" | "Gerenciar destinatários com a seguinte regra" | "Gestisci i destinatari con la seguente regola";
|
|
540
543
|
static get WorkGroup(): "Arbeitsgruppe" | "Work Group" | "Grupo de Trabajo" | "Groupe de travail" | "Grupo de Trabalho" | "Gruppo di lavoro";
|
|
541
544
|
static get WorkgroupOperations(): string;
|
|
542
545
|
static get WorkingGroups(): "Arbeitsgruppen" | "Work groups" | "Grupos de trabajo" | "Groupes de travail" | "Grupos de trabalho" | "Gruppi di lavoro";
|
|
@@ -5265,6 +5265,16 @@ export class SDKUI_Localizator {
|
|
|
5265
5265
|
default: return "Benvenuto su {{0}}";
|
|
5266
5266
|
}
|
|
5267
5267
|
}
|
|
5268
|
+
static get WorkflowAllowZeroTos() {
|
|
5269
|
+
switch (this._cultureID) {
|
|
5270
|
+
case CultureIDs.De_DE: return "0 Empfänger zulassen";
|
|
5271
|
+
case CultureIDs.En_US: return "Allow 0 recipients";
|
|
5272
|
+
case CultureIDs.Es_ES: return "Permitir 0 destinatarios";
|
|
5273
|
+
case CultureIDs.Fr_FR: return "Autoriser 0 destinataires";
|
|
5274
|
+
case CultureIDs.Pt_PT: return "Permitir 0 destinatários";
|
|
5275
|
+
default: return "Consenti 0 destinatari";
|
|
5276
|
+
}
|
|
5277
|
+
}
|
|
5268
5278
|
static get WorkflowApproval() {
|
|
5269
5279
|
switch (this._cultureID) {
|
|
5270
5280
|
case CultureIDs.De_DE: return "Workflow-Genehmigung";
|
|
@@ -5335,6 +5345,26 @@ export class SDKUI_Localizator {
|
|
|
5335
5345
|
default: return "Avviare l'istanza quando si modificano i seguenti metadati";
|
|
5336
5346
|
}
|
|
5337
5347
|
}
|
|
5348
|
+
static get WorkflowGetRecipientsFromQuery() {
|
|
5349
|
+
switch (this._cultureID) {
|
|
5350
|
+
case CultureIDs.De_DE: return "Ermitteln Sie die Empfänger aus der ABFRAGE";
|
|
5351
|
+
case CultureIDs.En_US: return "Get the recipients from QUERY";
|
|
5352
|
+
case CultureIDs.Es_ES: return "Obtenga los destinatarios de QUERY";
|
|
5353
|
+
case CultureIDs.Fr_FR: return "Obtenez les destinataires de QUERY";
|
|
5354
|
+
case CultureIDs.Pt_PT: return "Obtenha os destinatários de QUERY";
|
|
5355
|
+
default: return "Ottieni i destinatari da QUERY";
|
|
5356
|
+
}
|
|
5357
|
+
}
|
|
5358
|
+
static get WorkflowRecipientSetRule() {
|
|
5359
|
+
switch (this._cultureID) {
|
|
5360
|
+
case CultureIDs.De_DE: return "Verwalten Sie Empfänger mit der folgenden Regel";
|
|
5361
|
+
case CultureIDs.En_US: return "Manage recipients with the following rule";
|
|
5362
|
+
case CultureIDs.Es_ES: return "Gestionar los destinatarios con la siguiente regla";
|
|
5363
|
+
case CultureIDs.Fr_FR: return "Gérer les destinataires avec la règle suivante";
|
|
5364
|
+
case CultureIDs.Pt_PT: return "Gerenciar destinatários com a seguinte regra";
|
|
5365
|
+
default: return "Gestisci i destinatari con la seguente regola";
|
|
5366
|
+
}
|
|
5367
|
+
}
|
|
5338
5368
|
static get WorkGroup() {
|
|
5339
5369
|
switch (this._cultureID) {
|
|
5340
5370
|
case CultureIDs.De_DE: return "Arbeitsgruppe";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@topconsultnpm/sdkui-react-beta",
|
|
3
|
-
"version": "6.16.
|
|
3
|
+
"version": "6.16.13",
|
|
4
4
|
"description": "",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"test": "echo \"Error: no test specified\" && exit 1",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"lib"
|
|
39
39
|
],
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@topconsultnpm/sdk-ts-beta": "6.16.
|
|
41
|
+
"@topconsultnpm/sdk-ts-beta": "6.16.2",
|
|
42
42
|
"buffer": "^6.0.3",
|
|
43
43
|
"devextreme": "25.1.4",
|
|
44
44
|
"devextreme-react": "25.1.4",
|