@topconsultnpm/sdkui-react 6.22.0-dev1.10 → 6.22.0-dev1.12
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.
|
@@ -1425,7 +1425,49 @@ const TMDcmtForm = ({ TID, DID, groupId, layoutMode = LayoutModes.Update, formMo
|
|
|
1425
1425
|
return undefined;
|
|
1426
1426
|
const settings = getCurrentDcmtFormSetting()?.setting;
|
|
1427
1427
|
// Return the appropriate layout based on context
|
|
1428
|
-
|
|
1428
|
+
const persistedState = invocationContext === InvocationContext.Todo ? settings?.layoutToDo : settings?.layout;
|
|
1429
|
+
// tmWF must always start hidden - PanelDisabledStateHandler will restore it
|
|
1430
|
+
// when workflow data becomes available and isWFDisabled becomes false
|
|
1431
|
+
if (persistedState && persistedState['tmWF']?.visible) {
|
|
1432
|
+
// Get tmWF width to redistribute
|
|
1433
|
+
const tmWFWidth = parseFloat(persistedState['tmWF'].width) || 0;
|
|
1434
|
+
// Find other visible panels to redistribute width
|
|
1435
|
+
const otherVisiblePanels = Object.keys(persistedState).filter(key => key !== 'tmWF' && persistedState[key]?.visible);
|
|
1436
|
+
// Calculate extra width per visible panel
|
|
1437
|
+
const extraWidthPerPanel = otherVisiblePanels.length > 0
|
|
1438
|
+
? tmWFWidth / otherVisiblePanels.length
|
|
1439
|
+
: 0;
|
|
1440
|
+
// Build new state with redistributed widths
|
|
1441
|
+
const newState = {};
|
|
1442
|
+
for (const key of Object.keys(persistedState)) {
|
|
1443
|
+
if (key === 'tmWF') {
|
|
1444
|
+
// Hide tmWF
|
|
1445
|
+
newState[key] = { ...persistedState[key], visible: false };
|
|
1446
|
+
}
|
|
1447
|
+
else if (otherVisiblePanels.includes(key)) {
|
|
1448
|
+
// Add extra width to visible panels
|
|
1449
|
+
const currentWidth = parseFloat(persistedState[key].width) || 0;
|
|
1450
|
+
newState[key] = {
|
|
1451
|
+
...persistedState[key],
|
|
1452
|
+
width: `${currentWidth + extraWidthPerPanel}%`
|
|
1453
|
+
};
|
|
1454
|
+
}
|
|
1455
|
+
else {
|
|
1456
|
+
// Keep other panels as-is
|
|
1457
|
+
newState[key] = persistedState[key];
|
|
1458
|
+
}
|
|
1459
|
+
}
|
|
1460
|
+
return newState;
|
|
1461
|
+
}
|
|
1462
|
+
return persistedState;
|
|
1463
|
+
};
|
|
1464
|
+
// Returns whether tmWF was visible in persisted state (for restoring after WF data loads)
|
|
1465
|
+
const getPersistedWFVisible = () => {
|
|
1466
|
+
if (isMobile)
|
|
1467
|
+
return false;
|
|
1468
|
+
const settings = getCurrentDcmtFormSetting()?.setting;
|
|
1469
|
+
const persistedState = invocationContext === InvocationContext.Todo ? settings?.layoutToDo : settings?.layout;
|
|
1470
|
+
return persistedState?.['tmWF']?.visible ?? false;
|
|
1429
1471
|
};
|
|
1430
1472
|
const onBlogCommentFormCustomSave = useCallback(async (blogPost) => {
|
|
1431
1473
|
try {
|
|
@@ -1514,7 +1556,7 @@ const TMDcmtForm = ({ TID, DID, groupId, layoutMode = LayoutModes.Update, formMo
|
|
|
1514
1556
|
overflow: 'hidden'
|
|
1515
1557
|
}, children: [_jsxs("div", { style: { width: '100%', height: '100%', display: isOpenDetails || isOpenMaster ? 'none' : 'flex' }, children: [isNavigating && _jsx(Spinner, { description: SDKUI_Localizator.Loading, flat: false }), (fromDTD) && _jsx(TMLayoutWaitingContainer, { direction: 'vertical', showWaitPanel: useWaitPanelLocalState ? showWaitPanelLocal : showWaitPanel, showWaitPanelPrimary: useWaitPanelLocalState ? showPrimaryLocal : showPrimary, showWaitPanelSecondary: useWaitPanelLocalState ? showSecondaryLocal : showSecondary, waitPanelTitle: useWaitPanelLocalState ? waitPanelTitleLocal : waitPanelTitle, waitPanelTextPrimary: useWaitPanelLocalState ? waitPanelTextPrimaryLocal : waitPanelTextPrimary, waitPanelValuePrimary: useWaitPanelLocalState ? waitPanelValuePrimaryLocal : waitPanelValuePrimary, waitPanelMaxValuePrimary: useWaitPanelLocalState ? waitPanelMaxValuePrimaryLocal : waitPanelMaxValuePrimary, waitPanelTextSecondary: useWaitPanelLocalState ? waitPanelTextSecondaryLocal : waitPanelTextSecondary, waitPanelValueSecondary: useWaitPanelLocalState ? waitPanelValueSecondaryLocal : waitPanelValueSecondary, waitPanelMaxValueSecondary: useWaitPanelLocalState ? waitPanelMaxValueSecondaryLocal : waitPanelMaxValueSecondary, isCancelable: useWaitPanelLocalState ? dcmtFile ? dcmtFile.size >= 1000000 : false : true, abortController: useWaitPanelLocalState ? abortControllerLocal : abortController, children: _jsxs(TMLayoutWaitingContainer, { direction: 'vertical', showWaitPanel: showCicoWaitPanel, showWaitPanelPrimary: showCicoPrimaryProgress, waitPanelTitle: cicoWaitPanelTitle, waitPanelTextPrimary: cicoPrimaryProgressText, waitPanelValuePrimary: cicoPrimaryProgressValue, waitPanelMaxValuePrimary: cicoPrimaryProgressMax, isCancelable: true, abortController: abortControllerLocal, children: [(groupId && groupId.length > 0)
|
|
1516
1558
|
? _jsxs(_Fragment, { children: [_jsx(PanelDisabledStateHandler, { isWFDisabled: isWFDisabled, isSysMetadataDisabled: isSysMetadataDisabled, isBoardDisabled: isBoardDisabled, isDcmtTasksDisabled: isDcmtTasksDisabled, isPreviewDisabled: isPreviewDisabled }), _jsx(TMPanelManagerContainer, { panels: initialPanels, direction: "horizontal", parentId: groupId, showToolbar: showDcmtFormSidebar })] })
|
|
1517
|
-
: _jsxs(TMPanelManagerWithPersistenceProvider, { panels: initialPanels, initialVisibility: allInitialPanelVisibility, defaultDimensions: defaultPanelDimensions, initialDimensions: defaultPanelDimensions, initialMobilePanelId: 'tmDcmtForm', isPersistenceEnabled: !isMobile && layoutMode !== LayoutModes.Ark ? hasSavedLayout() : false, persistPanelStates: !isMobile && layoutMode !== LayoutModes.Ark ? (state) => persistPanelStates(state) : undefined, persistedPanelStates: layoutMode !== LayoutModes.Ark ? getPersistedPanelStates() : undefined, children: [_jsx(PanelDisabledStateHandler, { isWFDisabled: isWFDisabled, isSysMetadataDisabled: isSysMetadataDisabled, isBoardDisabled: isBoardDisabled, isDcmtTasksDisabled: isDcmtTasksDisabled, isPreviewDisabled: isPreviewDisabled }), _jsx(TMPanelManagerContainer, { panels: initialPanels, direction: "horizontal", parentId: groupId, showToolbar: showDcmtFormSidebar })] }), isOpenDistinctValues &&
|
|
1559
|
+
: _jsxs(TMPanelManagerWithPersistenceProvider, { panels: initialPanels, initialVisibility: allInitialPanelVisibility, defaultDimensions: defaultPanelDimensions, initialDimensions: defaultPanelDimensions, initialMobilePanelId: 'tmDcmtForm', isPersistenceEnabled: !isMobile && layoutMode !== LayoutModes.Ark ? hasSavedLayout() : false, persistPanelStates: !isMobile && layoutMode !== LayoutModes.Ark ? (state) => persistPanelStates(state) : undefined, persistedPanelStates: layoutMode !== LayoutModes.Ark ? getPersistedPanelStates() : undefined, children: [_jsx(PanelDisabledStateHandler, { isWFDisabled: isWFDisabled, isSysMetadataDisabled: isSysMetadataDisabled, isBoardDisabled: isBoardDisabled, isDcmtTasksDisabled: isDcmtTasksDisabled, isPreviewDisabled: isPreviewDisabled, persistedWFVisible: getPersistedWFVisible() }), _jsx(TMPanelManagerContainer, { panels: initialPanels, direction: "horizontal", parentId: groupId, showToolbar: showDcmtFormSidebar })] }), isOpenDistinctValues &&
|
|
1518
1560
|
_jsx(TMDistinctValues, { tid: TID, mid: focusedMetadataValue?.mid, isModal: true, showHeader: false, layoutMode: layoutMode, onClosePanelCallback: () => setIsOpenDistinctValues(false), onSelectionChanged: (e) => {
|
|
1519
1561
|
if (!e)
|
|
1520
1562
|
return;
|
|
@@ -1604,7 +1646,7 @@ const validateMaxLength = (mvd, value, validationItems) => {
|
|
|
1604
1646
|
};
|
|
1605
1647
|
//#endregion Validation
|
|
1606
1648
|
// Synchronizes panel visibility and toolbar button disabled states when panels become disabled
|
|
1607
|
-
const PanelDisabledStateHandler = ({ isWFDisabled, isSysMetadataDisabled, isBoardDisabled, isDcmtTasksDisabled, isPreviewDisabled }) => {
|
|
1649
|
+
const PanelDisabledStateHandler = ({ isWFDisabled, isSysMetadataDisabled, isBoardDisabled, isDcmtTasksDisabled, isPreviewDisabled, persistedWFVisible = false }) => {
|
|
1608
1650
|
const { setPanelVisibilityById, setToolbarButtonDisabled } = useTMPanelManagerContext();
|
|
1609
1651
|
useEffect(() => {
|
|
1610
1652
|
if (isSysMetadataDisabled) {
|
|
@@ -1631,8 +1673,12 @@ const PanelDisabledStateHandler = ({ isWFDisabled, isSysMetadataDisabled, isBoar
|
|
|
1631
1673
|
}
|
|
1632
1674
|
else {
|
|
1633
1675
|
setToolbarButtonDisabled('tmWF', false);
|
|
1676
|
+
// Restore persisted visibility when WF becomes enabled
|
|
1677
|
+
if (persistedWFVisible) {
|
|
1678
|
+
setPanelVisibilityById('tmWF', true);
|
|
1679
|
+
}
|
|
1634
1680
|
}
|
|
1635
|
-
}, [isWFDisabled]);
|
|
1681
|
+
}, [isWFDisabled, persistedWFVisible]);
|
|
1636
1682
|
useEffect(() => {
|
|
1637
1683
|
if (isDcmtTasksDisabled) {
|
|
1638
1684
|
setToolbarButtonDisabled('tmDcmtTasks', true);
|
|
@@ -912,7 +912,7 @@ export const useDocumentOperations = (props) => {
|
|
|
912
912
|
name: SDKUI_Localizator.ArchiveDetailDocument,
|
|
913
913
|
operationType: 'multiRow',
|
|
914
914
|
disabled: canArchiveDetailRelation !== true,
|
|
915
|
-
onClick: async () => await archiveDetailDocuments
|
|
915
|
+
onClick: async () => await archiveDetailDocuments(selectedDcmtInfos?.[0]?.TID)
|
|
916
916
|
},
|
|
917
917
|
{
|
|
918
918
|
id: 'rel-mst',
|
|
@@ -3,13 +3,24 @@ const usePreventFileDrop = (allowedDropZones) => {
|
|
|
3
3
|
useEffect(() => {
|
|
4
4
|
const isOverAllowedZone = (event) => allowedDropZones.some((ref) => ref.current?.contains(event.target));
|
|
5
5
|
const handleDragOver = (event) => {
|
|
6
|
-
if (
|
|
6
|
+
if (isOverAllowedZone(event)) {
|
|
7
|
+
// Riafferma "copy" ad ogni dragover: altrimenti un "none"
|
|
8
|
+
// impostato mentre si era fuori zona resta e mostra "not-allowed"
|
|
9
|
+
if (event.dataTransfer)
|
|
10
|
+
event.dataTransfer.dropEffect = "copy";
|
|
11
|
+
document.body.style.cursor = "default";
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
7
14
|
event.preventDefault();
|
|
8
|
-
event.dataTransfer
|
|
15
|
+
if (event.dataTransfer)
|
|
16
|
+
event.dataTransfer.dropEffect = "none";
|
|
9
17
|
}
|
|
10
18
|
};
|
|
11
19
|
const handleDragEnter = (event) => {
|
|
12
|
-
if (
|
|
20
|
+
if (isOverAllowedZone(event)) {
|
|
21
|
+
document.body.style.cursor = "default";
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
13
24
|
document.body.style.cursor = "not-allowed";
|
|
14
25
|
}
|
|
15
26
|
};
|