@topconsultnpm/sdkui-react-beta 6.12.87 → 6.12.89

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.
@@ -13,6 +13,7 @@ interface ITMMessageBox extends ITMPopup {
13
13
  buttons?: ButtonNames[];
14
14
  message?: string | React.ReactNode;
15
15
  onButtonClick?: (e: ButtonNames) => void;
16
+ parentId?: string;
16
17
  }
17
18
  interface ITMExceptionBox extends ITMPopup {
18
19
  exception?: any;
@@ -21,6 +22,6 @@ declare class TMExceptionBoxManager {
21
22
  static show({ title, exception }: ITMExceptionBox): void;
22
23
  }
23
24
  declare class TMMessageBoxManager {
24
- static show({ title, buttons, onButtonClick, message }: ITMMessageBox): void;
25
+ static show({ title, buttons, onButtonClick, message, parentId }: ITMMessageBox): void;
25
26
  }
26
27
  export { TMExceptionBoxManager, TMMessageBoxManager };
@@ -126,11 +126,22 @@ class TMExceptionBoxManager {
126
126
  }
127
127
  }
128
128
  class TMMessageBoxManager {
129
- static show({ title, buttons, onButtonClick, message }) {
129
+ static show({ title, buttons, onButtonClick, message, parentId }) {
130
130
  let container = document.createElement('div');
131
- document.body.appendChild(container);
131
+ if (parentId) {
132
+ const parent = document.getElementById(parentId);
133
+ if (parent) {
134
+ parent.appendChild(container);
135
+ }
136
+ else {
137
+ document.body.appendChild(container);
138
+ }
139
+ }
140
+ else {
141
+ document.body.appendChild(container);
142
+ }
132
143
  const root = ReactDOM.createRoot(container);
133
- root.render(_jsx(TMDeviceProvider, { children: React.createElement(TMMessageBox, { title: title, buttons: buttons, onButtonClick: onButtonClick, message: message }) }));
144
+ root.render(_jsx(TMDeviceProvider, { children: React.createElement(TMMessageBox, { title, buttons, onButtonClick, message }) }));
134
145
  }
135
146
  }
136
147
  export { TMExceptionBoxManager, TMMessageBoxManager };
@@ -9,13 +9,13 @@ import { DownloadTypes, FormModes } from '../../../ts';
9
9
  import { DeviceType, useDeviceType } from '../../base/TMDeviceProvider';
10
10
  import { useDcmtOperations } from '../../../hooks/useDcmtOperations';
11
11
  import { handleArchiveVisibility, searchResultToMetadataValues } from '../../../helper/queryHelper';
12
- import { genUniqueId, IconCloseCircle, IconShow, SDKUI_Localizator, IconBoard, IconDcmtTypeSys, IconDataList, IconDetailDcmts, svgToString, IconDownload, IconHide, calcIsModified, IconMenuVertical, Globalization, getListMaxItems, getSystemMetadata, IconBoxArchiveIn, IconClear, IconUndo, calcResponsiveSizes } from '../../../helper';
12
+ import { genUniqueId, IconCloseCircle, IconShow, SDKUI_Localizator, IconBoard, IconDcmtTypeSys, IconDataList, IconDetailDcmts, svgToString, IconDownload, IconHide, calcIsModified, IconMenuVertical, Globalization, getListMaxItems, getSystemMetadata, IconBoxArchiveIn, IconClear, IconUndo } from '../../../helper';
13
13
  import { hasDetailRelations, hasMasterRelations, isXMLFileExt } from '../../../helper/dcmtsHelper';
14
14
  import { TMColors } from '../../../utils/theme';
15
15
  import { StyledFormButtonsContainer, StyledModalContainer, StyledToolbarCardContainer } from '../../base/Styled';
16
16
  import ShowAlert from '../../base/TMAlert';
17
17
  import TMButton from '../../base/TMButton';
18
- import TMLayoutContainer, { TMSplitterLayout, TMLayoutItem, TMCard } from '../../base/TMLayout';
18
+ import { TMSplitterLayout, TMLayoutItem } from '../../base/TMLayout';
19
19
  import { TMExceptionBoxManager, TMMessageBoxManager, ButtonNames } from '../../base/TMPopUp';
20
20
  import TMSpinner from '../../base/TMSpinner';
21
21
  import TMToolbarCard from '../../base/TMToolbarCard';
@@ -30,7 +30,6 @@ import TMMasterDetailDcmts from './TMMasterDetailDcmts';
30
30
  import TMDcmtBlog from './TMDcmtBlog';
31
31
  import { useInputAttachmentsDialog } from '../../../hooks/useInputDialog';
32
32
  import TMModal from '../../base/TMModal';
33
- import toppy from '../../../assets/Toppy-generico.png';
34
33
  let abortControllerLocal = new AbortController();
35
34
  //#endregion
36
35
  const TMDcmtForm = ({ showHeader = true, onSaveRecents, layoutMode = LayoutModes.Update, onClose, onSavedAsyncCallback, TID, DID, formMode = FormModes.Update, canNext, canPrev, count, itemIndex, onNext, onPrev, customRightSidebarItems = [], allowNavigation = true, allowRelations = true, isClosable = false, showDcmtForm = true, showDcmtFormSidebar = true, showPreview = false, showBoard = false, showSysMetadata = false, onClosePreview, titleModal, isModal = false, widthModal = "100%", heightModal = "100%" }) => {
@@ -72,7 +71,6 @@ const TMDcmtForm = ({ showHeader = true, onSaveRecents, layoutMode = LayoutModes
72
71
  const [dcmtFile, setDcmtFile] = useState(null);
73
72
  const [focusedMetadataValue, setFocusedMetadataValue] = useState();
74
73
  const [showAll, setShowAll] = useState(false);
75
- const [showConfirmForClose, setShowConfirmForClose] = useState(false);
76
74
  const { openConfirmAttachmentsDialog, ConfirmAttachmentsDialog } = useInputAttachmentsDialog();
77
75
  const { abortController, showWaitPanel, waitPanelTitle, showPrimary, waitPanelTextPrimary, waitPanelValuePrimary, waitPanelMaxValuePrimary, showSecondary, waitPanelTextSecondary, waitPanelValueSecondary, waitPanelMaxValueSecondary, downloadDcmtsAsync } = useDcmtOperations();
78
76
  const deviceType = useDeviceType();
@@ -287,6 +285,7 @@ const TMDcmtForm = ({ showHeader = true, onSaveRecents, layoutMode = LayoutModes
287
285
  };
288
286
  const confirmActionPopup = async () => {
289
287
  TMMessageBoxManager.show({
288
+ parentId: isModal ? "TMDcmtFormShowConfirmForClose-" + id : undefined,
290
289
  buttons: [ButtonNames.YES, ButtonNames.NO],
291
290
  message: layoutMode === LayoutModes.Update ? SDKUI_Localizator.SaveQuestion : 'Sei sicuro di voler archiviare questo documento?',
292
291
  onButtonClick(e) {
@@ -491,7 +490,7 @@ const TMDcmtForm = ({ showHeader = true, onSaveRecents, layoutMode = LayoutModes
491
490
  _jsx(StyledModalContainer, { style: { backgroundColor: 'white' }, children: _jsx(TMMasterDetailDcmts, { deviceType: deviceType, isForMaster: false, inputDcmts: getSelectionDcmtInfo(), allowNavigation: allowNavigation, canNext: canNext, canPrev: canPrev, onNext: onNext, onPrev: onPrev, onBack: () => setIsOpenDetails(false) }) }), isOpenMaster &&
492
491
  _jsxs(StyledModalContainer, { style: { backgroundColor: 'white' }, children: [_jsx(TMMasterDetailDcmts, { deviceType: deviceType, inputDcmts: getSelectionDcmtInfo(), isForMaster: true, allowNavigation: allowNavigation, canNext: canNext, canPrev: canPrev, onNext: onNext, onPrev: onPrev, onBack: () => setIsOpenMaster(false), appendMasterDcmts: handleAddItem }), secondaryMasterDcmts.length > 0 && secondaryMasterDcmts.map((dcmt, index) => {
493
492
  return (_jsx(StyledModalContainer, { style: { backgroundColor: 'white' }, children: _jsx(TMMasterDetailDcmts, { deviceType: deviceType, inputDcmts: [dcmt], isForMaster: true, allowNavigation: false, onBack: () => handleRemoveItem(dcmt.TID, dcmt.DID), appendMasterDcmts: handleAddItem }) }, `${index}-${dcmt.DID}`));
494
- })] })] }));
493
+ })] }), (isModal && onClose) && _jsx("div", { id: "TMDcmtFormShowConfirmForClose-" + id })] }));
495
494
  };
