@topconsultnpm/sdkui-react-beta 6.13.15 → 6.13.17

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.
@@ -15,6 +15,7 @@ export interface ITMPanelProps extends ITMRightSidebarProps {
15
15
  onBack?: () => void;
16
16
  onClose?: () => void;
17
17
  onHeaderDoubleClick?: () => void;
18
+ onMaximize?: (isMaximized: boolean) => void;
18
19
  }
19
20
  declare const TMPanel: React.FC<ITMPanelProps>;
20
21
  export default TMPanel;
@@ -69,7 +69,7 @@ const StyledInnerPanelDiv = styled.div `
69
69
  outline: none;
70
70
  }
71
71
  `;
72
- const TMPanel = ({ allowMaximize = true, items = [], onItemClick, selectedItem, showPanel, color, backgroundColor, backgroundColorContainer, children, showHeader = true, title, totalItems, displayedItemsCount, toolbar, padding = '5px', onBack, onClose, onHeaderDoubleClick }) => {
72
+ const TMPanel = ({ allowMaximize = true, items = [], onItemClick, selectedItem, showPanel, color, backgroundColor, backgroundColorContainer, children, showHeader = true, title, totalItems, displayedItemsCount, toolbar, padding = '5px', onBack, onClose, onHeaderDoubleClick, onMaximize }) => {
73
73
  const [isActive, setIsActive] = useState(false);
74
74
  const [isMaximized, setIsMaximized] = useState(false);
75
75
  const [minWidth, setMinWidth] = useState(undefined);
@@ -79,7 +79,17 @@ const TMPanel = ({ allowMaximize = true, items = [], onItemClick, selectedItem,
79
79
  setMinWidth(titleRowRef.current.offsetWidth);
80
80
  }
81
81
  }, [title, displayedItemsCount, totalItems, onBack]);
82
- return (_jsxs(StyledPanelContainer, { "$isMaximized": isMaximized, style: minWidth ? { minWidth } : undefined, children: [showHeader &&
82
+ // handler for external maximize management
83
+ const handleMaximize = () => {
84
+ setIsMaximized(prevState => {
85
+ const newValue = !prevState;
86
+ if (onMaximize) {
87
+ onMaximize(newValue);
88
+ }
89
+ return newValue;
90
+ });
91
+ };
92
+ return (_jsxs(StyledPanelContainer, { "$isMaximized": onMaximize ? false : isMaximized, style: minWidth ? { minWidth } : undefined, children: [showHeader &&
83
93
  _jsx(StyledPanelHeader, { "$backgroundColor": backgroundColor, "$color": color, "$isActive": isActive, onDoubleClick: () => { if (onHeaderDoubleClick)
84
94
  onHeaderDoubleClick(); }, tabIndex: -1, onFocus: () => setIsActive(true), onBlur: () => setIsActive(false), onClick: () => setIsActive(true), 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 &&
85
95
  _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: {
@@ -93,7 +103,7 @@ const TMPanel = ({ allowMaximize = true, items = [], onItemClick, selectedItem,
93
103
  ? ` (${totalItems})`
94
104
  : ''] }) })] }), _jsxs("div", { style: { display: 'flex', flexDirection: 'row', alignItems: 'center', gap: '5px' }, children: [toolbar, allowMaximize && _jsx(TMButton, { color: 'primaryOutline', caption: isMaximized ? SDKUI_Localizator.Minimize : SDKUI_Localizator.Maximize, icon: isMaximized
95
105
  ? _jsx(IconWindowMinimize, { fontSize: 16 })
96
- : _jsx(IconWindowMaximize, { fontSize: 16 }), btnStyle: 'icon', onClick: () => setIsMaximized(m => !m) }), onClose && _jsx(TMButton, { color: 'primaryOutline', caption: SDKUI_Localizator.Close, icon: _jsx(IconClearButton, {}), btnStyle: 'icon', onClick: () => { setIsMaximized(false); onClose?.(); } })] })] }) }), _jsxs(StyledPanelContent, { "$height": showHeader ? "calc(100% - 40px)" : "100%", "$padding": padding, "$backgroundColor": backgroundColorContainer ?? `#FFFFFF`, tabIndex: -1, onFocus: () => setIsActive(true), onBlur: () => setIsActive(false), onClick: () => setIsActive(true), children: [_jsx(StyledInnerPanelDiv, { style: { width: items.length > 0 ? 'calc(100% - 30px)' : '100%' }, tabIndex: -1, onFocus: () => setIsActive(true), onBlur: () => setIsActive(false), onClick: () => setIsActive(true), children: children }), items.length > 0 &&
106
+ : _jsx(IconWindowMaximize, { fontSize: 16 }), btnStyle: 'icon', onClick: handleMaximize }), onClose && _jsx(TMButton, { color: 'primaryOutline', caption: SDKUI_Localizator.Close, icon: _jsx(IconClearButton, {}), btnStyle: 'icon', onClick: () => { setIsMaximized(false); onClose?.(); } })] })] }) }), _jsxs(StyledPanelContent, { "$height": showHeader ? "calc(100% - 40px)" : "100%", "$padding": padding, "$backgroundColor": backgroundColorContainer ?? `#FFFFFF`, tabIndex: -1, onFocus: () => setIsActive(true), onBlur: () => setIsActive(false), onClick: () => setIsActive(true), children: [_jsx(StyledInnerPanelDiv, { style: { width: items.length > 0 ? 'calc(100% - 30px)' : '100%' }, tabIndex: -1, onFocus: () => setIsActive(true), onBlur: () => setIsActive(false), onClick: () => setIsActive(true), children: children }), items.length > 0 &&
97
107
  _jsx(TMRightSidebar, { items: items, onItemClick: onItemClick, selectedItem: selectedItem, showPanel: showPanel })] })] }));
98
108
  };
99
109
  export default TMPanel;
@@ -7,6 +7,7 @@ interface ITMDistinctValues {
7
7
  separator?: string;
8
8
  allowAppendMode?: boolean;
9
9
  showHeader?: boolean;
10
+ isModal?: boolean;
10
11
  onSelectionChanged?: (e: DistinctValuesEventArgs) => void;
11
12
  onClosePanelCallback?: () => void;
12
13
  }
@@ -1,31 +1,24 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { useCallback, useEffect, useMemo, useState } from 'react';
3
3
  import { LayoutModes, MetadataDataDomains, AccessLevels, MetadataDataTypes, SDK_Globals, DcmtTypeListCacheService, DataColumnTypes } from '@topconsultnpm/sdk-ts-beta';
4
4
  import styled from 'styled-components';
5
- import { IconDataList, SDKUI_Localizator, stringIsNullOrEmpty } from '../../helper';
6
- import TMButton from '../base/TMButton';
5
+ import { SDKUI_Localizator, stringIsNullOrEmpty } from '../../helper';
7
6
  import TMDataGrid from '../base/TMDataGrid';
8
7
  import { TMExceptionBoxManager } from '../base/TMPopUp';
9
8
  import TMSpinner from '../base/TMSpinner';
10
9
  import TMCheckBox from '../editors/TMCheckBox';
11
10
  import TMPanel from '../base/TMPanel';
11
+ import TMModal from '../base/TMModal';
12
12
  const StyledDistinctValues = styled.div `display: flex; flex-direction: column; height: 100%; overflow: hidden; gap: 10px;`;
13
13
  const StyledPanelContainer = styled.div ` width: 100%; height: 100%; padding: 20px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 20px; `;
