@topconsultnpm/sdkui-react-beta 6.12.78 → 6.12.81

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.
@@ -27,6 +27,10 @@ interface ITMDcmtFormProps {
27
27
  onSavedAsyncCallback?: (tid: number | undefined, did: number | undefined) => Promise<void>;
28
28
  onSaveRecents?: (TIDs: number[]) => void;
29
29
  onClosePreview?: () => void;
30
+ isModal?: boolean;
31
+ titleModal?: string;
32
+ widthModal?: string;
33
+ heightModal?: string;
30
34
  }
31
35
  declare const TMDcmtForm: React.FC<ITMDcmtFormProps>;
32
36
  export default TMDcmtForm;
@@ -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 } from '../../../helper';
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';
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 { TMSplitterLayout, TMLayoutItem } from '../../base/TMLayout';
18
+ import TMLayoutContainer, { TMSplitterLayout, TMLayoutItem, TMCard } 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';
@@ -29,9 +29,11 @@ import TMFileUploader from '../../features/documents/TMFileUploader';
29
29
  import TMMasterDetailDcmts from './TMMasterDetailDcmts';
30
30
  import TMDcmtBlog from './TMDcmtBlog';
31
31
  import { useInputAttachmentsDialog } from '../../../hooks/useInputDialog';
32
+ import TMModal from '../../base/TMModal';
33
+ import toppy from '../../../assets/Toppy-generico.png';
32
34
  let abortControllerLocal = new AbortController();
33
35
  //#endregion