496
495
  const handleClose = () => {
497
496
  if (!isModified) {
@@ -499,6 +498,7 @@ const TMDcmtForm = ({ showHeader = true, onSaveRecents, layoutMode = LayoutModes
499
498
  return;
500
499
  }
501
500
  TMMessageBoxManager.show({
501
+ parentId: isModal ? "TMDcmtFormShowConfirmForClose-" + id : undefined,
502
502
  message: SDKUI_Localizator.SaveQuestion, buttons: [ButtonNames.YES, ButtonNames.NO, ButtonNames.CANCEL],
503
503
  onButtonClick: async (e) => {
504
504
  try {
@@ -514,31 +514,7 @@ const TMDcmtForm = ({ showHeader = true, onSaveRecents, layoutMode = LayoutModes
514
514
  }
515
515
  });
516
516
  };
517
- const closeModal = () => {
518
- if (!isModified) {
519
- onClose?.();
520
- return;
521
- }
522
- // If confirmation for closing is not yet required, prompt the user by setting showConfirmForClose to true
523
- if (showConfirmForClose === false) {
524
- setShowConfirmForClose(true);
525
- }
526
- else {
527
- // If confirmation is already shown, reset it and proceed with closing the modal
528
- setShowConfirmForClose(false);
529
- onClose?.();
530
- }
531
- };
532
- return (_jsx(_Fragment, { children: (isModal && onClose) ? _jsx(_Fragment, { children: _jsxs(TMModal, { title: titleModal, onClose: closeModal, width: widthModal ?? '100%', height: heightModal ?? '100%', hidePopup: false, children: [_jsx("div", { style: { width: "100%", height: "100%", display: 'block', padding: "4px" }, children: renderDcmtForm() }), showConfirmForClose && _jsx(TMModal, { title: titleModal, onClose: () => { setShowConfirmForClose(false); }, width: calcResponsiveSizes(deviceType, '400px', '300px', '250px'), height: '180px', hidePopup: false, children: _jsxs(TMLayoutContainer, { children: [_jsx(TMLayoutItem, { height: 'calc(100% - 40px)', children: _jsx(TMCard, { showBorder: false, scrollY: true, children: _jsxs(TMLayoutContainer, { direction: 'horizontal', alignItems: 'center', justifyContent: 'center', gap: 10, children: [_jsx(TMLayoutItem, { width: 'fit-content', children: _jsx("img", { style: { transform: 'translateY(8px)' }, src: toppy, width: 60, height: 75, alt: "" }) }), _jsx(TMLayoutItem, { height: 'fit-content', children: _jsxs("div", { children: [" ", SDKUI_Localizator.SaveQuestion, " "] }) })] }) }) }), _jsx(TMLayoutItem, { height: '40px', children: _jsxs("div", { style: { position: "relative", display: "flex", flexDirection: "row", justifyContent: "flex-end", alignItems: "center", gap: "5px", padding: "5px", userSelect: "none", borderTop: "1px solid #f3f3f3", backgroundColor: "#ffffff", zIndex: 100, }, children: [_jsx(TMButton, { caption: SDKUI_Localizator.Yes, fontSize: '1.1rem', color: 'primaryOutline', btnStyle: 'text', onClick: async () => {
533
- await onSavedAsync?.();
534
- setShowConfirmForClose(false);
535
- onClose?.();
536
- }, showTooltip: false }), _jsx(TMButton, { caption: SDKUI_Localizator.No, fontSize: '1.1rem', btnStyle: 'text', onClick: () => {
537
- setShowConfirmForClose(false);
538
- onClose?.();
539
- }, showTooltip: false, color: 'error' }), _jsx(TMButton, { caption: SDKUI_Localizator.Cancel, fontSize: '1.1rem', btnStyle: 'text', onClick: () => {
540
- setShowConfirmForClose(false);
541
- }, showTooltip: false, color: 'error' })] }) })] }) })] }) })
517
+ return (_jsx(_Fragment, { children: (isModal && onClose) ? _jsx(_Fragment, { children: _jsx(TMModal, { title: titleModal, onClose: handleClose, width: widthModal ?? '100%', height: heightModal ?? '100%', hidePopup: false, children: _jsx("div", { style: { width: "100%", height: "100%", display: 'block', padding: "4px" }, children: renderDcmtForm() }) }) })
542
518
  : renderDcmtForm() }));
543
519
  };
544
520
  export default TMDcmtForm;
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
2
2
  import { useState } from 'react';
3
3
  import { ResultTypes } from '@topconsultnpm/sdk-ts-beta';
4
4
  import { FormModes } from '../../ts/types';
5
- import { IconArrowDown, IconArrowLeft, IconArrowUp, IconCloseCircle, IconHide, IconSave, IconShow, IconUndo, IconWarning, LocalizeFormModes, SDKUI_Localizator, calcResponsiveSizes, getColor } from '../../helper';
5
+ import { IconArrowDown, IconArrowLeft, IconArrowUp, IconCloseCircle, IconHide, IconSave, IconShow, IconUndo, IconWarning, LocalizeFormModes, SDKUI_Localizator, getColor } from '../../helper';
6
6
  import { ButtonNames, TMExceptionBoxManager, TMMessageBoxManager } from '../base/TMPopUp';
7
7
  import TMLayoutContainer, { TMCard, TMLayoutItem, TMSplitterLayout } from '../base/TMLayout';
8
8
  import { StyledResultTypeContainer, StyledToolbarForm } from '../base/Styled';
@@ -11,11 +11,9 @@ import { TMColors } from '../../utils/theme';
11
11
  import TMValidationItemsList from '../grids/TMValidationItemsList';
12
12
  import TMModal from '../base/TMModal';
13
13
  import { DeviceType, useDeviceType } from '../base/TMDeviceProvider';
14
- import toppy from '../../assets/Toppy-generico.png';
15
14
  const TMSaveForm = ({ id, formMode = FormModes.Update, showToolbar = true, skipIsModifiedCheck = false, title, children, isModal, exception, customToolbarElements, hasNavigation, showSaveButton = true, showBackButton, showWarningsCount = true, showErrorCount = true, showUndoButton = true, onClose, onSaveAsync, onNext, onPrev, canNext, canPrev, isModified, onShowList, validationItems = [], onUndo, onCancel, width, height }) => {
16
15
  const [showList, setShowList] = useState(true);
17
16
  const [showErrorGrid, setShowErrorGrid] = useState(false);
18
- const [showConfirmForClose, setShowConfirmForClose] = useState(false);
19
17
  const deviceType = useDeviceType();
20
18
  const doSaveAsync = async () => { try {
21
19
  await onSaveAsync?.();
@@ -29,6 +27,7 @@ const TMSaveForm = ({ id, formMode = FormModes.Update, showToolbar = true, skipI
29
27
  return;
30
28
  }
31
29
  TMMessageBoxManager.show({
30
+ parentId: isModal ? "TMSaveFormShowConfirmForClose-" + id : undefined,
32
31
  message: SDKUI_Localizator.SaveQuestion, buttons: [ButtonNames.YES, ButtonNames.NO, ButtonNames.CANCEL],
33
32
  onButtonClick: async (e) => {
34
33
  try {
@@ -50,6 +49,7 @@ const TMSaveForm = ({ id, formMode = FormModes.Update, showToolbar = true, skipI
50
49
  return;
51
50
  }
52
51
  TMMessageBoxManager.show({
52
+ parentId: isModal ? "TMSaveFormShowConfirmForClose-" + id : undefined,
53
53
  message: SDKUI_Localizator.SaveQuestion, buttons: [ButtonNames.YES, ButtonNames.NO, ButtonNames.CANCEL],
54
54
  onButtonClick: async (e) => {
55
55
  try {
@@ -72,6 +72,7 @@ const TMSaveForm = ({ id, formMode = FormModes.Update, showToolbar = true, skipI
72
72
  return;
73
73
  }
74
74
  TMMessageBoxManager.show({
75
+ parentId: isModal ? "TMSaveFormShowConfirmForClose-" + id : undefined,
75
76
  message: SDKUI_Localizator.SaveQuestion, buttons: [ButtonNames.YES, ButtonNames.NO, ButtonNames.CANCEL],
76
77
  onButtonClick: async (e) => {
77
78
  try {
@@ -89,25 +90,6 @@ const TMSaveForm = ({ id, formMode = FormModes.Update, showToolbar = true, skipI
89
90
  }
90
91
  });
91
92
  };
92
- const closeModal = () => {
93
- // If there are no unsaved modifications or we are skipping the modification check, close the modal immediately
94
- if (!isModified || skipIsModifiedCheck) {
95
- onClose?.();
96
- deviceType === DeviceType.MOBILE && setShowList(true), onShowList?.(true);
97
- return;
98
- }
99
- // If confirmation for closing is not yet required, prompt the user by setting showConfirmForClose to true
100
- if (showConfirmForClose === false) {
101
- setShowConfirmForClose(true);
102
- }
103
- else {
104
- // If confirmation is already shown, reset it and proceed with closing the modal
105
- setShowConfirmForClose(false);
106
- onClose?.();
107
- deviceType === DeviceType.MOBILE && setShowList(true), onShowList?.(true);
108
- return;
109
- }
110
- };
111
93
  const warningsCount = validationItems.filter(o => o.ResultType == ResultTypes.WARNING).length;
112
94
  const errorsCount = validationItems.filter(o => o.ResultType == ResultTypes.ERROR).length;
113
95
  const renderSaveForm = () => {
@@ -118,19 +100,9 @@ const TMSaveForm = ({ id, formMode = FormModes.Update, showToolbar = true, skipI
118
100
  _jsx("div", { style: { right: '50px', position: 'absolute' }, children: deviceType !== DeviceType.MOBILE && onCancel && _jsx(TMButton, { icon: _jsx(IconCloseCircle, {}), onClick: onCancel, btnStyle: 'toolbar', caption: SDKUI_Localizator.Cancel, color: 'tertiary' }) })] }) }), _jsx(TMLayoutItem, { height: showToolbar ? 'calc(100% - 35px)' : '100%', children: _jsxs(TMSplitterLayout, { separatorSize: 4, direction: 'vertical', start: showErrorGrid && validationItems.length > 0 ? ['80%', '20%'] : ['100%', '0'], min: ['0', '0'], children: [_jsx(TMCard, { showBorder: false, children: exception
119
101
  ?
120
102
  _jsx("div", { style: { width: '100%', height: '100%', marginTop: '50px', display: 'flex', alignItems: 'center', justifyContent: 'center', flexDirection: 'column', color: getColor('error') }, children: 'Si è verificato un errore' })
121
- : _jsx(_Fragment, { children: children }) }), showErrorGrid && validationItems.length > 0 ? _jsx(TMCard, { scrollY: true, padding: false, showBorder: false, children: _jsx(TMValidationItemsList, { validationItems: validationItems }) }) : _jsx(_Fragment, {})] }) })] }));
103
+ : _jsx(_Fragment, { children: children }) }), showErrorGrid && validationItems.length > 0 ? _jsx(TMCard, { scrollY: true, padding: false, showBorder: false, children: _jsx(TMValidationItemsList, { validationItems: validationItems }) }) : _jsx(_Fragment, {})] }) }), (isModal && onClose) && _jsx("div", { id: "TMSaveFormShowConfirmForClose-" + id })] }));
122
104
  };
123
- return (_jsx(_Fragment, { children: (isModal && onClose) ? _jsx(_Fragment, { children: _jsxs(TMModal, { title: `${title} - ${LocalizeFormModes(formMode)}`, onClose: closeModal, width: width ?? '100%', height: height ?? '100%', hidePopup: false, children: [_jsx("div", { style: { width: "100%", height: "100%", display: 'block' }, children: renderSaveForm() }), showConfirmForClose && _jsx(TMModal, { title: `${title} - ${LocalizeFormModes(formMode)}`, onClose: () => { setShowConfirmForClose(false); }, width: calcResponsiveSizes(deviceType, '400px', '300px', '250px'), height: '180px', hidePopup: false, children: _jsxs(TMLayoutContainer, { children: [_jsx(TMLayoutItem, { height: 'calc(100% - 40px)', children: _jsx(TMCard, { showBorder: false, scrollY: true, children: _jsxs(TMLayoutContainer, { direction: 'horizontal', alignItems: 'center', justifyContent: 'center', gap: 10, children: [_jsx(TMLayoutItem, { width: 'fit-content', children: _jsx("img", { style: { transform: 'translateY(8px)' }, src: toppy, width: 60, height: 75, alt: "" }) }), _jsx(TMLayoutItem, { height: 'fit-content', children: _jsxs("div", { children: [" ", SDKUI_Localizator.SaveQuestion, " "] }) })] }) }) }), _jsx(TMLayoutItem, { height: '40px', children: _jsxs("div", { style: { position: "relative", display: "flex", flexDirection: "row", justifyContent: "flex-end", alignItems: "center", gap: "5px", padding: "5px", userSelect: "none", borderTop: "1px solid #f3f3f3", backgroundColor: "#ffffff", zIndex: 100, }, children: [_jsx(TMButton, { caption: SDKUI_Localizator.Yes, fontSize: '1.1rem', color: 'primaryOutline', btnStyle: 'text', onClick: async () => {
124
- deviceType === DeviceType.MOBILE ? (await onSaveAsync?.(), setShowList(true), onShowList?.(true)) : await onSaveAsync?.();
125
- setShowConfirmForClose(false);
126
- onClose?.();
127
- }, showTooltip: false }), _jsx(TMButton, { caption: SDKUI_Localizator.No, fontSize: '1.1rem', btnStyle: 'text', onClick: () => {
128
- deviceType === DeviceType.MOBILE && (onUndo(), setShowList(true), onShowList?.(true));
129
- setShowConfirmForClose(false);
130
- onClose?.();
131
- }, showTooltip: false, color: 'error' }), _jsx(TMButton, { caption: SDKUI_Localizator.Cancel, fontSize: '1.1rem', btnStyle: 'text', onClick: () => {
132
- setShowConfirmForClose(false);
133
- }, showTooltip: false, color: 'error' })] }) })] }) })] }) })
105
+ return (_jsx(_Fragment, { children: (isModal && onClose) ? _jsx(_Fragment, { children: _jsx(TMModal, { title: `${title} - ${LocalizeFormModes(formMode)}`, onClose: doClose, width: width ?? '100%', height: height ?? '100%', hidePopup: false, children: _jsx("div", { style: { width: "100%", height: "100%", display: 'block' }, children: renderSaveForm() }) }) })
134
106
  : renderSaveForm() }));
135
107
  };
136
108
  export default TMSaveForm;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@topconsultnpm/sdkui-react-beta",
3
- "version": "6.12.87",
3
+ "version": "6.12.89",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "test": "echo \"Error: no test specified\" && exit 1",