14
- const TMDistinctValues = ({ tid, mid, layoutMode = LayoutModes.None, allowAppendMode = true, showHeader = true, separator = " ", onSelectionChanged, onClosePanelCallback }) => {
14
+ const TMDistinctValues = ({ tid, mid, layoutMode = LayoutModes.None, allowAppendMode = true, showHeader = true, isModal, separator = " ", onSelectionChanged, onClosePanelCallback }) => {
15
15
  const [focusedItem, setFocusedItem] = useState();
16
16
  const [dataSource, setDataSource] = useState([]);
17
17
  const [isAppendMode, setIsAppendMode] = useState(false);
18
18
  const [md, setMd] = useState();
19
- const [hasLoadedBefore, setHasLoadedBefore] = useState(false);
20
- const [showPrompt, setShowPrompt] = useState(false);
21
19
  const [currentValue, setCurrentValue] = useState('');
22
20
  useEffect(() => {
23
- if (!hasLoadedBefore) {
24
- getDistictValuesAsync().then(() => setHasLoadedBefore(true));
25
- }
26
- else {
27
- getDcmtTypeAsync().then(() => setShowPrompt(true));
28
- }
21
+ getDistictValuesAsync();
29
22
  }, [mid]);
30
23
  useEffect(() => {
31
24
  setIsAppendMode(false);
@@ -67,7 +60,6 @@ const TMDistinctValues = ({ tid, mid, layoutMode = LayoutModes.None, allowAppend
67
60
  setMd(dtd?.metadata?.find(o => o.id === mid));
68
61
  let result = await SDK_Globals.tmSession?.NewSearchEngine().GetDistinctValuesAsync(tid, mid, 10000);
69
62
  setDataSource(convertDataTableToObject(result?.dtdResult));
70
- setShowPrompt(false);
71
63
  }
72
64
  catch (e) {
73
65
  let err = e;
@@ -93,9 +85,6 @@ const TMDistinctValues = ({ tid, mid, layoutMode = LayoutModes.None, allowAppend
93
85
  TMSpinner.hide();
94
86
  }
95
87
  };
96
- const handleLoadData = () => {
97
- getDistictValuesAsync();
98
- };
99
88
  const onFocusedRowChanged = useCallback((e) => {
100
89
  setFocusedItem(e.row?.data);
101
90
  }, []);
@@ -141,8 +130,11 @@ const TMDistinctValues = ({ tid, mid, layoutMode = LayoutModes.None, allowAppend
141
130
  return false;
142
131
  return md.dataDomain === undefined || md.dataDomain === MetadataDataDomains.None;
143
132
  };
144
- return (_jsx(TMPanel, { title: SDKUI_Localizator.DistinctValues + (md?.nameLoc ? ` (${md?.nameLoc})` : ''), showHeader: showHeader, onClose: onClosePanelCallback, children: showPrompt
145
- ? _jsxs(StyledPanelContainer, { children: [_jsx(IconDataList, { fontSize: 96 }), _jsxs("p", { children: ["Caricare i valori distinti di ", _jsx("strong", { children: `"${md?.nameLoc}" ` }), "? "] }), _jsx(TMButton, { caption: SDKUI_Localizator.Yes, onClick: handleLoadData, showTooltip: false })] })
146
- : _jsxs(StyledDistinctValues, { children: [isVisibleAppend() && _jsx(TMCheckBox, { elementStyle: { position: 'absolute', right: '15px', top: '15px', zIndex: 10000 }, label: 'Accoda', value: isAppendMode, onValueChanged: () => { setIsAppendMode(!isAppendMode); } }), _jsx(TMDataGrid, { focusedRowKey: focusedItem ? focusedItem.rowIndex : undefined, selection: { showCheckBoxesMode: 'none' }, searchPanel: { highlightCaseSensitive: true, visible: true }, dataColumns: customColumns, dataSource: dataSource, keyExpr: 'rowIndex', height: 'calc(100%)', onFocusedRowChanged: onFocusedRowChanged, paging: { pageSize: 30 }, summary: customSummary })] }) }));
133
+ const renderContent = () => {
134
+ return (_jsxs(StyledDistinctValues, { children: [isVisibleAppend() && _jsx(TMCheckBox, { elementStyle: { position: 'absolute', right: '15px', top: '15px', zIndex: 10000 }, label: 'Accoda', value: isAppendMode, onValueChanged: () => { setIsAppendMode(!isAppendMode); } }), _jsx(TMDataGrid, { focusedRowKey: focusedItem ? focusedItem.rowIndex : undefined, selection: { showCheckBoxesMode: 'none' }, searchPanel: { highlightCaseSensitive: true, visible: true }, dataColumns: customColumns, dataSource: dataSource, keyExpr: 'rowIndex', height: 'calc(100%)', onFocusedRowChanged: onFocusedRowChanged, paging: { pageSize: 30 }, summary: customSummary })] }));
135
+ };
136
+ return (_jsx(_Fragment, { children: isModal
137
+ ? _jsx(TMModal, { title: SDKUI_Localizator.DistinctValues + (md?.nameLoc ? ` (${md?.nameLoc})` : ''), height: '600px', width: '500px', resizable: true, onClose: onClosePanelCallback, children: renderContent() })
138
+ : _jsx(TMPanel, { title: SDKUI_Localizator.DistinctValues + (md?.nameLoc ? ` (${md?.nameLoc})` : ''), showHeader: showHeader, onClose: onClosePanelCallback, children: renderContent() }) }));
147
139
  };
148
140
  export default TMDistinctValues;
@@ -13,7 +13,7 @@ export declare enum AdvancedMenuButtons {
13
13
  FormulaEditor = 2,
14
14
  DistinctValues = 3
15
15
  }
16
- type AdvancedMenuClickEventArgs = {
16
+ export type AdvancedMenuClickEventArgs = {
17
17
  tid: number | undefined;
18
18
  mid: number | undefined;
19
19
  button: AdvancedMenuButtons;
@@ -24,6 +24,7 @@ interface ITMMetadataValuesProps extends DeviceContextProps {
24
24
  metadataValuesOrig?: MetadataValueDescriptorEx[];
25
25
  customMenuItems?: any[];
26
26
  isExpertMode?: boolean;
27
+ isReadOnly?: boolean;
27
28
  showCheckBoxes?: ShowCheckBoxesMode;
28
29
  showNullValueCheckBoxes?: boolean;
29
30
  validationItems: ValidationItem[];
@@ -23,7 +23,7 @@ export var AdvancedMenuButtons;
23
23
  AdvancedMenuButtons[AdvancedMenuButtons["FormulaEditor"] = 2] = "FormulaEditor";
24
24
  AdvancedMenuButtons[AdvancedMenuButtons["DistinctValues"] = 3] = "DistinctValues";
25
25
  })(AdvancedMenuButtons || (AdvancedMenuButtons = {}));
26
- const TMMetadataValues = ({ showCheckBoxes = ShowCheckBoxesMode.Never, checkPerms = true, isExpertMode = SDKUI_Globals.userSettings.advancedSettings.expertMode === 1, customMenuItems = [], showNullValueCheckBoxes, isOpenDistinctValues = false, openChooserBySingleClick, selectedMID, onFocusedItemChanged, layoutMode = LayoutModes.Update, metadataValues = [], metadataValuesOrig = [], TID, onValueChanged, onAdvancedMenuClick, validationItems }) => {
26
+ const TMMetadataValues = ({ showCheckBoxes = ShowCheckBoxesMode.Never, checkPerms = true, isReadOnly = false, isExpertMode = SDKUI_Globals.userSettings.advancedSettings.expertMode === 1, customMenuItems = [], showNullValueCheckBoxes, isOpenDistinctValues = false, openChooserBySingleClick, selectedMID, onFocusedItemChanged, layoutMode = LayoutModes.Update, metadataValues = [], metadataValuesOrig = [], TID, onValueChanged, onAdvancedMenuClick, validationItems }) => {
27
27
  const [dynDataListsToBeRefreshed, setDynDataListsToBeRefreshed] = useState([]);
28
28
  const [currentDTD, setCurrentDTD] = useState();
29
29
  const [isEditableList, addOrRemoveEditableList] = useMetadataEditableList();
@@ -151,47 +151,58 @@ const TMMetadataValues = ({ showCheckBoxes = ShowCheckBoxesMode.Never, checkPerm
151
151
  let md = mvd.md;
152
152
  if (!md)
153
153
  return [];
154
- // let isEditable = isEditableList(mvd.mid);
155
154
  let isDisabledOper = checkPerms && (md.dataDomain === MetadataDataDomains.Computed || md?.perm?.canUpdate !== AccessLevels.Yes);
156
- let menu = [
157
- {
158
- text: mvd.isEditable ? SDKUI_Localizator.Restore : SDKUI_Localizator.MakeEditable,
159
- icon: mvd.isEditable ? _jsx(IconUndo, {}) : _jsx(IconPencil, {}),
160
- disabled: isDisabledOper,
161
- onClick: () => {
162
- // addOrRemoveEditableList(mvd.mid);
163
- onAdvancedMenuClick?.({ tid: mvd.tid, mid: mvd.mid, button: AdvancedMenuButtons.MakeEditable });
164
- onValueChanged?.(metadataValues.map((item) => {
165
- if (item.tid == mvd.tid && item.mid === mvd.mid) {
166
- // If DateTime and value is a formula, clear value but keep formulaValue
167
- if (item.md?.dataType === MetadataDataTypes.DateTime && FormulaHelper.isFormula(item.value)) {
168
- return {
169
- ...item,
170
- isEditable: !item.isEditable,
171
- formulaValue: item.value, // store formula
172
- value: null // clear value for DateBox
173
- };
174
- }
175
- // If restoring and formulaValue exists, restore it
176
- if (item.md?.dataType === MetadataDataTypes.DateTime && !item.isEditable && item.formulaValue) {
177
- return {
178
- ...item,
179
- isEditable: !item.isEditable,
180
- value: item.formulaValue, // restore formula
181
- formulaValue: undefined // clear formulaValue
182
- };
155
+ const menu = [
156
+ // Only add MakeEditable/Restore and FormulaEditor if isExpertMode is true
157
+ ...(isExpertMode ? [
158
+ {
159
+ text: mvd.isEditable ? SDKUI_Localizator.Restore : SDKUI_Localizator.MakeEditable,
160
+ icon: mvd.isEditable ? _jsx(IconUndo, {}) : _jsx(IconPencil, {}),
161
+ disabled: isDisabledOper,
162
+ onClick: () => {
163
+ onAdvancedMenuClick?.({ tid: mvd.tid, mid: mvd.mid, button: AdvancedMenuButtons.MakeEditable });
164
+ onValueChanged?.(metadataValues.map((item) => {
165
+ if (item.tid == mvd.tid && item.mid === mvd.mid) {
166
+ // If DateTime and value is a formula, clear value but keep formulaValue
167
+ if (item.md?.dataType === MetadataDataTypes.DateTime && FormulaHelper.isFormula(item.value)) {
168
+ return {
169
+ ...item,
170
+ isEditable: !item.isEditable,
171
+ formulaValue: item.value,
172
+ value: null
173
+ };
174
+ }
175
+ // If restoring and formulaValue exists, restore it
176
+ if (item.md?.dataType === MetadataDataTypes.DateTime && !item.isEditable && item.formulaValue) {
177
+ return {
178
+ ...item,
179
+ isEditable: !item.isEditable,
180
+ value: item.formulaValue,
181
+ formulaValue: undefined
182
+ };
183
+ }
184
+ return { ...item, isEditable: !item.isEditable };
183
185
  }
184
- return { ...item, isEditable: !item.isEditable };
185
- }
186
- return item;
187
- }));
186
+ return item;
187
+ }));
188
+ }
189
+ },
190
+ {
191
+ text: SDKUI_Localizator.FormulaEditorTitle,
192
+ icon: _jsx(IconFunction, {}),
193
+ disabled: isDisabledOper,
194
+ onClick: () => onAdvancedMenuClick?.({ tid: mvd.tid, mid: mvd.mid, button: AdvancedMenuButtons.FormulaEditor })
188
195
  }
196
+ ] : []),
197
+ // Always add DistinctValues
198
+ {
199
+ text: SDKUI_Localizator.DistinctValues,
200
+ icon: _jsx(IconDataList, {}),
201
+ onClick: () => onAdvancedMenuClick?.({ tid: mvd.tid, mid: mvd.mid, button: AdvancedMenuButtons.DistinctValues })
189
202
  },
190
- { text: SDKUI_Localizator.FormulaEditorTitle, icon: _jsx(IconFunction, {}), disabled: isDisabledOper, onClick: () => onAdvancedMenuClick?.({ tid: mvd.tid, mid: mvd.mid, button: AdvancedMenuButtons.FormulaEditor }) },
191
- { text: SDKUI_Localizator.DistinctValues, icon: _jsx(IconDataList, {}), onClick: () => onAdvancedMenuClick?.({ tid: mvd.tid, mid: mvd.mid, button: AdvancedMenuButtons.DistinctValues }) }
203
+ // Always add customMenuItems if present
204
+ ...customMenuItems
192
205
  ];
193
- if (customMenuItems.length > 0)
194
- menu.push(...customMenuItems);
195
206
  return menu;
196
207
  };
197
208
  return (_jsx(StyledMetadataValuesContainer, { children: metadataValues.map((item) => (_jsxs(StyledRow, { style: { marginTop: item.md?.dataType === MetadataDataTypes.DateTime ? '6px' : '0', gap: '8px' }, onClick: () => { handleMetadataValueSelection(item); }, onFocus: () => { handleMetadataValueSelection(item); }, children: [showCheckBoxes !== ShowCheckBoxesMode.Never &&
@@ -247,7 +258,7 @@ const TMMetadataValues = ({ showCheckBoxes = ShowCheckBoxesMode.Never, checkPerm
247
258
  mvd.isSelected = !stringIsNullOrEmpty(mvd.value);
248
259
  }
249
260
  onValueChanged?.(newValues);
250
- } }) }), isExpertMode && _jsx("div", { style: { marginTop: item.md?.dataType === MetadataDataTypes.DateTime ? '12px' : '18px' }, onClick: () => { handleMetadataValueSelection(item); }, children: _jsx(TMDropDownMenu, { backgroundColor: 'white', color: TMColors.button_icon, borderRadius: '3px', content: _jsx(TMButton, { btnStyle: 'icon', icon: _jsx(IconMenuVertical, {}), showTooltip: false }), disabled: item.isLexProt === 1, items: getAdvancedMenuItems(item) }) })] }, item.mid))) }));
261
+ } }) }), !isReadOnly && _jsx("div", { style: { marginTop: item.md?.dataType === MetadataDataTypes.DateTime ? '12px' : '18px' }, onClick: () => { handleMetadataValueSelection(item); }, children: _jsx(TMDropDownMenu, { backgroundColor: 'white', color: TMColors.button_icon, borderRadius: '3px', content: _jsx(TMButton, { btnStyle: 'icon', icon: _jsx(IconMenuVertical, {}), showTooltip: false }), disabled: item.isLexProt === 1, items: getAdvancedMenuItems(item) }) })] }, item.mid))) }));
251
262
  };