34
- 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 }) => {
36
+ 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%" }) => {
35
37
  const mruTIDs = LocalStorageService.getItem(`ARCHIVEPAGE_MRU_TIDS_${SDK_Globals.tmSession?.SessionDescr?.archiveID}_${SDK_Globals.tmSession?.SessionDescr?.userID}`);
36
38
  const [id, setID] = useState('');
37
39
  const [showWaitPanelLocal, setShowWaitPanelLocal] = useState(false);
@@ -70,6 +72,7 @@ const TMDcmtForm = ({ showHeader = true, onSaveRecents, layoutMode = LayoutModes
70
72
  const [dcmtFile, setDcmtFile] = useState(null);
71
73
  const [focusedMetadataValue, setFocusedMetadataValue] = useState();
72
74
  const [showAll, setShowAll] = useState(false);
75
+ const [showConfirmForClose, setShowConfirmForClose] = useState(false);
73
76
  const { openConfirmAttachmentsDialog, ConfirmAttachmentsDialog } = useInputAttachmentsDialog();
74
77
  const { abortController, showWaitPanel, waitPanelTitle, showPrimary, waitPanelTextPrimary, waitPanelValuePrimary, waitPanelMaxValuePrimary, showSecondary, waitPanelTextSecondary, waitPanelValueSecondary, waitPanelMaxValueSecondary, downloadDcmtsAsync } = useDcmtOperations();
75
78
  const deviceType = useDeviceType();
@@ -424,6 +427,72 @@ const TMDcmtForm = ({ showHeader = true, onSaveRecents, layoutMode = LayoutModes
424
427
  }
425
428
  setFormData(data);
426
429
  };
430
+ const isModified = calcIsModified(formData, formDataOrig);
431
+ const clearFormBtnDisabled = formData.filter(md => md.mid && md.value && md.mid > 99 && md.value.length > 0).length > 0;
432
+ const archiveBtnDisabled = layoutMode === LayoutModes.Update || (fromDTD?.archiveConstraint === ArchiveConstraints.ContentCompulsory && !dcmtFile) || validationItems.length > 0;
433
+ const undoBtnDisabled = layoutMode === LayoutModes.Update || !calcIsModified(formData, formDataOrig);
434
+ const listMaxItems = getListMaxItems(deviceType ?? DeviceType.DESKTOP);
435
+ const totalItems = formData.filter(o => o.mid && o.mid > 100).length;
436
+ const metadataValuesSource = useMemo(() => {
437
+ return showAll ? formData.filter(o => o.mid && o.mid > 100) : formData.filter(o => o.mid && o.mid > 100).slice(0, listMaxItems);
438
+ }, [showAll, formData]);
439
+ const metadataValuesSourceOrig = useMemo(() => {
440
+ return showAll ? formDataOrig.filter(o => o.mid && o.mid > 100) : formDataOrig.filter(o => o.mid && o.mid > 100).slice(0, listMaxItems);
441
+ }, [showAll, formDataOrig]);
442
+ const getFormula = () => {
443
+ let fd = new FormulaDescriptor();
444
+ fd.expression = FormulaHelper.isFormula(focusedMetadataValue?.value) ? FormulaHelper.removeFormulaTag(focusedMetadataValue?.value) : undefined;
445
+ fd.formulaTarget = FormulaTargets.BatchUpdate;
446
+ fd.items = FormulaHelper.TreeViewList(TID ?? 0, getSystemMetadata(true), undefined, FormulaTargets.BatchUpdate, SDK_Globals.dbBrand);
447
+ fd.mid = focusedMetadataValue?.mid ?? 0;
448
+ fd.tid = TID;
449
+ return fd;
450
+ };
451
+ const renderDcmtForm = () => {
452
+ return (_jsxs(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(TMSplitterLayout, { separatorSize: 5, separatorColor: 'transparent', showSeparator: (isOpenPreview || isOpenMiddlePanel()) && deviceType !== DeviceType.MOBILE && isOpenDcmtForm, start: getPrimarySplitterStartLayout(), min: deviceType !== DeviceType.MOBILE && isOpenDcmtForm ? ['150px', '0'] : ['0', '0'], direction: 'horizontal', children: [_jsx(TMLayoutItem, { children: _jsx(TMToolbarCard, { showHeader: showHeader, title: fromDTD?.nameLoc, toolbar: allowNavigation ? formToolbar : _jsx(_Fragment, {}), items: showDcmtFormSidebar ? sideBarItems : undefined, onBack: isClosable ? undefined : handleClose, onClose: isClosable ? handleClose : undefined, children: metadataValuesSource.length > 0 && _jsxs(StyledToolbarCardContainer, { children: [_jsx(TMMetadataValues, { TID: TID, metadataValues: metadataValuesSource, metadataValuesOrig: metadataValuesSourceOrig, showAdvancedMenu: showAdvancedMenu, isOpenDistinctValues: isOpenDistinctValues, openChooserBySingleClick: !isOpenDistinctValues, selectedMID: focusedMetadataValue?.mid, layoutMode: layoutMode, deviceType: deviceType, validationItems: validationItems, onFocusedItemChanged: (item) => { (item?.mid !== focusedMetadataValue?.mid) && setFocusedMetadataValue(item); }, onValueChanged: (newItems) => {
453
+ setFormData((prevItems) => prevItems.map((item) => {
454
+ const newItem = newItems.find((newItem) => newItem.tid === item.tid && newItem.mid === item.mid);
455
+ return newItem ? { ...item, ...newItem } : item;
456
+ }));
457
+ }, onAdvancedMenuClick: (e) => {
458
+ switch (e.button) {
459
+ case AdvancedMenuButtons.DistinctValues:
460
+ setIsOpenDistinctValues(!isOpenDistinctValues);
461
+ break;
462
+ case AdvancedMenuButtons.FormulaEditor:
463
+ setIsOpenFormulaEditor(!isOpenFormulaEditor);
464
+ break;
465
+ }
466
+ } }), _jsxs(StyledFormButtonsContainer, { children: [_jsxs("div", { style: { display: 'flex', flexDirection: 'column', gap: 10 }, children: [fromDTD?.templateTID === TemplateTIDs.WF_WIApprView && _jsx(WorkFlowOperationButtons, { onApprove: () => setShowApprovePopup(true), onReject: () => setShowRejectPopup(true), onReAssign: () => setShowReAssignPopup(true), isInDcmtForm: true }), _jsx("div", { style: { display: 'flex', justifyContent: 'center', alignItems: 'center', gap: '8px' }, children: layoutMode === LayoutModes.Update ? _jsxs(_Fragment, { children: [_jsx(TMSaveFormButtonSave, { showTooltip: false, btnStyle: 'advanced', advancedColor: '#f09c0a', isModified: isModified, formMode: formMode, errorsCount: validationItems.filter(o => o.ResultType == ResultTypes.ERROR).length, onSaveAsync: confirmActionPopup }), _jsx(TMSaveFormButtonUndo, { btnStyle: 'toolbar', showTooltip: true, color: 'primary', isModified: isModified, formMode: formMode, onUndo: onUndoHandler })] }) :
467
+ _jsxs(_Fragment, { children: [_jsx(TMButton, { disabled: archiveBtnDisabled, btnStyle: 'advanced', icon: _jsx(IconBoxArchiveIn, {}), showTooltip: false, caption: 'Archivia', advancedColor: TMColors.success, onClick: confirmActionPopup }), _jsx(TMButton, { disabled: !clearFormBtnDisabled, btnStyle: 'advanced', icon: _jsx(IconClear, {}), showTooltip: false, caption: 'Pulisci', advancedColor: TMColors.tertiary, onClick: clearFormHandler }), DID && _jsx(TMButton, { disabled: undoBtnDisabled, btnStyle: 'advanced', icon: _jsx(IconUndo, {}), width: '150px', showTooltip: false, caption: 'Annulla modifiche', advancedColor: TMColors.tertiary, onClick: onUndoHandler })] }) })] }), totalItems > listMaxItems && _jsx(TMShowAllOrMaxItemsButton, { showAll: showAll, dataSourceLength: totalItems, onClick: () => { setShowAll(!showAll); } })] }), showApprovePopup && _jsx(WorkFlowApproveRejectPopUp, { deviceType: deviceType, TID: TID, DID: DID, op: 0, onClose: () => setShowApprovePopup(false) }), showRejectPopup && _jsx(WorkFlowApproveRejectPopUp, { deviceType: deviceType, TID: TID, DID: DID, op: 1, onClose: () => setShowRejectPopup(false) }), showReAssignPopup && _jsx(WorkFlowReAssignPopUp, { deviceType: deviceType, TID: TID, DID: DID, onClose: () => setShowReAssignPopup(false) }), _jsx(ConfirmAttachmentsDialog, {})] }) }) }), isOpenPreview || isOpenMiddlePanel() ?
468
+ _jsx(TMLayoutItem, { children: _jsxs(TMSplitterLayout, { separatorSize: 5, direction: 'horizontal', showSeparator: deviceType !== DeviceType.MOBILE && (isOpenPreview && isOpenMiddlePanel()), start: getSecondarySplitterStartLayout(), min: ['0', '0'], separatorColor: 'transparent', children: [isOpenMiddlePanel()
469
+ ? _jsx(TMLayoutItem, { children: _jsx(TMToolbarCard, { padding: '0', showHeader: !(isOpenDetails && layoutMode === LayoutModes.Update), color: TMColors.primaryColor, backgroundColor: `${TMColors.primaryColor}25`, title: titleText(), toolbar: middlePanelToolbar, onClose: () => { closeMiddlePanel(); }, children: _jsx(StyledToolbarCardContainer, { children: _jsx(StyledSectionContainer, { children: _jsxs(StyledSidebarItemsContentContainer, { children: [isOpenBoard && layoutMode === LayoutModes.Update &&
470
+ _jsx(TMDcmtBlog, { tid: TID, did: DID }), isOpenSysMetadata && layoutMode === LayoutModes.Update &&
471
+ _jsx(TMMetadataValues, { layoutMode: layoutMode, openChooserBySingleClick: !isOpenDistinctValues, TID: TID, deviceType: deviceType, metadataValues: formData.filter(o => (o.mid != undefined && o.mid <= 100)), metadataValuesOrig: formData.filter(o => (o.mid != undefined && o.mid <= 100)), validationItems: [] }), isOpenDistinctValues &&
472
+ _jsx(TMDistinctValues, { tid: TID, mid: focusedMetadataValue?.mid, showHeader: false, layoutMode: layoutMode, onSelectionChanged: (e) => {
473
+ if (!e)
474
+ return;
475
+ setFormData((prevItems) => prevItems.map((item) => item.tid == e.tid && item.mid === e.mid ? { ...item, value: e.newValue } : item));
476
+ } }), isOpenFormulaEditor &&
477
+ _jsx(TMFormulaEditor, { isModal: false, formMode: FormModes.Update, inputData: getFormula(), showBack: false, onClose: () => setIsOpenFormulaEditor(false), onApplied: (newFormula) => {
478
+ setFormData((prevItems) => prevItems.map((item) => item.tid == newFormula.tid && item.mid === newFormula.mid ? { ...item, value: FormulaHelper.addFormulaTag(newFormula.expression), isSelected: true, isEditable: true } : item));
479
+ setFocusedMetadataValue(prevState => ({
480
+ ...prevState,
481
+ isSelected: true,
482
+ isEditable: true,
483
+ value: FormulaHelper.addFormulaTag(newFormula.expression)
484
+ }));
485
+ } })] }) }) }) }) })
486
+ : _jsx(_Fragment, {}), isOpenPreview
487
+ ? _jsxs(TMLayoutItem, { children: [layoutMode === LayoutModes.Update ?
488
+ _jsx(TMDcmtPreview, { onClose: () => { setIsOpenPreview(false); onClosePreview?.(); }, dcmtData: currentDcmt, canNext: canNext, canPrev: canPrev, onNext: onNext, onPrev: onPrev }) :
489
+ _jsx(TMFileUploader, { onFileUpload: (file) => setDcmtFile(file), onClose: () => setIsOpenPreview(false), isRequired: fromDTD?.archiveConstraint === ArchiveConstraints.ContentCompulsory && dcmtFile === null, defaultBlob: dcmtFile, deviceType: deviceType }), " "] })
490
+ : _jsx(_Fragment, {})] }) }) : _jsx(_Fragment, {})] }), isOpenDetails &&
491
+ _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
+ _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
+ 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
+ })] })] }));
495
+ };
427
496
  const handleClose = () => {
428
497
  if (!isModified) {
429
498
  onClose?.();
@@ -445,70 +514,32 @@ const TMDcmtForm = ({ showHeader = true, onSaveRecents, layoutMode = LayoutModes
445
514
  }
446
515
  });
447
516
  };
