@topconsultnpm/sdkui-react-beta 6.13.29 → 6.13.31
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/assets/icomoon.svg +96 -96
- package/lib/assets/italy.svg +16 -16
- package/lib/assets/topmedia-six.svg +65 -65
- package/lib/assets/topmeida-six-bianco.svg +65 -65
- package/lib/components/base/Styled.js +2 -2
- package/lib/components/base/TMPanel.d.ts +1 -0
- package/lib/components/base/TMPanel.js +8 -2
- package/lib/components/features/documents/TMDcmtForm.d.ts +3 -1
- package/lib/components/features/documents/TMDcmtForm.js +20 -18
- package/lib/components/features/documents/TMMasterDetailDcmts.js +2 -2
- package/lib/components/features/search/TMSearch.d.ts +1 -0
- package/lib/components/features/search/TMSearch.js +60 -54
- package/lib/components/features/search/TMSearchQueryPanel.js +1 -1
- package/lib/components/features/search/TMSearchResult.d.ts +1 -1
- package/lib/components/features/search/TMSearchResult.js +2 -2
- package/lib/components/features/search/TMTreeSelector.d.ts +1 -0
- package/lib/components/features/search/TMTreeSelector.js +5 -2
- package/lib/components/sidebar/TMCommandsPanel.js +1 -1
- package/lib/helper/SDKUI_Globals.js +2 -2
- package/lib/utils/theme.d.ts +6 -1
- package/lib/utils/theme.js +10 -1
- package/package.json +1 -1
@@ -11,6 +11,8 @@ const StyledPanelContainer = styled.div `
|
|
11
11
|
border-radius: 10px;
|
12
12
|
opacity: 1;
|
13
13
|
background: #FFFFFF;
|
14
|
+
min-height: 0;
|
15
|
+
overflow: hidden;
|
14
16
|
position: ${({ $isMaximized }) => $isMaximized ? 'fixed' : 'relative'};
|
15
17
|
top: ${({ $isMaximized }) => $isMaximized ? '50px' : 'auto'};
|
16
18
|
left: ${({ $isMaximized }) => $isMaximized ? '50px' : 'auto'};
|
@@ -49,6 +51,7 @@ const StyledPanelHeader = styled.div `
|
|
49
51
|
const StyledPanelContent = styled.div `
|
50
52
|
width: 100%;
|
51
53
|
height: ${props => props.$height};
|
54
|
+
min-height: 0;
|
52
55
|
overflow: hidden;
|
53
56
|
border-bottom-right-radius: 10px;
|
54
57
|
border-bottom-left-radius: 10px;
|
@@ -62,7 +65,7 @@ const StyledPanelContent = styled.div `
|
|
62
65
|
outline: none;
|
63
66
|
}
|
64
67
|
`;
|
65
|
-
const TMPanel = ({ allowMaximize = true, color, backgroundColor, backgroundColorContainer, children, showHeader = true, title, totalItems, displayedItemsCount, toolbar, padding = '5px', keepActiveState = false, onBack, onClose, onHeaderDoubleClick, onMaximize }) => {
|
68
|
+
const TMPanel = ({ allowMaximize = true, color, backgroundColor, backgroundColorContainer, children, showHeader = true, title, totalItems, displayedItemsCount, toolbar, padding = '5px', keepActiveState = false, isVisible = true, onBack, onClose, onHeaderDoubleClick, onMaximize }) => {
|
66
69
|
const [isActive, setIsActive] = useState(false);
|
67
70
|
const [isMaximized, setIsMaximized] = useState(false);
|
68
71
|
const [minWidth, setMinWidth] = useState(undefined);
|
@@ -95,7 +98,10 @@ const TMPanel = ({ allowMaximize = true, color, backgroundColor, backgroundColor
|
|
95
98
|
return newValue;
|
96
99
|
});
|
97
100
|
};
|
98
|
-
return (_jsxs(StyledPanelContainer, { "$isMaximized": onMaximize ? false : isMaximized, style:
|
101
|
+
return (_jsxs(StyledPanelContainer, { "$isMaximized": onMaximize ? false : isMaximized, style: {
|
102
|
+
...(minWidth ? { minWidth } : {}),
|
103
|
+
visibility: isVisible ? 'visible' : 'hidden',
|
104
|
+
}, children: [showHeader &&
|
99
105
|
_jsx(StyledPanelHeader, { "$backgroundColor": backgroundColor, "$color": color, "$isActive": isActive, onDoubleClick: () => { if (onHeaderDoubleClick)
|
100
106
|
onHeaderDoubleClick(); }, tabIndex: -1, onFocus: handleFocus, onBlur: handleBlur, onClick: handleFocus, children: _jsxs("div", { style: { display: 'flex', flexDirection: 'row', alignItems: 'center', justifyContent: 'space-between', width: '100%' }, children: [_jsxs("div", { ref: titleRowRef, style: { display: 'flex', flexDirection: 'row', alignItems: 'center', gap: '8px' }, children: [onBack &&
|
101
107
|
_jsx(TMButton, { btnStyle: 'icon', icon: _jsx(IconArrowLeft, {}), caption: SDKUI_Localizator.Back, onClick: onBack }), _jsx("div", { style: { display: 'flex', flexDirection: 'row', alignItems: 'center' }, children: _jsxs("p", { style: {
|
@@ -27,7 +27,9 @@ interface ITMDcmtFormProps {
|
|
27
27
|
onClose?: () => void;
|
28
28
|
onSavedAsyncCallback?: (tid: number | undefined, did: number | undefined) => Promise<void>;
|
29
29
|
onSaveRecents?: (TIDs: number[]) => void;
|
30
|
-
|
30
|
+
onClosePreviewPanel?: () => void;
|
31
|
+
onCloseBlogPanel?: () => void;
|
32
|
+
onCloseSysMetadataPanel?: () => void;
|
31
33
|
isModal?: boolean;
|
32
34
|
titleModal?: string;
|
33
35
|
widthModal?: string;
|
@@ -33,7 +33,7 @@ import TMPanel from '../../base/TMPanel';
|
|
33
33
|
import TMCommandsPanel from '../../sidebar/TMCommandsPanel';
|
34
34
|
let abortControllerLocal = new AbortController();
|
35
35
|
//#endregion
|
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, isExpertMode = SDKUI_Globals.userSettings.advancedSettings.expertMode === 1, showDcmtForm = true, showDcmtFormSidebar = true, showPreview = false, showBoard = false, showSysMetadata = false,
|
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, isExpertMode = SDKUI_Globals.userSettings.advancedSettings.expertMode === 1, showDcmtForm = true, showDcmtFormSidebar = true, showPreview = false, showBoard = false, showSysMetadata = false, onClosePreviewPanel, onCloseBlogPanel, onCloseSysMetadataPanel, titleModal, isModal = false, widthModal = "100%", heightModal = "100%" }) => {
|
37
37
|
const mruTIDs = SDKUI_Globals.userSettings.archivingSettings.mruTIDs;
|
38
38
|
const [id, setID] = useState('');
|
39
39
|
const [showWaitPanelLocal, setShowWaitPanelLocal] = useState(false);
|
@@ -144,10 +144,13 @@ const TMDcmtForm = ({ showHeader = true, onSaveRecents, layoutMode = LayoutModes
|
|
144
144
|
return _jsx(IconShow, {});
|
145
145
|
}, [layoutMode, fileIsNotValid]);
|
146
146
|
const closeMiddlePanel = () => {
|
147
|
+
if (isOpenSysMetadata)
|
148
|
+
onCloseSysMetadataPanel?.();
|
149
|
+
if (isOpenBoard)
|
150
|
+
onCloseBlogPanel?.();
|
147
151
|
setIsOpenBoard(false);
|
148
152
|
setIsOpenSysMetadata(false);
|
149
153
|
setIsOpenTags(false);
|
150
|
-
// setIsOpenDistinctValues(false);
|
151
154
|
setIsOpenFormulaEditor(false);
|
152
155
|
};
|
153
156
|
const titleText = () => {
|
@@ -157,7 +160,6 @@ const TMDcmtForm = ({ showHeader = true, onSaveRecents, layoutMode = LayoutModes
|
|
157
160
|
return 'Metadati di sistema';
|
158
161
|
if (isOpenBoard)
|
159
162
|
return 'Bacheca';
|
160
|
-
// if (isOpenDistinctValues) return `${SDKUI_Localizator.DistinctValues} (${focusedMetadataValue?.md?.nameLoc})`;
|
161
163
|
if (isOpenFormulaEditor)
|
162
164
|
return `${SDKUI_Localizator.FormulaEditorTitle} (${focusedMetadataValue?.md?.nameLoc})`;
|
163
165
|
return '';
|
@@ -468,21 +470,21 @@ const TMDcmtForm = ({ showHeader = true, onSaveRecents, layoutMode = LayoutModes
|
|
468
470
|
} }), _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 })] }) :
|
469
471
|
_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() ?
|
470
472
|
_jsx(TMLayoutItem, { children: _jsxs(TMSplitterLayout, { direction: 'horizontal', overflow: 'visible', separatorSize: SDKUI_Globals.userSettings.themeSettings.gutters, showSeparator: deviceType !== DeviceType.MOBILE && (isOpenPreview && isOpenMiddlePanel()), start: getSecondarySplitterStartLayout(), min: ['0', '0'], separatorColor: 'transparent', children: [isOpenMiddlePanel()
|
471
|
-
? _jsx(TMLayoutItem, { children:
|
472
|
-
|
473
|
-
|
474
|
-
|
475
|
-
|
476
|
-
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
473
|
+
? _jsx(TMLayoutItem, { children: _jsxs(TMPanel, { showHeader: !(isOpenDetails && layoutMode === LayoutModes.Update), title: titleText(), toolbar: middlePanelToolbar, onClose: () => { closeMiddlePanel(); }, children: [isOpenBoard && layoutMode === LayoutModes.Update &&
|
474
|
+
_jsx(TMDcmtBlog, { tid: TID, did: DID }), isOpenSysMetadata && layoutMode === LayoutModes.Update &&
|
475
|
+
_jsx(TMMetadataValues, { layoutMode: layoutMode, openChooserBySingleClick: !isOpenDistinctValues, TID: TID, isReadOnly: true, deviceType: deviceType, metadataValues: formData.filter(o => (o.mid != undefined && o.mid <= 100)), metadataValuesOrig: formData.filter(o => (o.mid != undefined && o.mid <= 100)), validationItems: [] }), isOpenFormulaEditor &&
|
476
|
+
_jsx(TMFormulaEditor, { isModal: false, formMode: FormModes.Update, inputData: getFormula(), showBack: false, onClose: () => setIsOpenFormulaEditor(false), onApplied: (newFormula) => {
|
477
|
+
setFormData((prevItems) => prevItems.map((item) => item.tid == newFormula.tid && item.mid === newFormula.mid ? { ...item, value: FormulaHelper.addFormulaTag(newFormula.expression), isSelected: true, isEditable: true } : item));
|
478
|
+
setFocusedMetadataValue(prevState => ({
|
479
|
+
...prevState,
|
480
|
+
isSelected: true,
|
481
|
+
isEditable: true,
|
482
|
+
value: FormulaHelper.addFormulaTag(newFormula.expression)
|
483
|
+
}));
|
484
|
+
} })] }) })
|
483
485
|
: _jsx(_Fragment, {}), isOpenPreview
|
484
486
|
? _jsxs(TMLayoutItem, { children: [layoutMode === LayoutModes.Update ?
|
485
|
-
_jsx(TMDcmtPreview, { onClose: () => { setIsOpenPreview(false);
|
487
|
+
_jsx(TMDcmtPreview, { onClose: () => { setIsOpenPreview(false); onClosePreviewPanel?.(); }, dcmtData: currentDcmt, canNext: canNext, canPrev: canPrev, onNext: onNext, onPrev: onPrev }) :
|
486
488
|
_jsx(TMFileUploader, { onFileUpload: (file) => setDcmtFile(file), onClose: () => setIsOpenPreview(false), isRequired: fromDTD?.archiveConstraint === ArchiveConstraints.ContentCompulsory && dcmtFile === null, defaultBlob: dcmtFile, deviceType: deviceType }), " "] })
|
487
489
|
: _jsx(_Fragment, {})] }) }) : _jsx(_Fragment, {})] }), isOpenDistinctValues &&
|
488
490
|
_jsx(TMDistinctValues, { tid: TID, mid: focusedMetadataValue?.mid, isModal: true, showHeader: false, layoutMode: layoutMode, onSelectionChanged: (e) => {
|
@@ -506,9 +508,9 @@ const TMDcmtForm = ({ showHeader = true, onSaveRecents, layoutMode = LayoutModes
|
|
506
508
|
setIsOpenSysMetadata(!isOpenSysMetadata);
|
507
509
|
} } },
|
508
510
|
] : []),
|
509
|
-
...(currentTIDHasMasterRelations ? [{ icon: _jsx(IconDetailDcmts, {}), selected: isOpenMaster, disabled: isMasterDisabled, onClick: () => { if (!isMasterDisabled)
|
511
|
+
...(allowRelations && currentTIDHasMasterRelations ? [{ icon: _jsx(IconDetailDcmts, {}), selected: isOpenMaster, disabled: isMasterDisabled, onClick: () => { if (!isMasterDisabled)
|
510
512
|
setIsOpenMaster(!isOpenMaster); } }] : []),
|
511
|
-
...(currentTIDHasDetailRelations ? [{ icon: _jsx(IconDetailDcmts, { transform: 'scale(-1, 1)' }), selected: isOpenDetails, disabled: isDetailsDisabled, onClick: () => { if (!isDetailsDisabled)
|
513
|
+
...(allowRelations && currentTIDHasDetailRelations ? [{ icon: _jsx(IconDetailDcmts, { transform: 'scale(-1, 1)' }), selected: isOpenDetails, disabled: isDetailsDisabled, onClick: () => { if (!isDetailsDisabled)
|
512
514
|
setIsOpenDetails(!isOpenDetails); } }] : []),
|
513
515
|
...customRightSidebarItems
|
514
516
|
] }), isOpenDetails &&
|
@@ -393,8 +393,8 @@ const TMMasterDetailDcmts = ({ deviceType, inputDcmts, isForMaster, showCurrentD
|
|
393
393
|
_jsx(TMNothingToShow, { text: getTitle(), secondText: SDKUI_Localizator.NoDataToDisplay, icon: isForMaster ? _jsx(IconDetailDcmts, { fontSize: 96, transform: 'scale(-1, 1)' }) : _jsx(IconDetailDcmts, { fontSize: 96 }) })
|
394
394
|
:
|
395
395
|
_jsx(TMTreeView, { dataSource: data, allowMultipleSelection: allowMultipleSelection, calculateItemsForNode: calculateItemsForNode, itemRender: renderItem, focusedItem: focusedItem, selectedItems: selectedItems, onFocusedItemChanged: handleFocusedItemChanged, onSelectionChanged: handleSelectedItemsChanged, onDataChanged: (items) => setData(updateHiddenProperty(items)) }) }), _jsx(TMLayoutItem, { children: focusedItem?.isDcmt ?
|
396
|
-
_jsx(TMDcmtForm, { TID: focusedItem?.tid, DID: focusedItem.did, isClosable: deviceType !== DeviceType.MOBILE, allowNavigation: false, allowRelations: deviceType !== DeviceType.MOBILE, showDcmtFormSidebar: deviceType === DeviceType.MOBILE, showPreview: showPreview, showBoard: showBoard, showSysMetadata: showSysMetadata, showDcmtForm: showDcmtForm, onClose: () => { setShowDcmtForm(false); },
|
397
|
-
_jsx(TMSearchResult, { context: SearchResultContext.METADATA_SEARCH, searchResults: focusedItem?.searchResult ?? [], showSearchResultSidebar: false, onClose: () => { setShowDcmtForm(false); },
|
396
|
+
_jsx(TMDcmtForm, { TID: focusedItem?.tid, DID: focusedItem.did, isClosable: deviceType !== DeviceType.MOBILE, allowNavigation: false, allowRelations: deviceType !== DeviceType.MOBILE, showDcmtFormSidebar: deviceType === DeviceType.MOBILE, showPreview: showPreview, showBoard: showBoard, showSysMetadata: showSysMetadata, showDcmtForm: showDcmtForm, onClose: () => { setShowDcmtForm(false); }, onClosePreviewPanel: () => { setShowPreview(false); } }) :
|
397
|
+
_jsx(TMSearchResult, { context: SearchResultContext.METADATA_SEARCH, searchResults: focusedItem?.searchResult ?? [], showSearchResultSidebar: false, onClose: () => { setShowDcmtForm(false); }, onClosePreviewPanel: () => { setShowPreview(false); }, onTaskCreateRequest: onTaskCreateRequest }) })] }, "TMDetails-panel") }) }), _jsx(TMCommandsPanel, { isMobile: isMobile, items: [
|
398
398
|
{ icon: _jsx(IconShow, {}), selected: showPreview, onClick: () => { setShowPreview(!showPreview); } },
|
399
399
|
{ icon: _jsx(IconPreview, {}), selected: showDcmtForm, onClick: () => { setShowDcmtForm(!showDcmtForm); } },
|
400
400
|
{ icon: _jsx(IconBoard, {}), selected: showBoard, onClick: () => { setShowSysMetadata(false); setShowBoard(!showBoard); } },
|
@@ -5,7 +5,7 @@ import TMSavedQuerySelector from './TMSavedQuerySelector';
|
|
5
5
|
import TMTreeSelector from './TMTreeSelector';
|
6
6
|
import { TabPanel, Item } from 'devextreme-react/tab-panel';
|
7
7
|
import TMSearchQueryPanel, { refreshLastSearch } from './TMSearchQueryPanel';
|
8
|
-
import { getSysAllDcmtsSQD, IconProgressReady, IconSavedQuery,
|
8
|
+
import { getSysAllDcmtsSQD, IconProgressReady, IconSavedQuery, IconTree, SDKUI_Globals, SDKUI_Localizator } from '../../../helper';
|
9
9
|
import { TMLayoutItem, TMSplitterLayout } from '../../base/TMLayout';
|
10
10
|
import TMPanel from '../../base/TMPanel';
|
11
11
|
import TMSearchResult from './TMSearchResult';
|
@@ -29,9 +29,9 @@ const TMSearch = ({ inputTID, inputSqdID, isExpertMode = SDKUI_Globals.userSetti
|
|
29
29
|
const [searchResult, setSearchResult] = useState([]);
|
30
30
|
const [mruTIDs, setMruTIDs] = useState([]);
|
31
31
|
const [currentSearchView, setCurrentSearchView] = useState(TMSearchViews.None);
|
32
|
-
const [showDistinctValuesPanel, setShowDistinctValuesPanel] = useState(false);
|
33
32
|
const [showTreesPanel, setShowTreesPanel] = useState(true);
|
34
33
|
const [showRecentsPanel, setShowRecentsPanel] = useState(true);
|
34
|
+
const [showSearchPanel, setShowSearchPanel] = useState(true);
|
35
35
|
const [showSavedQueryPanel, setShowSavedQueryPanel] = useState(true);
|
36
36
|
const [currentSQDMode, setCurrentSQDMode] = useState(1);
|
37
37
|
const [lastQdSearched, setLastQdSearched] = useState();
|
@@ -54,6 +54,7 @@ const TMSearch = ({ inputTID, inputSqdID, isExpertMode = SDKUI_Globals.userSetti
|
|
54
54
|
}, [inputSqdID]);
|
55
55
|
useEffect(() => {
|
56
56
|
if (!currentTID || currentTID <= 0) {
|
57
|
+
setShowSearchPanel(false);
|
57
58
|
setSearchResult([]);
|
58
59
|
return;
|
59
60
|
}
|
@@ -63,6 +64,7 @@ const TMSearch = ({ inputTID, inputSqdID, isExpertMode = SDKUI_Globals.userSetti
|
|
63
64
|
setFilteredByTIDSQDs(sqds);
|
64
65
|
setCurrentSQDMode(0);
|
65
66
|
await setDefaultSQDAsync(sqds);
|
67
|
+
setShowSearchPanel(true);
|
66
68
|
});
|
67
69
|
}, [currentTID]);
|
68
70
|
useEffect(() => {
|
@@ -131,74 +133,78 @@ const TMSearch = ({ inputTID, inputSqdID, isExpertMode = SDKUI_Globals.userSetti
|
|
131
133
|
gap: SDKUI_Globals.userSettings.themeSettings.gutters,
|
132
134
|
width: '100%',
|
133
135
|
height: '100%',
|
134
|
-
}, children: [_jsx("div", { style: { flex: 1, minWidth: 0, height: '100%' }, children: _jsxs(TMSplitterLayout, { direction: 'horizontal', overflow: 'visible', separatorSize: SDKUI_Globals.userSettings.themeSettings.gutters, separatorActiveColor: 'transparent', separatorColor: 'transparent', showSeparator: deviceType !== DeviceType.MOBILE && showTreesPanel, min: ['0', '0'], start:
|
136
|
+
}, children: [_jsx("div", { style: { flex: 1, minWidth: 0, height: '100%' }, children: _jsxs(TMSplitterLayout, { direction: 'horizontal', overflow: 'visible', separatorSize: SDKUI_Globals.userSettings.themeSettings.gutters, separatorActiveColor: 'transparent', separatorColor: 'transparent', showSeparator: deviceType !== DeviceType.MOBILE && showTreesPanel, min: ['0', '0'], start: isMobile ? ['100%', '0%'] : showTreesPanel ? ['20%', '80%'] : ['0%', '100%'], children: [!isMobile &&
|
135
137
|
_jsx(TMTreeSelector, { onClose: () => setShowTreesPanel(false), onSelectedTIDChanged: (tid) => {
|
136
138
|
setCurrentTID(tid);
|
137
139
|
if (tid && mruTIDs.includes(tid))
|
138
140
|
setCurrentMruTID(tid);
|
139
141
|
else
|
140
142
|
setCurrentMruTID(0);
|
141
|
-
} }), _jsxs(TMSplitterLayout, { direction: 'horizontal', overflow: 'visible', showSeparator: deviceType !== DeviceType.MOBILE && showSavedQueryPanel
|
143
|
+
} }), _jsxs(TMSplitterLayout, { direction: 'horizontal', overflow: 'visible', showSeparator: deviceType !== DeviceType.MOBILE && showSavedQueryPanel, separatorSize: SDKUI_Globals.userSettings.themeSettings.gutters, separatorColor: 'transparent', separatorActiveColor: 'transparent', min: ['0', '0'], start: isMobile ? ['100%', '0%'] : ((showSavedQueryPanel) ? ['70%', '30%'] : ['100%', '0%']), children: [_jsx(TMLayoutItem, { children: _jsxs(TMSplitterLayout, { direction: 'horizontal', overflow: 'visible', showSeparator: deviceType !== DeviceType.MOBILE && showRecentsPanel, separatorSize: SDKUI_Globals.userSettings.themeSettings.gutters, separatorColor: 'transparent', separatorActiveColor: 'transparent', min: ['0', '0'], start: deviceType === DeviceType.DESKTOP ? (showRecentsPanel ? ['30%', '70%'] : ['0%', '100%']) : (currentTID ? ['0%', '100%'] : ['100%', '0%']), children: [_jsx(TMPanel, { title: "Scorciatoie", totalItems: mruTIDs.length, allowMaximize: !isMobile, onClose: isMobile ? undefined : () => setShowRecentsPanel(false), children: _jsx(TMRecentsManager, { mruTIDs: mruTIDs, currentMruTID: currentMruTID, deviceType: deviceType, onSelectedTID: (tid) => { setCurrentMruTID(tid); setCurrentTID(tid); }, onDeletedTID: (tid) => {
|
142
144
|
let newMruTIDS = mruTIDs.slice();
|
143
145
|
let index = newMruTIDS.findIndex(o => o == tid);
|
144
146
|
if (index >= 0)
|
145
147
|
newMruTIDS.splice(index, 1);
|
146
148
|
SDKUI_Globals.userSettings.searchSettings.mruTIDs = newMruTIDS.filter(tid => tid != undefined && tid != null);
|
147
149
|
setMruTIDs(newMruTIDS);
|
148
|
-
} }) }), _jsx(TMSearchQueryPanel, { isExpertMode: isExpertMode, fromDTD: fromDTD, SQD: currentSQD, onBack: deviceType !== DeviceType.DESKTOP ? () => { setCurrentTID(0); } : undefined, onSearchCompleted: (searchResult, qd) => {
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
150
|
+
} }) }), _jsx(StyledMultiViewPanel, { "$isVisible": showSearchPanel || !isMobile, children: _jsx(TMSearchQueryPanel, { isExpertMode: isExpertMode, fromDTD: fromDTD, SQD: currentSQD, onBack: deviceType !== DeviceType.DESKTOP ? () => { setCurrentTID(0); } : undefined, onSearchCompleted: (searchResult, qd) => {
|
151
|
+
setSearchResult(searchResult);
|
152
|
+
if (searchResult.length <= 0)
|
153
|
+
return;
|
154
|
+
setLastQdSearched(qd);
|
155
|
+
setCurrentSearchView(TMSearchViews.Result);
|
156
|
+
// Salvataggio ultimi 10 TIDs
|
157
|
+
let fromTID = searchResult?.[0].fromTID;
|
158
|
+
let newMruTIDS = mruTIDs.slice();
|
159
|
+
let index = newMruTIDS.findIndex(o => o == fromTID);
|
160
|
+
if (index >= 0)
|
161
|
+
newMruTIDS.splice(index, 1);
|
162
|
+
if (newMruTIDS.length >= 10)
|
163
|
+
newMruTIDS.splice(0, 1);
|
164
|
+
newMruTIDS.push(fromTID);
|
165
|
+
setMruTIDs(newMruTIDS);
|
166
|
+
setCurrentMruTID(fromTID);
|
167
|
+
SDKUI_Globals.userSettings.searchSettings.mruTIDs = newMruTIDS.filter(tid => tid != undefined && tid != null);
|
168
|
+
}, onSqdSaved: async (newSqd) => {
|
169
|
+
await loadDataSQDsAsync(true, newSqd.masterTID);
|
170
|
+
await setSQDAsync(newSqd);
|
171
|
+
} }) })] }) }), _jsx(StyledMultiViewPanel, { "$isVisible": showSavedQueryPanel && !isMobile, children: _jsx(TMPanel, { title: SDK_Localizator.SavedQueries, allowMaximize: !isMobile, onClose: isMobile ? undefined : () => setShowSavedQueryPanel(false), children: _jsxs(TabPanel, { width: "100%", height: "100%", showNavButtons: true, repaintChangesOnly: true, selectedIndex: currentSQDMode, onSelectedIndexChange: (index) => setCurrentSQDMode(index), children: [(currentTID || currentSQD) ? _jsx(Item, { title: fromDTD?.nameLoc, children: _jsx(TMSavedQuerySelector, { allowShowSearch: false, items: filteredByTIDSQDs, selectedId: currentSQD?.id, onRefreshData: () => { loadDataSQDsAsync(true); }, onItemClick: (sqd) => onSQDItemClick(sqd, setSQDAsync), onDeleted: (sqd) => onSQDDeleted(sqd, sqd.id == currentSQD?.id ? filteredByTIDSQDs.find(o => o.id == 1) : currentSQD, setSQDAsync) }) }) : _jsx(_Fragment, {}), _jsx(Item, { title: SDKUI_Localizator.Alls2, children: _jsx(TMSavedQuerySelector, { allowShowSearch: true, items: allSQDs, manageDefault: false,
|
170
172
|
// selectedId={currentSQD?.id}
|
171
|
-
onItemClick: (sqd) => onSQDItemClick(sqd, setSQDAsync), onDeleted: (sqd) => onSQDDeleted(sqd, sqd.id == currentSQD?.id ? undefined : currentSQD, setSQDAsync) }) })] }) }) })] })] }) }),
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
173
|
+
onItemClick: (sqd) => onSQDItemClick(sqd, setSQDAsync), onDeleted: (sqd) => onSQDDeleted(sqd, sqd.id == currentSQD?.id ? undefined : currentSQD, setSQDAsync) }) })] }) }) })] })] }) }), !isMobile &&
|
174
|
+
_jsx(TMCommandsPanel, { isMobile: isMobile, items: [
|
175
|
+
{
|
176
|
+
icon: _jsx(IconTree, {}),
|
177
|
+
selected: showTreesPanel,
|
178
|
+
onClick: () => setShowTreesPanel(!showTreesPanel),
|
179
|
+
},
|
180
|
+
{
|
181
|
+
icon: _jsx(IconProgressReady, {}),
|
182
|
+
selected: showRecentsPanel,
|
183
|
+
onClick: () => setShowRecentsPanel(!showRecentsPanel),
|
184
|
+
},
|
185
|
+
{
|
186
|
+
icon: _jsx(IconSavedQuery, {}),
|
187
|
+
selected: showSavedQueryPanel,
|
188
|
+
onClick: () => setShowSavedQueryPanel(!showSavedQueryPanel),
|
189
|
+
},
|
190
|
+
...(searchResult.length > 0 ? [{
|
191
|
+
icon: _jsx(IconSearchResults, {}),
|
192
|
+
disabled: searchResult.length <= 0,
|
193
|
+
onClick: () => {
|
194
|
+
if (searchResult.length > 0) {
|
195
|
+
setCurrentSearchView(currentSearchView === TMSearchViews.None
|
196
|
+
? TMSearchViews.Result
|
197
|
+
: TMSearchViews.None);
|
198
|
+
}
|
199
|
+
},
|
200
|
+
}] : []),
|
201
|
+
] })] }), searchResult.length > 0 &&
|
199
202
|
_jsx(TMSearchResult, { isVisible: currentSearchView === TMSearchViews.Result, context: SearchResultContext.METADATA_SEARCH, searchResults: searchResult, onRefreshAfterAddDcmtToFavs: onRefreshAfterAddDcmtToFavs, onRefreshSearchAsync: async () => {
|
200
203
|
// setSearchResult([]);
|
201
204
|
setSearchResult(await refreshLastSearch(lastQdSearched) ?? []);
|
202
205
|
}, onTaskCreateRequest: onTaskCreateRequest, onClose: () => { setCurrentSearchView(TMSearchViews.None); } })] }));
|
203
206
|
};
|
204
207
|
export default TMSearch;
|
208
|
+
export function IconSearchResults(props) {
|
209
|
+
return (_jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 20 20", width: "1em", height: "1em", ...props, children: _jsx("path", { fill: "currentColor", d: "M5.75 3h8.5A2.75 2.75 0 0 1 17 5.75v8.5A2.75 2.75 0 0 1 14.25 17h-4.129l-1-1h5.129A1.75 1.75 0 0 0 16 14.25v-8.5A1.75 1.75 0 0 0 14.25 4h-8.5A1.75 1.75 0 0 0 4 5.75v3.277a4.5 4.5 0 0 0-1 .23V5.75A2.75 2.75 0 0 1 5.75 3M9.5 14a.5.5 0 0 1 0-1h4a.5.5 0 0 1 0 1zm-2-6.75a.75.75 0 1 1-1.5 0a.75.75 0 0 1 1.5 0m2-.25a.5.5 0 0 0 0 1h4a.5.5 0 0 0 0-1zm0 3a.5.5 0 0 0 0 1h4a.5.5 0 0 0 0-1zm-5 7c.786 0 1.512-.26 2.096-.697l2.55 2.55a.5.5 0 1 0 .708-.707l-2.55-2.55A3.5 3.5 0 1 0 4.5 17m0-1a2.5 2.5 0 1 1 0-5a2.5 2.5 0 0 1 0 5" }) }));
|
210
|
+
}
|
@@ -102,7 +102,7 @@ const TMSearchQueryPanel = ({ fromDTD, isExpertMode = SDKUI_Globals.userSettings
|
|
102
102
|
}
|
103
103
|
}
|
104
104
|
};
|
105
|
-
return (_jsxs(_Fragment, { children: [_jsxs(TMPanel, { title: fromDTD?.nameLoc ?? SDKUI_Localizator.Search_Metadata, onBack: onBack, keepActiveState: keepStatePanelIsActive, toolbar: _jsx(_Fragment, { children: (SQD && !showSqdForm) ?
|
105
|
+
return (_jsxs(_Fragment, { children: [_jsxs(TMPanel, { title: fromDTD?.nameLoc ?? SDKUI_Localizator.Search_Metadata, allowMaximize: deviceType !== DeviceType.MOBILE, onBack: onBack, keepActiveState: keepStatePanelIsActive, toolbar: _jsx(_Fragment, { children: (SQD && !showSqdForm) ?
|
106
106
|
_jsx(TMDropDownMenu, { backgroundColor: 'white', borderRadius: '3px', content: _jsx(TMButton, { btnStyle: 'icon', caption: 'Altro', icon: _jsx(IconMenuVertical, { color: 'white' }), showTooltip: false }), items: [
|
107
107
|
{ icon: _jsx(IconAddCircleOutline, {}), text: SDKUI_Localizator.SavedQueryNew, onClick: () => { openSqdForm(FormModes.Create); } },
|
108
108
|
{ icon: _jsx(IconEdit, {}), text: SDKUI_Localizator.SavedQueryUpdate, disabled: (SQD && SQD.id == 1), onClick: () => { openSqdForm(FormModes.Update); } },
|
@@ -20,7 +20,7 @@ interface ITMSearchResultProps {
|
|
20
20
|
onSelectedTIDChanged?: (TID: number) => void;
|
21
21
|
onRefreshSearchAsync?: () => Promise<void>;
|
22
22
|
onRefreshAfterAddDcmtToFavs?: () => void;
|
23
|
-
|
23
|
+
onClosePreviewPanel?: () => void;
|
24
24
|
onTaskCreateRequest?: (taskContext: TaskContext) => void;
|
25
25
|
}
|
26
26
|
declare const TMSearchResult: React.FC<ITMSearchResultProps>;
|
@@ -54,7 +54,7 @@ const orderByName = (array) => {
|
|
54
54
|
} return 0; });
|
55
55
|
};
|
56
56
|
//#endregion Helper Methods
|
57
|
-
const TMSearchResult = ({ context = SearchResultContext.METADATA_SEARCH, isVisible = true, searchResults = [], showSearchResultSidebar = true, showSelector = false,
|
57
|
+
const TMSearchResult = ({ context = SearchResultContext.METADATA_SEARCH, isVisible = true, searchResults = [], showSearchResultSidebar = true, showSelector = false, onClosePreviewPanel, showDcmtForm = false, showBoard = false, showPreview = false, title, showSysMetadata = false, isClosable = false, allowFloatingBar = true, showToolbarHeader = true, onRefreshAfterAddDcmtToFavs, onRefreshSearchAsync, onSelectedTIDChanged, onUpdate, onClose, onTaskCreateRequest }) => {
|
58
58
|
const [id, setID] = useState('');
|
59
59
|
const [showApprovePopup, setShowApprovePopup] = useState(false);
|
60
60
|
const [showRejectPopup, setShowRejectPopup] = useState(false);
|
@@ -465,7 +465,7 @@ const TMSearchResult = ({ context = SearchResultContext.METADATA_SEARCH, isVisib
|
|
465
465
|
_jsxs(StyledContainer, { children: [isOpenBoard && _jsx(TMDcmtBlog, { tid: focusedItem?.TID, did: focusedItem?.DID }), isOpenSysMetadata &&
|
466
466
|
_jsx(TMMetadataValues, { layoutMode: LayoutModes.Update, openChooserBySingleClick: !isOpenDistinctValues, TID: focusedItem?.TID, isReadOnly: true, deviceType: deviceType, metadataValues: currentMetadataValues.filter(o => (o.mid != undefined && o.mid <= 100)), metadataValuesOrig: currentMetadataValues.filter(o => (o.mid != undefined && o.mid <= 100)), validationItems: [] })] }) }) })
|
467
467
|
: _jsx(_Fragment, {}), isOpenPreview
|
468
|
-
? _jsx(TMLayoutItem, { children: _jsx(TMDcmtPreview, { onClose: () => { setIsOpenPreview(false);
|
468
|
+
? _jsx(TMLayoutItem, { children: _jsx(TMDcmtPreview, { onClose: () => { setIsOpenPreview(false); onClosePreviewPanel?.(); }, dcmtData: currentDcmt, canNext: canNavigateHandler('next'), canPrev: canNavigateHandler('prev'), onNext: () => onNavigateHandler('next'), onPrev: () => onNavigateHandler('prev') }) })
|
469
469
|
: _jsx(_Fragment, {})] }) })
|
470
470
|
: _jsx(_Fragment, {})] }) }) }), showSearchResultSidebar && _jsx(TMCommandsPanel, { isMobile: deviceType === DeviceType.MOBILE, items: [
|
471
471
|
{ icon: _jsx(IconShow, {}), selected: isOpenPreview, disabled: isPreviewDisabled, onClick: () => { if (!isPreviewDisabled)
|
@@ -2,6 +2,7 @@ import React from 'react';
|
|
2
2
|
import { LayoutModes } from '@topconsultnpm/sdk-ts-beta';
|
3
3
|
interface ITMTreeSelectorProps {
|
4
4
|
layoutMode?: LayoutModes;
|
5
|
+
isVisible?: boolean;
|
5
6
|
onSelectedTIDChanged?: (tid: number | undefined, treeId?: number | undefined) => void;
|
6
7
|
onClose?: () => void;
|
7
8
|
}
|
@@ -11,7 +11,10 @@ import TMLayoutContainer, { TMLayoutItem } from '../../base/TMLayout';
|
|
11
11
|
import TMPanel from '../../base/TMPanel';
|
12
12
|
import TMTidViewer from '../../viewers/TMTidViewer';
|
13
13
|
import { TMColors } from '../../../utils/theme';
|
14
|
-
|
14
|
+
import { useDeviceType, DeviceType } from '../../base/TMDeviceProvider';
|
15
|
+
const TMTreeSelector = ({ layoutMode = LayoutModes.Update, isVisible, onSelectedTIDChanged, onClose }) => {
|
16
|
+
const deviceType = useDeviceType();
|
17
|
+
const isMobile = deviceType === DeviceType.MOBILE;
|
15
18
|
const [trees, setTrees] = useState([]);
|
16
19
|
const [treeItems, setTreeItems] = useState([]);
|
17
20
|
const [selectedTreeId, setSelectedTreeId] = useState(0);
|
@@ -92,7 +95,7 @@ const TMTreeSelector = ({ layoutMode = LayoutModes.Update, onSelectedTIDChanged,
|
|
92
95
|
}
|
93
96
|
;
|
94
97
|
}, []);
|
95
|
-
return (_jsx(TMPanel, { title: SDK_Localizator.Trees, totalItems: trees.length, onClose: onClose, toolbar: _jsx(TMButton, { btnStyle: 'icon', caption: defaultTreeId == selectedTreeId ? SDKUI_Localizator.TreeRemoveDefault : SDKUI_Localizator.SetAsDefault, icon: defaultTreeId == selectedTreeId ? _jsx(IconStarRemove, { color: 'rgb(243, 114, 92)' }) : _jsx(IconStar, { color: 'rgb(248, 215, 117)' }), onClick: () => {
|
98
|
+
return (_jsx(TMPanel, { title: SDK_Localizator.Trees, isVisible: isVisible, totalItems: trees.length, onClose: isMobile ? undefined : onClose, allowMaximize: !isMobile, toolbar: _jsx(TMButton, { btnStyle: 'icon', caption: defaultTreeId == selectedTreeId ? SDKUI_Localizator.TreeRemoveDefault : SDKUI_Localizator.SetAsDefault, icon: defaultTreeId == selectedTreeId ? _jsx(IconStarRemove, { color: 'rgb(243, 114, 92)' }) : _jsx(IconStar, { color: 'rgb(248, 215, 117)' }), onClick: () => {
|
96
99
|
if (defaultTreeId == selectedTreeId) {
|
97
100
|
SDKUI_Globals.userSettings.searchSettings.defaultTree = -1;
|
98
101
|
setDefaultTreeId(-1);
|
@@ -7,7 +7,7 @@ export const StyledCommandsPanel = styled.div `
|
|
7
7
|
width: ${({ $isMobile }) => ($isMobile ? '100%' : '50px')};
|
8
8
|
height: ${({ $isMobile }) => ($isMobile ? '50px' : 'max-content')};
|
9
9
|
background: transparent linear-gradient(90deg, #CCE0F4 0%, #7EC1E7 14%, #39A6DB 28%, #1E9CD7 35%, #0075BE 78%, #005B97 99%) 0% 0% no-repeat padding-box;
|
10
|
-
border-radius:
|
10
|
+
border-radius: 10px;
|
11
11
|
padding: 10px;
|
12
12
|
gap: 10px;
|
13
13
|
`;
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { InvoiceRetrieveFormats, LocalStorageService, OrderRetrieveFormats } from "@topconsultnpm/sdk-ts-beta";
|
2
|
-
import { FontSize } from "../utils/theme";
|
2
|
+
import { FontSize, Gutters } from "../utils/theme";
|
3
3
|
export const dcmtsFileCacheDownload = new Map();
|
4
4
|
export const dcmtsFileCachePreview = new Map();
|
5
5
|
export const CACHE_SIZE_LIMIT = 10;
|
@@ -63,7 +63,7 @@ export class ThemeSettings {
|
|
63
63
|
constructor() {
|
64
64
|
this.fontSize = FontSize.defaultFontSizeInPixel;
|
65
65
|
this.gridSettings = new DataGridSettings();
|
66
|
-
this.gutters =
|
66
|
+
this.gutters = Gutters.getGutters();
|
67
67
|
// Automatically update the CSS variable for font size
|
68
68
|
document.documentElement.style.setProperty('--base-font-size', this.fontSize);
|
69
69
|
}
|
package/lib/utils/theme.d.ts
CHANGED
@@ -57,4 +57,9 @@ declare class TMMargin {
|
|
57
57
|
static smallMargin: string;
|
58
58
|
static largeMargin: string;
|
59
59
|
}
|
60
|
-
|
60
|
+
declare class Gutters {
|
61
|
+
static readonly defaultDesktop: number;
|
62
|
+
static readonly defaultMobile: number;
|
63
|
+
static getGutters(): number;
|
64
|
+
}
|
65
|
+
export { Colors, TMColors, FontSize, TMMargin, Gutters };
|
package/lib/utils/theme.js
CHANGED
@@ -56,4 +56,13 @@ class TMMargin {
|
|
56
56
|
TMMargin.defultMargin = '5px';
|
57
57
|
TMMargin.smallMargin = '3px';
|
58
58
|
TMMargin.largeMargin = '10px';
|
59
|
-
|
59
|
+
class Gutters {
|
60
|
+
static getGutters() {
|
61
|
+
// Detect mobile device (basic check)
|
62
|
+
const isMobile = /Mobi|Android|iPhone|iPad|iPod/i.test(navigator.userAgent);
|
63
|
+
return isMobile ? this.defaultMobile : this.defaultDesktop;
|
64
|
+
}
|
65
|
+
}
|
66
|
+
Gutters.defaultDesktop = 20;
|
67
|
+
Gutters.defaultMobile = 5;
|
68
|
+
export { Colors, TMColors, FontSize, TMMargin, Gutters };
|