252
263
  export default TMMetadataValues;
253
264
  //#region Styled Components
@@ -9,7 +9,7 @@ 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, IconShow, SDKUI_Localizator, IconBoard, IconDcmtTypeSys, IconDataList, IconDetailDcmts, svgToString, IconDownload, calcIsModified, IconMenuVertical, Globalization, getListMaxItems, getSystemMetadata, IconBoxArchiveIn, IconClear, IconUndo, SDKUI_Globals, IconRoundFileUpload } from '../../../helper';
12
+ import { genUniqueId, IconShow, SDKUI_Localizator, IconBoard, IconDcmtTypeSys, IconDetailDcmts, svgToString, IconDownload, calcIsModified, IconMenuVertical, Globalization, getListMaxItems, getSystemMetadata, IconBoxArchiveIn, IconClear, IconUndo, SDKUI_Globals, IconRoundFileUpload } 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';
@@ -73,7 +73,7 @@ const TMDcmtForm = ({ showHeader = true, onSaveRecents, layoutMode = LayoutModes
73
73
  const { openConfirmAttachmentsDialog, ConfirmAttachmentsDialog } = useInputAttachmentsDialog();
74
74
  const { abortController, showWaitPanel, waitPanelTitle, showPrimary, waitPanelTextPrimary, waitPanelValuePrimary, waitPanelMaxValuePrimary, showSecondary, waitPanelTextSecondary, waitPanelValueSecondary, waitPanelMaxValueSecondary, downloadDcmtsAsync } = useDcmtOperations();
75
75
  const deviceType = useDeviceType();
76
- const isOpenMiddlePanel = () => isOpenSysMetadata || isOpenBoard || isOpenTags || isOpenDistinctValues || isOpenFormulaEditor;
76
+ const isOpenMiddlePanel = () => isOpenSysMetadata || isOpenBoard || isOpenTags || isOpenFormulaEditor;
77
77
  const retrieveMetadataAsync = async () => {
78
78
  try {
79
79
  await DcmtTypeListCacheService.GetAsync(TID).then(async (dtd) => {
@@ -147,19 +147,18 @@ const TMDcmtForm = ({ showHeader = true, onSaveRecents, layoutMode = LayoutModes
147
147
  { icon: fileManagerIcon, id: 'Preview', visibleName: (layoutMode === LayoutModes.Ark && fileIsNotValid) ? SDKUI_Localizator.RequiredField : layoutMode === LayoutModes.Ark ? SDKUI_Localizator.UploadFile : 'Anteprima', isActive: isOpenPreview, onClick: () => { setIsOpenPreview(!isOpenPreview); }, disabled: layoutMode === LayoutModes.Ark && fromDTD?.archiveConstraint === ArchiveConstraints.OnlyMetadata },
148
148
  { icon: _jsx(IconBoard, {}), id: 'Board', visibleName: 'Bacheca', disabled: layoutMode !== LayoutModes.Update, beginGroup: true, isActive: isOpenBoard, visible: layoutMode !== LayoutModes.Ark, onClick: () => { closeMiddlePanel(); setIsOpenBoard(!isOpenBoard); } },
149
149
  { icon: _jsx(IconDcmtTypeSys, {}), id: 'SystemMetadata', visibleName: 'Metadati di sistema', disabled: layoutMode !== LayoutModes.Update, isActive: isOpenSysMetadata, visible: layoutMode !== LayoutModes.Ark, onClick: () => { closeMiddlePanel(); setIsOpenSysMetadata(!isOpenSysMetadata); } },
150
- { icon: _jsx(IconDataList, {}), id: 'DistinctValues', disabled: !focusedMetadataValue, visibleName: 'Valori distiniti', isActive: isOpenDistinctValues, onClick: () => { closeMiddlePanel(); setIsOpenDistinctValues(!isOpenDistinctValues); } },
151
150
  { icon: _jsx(IconDetailDcmts, { fontSize: 20, transform: 'scale(-1, 1)' }), id: 'Master', beginGroup: true, visible: layoutMode !== LayoutModes.Ark && allowRelations && currentTIDHasMasterRelations, visibleName: SDKUI_Localizator.DcmtsMaster, disabled: layoutMode !== LayoutModes.Update || !DID, isActive: isOpenMaster, onClick: () => { setIsOpenMaster(!isOpenMaster); } },
152
151
  { icon: _jsx(IconDetailDcmts, { fontSize: 20 }), id: 'Details', visibleName: SDKUI_Localizator.DcmtsDetail, disabled: layoutMode !== LayoutModes.Update || !DID, isActive: isOpenDetails, visible: layoutMode !== LayoutModes.Ark && allowRelations && currentTIDHasDetailRelations, onClick: () => { setIsOpenDetails(!isOpenDetails); } },
153
152
  ];
154
153
  return customRightSidebarItems.length === 0
155
154
  ? fixedItems
156
155
  : [...fixedItems.filter(item => item.id !== 'DistinctValues'), ...customRightSidebarItems, ...fixedItems.filter(item => item.id === 'DistinctValues')];
157
- }, [customRightSidebarItems, layoutMode, isOpenDistinctValues, isOpenPreview, focusedMetadataValue, fromDTD?.archiveConstraint]);
156
+ }, [customRightSidebarItems, layoutMode, isOpenPreview, focusedMetadataValue, fromDTD?.archiveConstraint]);
158
157
  const closeMiddlePanel = () => {
159
158
  setIsOpenBoard(false);
160
159
  setIsOpenSysMetadata(false);
161
160
  setIsOpenTags(false);
162
- setIsOpenDistinctValues(false);
161
+ // setIsOpenDistinctValues(false);
163
162
  setIsOpenFormulaEditor(false);
164
163
  };
165
164
  const titleText = () => {
@@ -169,8 +168,7 @@ const TMDcmtForm = ({ showHeader = true, onSaveRecents, layoutMode = LayoutModes
169
168
  return 'Metadati di sistema';
170
169
  if (isOpenBoard)
171
170
  return 'Bacheca';
172
- if (isOpenDistinctValues)
173
- return `${SDKUI_Localizator.DistinctValues} (${focusedMetadataValue?.md?.nameLoc})`;
171
+ // if (isOpenDistinctValues) return `${SDKUI_Localizator.DistinctValues} (${focusedMetadataValue?.md?.nameLoc})`;
174
172
  if (isOpenFormulaEditor)
175
173
  return `${SDKUI_Localizator.FormulaEditorTitle} (${focusedMetadataValue?.md?.nameLoc})`;
176
174
  return '';
@@ -471,12 +469,7 @@ const TMDcmtForm = ({ showHeader = true, onSaveRecents, layoutMode = LayoutModes
471
469
  _jsx(TMLayoutItem, { children: _jsxs(TMSplitterLayout, { separatorSize: 5, direction: 'horizontal', showSeparator: deviceType !== DeviceType.MOBILE && (isOpenPreview && isOpenMiddlePanel()), start: getSecondarySplitterStartLayout(), min: ['0', '0'], separatorColor: 'transparent', children: [isOpenMiddlePanel()
472
470
  ? _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 &&
473
471
  _jsx(TMDcmtBlog, { tid: TID, did: DID }), isOpenSysMetadata && layoutMode === LayoutModes.Update &&
474
- _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 &&
475
- _jsx(TMDistinctValues, { tid: TID, mid: focusedMetadataValue?.mid, showHeader: false, layoutMode: layoutMode, onSelectionChanged: (e) => {
476
- if (!e)
477
- return;
478
- setFormData((prevItems) => prevItems.map((item) => item.tid == e.tid && item.mid === e.mid ? { ...item, value: e.newValue } : item));
479
- } }), isOpenFormulaEditor &&
472
+ _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 &&
480
473
  _jsx(TMFormulaEditor, { isModal: false, formMode: FormModes.Update, inputData: getFormula(), showBack: false, onClose: () => setIsOpenFormulaEditor(false), onApplied: (newFormula) => {
481
474
  setFormData((prevItems) => prevItems.map((item) => item.tid == newFormula.tid && item.mid === newFormula.mid ? { ...item, value: FormulaHelper.addFormulaTag(newFormula.expression), isSelected: true, isEditable: true } : item));
482
475
  setFocusedMetadataValue(prevState => ({
@@ -490,7 +483,12 @@ const TMDcmtForm = ({ showHeader = true, onSaveRecents, layoutMode = LayoutModes
490
483
  ? _jsxs(TMLayoutItem, { children: [layoutMode === LayoutModes.Update ?
491
484
  _jsx(TMDcmtPreview, { onClose: () => { setIsOpenPreview(false); onClosePreview?.(); }, dcmtData: currentDcmt, canNext: canNext, canPrev: canPrev, onNext: onNext, onPrev: onPrev }) :
492
485
  _jsx(TMFileUploader, { onFileUpload: (file) => setDcmtFile(file), onClose: () => setIsOpenPreview(false), isRequired: fromDTD?.archiveConstraint === ArchiveConstraints.ContentCompulsory && dcmtFile === null, defaultBlob: dcmtFile, deviceType: deviceType }), " "] })
493
- : _jsx(_Fragment, {})] }) }) : _jsx(_Fragment, {})] }), isOpenDetails &&
486
+ : _jsx(_Fragment, {})] }) }) : _jsx(_Fragment, {})] }), isOpenDistinctValues &&
487
+ _jsx(TMDistinctValues, { tid: TID, mid: focusedMetadataValue?.mid, isModal: true, showHeader: false, layoutMode: layoutMode, onSelectionChanged: (e) => {
488
+ if (!e)
489
+ return;
490
+ setFormData((prevItems) => prevItems.map((item) => item.tid == e.tid && item.mid === e.mid ? { ...item, value: e.newValue } : item));
491
+ } }), isOpenDetails &&
494
492
  _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 &&
495
493
  _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) => {
496
494
  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}`));
@@ -16,7 +16,7 @@ const StyledSqdItem = styled.div `
16
16
  flex-direction: column;
17
17
  align-items: stretch;
18
18
  min-width: 0;
19
- padding: 10px;
19
+ padding: 10px 10px 0px 10px;
20
20
  position: relative;
21
21
  white-space: nowrap;
22
22
  text-overflow: ellipsis;
@@ -123,9 +123,7 @@ const TMSavedQuerySelector = React.memo(({ items, selectedId, allowShowSearch =
123
123
  width: '100%',
124
124
  padding: '5px',
125
125
  gap: '3px',
126
- whiteSpace: 'nowrap',
127
- overflow: 'hidden',
128
- textOverflow: 'ellipsis'
126
+ overflow: 'auto'
129
127
  }, children: dataSource.slice(0, showAllRoot || searchText.length > 0 ? dataSource.length : initialSQDsMaxItems).filter(o => searchText.length <= 0 || (searchText.length > 0 && o.name?.toLocaleLowerCase().includes(searchText.toLocaleLowerCase())) || o.description?.toLocaleLowerCase().includes(searchText.toLocaleLowerCase())).map((sqd, index) => (_jsxs(StyledSqdItem, { id: `sqd-item-${sqd.id}`, onClick: () => {
130
128
  setSelectedItem(sqd);
131
129
  onItemClick?.(sqd);
@@ -145,14 +143,14 @@ const TMSavedQuerySelector = React.memo(({ items, selectedId, allowShowSearch =
145
143
  overflow: 'hidden',
146
144
  textOverflow: 'ellipsis',
147
145
  color: TMColors.primaryColor,
148
- paddingRight: '18px'
146
+ paddingRight: '15px'
149
147
  }, children: sqd.name }), manageDefault && sqd.isDefault == 1 && _jsx(IconStar, { fontSize: 16, color: 'rgb(248, 215, 117)' })] }), selectedItem?.id == sqd.id &&
150
148
  _jsx("div", { style: {
151
149
  width: '24px',
152
150
  height: '24px',
153
151
  borderRadius: '24px',
154
152
  position: 'absolute',
155
- top: '-1px',
153
+ top: '4px',
156
154
  right: '0px',
157
155
  display: 'flex',
158
156
  alignItems: 'center',
@@ -1,18 +1,17 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useCallback, useEffect, useState } from 'react';
3
3
  import { SavedQueryCacheService, DcmtTypeListCacheService, SDK_Localizator } from '@topconsultnpm/sdk-ts-beta';
4
4
  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, IconDataList, IconProgressReady, IconSavedQuery, IconTree, SDKUI_Globals, SDKUI_Localizator } from '../../../helper';
9
- import { TMLayoutItem, TMSplitterLayout } from '../../base/TMLayout';
10
- import TMPanel from '../../base/TMPanel';
8
+ import { getSysAllDcmtsSQD, IconProgressReady, IconSavedQuery, IconTree, SDKUI_Globals, SDKUI_Localizator } from '../../../helper';
11
9
  import TMSearchResult from './TMSearchResult';
12
10
  import TMRecentsManager from '../../grids/TMRecentsManager';
13
11
  import { SearchResultContext } from '../../../ts';
14
12
  import { useDeviceType, DeviceType } from '../../base/TMDeviceProvider';
15
13
  import { StyledMultiViewPanel } from '../../base/Styled';
14
+ import TMPanelManagerMatrix from '../../base/TMPanelManagerMatrix';
16
15
  var TMSearchViews;
17
16
  (function (TMSearchViews) {
18
17
  TMSearchViews[TMSearchViews["None"] = 0] = "None";
@@ -28,14 +27,149 @@ const TMSearch = ({ inputTID, inputSqdID, isExpertMode = SDKUI_Globals.userSetti
28
27
  const [searchResult, setSearchResult] = useState([]);
29
28
  const [mruTIDs, setMruTIDs] = useState([]);
30
29
  const [currentSearchView, setCurrentSearchView] = useState(TMSearchViews.None);
31
- const [showDistinctValuesPanel, setShowDistinctValuesPanel] = useState(false);
32
- const [showTreesPanel, setShowTreesPanel] = useState(true);
33
- const [showRecentsPanel, setShowRecentsPanel] = useState(true);
34
- const [showSavedQueryPanel, setShowSavedQueryPanel] = useState(true);
35
30
  const [currentSQDMode, setCurrentSQDMode] = useState(1);
36
- const [focusedTidMid, setFocusedTidMid] = useState();
37
31
  const [lastQdSearched, setLastQdSearched] = useState();
38
32
  const deviceType = useDeviceType();
33
+ const panelMatrixMap = new Map([
34
+ [
35
+ "column-0",
36
+ {
37
+ width: "20%",
38
+ rows: [
39
+ {
40
+ id: 'treeSelector',
41
+ height: '100%',
42
+ width: '100%',
43
+ content: (togglePanelVisibility) => _jsx(TMTreeSelector, { onClose: () => togglePanelVisibility({
44
+ id: 'toolbar-item-treeSelector',
45
+ icon: 'optionsgear',
46
+ tooltipName: 'treeSelector',
47
+ panelManagerMatrixRowId: 'treeSelector',
48
+ }), onSelectedTIDChanged: (tid) => {
49
+ setCurrentTID(tid);
50
+ if (tid && mruTIDs.includes(tid))
51
+ setCurrentMruTID(tid);
52
+ else
53
+ setCurrentMruTID(0);
54
+ } }),
55
+ hidden: false
56
+ }
57
+ ],
58
+ }
59
+ ],
60
+ [
61
+ "column-1",
62
+ {
63
+ width: "20%",
64
+ rows: [
65
+ {
66
+ id: 'recentsManager',
67
+ height: '100%',
68
+ width: '100%',
69
+ content: _jsx(TMRecentsManager, { mruTIDs: mruTIDs, currentMruTID: currentMruTID, deviceType: deviceType, onSelectedTID: (tid) => { setCurrentMruTID(tid); setCurrentTID(tid); }, onDeletedTID: (tid) => {
70
+ let newMruTIDS = mruTIDs.slice();
71
+ let index = newMruTIDS.findIndex(o => o == tid);
72
+ if (index >= 0)
73
+ newMruTIDS.splice(index, 1);
74
+ SDKUI_Globals.userSettings.searchSettings.mruTIDs = newMruTIDS.filter(tid => tid != undefined && tid != null);
75
+ setMruTIDs(newMruTIDS);
76
+ } }),
77
+ hidden: false,
78
+ panel: {
79
+ title: "Scorciatoie",
80
+ totalItems: mruTIDs.length
81
+ }
82
+ }
83
+ ],
84
+ }
85
+ ],
86
+ [
87
+ "column-2",
88
+ {
89
+ width: "40%",
90
+ rows: [
91
+ {
92
+ id: 'searchQueryPanel',
93
+ height: '100%',
94
+ width: '100%',
95
+ content: _jsx(TMSearchQueryPanel, { isExpertMode: isExpertMode, fromDTD: fromDTD, SQD: currentSQD, onBack: deviceType !== DeviceType.DESKTOP ? () => { setCurrentTID(0); } : undefined, onSearchCompleted: (searchResult, qd) => {
96
+ setSearchResult(searchResult);
97
+ if (searchResult.length <= 0)
98
+ return;
99
+ setLastQdSearched(qd);
100
+ setCurrentSearchView(TMSearchViews.Result);
101
+ // Salvataggio ultimi 10 TIDs
102
+ let fromTID = searchResult?.[0].fromTID;
103
+ let newMruTIDS = mruTIDs.slice();
104
+ let index = newMruTIDS.findIndex(o => o == fromTID);
105
+ if (index >= 0)
106
+ newMruTIDS.splice(index, 1);
107
+ if (newMruTIDS.length >= 10)
108
+ newMruTIDS.splice(0, 1);
109
+ newMruTIDS.push(fromTID);
110
+ setMruTIDs(newMruTIDS);
111
+ setCurrentMruTID(fromTID);
112
+ SDKUI_Globals.userSettings.searchSettings.mruTIDs = newMruTIDS.filter(tid => tid != undefined && tid != null);
113
+ }, onSqdSaved: async (newSqd) => {
114
+ await loadDataSQDsAsync(true, newSqd.masterTID);
115
+ await setSQDAsync(newSqd);
116
+ } }),
117
+ hidden: false
118
+ }
119
+ ],
120
+ }
121
+ ],
122
+ [
123
+ "column-4",
124
+ {
125
+ width: "20%",
126
+ rows: [
127
+ {
128
+ id: 'savedQuery',
129
+ height: '100%',
130
+ width: '100%',
131
+ content: _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,
132
+ // selectedId={currentSQD?.id}
133
+ onItemClick: (sqd) => onSQDItemClick(sqd, setSQDAsync), onDeleted: (sqd) => onSQDDeleted(sqd, sqd.id == currentSQD?.id ? undefined : currentSQD, setSQDAsync) }) })] }),
134
+ hidden: false,
135
+ panel: {
136
+ title: SDK_Localizator.SavedQueries
137
+ }
138
+ }
139
+ ],
140
+ }
141
+ ]
142
+ ]);
143
+ const toolbar = {
144
+ items: [
145
+ {
146
+ id: 'toolbar-item-treeSelector',
147
+ icon: _jsx(IconTree, {}),
148
+ tooltipName: 'treeSelector',
149
+ panelManagerMatrixRowId: 'treeSelector',
150
+ },
151
+ {
152
+ id: 'toolbar-item-recentsManager',
153
+ icon: _jsx(IconProgressReady, {}),
154
+ tooltipName: 'recentsManager',
155
+ panelManagerMatrixRowId: 'recentsManager',
156
+ },
157
+ {
158
+ id: 'toolbar-item-searchQueryPanel',
159
+ icon: _jsx(IconProgressReady, {}),
160
+ tooltipName: 'searchQueryPanel',
161
+ panelManagerMatrixRowId: 'searchQueryPanel',
162
+ visible: deviceType === DeviceType.MOBILE
163
+ },
164
+ {
165
+ id: 'toolbar-item-savedQuery',
166
+ icon: _jsx(IconSavedQuery, {}),
167
+ tooltipName: 'savedQuery',
168
+ panelManagerMatrixRowId: 'savedQuery',
169
+ // alternativePanelManagerMatrixRowId: ['distinctValues']
170
+ }
171
+ ]
172
+ };
39
173
  useEffect(() => {
40
174
  setMruTIDs(SDKUI_Globals.userSettings.searchSettings.mruTIDs);
41
175
  loadDataSQDsAsync(false);
@@ -123,67 +257,7 @@ const TMSearch = ({ inputTID, inputSqdID, isExpertMode = SDKUI_Globals.userSetti
123
257
  if (sqdToBeSet)
124
258
  await setSqdAsync?.(sqdToBeSet);
125
259
  }, []);
126
- const rightSidebarItems = [
127
- { icon: _jsx(IconTree, {}), id: 'trees', visibleName: 'Alberi', isActive: showTreesPanel, visible: true },
128
- { icon: _jsx(IconProgressReady, {}), id: 'recents', visibleName: 'Recenti', isActive: showRecentsPanel, visible: true, },
129
- { icon: _jsx(IconSavedQuery, {}), id: 'savedquery', visibleName: 'Ricerche rapide', isActive: showSavedQueryPanel, visible: true },
130
- { icon: _jsx(IconDataList, {}), id: 'DistinctValues', visibleName: 'Valori distiniti', isActive: showDistinctValuesPanel, disabled: !focusedTidMid, visible: true }
131
- ];
132
- const rightSidebarItemClickHandler = (item) => {
133
- switch (item.toLowerCase()) {
134
- case 'trees':
135
- setShowTreesPanel(!showTreesPanel);
136
- break;
137
- case 'recents':
138
- setShowRecentsPanel(!showRecentsPanel);
139
- break;
140
- case 'savedquery':
141
- setShowSavedQueryPanel(!showSavedQueryPanel);
142
- break;
143
- case 'distinctvalues':
144
- setShowDistinctValuesPanel(!showDistinctValuesPanel);
145
- break;
146
- default: break;
147
- }
148
- };
149
- return (_jsxs(_Fragment, { children: [_jsx(StyledMultiViewPanel, { "$isVisible": currentSearchView === TMSearchViews.None, children: _jsxs(TMSplitterLayout, { direction: 'horizontal', overflow: 'visible', showSeparator: deviceType !== DeviceType.MOBILE && showTreesPanel, separatorSize: SDKUI_Globals.userSettings.themeSettings.gutters, separatorColor: 'transparent', separatorActiveColor: 'transparent', min: ['0', '0'], start: (deviceType === DeviceType.MOBILE) ? ['100%', '0%'] : showTreesPanel ? ['20%', '80%'] : ['0%', '100%'], children: [deviceType !== DeviceType.MOBILE &&
150
- _jsx(TMTreeSelector, { onClose: () => setShowTreesPanel(false), onSelectedTIDChanged: (tid) => {
151
- setCurrentTID(tid);
152
- if (tid && mruTIDs.includes(tid))
153
- setCurrentMruTID(tid);
154
- else
155
- setCurrentMruTID(0);
156
- } }), _jsxs(TMSplitterLayout, { direction: 'horizontal', overflow: 'visible', showSeparator: deviceType !== DeviceType.MOBILE && showSavedQueryPanel && !showDistinctValuesPanel, separatorSize: SDKUI_Globals.userSettings.themeSettings.gutters, separatorColor: 'transparent', separatorActiveColor: 'transparent', min: ['0', '0'], start: (deviceType === DeviceType.MOBILE || showDistinctValuesPanel) ? ['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, onClose: () => setShowRecentsPanel(false), children: _jsx(TMRecentsManager, { mruTIDs: mruTIDs, currentMruTID: currentMruTID, deviceType: deviceType, onSelectedTID: (tid) => { setCurrentMruTID(tid); setCurrentTID(tid); }, onDeletedTID: (tid) => {
157
- let newMruTIDS = mruTIDs.slice();
158
- let index = newMruTIDS.findIndex(o => o == tid);
159
- if (index >= 0)
160
- newMruTIDS.splice(index, 1);
161
- SDKUI_Globals.userSettings.searchSettings.mruTIDs = newMruTIDS.filter(tid => tid != undefined && tid != null);
162
- setMruTIDs(newMruTIDS);
163
- } }) }), _jsx(TMSearchQueryPanel, { isExpertMode: isExpertMode, fromDTD: fromDTD, SQD: currentSQD, isOpenDistinctValuesPanel: showDistinctValuesPanel, rightSidebarItems: rightSidebarItems, onBack: deviceType !== DeviceType.DESKTOP ? () => { setCurrentTID(0); } : undefined, onFocusedMetadataChanged: setFocusedTidMid, onRightSidebarItemClick: rightSidebarItemClickHandler, onCloseDistinctValuesPanel: () => setShowDistinctValuesPanel(false), onSearchCompleted: (searchResult, qd) => {
164
- setSearchResult(searchResult);
165
- if (searchResult.length <= 0)
166
- return;
167
- setLastQdSearched(qd);
168
- setCurrentSearchView(TMSearchViews.Result);
169
- // Salvataggio ultimi 10 TIDs
170
- let fromTID = searchResult?.[0].fromTID;
171
- let newMruTIDS = mruTIDs.slice();
172
- let index = newMruTIDS.findIndex(o => o == fromTID);
173
- if (index >= 0)
174
- newMruTIDS.splice(index, 1);
175
- if (newMruTIDS.length >= 10)
176
- newMruTIDS.splice(0, 1);
177
- newMruTIDS.push(fromTID);
178
- setMruTIDs(newMruTIDS);
179
- setCurrentMruTID(fromTID);
180
- SDKUI_Globals.userSettings.searchSettings.mruTIDs = newMruTIDS.filter(tid => tid != undefined && tid != null);
181
- }, onSqdSaved: async (newSqd) => {
182
- await loadDataSQDsAsync(true, newSqd.masterTID);
183
- await setSQDAsync(newSqd);
184
- } })] }) }), _jsx(StyledMultiViewPanel, { "$isVisible": !showDistinctValuesPanel, children: _jsx(TMLayoutItem, { children: _jsx(TMPanel, { title: SDK_Localizator.SavedQueries, onClose: () => 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,
185
- // selectedId={currentSQD?.id}
186
- onItemClick: (sqd) => onSQDItemClick(sqd, setSQDAsync), onDeleted: (sqd) => onSQDDeleted(sqd, sqd.id == currentSQD?.id ? undefined : currentSQD, setSQDAsync) }) })] }) }) }) })] })] }) }), _jsx(StyledMultiViewPanel, { "$isVisible": currentSearchView === TMSearchViews.Result, children: searchResult.length > 0 &&
260
+ return (_jsxs(_Fragment, { children: [_jsx(StyledMultiViewPanel, { "$isVisible": currentSearchView === TMSearchViews.None, children: _jsx(TMPanelManagerMatrix, { panelMatrixMap: panelMatrixMap, toolbar: toolbar, initialMobilePanelID: "recentsManager" }) }), _jsx(StyledMultiViewPanel, { "$isVisible": currentSearchView === TMSearchViews.Result, children: searchResult.length > 0 &&
187
261
  _jsx(TMSearchResult, { context: SearchResultContext.METADATA_SEARCH, searchResults: searchResult, onRefreshAfterAddDcmtToFavs: onRefreshAfterAddDcmtToFavs, onRefreshSearchAsync: async () => {
188
262
  // setSearchResult([]);
189
263
  setSearchResult(await refreshLastSearch(lastQdSearched) ?? []);
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  import { DcmtTypeDescriptor, QueryDescriptor } from '@topconsultnpm/sdk-ts-beta';
3
3
  import { TID_MID } from '../../../ts';
4
+ import { AdvancedMenuClickEventArgs } from '../../editors/TMMetadataValues';
4
5
  interface ITMSearchQueryEditorProps {
5
6
  qd: QueryDescriptor | undefined;
6
7
  fromDTD?: DcmtTypeDescriptor;
@@ -9,6 +10,7 @@ interface ITMSearchQueryEditorProps {
9
10
  showAllMdWhere?: boolean;
10
11
  isOpenDistinctValuesPanel: boolean;
11
12
  onQdChanged?: (qd: QueryDescriptor) => void;
13
+ onAdvancedMenuClick?: (e: AdvancedMenuClickEventArgs) => void;
12
14
  onFocusedMetadataChanged?: (tid_mid: TID_MID | undefined) => void;
13
15
  }
14
16
  declare const TMSearchQueryEditor: React.FunctionComponent<ITMSearchQueryEditorProps>;
@@ -13,6 +13,7 @@ import { FormulaHelper } from '../../editors/TMFormulaEditor';
13
13
  import TMMetadataEditor, { useMetadataEditableList } from '../../editors/TMMetadataEditor';
14
14
  import { colorOperator, StyledItemWrapper, StyledRowItem } from '../../query/TMQueryEditor';
15
15
  import { TMMidViewer } from '../../viewers/TMMidViewer';
16
+ import { AdvancedMenuButtons } from '../../editors/TMMetadataValues';
16
17
  const StyledMetadataListItem = styled.div `
17
18
  padding: 5px;
18
19
  border-radius: 8px;
@@ -27,7 +28,7 @@ const StyledMetadataListItem = styled.div `
27
28
  cursor: pointer;
28
29
  }
29
30
  `;
30
- const TMSearchQueryEditor = ({ qd, fromDTD, dcmtTypesList = [], isOpenDistinctValuesPanel, isExpertMode = SDKUI_Globals.userSettings.advancedSettings.expertMode === 1, showAllMdWhere, onQdChanged, onFocusedMetadataChanged }) => {
31
+ const TMSearchQueryEditor = ({ qd, fromDTD, dcmtTypesList = [], isOpenDistinctValuesPanel, isExpertMode = SDKUI_Globals.userSettings.advancedSettings.expertMode === 1, showAllMdWhere, onQdChanged, onFocusedMetadataChanged, onAdvancedMenuClick }) => {
31
32
  const [dynDataListsToBeRefreshed, setDynDataListsToBeRefreshed] = useState([]);
32
33
  const [showDistinctValuesPanel, setShowDistinctValuesPanel] = useState(false);
33
34
  const [currentEditingMID, setCurrentEditingMID] = useState(0);
@@ -134,9 +135,25 @@ const TMSearchQueryEditor = ({ qd, fromDTD, dcmtTypesList = [], isOpenDistinctVa
134
135
  let md = dtd.metadata?.find(o => o.id == mid);
135
136
  if (!md)
136
137
  return [];
137
- let menu = [
138
- { text: isEditable ? SDKUI_Localizator.Restore : SDKUI_Localizator.MakeEditable, icon: isEditable ? _jsx(IconUndo, {}) : _jsx(IconPencil, {}), onClick: () => { addOrRemoveEditableList(mid); } },
139
- { text: SDKUI_Localizator.DistinctValues, icon: _jsx(IconDataList, {}), onClick: () => { handleMetadataSelection(tid, mid); setShowDistinctValuesPanel(!showDistinctValuesPanel); } }
138
+ const menu = [
139
+ // Only add MakeEditable/Restore if isExpertMode is true
140
+ ...(isExpertMode ? [{
141
+ text: isEditable ? SDKUI_Localizator.Restore : SDKUI_Localizator.MakeEditable,
142
+ icon: isEditable ? _jsx(IconUndo, {}) : _jsx(IconPencil, {}),
143
+ onClick: () => {
144
+ addOrRemoveEditableList(mid);
145
+ onAdvancedMenuClick?.({ tid: tid, mid: mid, button: AdvancedMenuButtons.MakeEditable });
146
+ }
147
+ }] : []),
148
+ {
149
+ text: SDKUI_Localizator.DistinctValues,
150
+ icon: _jsx(IconDataList, {}),
151
+ onClick: () => {
152
+ handleMetadataSelection(tid, mid);
153
+ setShowDistinctValuesPanel(!showDistinctValuesPanel);
154
+ onAdvancedMenuClick?.({ tid: tid, mid: mid, button: AdvancedMenuButtons.DistinctValues });
155
+ }
156
+ }
140
157
  ];
141
158
  return menu;
142
159
  };
@@ -202,7 +219,7 @@ const TMSearchQueryEditor = ({ qd, fromDTD, dcmtTypesList = [], isOpenDistinctVa
202
219
  ? _jsx(IconFunction, { color: "#1a89d3", fontSize: 14, style: { position: "absolute", top: '-5px', left: '-10px' } })
203
220
  : (isEditableList(whereItem.mid))
204
221
  ? _jsx(IconPencil, { color: "#138603", fontSize: 14, style: { position: "absolute", top: '-5px', left: '-10px' } })
205
- : _jsx(_Fragment, {})] }), isExpertMode && _jsx("div", { style: { gridColumn: 4 }, children: _jsx(TMDropDownMenu, { backgroundColor: 'white', color: TMColors.button_icon, borderRadius: '3px', content: _jsx(TMButton, { btnStyle: 'icon', icon: _jsx(IconMenuVertical, {}), showTooltip: false }), items: getAdvancedMenuItems(whereItem.tid, whereItem.mid) }) })] }, `${whereItem.tid}_${whereItem.mid}_${index}`));
222
+ : _jsx(_Fragment, {})] }), _jsx("div", { style: { gridColumn: 4 }, children: _jsx(TMDropDownMenu, { backgroundColor: 'white', color: TMColors.button_icon, borderRadius: '3px', content: _jsx(TMButton, { btnStyle: 'icon', icon: _jsx(IconMenuVertical, {}), showTooltip: false }), items: getAdvancedMenuItems(whereItem.tid, whereItem.mid) }) })] }, `${whereItem.tid}_${whereItem.mid}_${index}`));
206
223
  }) }) }));
207
224
  };
208
225
  export default TMSearchQueryEditor;
@@ -5,14 +5,12 @@ import { ITMRightSidebarItem } from '../../base/TMRightSidebar';
5
5
  interface ITMSearchQueryPanelProps {
6
6
  fromDTD?: DcmtTypeDescriptor;
7
7
  SQD?: SavedQueryDescriptor;
8
- isOpenDistinctValuesPanel?: boolean;
9
8
  rightSidebarItems?: ITMRightSidebarItem[];
10
9
  isExpertMode?: boolean;
11
10
  onBack?: () => void;
12
11
  onRightSidebarItemClick?: (item: string) => void;
13
12
  onSqdSaved?: (newSqd: SavedQueryDescriptor) => void;
14
13
  onFocusedMetadataChanged?: (tid_mid: TID_MID | undefined) => void;
15
- onCloseDistinctValuesPanel?: () => void;
16
14
  onSearchCompleted?: (searchResult: SearchResultDescriptor[], qd: QueryDescriptor | undefined) => void;
17
15
  }
18
16
  declare const TMSearchQueryPanel: React.FunctionComponent<ITMSearchQueryPanelProps>;
@@ -8,12 +8,12 @@ import { getDcmtTypesByQdAsync, SDKUI_Localizator, getQD, IconMenuVertical, Icon
8
8
  import { useQueryParametersDialog } from '../../../hooks/useQueryParametersDialog';
9
9
  import { FormModes } from '../../../ts';
10
10
  import { TMColors } from '../../../utils/theme';
11
- import { StyledModalContainer, StyledMultiViewPanel } from '../../base/Styled';
11
+ import { StyledModalContainer } from '../../base/Styled';
12
12
  import ShowAlert from '../../base/TMAlert';
13
13
  import TMButton from '../../base/TMButton';
14
14
  import { useDeviceType, DeviceType } from '../../base/TMDeviceProvider';
15
15
  import TMDropDownMenu from '../../base/TMDropDownMenu';
16
- import TMLayoutContainer, { TMSplitterLayout, TMLayoutItem } from '../../base/TMLayout';
16
+ import TMLayoutContainer, { TMLayoutItem } from '../../base/TMLayout';
17
17
  import { TMExceptionBoxManager } from '../../base/TMPopUp';
18
18
  import TMSpinner from '../../base/TMSpinner';
19
19
  import TMPanel from '../../base/TMPanel';
@@ -21,7 +21,8 @@ import TMDistinctValues from '../../choosers/TMDistinctValues';
21
21
  import { TMMetadataChooserForm } from '../../choosers/TMMetadataChooser';
22
22
  import TMQueryEditor from '../../query/TMQueryEditor';
23
23
  import TMSavedQueryForm from './TMSavedQueryForm';
24
- const TMSearchQueryPanel = ({ fromDTD, rightSidebarItems, isExpertMode = SDKUI_Globals.userSettings.advancedSettings.expertMode === 1, isOpenDistinctValuesPanel = false, SQD, onRightSidebarItemClick, onSearchCompleted, onFocusedMetadataChanged, onCloseDistinctValuesPanel, onSqdSaved, onBack }) => {
24
+ import { AdvancedMenuButtons } from '../../editors/TMMetadataValues';
25
+ const TMSearchQueryPanel = ({ fromDTD, rightSidebarItems, isExpertMode = SDKUI_Globals.userSettings.advancedSettings.expertMode === 1, SQD, onRightSidebarItemClick, onSearchCompleted, onFocusedMetadataChanged, onSqdSaved, onBack }) => {
25
26
  const [confirmQueryParams, ConfirmQueryParamsDialog] = useQueryParametersDialog();
26
27
  const [qd, setQd] = useState();
27
28
  const [lastQdParams, setLastQdParams] = useState([]);
@@ -33,6 +34,7 @@ const TMSearchQueryPanel = ({ fromDTD, rightSidebarItems, isExpertMode = SDKUI_G
33
34
  const [showFiltersConfig, setShowFiltersConfig] = useState(false);
34
35
  const [showOutputConfig, setShowOutputConfig] = useState(false);
35
36
  const [showOrderByConfig, setShowOrderByConfig] = useState(false);
37
+ const [showDistinctValuesPanel, setShowDistinctValuesPanel] = useState(false);
36
38
  const [focusedTidMid, setFocusedTidMid] = useState();
37
39
  const deviceType = useDeviceType();
38
40
  let initialMaxItems = deviceType === DeviceType.MOBILE ? 8 : 12;
@@ -98,7 +100,7 @@ const TMSearchQueryPanel = ({ fromDTD, rightSidebarItems, isExpertMode = SDKUI_G
98
100
  }
99
101
  }
100
102
  };
101
- return (_jsxs(TMSplitterLayout, { direction: 'horizontal', overflow: 'visible', showSeparator: deviceType !== DeviceType.MOBILE && isOpenDistinctValuesPanel, separatorSize: 20, separatorColor: 'transparent', separatorActiveColor: 'transparent', min: ['0', '0'], start: deviceType === DeviceType.MOBILE ? ['100%', '0%'] : (isOpenDistinctValuesPanel ? ['55%', '45%'] : ['100%', '0%']), children: [_jsxs(TMPanel, { title: fromDTD?.nameLoc ?? SDKUI_Localizator.Search_Metadata, items: rightSidebarItems, onItemClick: onRightSidebarItemClick, onBack: onBack, toolbar: _jsx(_Fragment, { children: (SQD && !showSqdForm) ?
103
+ return (_jsxs(_Fragment, { children: [_jsxs(TMPanel, { title: fromDTD?.nameLoc ?? SDKUI_Localizator.Search_Metadata, items: rightSidebarItems, onItemClick: onRightSidebarItemClick, onBack: onBack, toolbar: _jsx(_Fragment, { children: (SQD && !showSqdForm) ?
102
104
  _jsx(TMDropDownMenu, { backgroundColor: 'white', borderRadius: '3px', content: _jsx(TMButton, { btnStyle: 'icon', caption: 'Altro', icon: _jsx(IconMenuVertical, { color: 'white' }), showTooltip: false }), items: [
103
105
  { icon: _jsx(IconAddCircleOutline, {}), text: SDKUI_Localizator.SavedQueryNew, onClick: () => { openSqdForm(FormModes.Create); } },
104
106
  { icon: _jsx(IconEdit, {}), text: SDKUI_Localizator.SavedQueryUpdate, disabled: (SQD && SQD.id == 1), onClick: () => { openSqdForm(FormModes.Update); } },
@@ -112,7 +114,11 @@ const TMSearchQueryPanel = ({ fromDTD, rightSidebarItems, isExpertMode = SDKUI_G
112
114
  ? _jsxs("div", { style: { height: '100%', width: '100%', position: 'relative', display: 'flex', flexDirection: 'column', gap: 5 }, children: [showAdvancedSearch
113
115
  ? _jsx(TMQueryEditor, { formMode: FormModes.Update, showToolbar: false, inputData: qd, validateSelect: true, showApply: false, onQDChanged: (newQd) => { if (!deepCompare(qd, newQd))
114
116
  setQd(newQd); } })
115
- : _jsx(TMSearchQueryEditor, { qd: qd, fromDTD: fromDTD, dcmtTypesList: dcmtTypesList, isOpenDistinctValuesPanel: isOpenDistinctValuesPanel, isExpertMode: isExpertMode, showAllMdWhere: showAllMdWhere, onFocusedMetadataChanged: setFocusedTidMid, onQdChanged: (newQd) => { if (!deepCompare(qd, newQd))
117
+ : _jsx(TMSearchQueryEditor, { qd: qd, fromDTD: fromDTD, dcmtTypesList: dcmtTypesList, isOpenDistinctValuesPanel: showDistinctValuesPanel, isExpertMode: isExpertMode, showAllMdWhere: showAllMdWhere, onFocusedMetadataChanged: setFocusedTidMid, onAdvancedMenuClick: (e) => {
118
+ if (e.button === AdvancedMenuButtons.DistinctValues) {
119
+ setShowDistinctValuesPanel(true);
120
+ }
121
+ }, onQdChanged: (newQd) => { if (!deepCompare(qd, newQd))
116
122
  setQd(newQd); } }), _jsxs("div", { style: { display: 'flex', justifyContent: 'center', alignItems: 'center', gap: '80px', padding: '15px', position: 'relative' }, children: [_jsxs("div", { style: { display: 'flex', justifyContent: 'center', alignItems: 'center', gap: '8px' }, children: [_jsx(TMButton, { btnStyle: 'advanced', icon: _jsx(IconSearch, {}), showTooltip: false, caption: SDKUI_Localizator.Search, onClick: async () => await searchAsync(qd, showAdvancedSearch), advancedColor: '#f09c0a' }), _jsx(TMButton, { btnStyle: 'advanced', showTooltip: false, caption: SDKUI_Localizator.Clear, icon: _jsx(IconClear, {}), advancedColor: TMColors.primaryColor, onClick: clearFilters })] }), (!showAdvancedSearch && qd?.where && qd?.where?.length > initialMaxItems) && _jsx(TMButton, { elementStyle: { position: 'absolute', right: '10px' }, btnStyle: 'icon', caption: showAllMdWhere ? "Mostra meno" : `Mostra tutti i metadati (+${qd?.where?.length - initialMaxItems})`, icon: showAllMdWhere ?
117
123
  _jsx("div", { style: { backgroundColor: TMColors.primaryColor, minWidth: '30px', minHeight: '30px', borderRadius: '10px', display: 'flex', alignItems: 'center', justifyContent: 'center' }, children: _jsx("p", { style: { color: 'white' }, children: `-${qd?.where?.length - initialMaxItems}` }) }) :
118
124
  _jsx("div", { style: { backgroundColor: TMColors.primaryColor, minWidth: '30px', minHeight: '30px', borderRadius: '10px', display: 'flex', alignItems: 'center', justifyContent: 'center' }, children: _jsx("p", { style: { color: 'white' }, children: `+${qd?.where?.length - initialMaxItems}` }) }), onClick: () => setShowAllMdWhere(!showAllMdWhere) })] }), showFiltersConfig &&
@@ -191,7 +197,8 @@ const TMSearchQueryPanel = ({ fromDTD, rightSidebarItems, isExpertMode = SDKUI_G
191
197
  } })] })
192
198
  :
193
199
  _jsxs(TMLayoutContainer, { gap: 30, alignItems: 'center', justifyContent: 'center', children: [_jsxs(TMLayoutItem, { width: 'max-content', height: 'max-content', children: [" ", _jsxs(StyledToppyTextContainer, { children: [" ", _jsxs(StyledToppyText, { children: [" ", 'Selezionare un tipo documento o ricerca rapida', " "] }), " "] }), " "] }), _jsxs(TMLayoutItem, { width: 'max-content', height: 'max-content', children: [" ", _jsx("img", { src: Logo, width: 120, alt: '' }), " "] })] }), showSqdForm &&
194
- _jsx(StyledModalContainer, { style: { backgroundColor: `${TMColors.backgroundColorHeader}12` }, children: _jsx(TMSavedQueryForm, { height: '50%', width: '50%', id: formModeSqdForm === FormModes.Create ? -1 : SQD?.id, title: 'Ricerca rapida', formMode: formModeSqdForm, showBackButton: true, qd: qd, isAdvancedSearch: showAdvancedSearch, isModal: false, onClose: () => { setShowSqdForm(false); }, onSaved: onSqdSaved }) })] }), _jsx(StyledMultiViewPanel, { "$isVisible": isOpenDistinctValuesPanel, children: _jsx(TMDistinctValues, { tid: focusedTidMid?.tid, mid: focusedTidMid?.mid, separator: ',', onClosePanelCallback: onCloseDistinctValuesPanel, onSelectionChanged: (e) => {
200
+ _jsx(StyledModalContainer, { style: { backgroundColor: `${TMColors.backgroundColorHeader}12` }, children: _jsx(TMSavedQueryForm, { height: '50%', width: '50%', id: formModeSqdForm === FormModes.Create ? -1 : SQD?.id, title: 'Ricerca rapida', formMode: formModeSqdForm, showBackButton: true, qd: qd, isAdvancedSearch: showAdvancedSearch, isModal: false, onClose: () => { setShowSqdForm(false); }, onSaved: onSqdSaved }) })] }), showDistinctValuesPanel &&
201
+ _jsx(TMDistinctValues, { isModal: true, tid: focusedTidMid?.tid, mid: focusedTidMid?.mid, separator: ',', onClosePanelCallback: () => setShowDistinctValuesPanel(false), onSelectionChanged: (e) => {
195
202
  if (!e)
196
203
  return;
197
204
  let wi = qd?.where?.find(o => o.tid === focusedTidMid?.tid && o.mid === focusedTidMid?.mid);
@@ -206,7 +213,7 @@ const TMSearchQueryPanel = ({ fromDTD, rightSidebarItems, isExpertMode = SDKUI_G
206
213
  return wi;
207
214
  });
208
215
  setQd({ ...qd, where: whereCopy });
209
- } }) })] }));
216
+ } })] }));
210
217
  };
211
218
  export default TMSearchQueryPanel;
212
219
  const searchByQdAsync = async (qdInput, searchParams) => {
@@ -456,7 +456,7 @@ const TMSearchResult = ({ context = SearchResultContext.METADATA_SEARCH, isVisib
456
456
  _jsx(TMNothingToShow, { text: 'Nessun documento selezionato.', secondText: notAvalableMsg, icon: notAvalableIcon })
457
457
  :
458
458
  _jsxs(StyledContainer, { children: [isOpenBoard && _jsx(TMDcmtBlog, { tid: focusedItem?.TID, did: focusedItem?.DID }), isOpenSysMetadata &&
459
- _jsx(TMMetadataValues, { layoutMode: LayoutModes.Update, openChooserBySingleClick: !isOpenDistinctValues, TID: focusedItem?.TID, deviceType: deviceType, metadataValues: currentMetadataValues.filter(o => (o.mid != undefined && o.mid <= 100)), metadataValuesOrig: currentMetadataValues.filter(o => (o.mid != undefined && o.mid <= 100)), validationItems: [] })] }) }) })
459
+ _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: [] })] }) }) })
460
460
  : _jsx(_Fragment, {}), isOpenPreview
461
461
  ? _jsx(TMLayoutItem, { children: _jsx(TMDcmtPreview, { onClose: () => { setIsOpenPreview(false); onClosePreview?.(); }, dcmtData: currentDcmt, canNext: canNavigateHandler('next'), canPrev: canNavigateHandler('prev'), onNext: () => onNavigateHandler('next'), onPrev: () => onNavigateHandler('prev') }) })
462
462
  : _jsx(_Fragment, {})] }) })
@@ -14,7 +14,7 @@ const StyledRecentTidItem = styled.div `
14
14
  flex-direction: column;
15
15
  align-items: stretch;
16
16
  min-width: 0;
17
- padding: 10px;
17
+ padding: 10px 10px 0px 10px;
18
18
  position: relative;
19
19
 
20
20
  &:hover {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@topconsultnpm/sdkui-react-beta",
3
- "version": "6.13.15",
3
+ "version": "6.13.17",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "test": "echo \"Error: no test specified\" && exit 1",