448
- const isModified = calcIsModified(formData, formDataOrig);
449
- const clearFormBtnDisabled = formData.filter(md => md.mid && md.value && md.mid > 99 && md.value.length > 0).length > 0;
450
- const archiveBtnDisabled = layoutMode === LayoutModes.Update || (fromDTD?.archiveConstraint === ArchiveConstraints.ContentCompulsory && !dcmtFile) || validationItems.length > 0;
451
- const undoBtnDisabled = layoutMode === LayoutModes.Update || !calcIsModified(formData, formDataOrig);
452
- const listMaxItems = getListMaxItems(deviceType ?? DeviceType.DESKTOP);
453
- const totalItems = formData.filter(o => o.mid && o.mid > 100).length;
454
- const metadataValuesSource = useMemo(() => {
455
- return showAll ? formData.filter(o => o.mid && o.mid > 100) : formData.filter(o => o.mid && o.mid > 100).slice(0, listMaxItems);
456
- }, [showAll, formData]);
457
- const metadataValuesSourceOrig = useMemo(() => {
458
- return showAll ? formDataOrig.filter(o => o.mid && o.mid > 100) : formDataOrig.filter(o => o.mid && o.mid > 100).slice(0, listMaxItems);
459
- }, [showAll, formDataOrig]);
460
- const getFormula = () => {
461
- let fd = new FormulaDescriptor();
462
- fd.expression = FormulaHelper.isFormula(focusedMetadataValue?.value) ? FormulaHelper.removeFormulaTag(focusedMetadataValue?.value) : undefined;
463
- fd.formulaTarget = FormulaTargets.BatchUpdate;
464
- fd.items = FormulaHelper.TreeViewList(TID ?? 0, getSystemMetadata(true), undefined, FormulaTargets.BatchUpdate, SDK_Globals.dbBrand);
465
- fd.mid = focusedMetadataValue?.mid ?? 0;
466
- fd.tid = TID;
467
- return fd;
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
+ }
468
531
  };
469
- return (_jsxs(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(TMSplitterLayout, { separatorSize: 5, separatorColor: 'transparent', showSeparator: (isOpenPreview || isOpenMiddlePanel()) && deviceType !== DeviceType.MOBILE && isOpenDcmtForm, start: getPrimarySplitterStartLayout(), min: deviceType !== DeviceType.MOBILE && isOpenDcmtForm ? ['150px', '0'] : ['0', '0'], direction: 'horizontal', children: [_jsx(TMLayoutItem, { children: _jsx(TMToolbarCard, { showHeader: showHeader, title: fromDTD?.nameLoc, toolbar: allowNavigation ? formToolbar : _jsx(_Fragment, {}), items: showDcmtFormSidebar ? sideBarItems : undefined, onBack: isClosable ? undefined : handleClose, onClose: isClosable ? handleClose : undefined, children: metadataValuesSource.length > 0 && _jsxs(StyledToolbarCardContainer, { children: [_jsx(TMMetadataValues, { TID: TID, metadataValues: metadataValuesSource, metadataValuesOrig: metadataValuesSourceOrig, showAdvancedMenu: showAdvancedMenu, isOpenDistinctValues: isOpenDistinctValues, openChooserBySingleClick: !isOpenDistinctValues, selectedMID: focusedMetadataValue?.mid, layoutMode: layoutMode, deviceType: deviceType, validationItems: validationItems, onFocusedItemChanged: (item) => { (item?.mid !== focusedMetadataValue?.mid) && setFocusedMetadataValue(item); }, onValueChanged: (newItems) => {
470
- setFormData((prevItems) => prevItems.map((item) => {
471
- const newItem = newItems.find((newItem) => newItem.tid === item.tid && newItem.mid === item.mid);
472
- return newItem ? { ...item, ...newItem } : item;
473
- }));
474
- }, onAdvancedMenuClick: (e) => {
475
- switch (e.button) {
476
- case AdvancedMenuButtons.DistinctValues:
477
- setIsOpenDistinctValues(!isOpenDistinctValues);
478
- break;
479
- case AdvancedMenuButtons.FormulaEditor:
480
- setIsOpenFormulaEditor(!isOpenFormulaEditor);
481
- break;
482
- }
483
- } }), _jsxs(StyledFormButtonsContainer, { children: [_jsxs("div", { style: { display: 'flex', flexDirection: 'column', gap: 10 }, children: [fromDTD?.templateTID === TemplateTIDs.WF_WIApprView && _jsx(WorkFlowOperationButtons, { onApprove: () => setShowApprovePopup(true), onReject: () => setShowRejectPopup(true), onReAssign: () => setShowReAssignPopup(true), isInDcmtForm: true }), _jsx("div", { style: { display: 'flex', justifyContent: 'center', alignItems: 'center', gap: '8px' }, children: layoutMode === LayoutModes.Update ? _jsxs(_Fragment, { children: [_jsx(TMSaveFormButtonSave, { showTooltip: false, btnStyle: 'advanced', advancedColor: '#f09c0a', isModified: isModified, formMode: formMode, errorsCount: validationItems.filter(o => o.ResultType == ResultTypes.ERROR).length, onSaveAsync: confirmActionPopup }), _jsx(TMSaveFormButtonUndo, { btnStyle: 'toolbar', showTooltip: true, color: 'primary', isModified: isModified, formMode: formMode, onUndo: onUndoHandler })] }) :
484
- _jsxs(_Fragment, { children: [_jsx(TMButton, { disabled: archiveBtnDisabled, btnStyle: 'advanced', icon: _jsx(IconBoxArchiveIn, {}), showTooltip: false, caption: 'Archivia', advancedColor: TMColors.success, onClick: confirmActionPopup }), _jsx(TMButton, { disabled: !clearFormBtnDisabled, btnStyle: 'advanced', icon: _jsx(IconClear, {}), showTooltip: false, caption: 'Pulisci', advancedColor: TMColors.tertiary, onClick: clearFormHandler }), DID && _jsx(TMButton, { disabled: undoBtnDisabled, btnStyle: 'advanced', icon: _jsx(IconUndo, {}), width: '150px', showTooltip: false, caption: 'Annulla modifiche', advancedColor: TMColors.tertiary, onClick: onUndoHandler })] }) })] }), totalItems > listMaxItems && _jsx(TMShowAllOrMaxItemsButton, { showAll: showAll, dataSourceLength: totalItems, onClick: () => { setShowAll(!showAll); } })] }), showApprovePopup && _jsx(WorkFlowApproveRejectPopUp, { deviceType: deviceType, TID: TID, DID: DID, op: 0, onClose: () => setShowApprovePopup(false) }), showRejectPopup && _jsx(WorkFlowApproveRejectPopUp, { deviceType: deviceType, TID: TID, DID: DID, op: 1, onClose: () => setShowRejectPopup(false) }), showReAssignPopup && _jsx(WorkFlowReAssignPopUp, { deviceType: deviceType, TID: TID, DID: DID, onClose: () => setShowReAssignPopup(false) }), _jsx(ConfirmAttachmentsDialog, {})] }) }) }), isOpenPreview || isOpenMiddlePanel() ?
485
- _jsx(TMLayoutItem, { children: _jsxs(TMSplitterLayout, { separatorSize: 5, direction: 'horizontal', showSeparator: deviceType !== DeviceType.MOBILE && (isOpenPreview && isOpenMiddlePanel()), start: getSecondarySplitterStartLayout(), min: ['0', '0'], separatorColor: 'transparent', children: [isOpenMiddlePanel()
486
- ? _jsx(TMLayoutItem, { children: _jsx(TMToolbarCard, { padding: '0', showHeader: !(isOpenDetails && layoutMode === LayoutModes.Update), color: TMColors.primaryColor, backgroundColor: `${TMColors.primaryColor}25`, title: titleText(), toolbar: middlePanelToolbar, onClose: () => { closeMiddlePanel(); }, children: _jsx(StyledToolbarCardContainer, { children: _jsx(StyledSectionContainer, { children: _jsxs(StyledSidebarItemsContentContainer, { children: [isOpenBoard && layoutMode === LayoutModes.Update &&
487
- _jsx(TMDcmtBlog, { tid: TID, did: DID }), isOpenSysMetadata && layoutMode === LayoutModes.Update &&
488
- _jsx(TMMetadataValues, { layoutMode: layoutMode, openChooserBySingleClick: !isOpenDistinctValues, TID: TID, deviceType: deviceType, metadataValues: formData.filter(o => (o.mid != undefined && o.mid <= 100)), metadataValuesOrig: formData.filter(o => (o.mid != undefined && o.mid <= 100)), validationItems: [] }), isOpenDistinctValues &&
489
- _jsx(TMDistinctValues, { tid: TID, mid: focusedMetadataValue?.mid, showHeader: false, layoutMode: layoutMode, onSelectionChanged: (e) => {
490
- if (!e)
491
- return;
492
- setFormData((prevItems) => prevItems.map((item) => item.tid == e.tid && item.mid === e.mid ? { ...item, value: e.newValue } : item));
493
- } }), isOpenFormulaEditor &&
494
- _jsx(TMFormulaEditor, { isModal: false, formMode: FormModes.Update, inputData: getFormula(), showBack: false, onClose: () => setIsOpenFormulaEditor(false), onApplied: (newFormula) => {
495
- setFormData((prevItems) => prevItems.map((item) => item.tid == newFormula.tid && item.mid === newFormula.mid ? { ...item, value: FormulaHelper.addFormulaTag(newFormula.expression), isSelected: true, isEditable: true } : item));
496
- setFocusedMetadataValue(prevState => ({
497
- ...prevState,
498
- isSelected: true,
499
- isEditable: true,
500
- value: FormulaHelper.addFormulaTag(newFormula.expression)
501
- }));
502
- } })] }) }) }) }) })
503
- : _jsx(_Fragment, {}), isOpenPreview
504
- ? _jsxs(TMLayoutItem, { children: [layoutMode === LayoutModes.Update ?
505
- _jsx(TMDcmtPreview, { onClose: () => { setIsOpenPreview(false); onClosePreview?.(); }, dcmtData: currentDcmt, canNext: canNext, canPrev: canPrev, onNext: onNext, onPrev: onPrev }) :
506
- _jsx(TMFileUploader, { onFileUpload: (file) => setDcmtFile(file), onClose: () => setIsOpenPreview(false), isRequired: fromDTD?.archiveConstraint === ArchiveConstraints.ContentCompulsory && dcmtFile === null, defaultBlob: dcmtFile, deviceType: deviceType }), " "] })
507
- : _jsx(_Fragment, {})] }) }) : _jsx(_Fragment, {})] }), isOpenDetails &&
508
- _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 &&
509
- _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) => {
510
- 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}`));
511
- })] })] }));
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' })] }) })] }) })] }) })
542
+ : renderDcmtForm() }));
512
543
  };
513
544
  export default TMDcmtForm;
514
545
  //#region Styled Components
@@ -120,19 +120,17 @@ const TMSaveForm = ({ id, formMode = FormModes.Update, showToolbar = true, skipI
120
120
  _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
121
  : _jsx(_Fragment, { children: children }) }), showErrorGrid && validationItems.length > 0 ? _jsx(TMCard, { scrollY: true, padding: false, showBorder: false, children: _jsx(TMValidationItemsList, { validationItems: validationItems }) }) : _jsx(_Fragment, {})] }) })] }));
122
122
  };
123
- return (_jsx(_Fragment, { children: isModal && onClose
124
- ?
125
- _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 () => {
126
- deviceType === DeviceType.MOBILE ? (await onSaveAsync?.(), setShowList(true), onShowList?.(true)) : await onSaveAsync?.();
127
- setShowConfirmForClose(false);
128
- onClose?.();
129
- }, showTooltip: false }), _jsx(TMButton, { caption: SDKUI_Localizator.No, fontSize: '1.1rem', btnStyle: 'text', onClick: () => {
130
- deviceType === DeviceType.MOBILE && (onUndo(), setShowList(true), onShowList?.(true));
131
- setShowConfirmForClose(false);
132
- onClose?.();
133
- }, showTooltip: false, color: 'error' }), _jsx(TMButton, { caption: SDKUI_Localizator.Cancel, fontSize: '1.1rem', btnStyle: 'text', onClick: () => {
134
- setShowConfirmForClose(false);
135
- }, showTooltip: false, color: 'error' })] }) })] }) })] }) })
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' })] }) })] }) })] }) })
136
134
  : renderSaveForm() }));
137
135
  };
138
136
  export default TMSaveForm;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@topconsultnpm/sdkui-react-beta",
3
- "version": "6.12.78",
3
+ "version": "6.12.81",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "test": "echo \"Error: no test specified\" && exit 1",
@@ -41,7 +41,7 @@
41
41
  "lib"
42
42
  ],
43
43
  "dependencies": {
44
- "@topconsultnpm/sdk-ts-beta": "6.12.8",
44
+ "@topconsultnpm/sdk-ts-beta": "6.12.9",
45
45
  "buffer": "^6.0.3",
46
46
  "devextreme": "24.2.6",
47
47
  "devextreme-react": "24.2.6",