@topconsultnpm/sdkui-react-beta 6.12.136 → 6.12.137

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.
@@ -23,7 +23,7 @@ interface ITMMetadataValuesProps extends DeviceContextProps {
23
23
  metadataValues: MetadataValueDescriptorEx[];
24
24
  metadataValuesOrig?: MetadataValueDescriptorEx[];
25
25
  customMenuItems?: any[];
26
- showAdvancedMenu?: boolean;
26
+ isExpertMode?: boolean;
27
27
  showCheckBoxes?: ShowCheckBoxesMode;
28
28
  showNullValueCheckBoxes?: boolean;
29
29
  validationItems: ValidationItem[];
@@ -2,7 +2,7 @@ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-run
2
2
  import { useEffect, useState } from "react";
3
3
  import styled from "styled-components";
4
4
  import { AccessLevels, DcmtTypeListCacheService, LayoutModes, MetadataDataDomains, MetadataDataTypes, SDK_Globals } from '@topconsultnpm/sdk-ts-beta';
5
- import { IconUndo, IconPencil, IconFunction, IconMenuVertical, IconDataList, SDKUI_Localizator, IconNull, stringIsNullOrEmpty, deepCompare } from "../../helper";
5
+ import { IconUndo, IconPencil, IconFunction, IconMenuVertical, IconDataList, SDKUI_Localizator, IconNull, stringIsNullOrEmpty, deepCompare, SDKUI_Globals } from "../../helper";
6
6
  import { TMColors } from "../../utils/theme";
7
7
  import TMButton from "../base/TMButton";
8
8
  import TMDropDownMenu from "../base/TMDropDownMenu";
@@ -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, showAdvancedMenu = false, customMenuItems = [], showNullValueCheckBoxes, isOpenDistinctValues = false, openChooserBySingleClick, selectedMID, onFocusedItemChanged, layoutMode = LayoutModes.Update, metadataValues = [], metadataValuesOrig = [], TID, onValueChanged, onAdvancedMenuClick, validationItems }) => {
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 }) => {
27
27
  const [dynDataListsToBeRefreshed, setDynDataListsToBeRefreshed] = useState([]);
28
28
  const [currentDTD, setCurrentDTD] = useState();
29
29
  const [isEditableList, addOrRemoveEditableList] = useMetadataEditableList();
@@ -224,7 +224,7 @@ const TMMetadataValues = ({ showCheckBoxes = ShowCheckBoxesMode.Never, checkPerm
224
224
  mvd.isSelected = !stringIsNullOrEmpty(mvd.value);
225
225
  }
226
226
  onValueChanged?.(newValues);
227
- } }) }), showAdvancedMenu && _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(TID, item.mid) }) })] }, item.mid))) }));
227
+ } }) }), 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(TID, item.mid) }) })] }, item.mid))) }));
228
228
  };
229
229
  export default TMMetadataValues;
230
230
  //#region Styled Components
@@ -4,6 +4,7 @@ interface ITMBatchUpdateFormProps {
4
4
  inputDcmts: DcmtInfo[];
5
5
  TID: number | undefined;
6
6
  DID: number | undefined;
7
+ isExpertMode?: boolean;
7
8
  onBack?: () => void;
8
9
  onSavedCallbackAsync?: () => Promise<void>;
9
10
  onStatusChanged?: (isModified: boolean, isValid: boolean) => void;
@@ -1,12 +1,11 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useEffect, useState } from 'react';
3
3
  import { AccessLevels, DcmtTypeListCacheService, LayoutModes, MetadataDataDomains, ResultTypes, SDK_Globals, ValidationItem } from '@topconsultnpm/sdk-ts-beta';
4
- import { searchResultToMetadataValues, getSystemMetadata, calcIsModified, getListMaxItems, SDKUI_Localizator, IconHide, IconShow } from '../../../helper';
4
+ import { searchResultToMetadataValues, getSystemMetadata, calcIsModified, getListMaxItems, SDKUI_Localizator, SDKUI_Globals } from '../../../helper';
5
5
  import { useDcmtOperations } from '../../../hooks/useDcmtOperations';
6
6
  import { DcmtOperationTypes, FormModes } from '../../../ts';
7
7
  import { TMColors } from '../../../utils/theme';
8
8
  import { StyledToolbarCardContainer, StyledFormButtonsContainer } from '../../base/Styled';
9
- import TMButton from '../../base/TMButton';
10
9
  import { useDeviceType, DeviceType } from '../../base/TMDeviceProvider';
11
10
  import { TMSplitterLayout } from '../../base/TMLayout';
12
11
  import { TMExceptionBoxManager } from '../../base/TMPopUp';
@@ -19,12 +18,11 @@ import TMFormulaEditor, { FormulaDescriptor, FormulaHelper, FormulaTargets } fro
19
18
  import { useMetadataEditableList } from '../../editors/TMMetadataEditor';
20
19
  import TMMetadataValues, { ShowCheckBoxesMode, AdvancedMenuButtons } from '../../editors/TMMetadataValues';
21
20
  import { TMSaveFormButtonSave, TMSaveFormButtonUndo } from '../../forms/TMSaveForm';
22
- const TMBatchUpdateForm = ({ inputDcmts, TID, DID, onSavedCallbackAsync, onBack, onStatusChanged }) => {
21
+ const TMBatchUpdateForm = ({ inputDcmts, TID, DID, isExpertMode = SDKUI_Globals.userSettings.advancedSettings.expertMode === 1, onSavedCallbackAsync, onBack, onStatusChanged }) => {
23
22
  const [metadataValues, setMetadataValues] = useState([]);
24
23
  const [metadataValuesOrig, setMetadataValuesOrig] = useState([]);
25
24
  const [validationItems, setValidationItems] = useState([]);
26
25
  const [showAll, setShowAll] = useState(false);
27
- const [showAdvancedMenu, setShowAdvancedMenu] = useState(false);
28
26
  const [showDistinctValuesPanel, setShowDistinctValuesPanel] = useState(false);
29
27
  const [showFormulaEditor, setShowFormulaEditor] = useState(false);
30
28
  const [focusedMetadataValue, setFocusedMetadataValue] = useState();
@@ -115,7 +113,7 @@ const TMBatchUpdateForm = ({ inputDcmts, TID, DID, onSavedCallbackAsync, onBack,
115
113
  const totalItems = metadataValues.filter(o => o.mid && o.mid > 100).length;
116
114
  const metadataValuesSource = metadataValues.filter(o => o.mid && o.mid > 100).slice(0, showAll ? metadataValues.filter(o => o.mid && o.mid > 100).length : listMaxItems);
117
115
  const metadataValuesSourceOrig = metadataValuesOrig.filter(o => o.mid && o.mid > 100).slice(0, showAll ? metadataValuesOrig.filter(o => o.mid && o.mid > 100).length : listMaxItems);
118
- return (_jsx(TMLayoutWaitingContainer, { showWaitPanel: showWaitPanel, showWaitPanelPrimary: showPrimary, waitPanelTitle: waitPanelTitle, waitPanelTextPrimary: waitPanelTextPrimary, waitPanelValuePrimary: waitPanelValuePrimary, waitPanelMaxValuePrimary: waitPanelMaxValuePrimary, isCancelable: true, abortController: abortController, children: _jsxs(TMSplitterLayout, { separatorSize: 5, separatorColor: 'transparent', showSeparator: showDistinctValuesPanel || showFormulaEditor, start: showDistinctValuesPanel || showFormulaEditor ? ['50%', '50%'] : ['100%', '0%'], min: ['0', '0'], direction: 'horizontal', children: [_jsx(TMToolbarCard, { title: `${SDKUI_Localizator.BatchUpdate} (${inputDcmts.length} documenti selezionati)`, backgroundColorContainer: TMColors.default_background, toolbar: _jsx(TMButton, { btnStyle: 'icon', icon: showAdvancedMenu ? _jsx(IconHide, { color: 'white' }) : _jsx(IconShow, { color: 'white' }), caption: showAdvancedMenu ? SDKUI_Localizator.StandardMode : SDKUI_Localizator.ExpertMode, onClick: () => setShowAdvancedMenu(!showAdvancedMenu) }), onBack: deviceType === DeviceType.MOBILE ? onBack : undefined, onClose: deviceType !== DeviceType.MOBILE ? onBack : undefined, children: _jsxs(StyledToolbarCardContainer, { children: [_jsx(TMMetadataValues, { TID: TID, showAdvancedMenu: showAdvancedMenu, showCheckBoxes: ShowCheckBoxesMode.Always, showNullValueCheckBoxes: true, metadataValues: metadataValuesSource, metadataValuesOrig: metadataValuesSourceOrig, validationItems: validationItems, isOpenDistinctValues: showDistinctValuesPanel, selectedMID: focusedMetadataValue?.mid, onFocusedItemChanged: (item) => { setFocusedMetadataValue(item); }, onValueChanged: (newItems) => {
116
+ return (_jsx(TMLayoutWaitingContainer, { showWaitPanel: showWaitPanel, showWaitPanelPrimary: showPrimary, waitPanelTitle: waitPanelTitle, waitPanelTextPrimary: waitPanelTextPrimary, waitPanelValuePrimary: waitPanelValuePrimary, waitPanelMaxValuePrimary: waitPanelMaxValuePrimary, isCancelable: true, abortController: abortController, children: _jsxs(TMSplitterLayout, { separatorSize: 5, separatorColor: 'transparent', showSeparator: showDistinctValuesPanel || showFormulaEditor, start: showDistinctValuesPanel || showFormulaEditor ? ['50%', '50%'] : ['100%', '0%'], min: ['0', '0'], direction: 'horizontal', children: [_jsx(TMToolbarCard, { title: `${SDKUI_Localizator.BatchUpdate} (${inputDcmts.length} documenti selezionati)`, backgroundColorContainer: TMColors.default_background, onBack: deviceType === DeviceType.MOBILE ? onBack : undefined, onClose: deviceType !== DeviceType.MOBILE ? onBack : undefined, children: _jsxs(StyledToolbarCardContainer, { children: [_jsx(TMMetadataValues, { TID: TID, isExpertMode: isExpertMode, showCheckBoxes: ShowCheckBoxesMode.Always, showNullValueCheckBoxes: true, metadataValues: metadataValuesSource, metadataValuesOrig: metadataValuesSourceOrig, validationItems: validationItems, isOpenDistinctValues: showDistinctValuesPanel, selectedMID: focusedMetadataValue?.mid, onFocusedItemChanged: (item) => { setFocusedMetadataValue(item); }, onValueChanged: (newItems) => {
119
117
  setMetadataValues((prevItems) => prevItems.map((item) => {
120
118
  const newItem = newItems.find((newItem) => newItem.tid === item.tid && newItem.mid === item.mid);
121
119
  return newItem ? { ...item, ...newItem } : item;
@@ -16,6 +16,7 @@ interface ITMDcmtFormProps {
16
16
  showSysMetadata?: boolean;
17
17
  customRightSidebarItems?: ITMRightSidebarItem[];
18
18
  showDcmtFormSidebar?: boolean;
19
+ isExpertMode?: boolean;
19
20
  count?: number;
20
21
  itemIndex?: number;
21
22
  canNext?: boolean;
@@ -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, IconHide, calcIsModified, IconMenuVertical, Globalization, getListMaxItems, getSystemMetadata, IconBoxArchiveIn, IconClear, IconUndo, SDKUI_Globals, IconRoundFileUpload } from '../../../helper';
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';
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';
@@ -32,7 +32,7 @@ import { useInputAttachmentsDialog } from '../../../hooks/useInputDialog';
32
32
  import TMModal from '../../base/TMModal';
33
33
  let abortControllerLocal = new AbortController();
34
34
  //#endregion
35
- const TMDcmtForm = ({ showHeader = true, onSaveRecents, layoutMode = LayoutModes.Update, onClose, onSavedAsyncCallback, TID, DID, formMode = FormModes.Update, canNext, canPrev, count, itemIndex, onNext, onPrev, customRightSidebarItems = [], allowNavigation = true, allowRelations = true, isClosable = false, showDcmtForm = true, showDcmtFormSidebar = true, showPreview = false, showBoard = false, showSysMetadata = false, onClosePreview, titleModal, isModal = false, widthModal = "100%", heightModal = "100%" }) => {
35
+ const TMDcmtForm = ({ showHeader = true, onSaveRecents, layoutMode = LayoutModes.Update, onClose, onSavedAsyncCallback, TID, DID, formMode = FormModes.Update, canNext, canPrev, count, itemIndex, onNext, onPrev, customRightSidebarItems = [], allowNavigation = true, allowRelations = true, isClosable = false, isExpertMode = SDKUI_Globals.userSettings.advancedSettings.expertMode === 1, showDcmtForm = true, showDcmtFormSidebar = true, showPreview = false, showBoard = false, showSysMetadata = false, onClosePreview, titleModal, isModal = false, widthModal = "100%", heightModal = "100%" }) => {
36
36
  const mruTIDs = SDKUI_Globals.userSettings.archivingSettings.mruTIDs;
37
37
  const [id, setID] = useState('');
38
38
  const [showWaitPanelLocal, setShowWaitPanelLocal] = useState(false);
@@ -51,7 +51,6 @@ const TMDcmtForm = ({ showHeader = true, onSaveRecents, layoutMode = LayoutModes
51
51
  const [validationItems, setValidationItems] = useState([]);
52
52
  const [changedMetadata, setChangedMetadata] = useState([]);
53
53
  const [fromDTD, setFromDTD] = useState();
54
- const [showAdvancedMenu, setShowAdvancedMenu] = useState(false);
55
54
  const [showApprovePopup, setShowApprovePopup] = useState(false);
56
55
  const [showRejectPopup, setShowRejectPopup] = useState(false);
57
56
  const [showReAssignPopup, setShowReAssignPopup] = useState(false);
@@ -221,7 +220,6 @@ const TMDcmtForm = ({ showHeader = true, onSaveRecents, layoutMode = LayoutModes
221
220
  const commandsMenuItems = [
222
221
  { icon: svgToString(_jsx(IconDownload, {})), operationType: 'singleRow', disabled: fromDTD?.perm?.canRetrieveFile !== AccessLevels.Yes, text: "Download file", onClick: async () => await downloadDcmtsAsync(getDcmts(), DownloadTypes.Dcmt) },
223
222
  { icon: svgToString(_jsx(IconDownload, {})), operationType: 'singleRow', disabled: !isXMLFileExt(currentDcmt?.fileExt), text: "Download allegati XML", onClick: async () => await downloadDcmtsAsync(getDcmts(), DownloadTypes.Attachment, openConfirmAttachmentsDialog) },
224
- { icon: svgToString(showAdvancedMenu ? _jsx(IconHide, {}) : _jsx(IconShow, {})), operationType: 'singleRow', text: showAdvancedMenu ? SDKUI_Localizator.StandardMode : SDKUI_Localizator.ExpertMode, onClick: () => setShowAdvancedMenu(!showAdvancedMenu) },
225
223
  ];
226
224
  const formToolbar = _jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: '10px' }, children: [canPrev != undefined && _jsx("p", { style: { backgroundColor: `white`, color: TMColors.primaryColor, textAlign: 'center', padding: '1px 4px', borderRadius: '3px', display: 'flex' }, children: `${itemIndex}/${count}` }), canPrev != undefined && _jsx(TMSaveFormButtonPrevious, { btnStyle: 'icon', iconColor: 'white', isModified: calcIsModified(formData, formDataOrig), formMode: formMode, canPrev: canPrev, onPrev: onPrev }), canNext != undefined && _jsx(TMSaveFormButtonNext, { btnStyle: 'icon', iconColor: 'white', isModified: calcIsModified(formData, formDataOrig), formMode: formMode, canNext: canNext, onNext: onNext }), layoutMode === LayoutModes.Update && _jsx(IconMenuVertical, { id: `commands-detail-${id}`, color: 'white', cursor: 'pointer' }), layoutMode === LayoutModes.Update && _jsx(ContextMenu, { showEvent: 'click', dataSource: commandsMenuItems, target: `#commands-detail-${id}` })] });
227
225
  function createChange(mid, metadataType, modifiedValue) {
@@ -454,7 +452,7 @@ const TMDcmtForm = ({ showHeader = true, onSaveRecents, layoutMode = LayoutModes
454
452
  return fd;
455
453
  };
456
454
  const renderDcmtForm = () => {
457
- return (_jsxs(TMLayoutWaitingContainer, { direction: 'vertical', showWaitPanel: useWaitPanelLocalState ? showWaitPanelLocal : showWaitPanel, showWaitPanelPrimary: useWaitPanelLocalState ? showPrimaryLocal : showPrimary, showWaitPanelSecondary: useWaitPanelLocalState ? showSecondaryLocal : showSecondary, waitPanelTitle: useWaitPanelLocalState ? waitPanelTitleLocal : waitPanelTitle, waitPanelTextPrimary: useWaitPanelLocalState ? waitPanelTextPrimaryLocal : waitPanelTextPrimary, waitPanelValuePrimary: useWaitPanelLocalState ? waitPanelValuePrimaryLocal : waitPanelValuePrimary, waitPanelMaxValuePrimary: useWaitPanelLocalState ? waitPanelMaxValuePrimaryLocal : waitPanelMaxValuePrimary, waitPanelTextSecondary: useWaitPanelLocalState ? waitPanelTextSecondaryLocal : waitPanelTextSecondary, waitPanelValueSecondary: useWaitPanelLocalState ? waitPanelValueSecondaryLocal : waitPanelValueSecondary, waitPanelMaxValueSecondary: useWaitPanelLocalState ? waitPanelMaxValueSecondaryLocal : waitPanelMaxValueSecondary, isCancelable: useWaitPanelLocalState ? dcmtFile ? dcmtFile.size >= 1000000 : false : true, abortController: useWaitPanelLocalState ? abortControllerLocal : abortController, children: [_jsxs(TMSplitterLayout, { separatorSize: 5, separatorColor: 'transparent', showSeparator: (isOpenPreview || isOpenMiddlePanel()) && deviceType !== DeviceType.MOBILE && isOpenDcmtForm, start: getPrimarySplitterStartLayout(), min: deviceType !== DeviceType.MOBILE && isOpenDcmtForm ? ['150px', '0'] : ['0', '0'], direction: 'horizontal', children: [_jsx(TMLayoutItem, { children: _jsx(TMToolbarCard, { showHeader: showHeader, title: fromDTD?.nameLoc, toolbar: allowNavigation ? formToolbar : _jsx(_Fragment, {}), items: showDcmtFormSidebar ? sideBarItems : undefined, onBack: isClosable ? undefined : handleClose, onClose: isClosable ? handleClose : undefined, children: metadataValuesSource.length > 0 && _jsxs(StyledToolbarCardContainer, { children: [_jsx(TMMetadataValues, { TID: TID, metadataValues: metadataValuesSource, metadataValuesOrig: metadataValuesSourceOrig, showAdvancedMenu: showAdvancedMenu, isOpenDistinctValues: isOpenDistinctValues, openChooserBySingleClick: !isOpenDistinctValues, selectedMID: focusedMetadataValue?.mid, layoutMode: layoutMode, deviceType: deviceType, validationItems: validationItems, onFocusedItemChanged: (item) => { (item?.mid !== focusedMetadataValue?.mid) && setFocusedMetadataValue(item); }, onValueChanged: (newItems) => {
455
+ return (_jsxs(TMLayoutWaitingContainer, { direction: 'vertical', showWaitPanel: useWaitPanelLocalState ? showWaitPanelLocal : showWaitPanel, showWaitPanelPrimary: useWaitPanelLocalState ? showPrimaryLocal : showPrimary, showWaitPanelSecondary: useWaitPanelLocalState ? showSecondaryLocal : showSecondary, waitPanelTitle: useWaitPanelLocalState ? waitPanelTitleLocal : waitPanelTitle, waitPanelTextPrimary: useWaitPanelLocalState ? waitPanelTextPrimaryLocal : waitPanelTextPrimary, waitPanelValuePrimary: useWaitPanelLocalState ? waitPanelValuePrimaryLocal : waitPanelValuePrimary, waitPanelMaxValuePrimary: useWaitPanelLocalState ? waitPanelMaxValuePrimaryLocal : waitPanelMaxValuePrimary, waitPanelTextSecondary: useWaitPanelLocalState ? waitPanelTextSecondaryLocal : waitPanelTextSecondary, waitPanelValueSecondary: useWaitPanelLocalState ? waitPanelValueSecondaryLocal : waitPanelValueSecondary, waitPanelMaxValueSecondary: useWaitPanelLocalState ? waitPanelMaxValueSecondaryLocal : waitPanelMaxValueSecondary, isCancelable: useWaitPanelLocalState ? dcmtFile ? dcmtFile.size >= 1000000 : false : true, abortController: useWaitPanelLocalState ? abortControllerLocal : abortController, children: [_jsxs(TMSplitterLayout, { separatorSize: 5, separatorColor: 'transparent', showSeparator: (isOpenPreview || isOpenMiddlePanel()) && deviceType !== DeviceType.MOBILE && isOpenDcmtForm, start: getPrimarySplitterStartLayout(), min: deviceType !== DeviceType.MOBILE && isOpenDcmtForm ? ['150px', '0'] : ['0', '0'], direction: 'horizontal', children: [_jsx(TMLayoutItem, { children: _jsx(TMToolbarCard, { showHeader: showHeader, title: fromDTD?.nameLoc, toolbar: allowNavigation ? formToolbar : _jsx(_Fragment, {}), items: showDcmtFormSidebar ? sideBarItems : undefined, onBack: isClosable ? undefined : handleClose, onClose: isClosable ? handleClose : undefined, children: metadataValuesSource.length > 0 && _jsxs(StyledToolbarCardContainer, { children: [_jsx(TMMetadataValues, { TID: TID, metadataValues: metadataValuesSource, metadataValuesOrig: metadataValuesSourceOrig, isExpertMode: isExpertMode, isOpenDistinctValues: isOpenDistinctValues, openChooserBySingleClick: !isOpenDistinctValues, selectedMID: focusedMetadataValue?.mid, layoutMode: layoutMode, deviceType: deviceType, validationItems: validationItems, onFocusedItemChanged: (item) => { (item?.mid !== focusedMetadataValue?.mid) && setFocusedMetadataValue(item); }, onValueChanged: (newItems) => {
458
456
  setFormData((prevItems) => prevItems.map((item) => {
459
457
  const newItem = newItems.find((newItem) => newItem.tid === item.tid && newItem.mid === item.mid);
460
458
  return newItem ? { ...item, ...newItem } : item;
@@ -3,6 +3,7 @@ import { TaskContext } from '../../../ts';
3
3
  interface ITMSearchProps {
4
4
  inputTID?: number;
5
5
  inputSqdID?: number;
6
+ isExpertMode?: boolean;
6
7
  onRefreshAfterAddDcmtToFavs?: () => void;
7
8
  onTaskCreateRequest?: (taskContext: TaskContext) => void;
8
9
  }
@@ -17,7 +17,7 @@ var TMSearchViews;
17
17
  TMSearchViews[TMSearchViews["None"] = 0] = "None";
18
18
  TMSearchViews[TMSearchViews["Result"] = 1] = "Result";
19
19
  })(TMSearchViews || (TMSearchViews = {}));
20
- const TMSearch = ({ inputTID, inputSqdID, onRefreshAfterAddDcmtToFavs, onTaskCreateRequest }) => {
20
+ const TMSearch = ({ inputTID, inputSqdID, isExpertMode = SDKUI_Globals.userSettings.advancedSettings.expertMode === 1, onRefreshAfterAddDcmtToFavs, onTaskCreateRequest }) => {
21
21
  const [allSQDs, setAllSQDs] = useState([]);
22
22
  const [filteredByTIDSQDs, setFilteredByTIDSQDs] = useState([]);
23
23
  const [currentSQD, setCurrentSQD] = useState();
@@ -158,7 +158,7 @@ const TMSearch = ({ inputTID, inputSqdID, onRefreshAfterAddDcmtToFavs, onTaskCre
158
158
  newMruTIDS.splice(index, 1);
159
159
  SDKUI_Globals.userSettings.searchSettings.mruTIDs = newMruTIDS.filter(tid => tid != undefined && tid != null);
160
160
  setMruTIDs(newMruTIDS);
161
- } }) }), _jsx(TMSearchQueryPanel, { 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) => {
161
+ } }) }), _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) => {
162
162
  setSearchResult(searchResult);
163
163
  if (searchResult.length <= 0)
164
164
  return;
@@ -5,7 +5,7 @@ interface ITMSearchQueryEditorProps {
5
5
  qd: QueryDescriptor | undefined;
6
6
  fromDTD?: DcmtTypeDescriptor;
7
7
  dcmtTypesList?: DcmtTypeDescriptor[];
8
- showAdvancedMenu?: boolean;
8
+ isExpertMode?: boolean;
9
9
  showAllMdWhere?: boolean;
10
10
  isOpenDistinctValuesPanel: boolean;
11
11
  onQdChanged?: (qd: QueryDescriptor) => void;
@@ -2,7 +2,7 @@ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-run
2
2
  import React, { useEffect, useState } from 'react';
3
3
  import { LayoutModes, DcmtTypeListCacheService, PlatformObjectValidator, MetadataDataTypes, QueryOperators, DataListCacheService, MetadataDataDomains, SDK_Localizator, UserListCacheService } from '@topconsultnpm/sdk-ts-beta';
4
4
  import styled from 'styled-components';
5
- import { LocalizeQueryOperators, getDefaultOperator, SDKUI_Localizator, IconUndo, IconPencil, IconDataList, IconFunction, IconMenuVertical, IconClearButton, displayMetadataValue } from '../../../helper';
5
+ import { LocalizeQueryOperators, getDefaultOperator, SDKUI_Localizator, IconUndo, IconPencil, IconDataList, IconFunction, IconMenuVertical, IconClearButton, displayMetadataValue, SDKUI_Globals } from '../../../helper';
6
6
  import { TMColors } from '../../../utils/theme';
7
7
  import { StyledDivHorizontal } from '../../base/Styled';
8
8
  import TMButton from '../../base/TMButton';
@@ -27,7 +27,7 @@ const StyledMetadataListItem = styled.div `
27
27
  cursor: pointer;
28
28
  }
29
29
  `;
30
- const TMSearchQueryEditor = ({ qd, fromDTD, dcmtTypesList = [], isOpenDistinctValuesPanel, showAdvancedMenu, showAllMdWhere, onQdChanged, onFocusedMetadataChanged }) => {
30
+ const TMSearchQueryEditor = ({ qd, fromDTD, dcmtTypesList = [], isOpenDistinctValuesPanel, isExpertMode = SDKUI_Globals.userSettings.advancedSettings.expertMode === 1, showAllMdWhere, onQdChanged, onFocusedMetadataChanged }) => {
31
31
  const [dynDataListsToBeRefreshed, setDynDataListsToBeRefreshed] = useState([]);
32
32
  const [showDistinctValuesPanel, setShowDistinctValuesPanel] = useState(false);
33
33
  const [currentEditingMID, setCurrentEditingMID] = useState(0);
@@ -202,7 +202,7 @@ const TMSearchQueryEditor = ({ qd, fromDTD, dcmtTypesList = [], isOpenDistinctVa
202
202
  ? _jsx(IconFunction, { color: "#1a89d3", fontSize: 14, style: { position: "absolute", top: '-5px', left: '-10px' } })
203
203
  : (isEditableList(whereItem.mid))
204
204
  ? _jsx(IconPencil, { color: "#138603", fontSize: 14, style: { position: "absolute", top: '-5px', left: '-10px' } })
205
- : _jsx(_Fragment, {})] }), showAdvancedMenu && _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}`));
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}`));
206
206
  }) }) }));
207
207
  };
208
208
  export default TMSearchQueryEditor;
@@ -7,6 +7,7 @@ interface ITMSearchQueryPanelProps {
7
7
  SQD?: SavedQueryDescriptor;
8
8
  isOpenDistinctValuesPanel?: boolean;
9
9
  rightSidebarItems?: ITMRightSidebarItem[];
10
+ isExpertMode?: boolean;
10
11
  onBack?: () => void;
11
12
  onRightSidebarItemClick?: (item: string) => void;
12
13
  onSqdSaved?: (newSqd: SavedQueryDescriptor) => void;
@@ -4,7 +4,7 @@ import { PlatformObjectValidator, WhereItem, SDK_Localizator, OrderByItem, Selec
4
4
  import styled from 'styled-components';
5
5
  import TMSearchQueryEditor from './TMSearchQueryEditor';
6
6
  import Logo from '../../../assets/Toppy-generico.png';
7
- import { getDcmtTypesByQdAsync, SDKUI_Localizator, getQD, IconMenuVertical, IconAddCircleOutline, IconEdit, IconArchiveDoc, IconEasy, IconAdvanced, IconHide, IconShow, deepCompare, IconSearch, IconClear, getDefaultOperator, prepareQdForSearchAsync, IsParametricQuery } from '../../../helper';
7
+ import { getDcmtTypesByQdAsync, SDKUI_Localizator, getQD, IconMenuVertical, IconAddCircleOutline, IconEdit, IconArchiveDoc, IconEasy, IconAdvanced, deepCompare, IconSearch, IconClear, getDefaultOperator, prepareQdForSearchAsync, IsParametricQuery, SDKUI_Globals } from '../../../helper';
8
8
  import { useQueryParametersDialog } from '../../../hooks/useQueryParametersDialog';
9
9
  import { FormModes } from '../../../ts';
10
10
  import { TMColors } from '../../../utils/theme';
@@ -21,14 +21,13 @@ 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, isOpenDistinctValuesPanel = false, SQD, onRightSidebarItemClick, onSearchCompleted, onFocusedMetadataChanged, onCloseDistinctValuesPanel, onSqdSaved, onBack }) => {
24
+ const TMSearchQueryPanel = ({ fromDTD, rightSidebarItems, isExpertMode = SDKUI_Globals.userSettings.advancedSettings.expertMode === 1, isOpenDistinctValuesPanel = false, SQD, onRightSidebarItemClick, onSearchCompleted, onFocusedMetadataChanged, onCloseDistinctValuesPanel, onSqdSaved, onBack }) => {
25
25
  const [confirmQueryParams, ConfirmQueryParamsDialog] = useQueryParametersDialog();
26
26
  const [qd, setQd] = useState();
27
27
  const [lastQdParams, setLastQdParams] = useState([]);
28
28
  const [dcmtTypesList, setDcmtTypesList] = useState([]);
29
29
  const [showSqdForm, setShowSqdForm] = useState(false);
30
30
  const [formModeSqdForm, setFormModeSqdForm] = useState(FormModes.Update);
31
- const [showAdvancedMenu, setShowAdvancedMenu] = useState(false);
32
31
  const [showAllMdWhere, setShowAllMdWhere] = useState(false);
33
32
  const [showAdvancedSearch, setShowAdvancedSearch] = useState(false);
34
33
  const [showFiltersConfig, setShowFiltersConfig] = useState(false);
@@ -108,13 +107,12 @@ const TMSearchQueryPanel = ({ fromDTD, rightSidebarItems, isOpenDistinctValuesPa
108
107
  { icon: _jsx(IconEdit, {}), beginGroup: true, text: `${SDKUI_Localizator.Configure} - ${SDK_Localizator.QueryWhere}`, onClick: () => { setShowFiltersConfig(true); } },
109
108
  { icon: _jsx(IconEdit, {}), text: `${SDKUI_Localizator.Configure} - ${SDK_Localizator.QuerySelect}`, onClick: () => { setShowOutputConfig(true); } },
110
109
  { icon: _jsx(IconEdit, {}), text: `${SDKUI_Localizator.Configure} - ${SDK_Localizator.QueryOrderBy}`, onClick: () => { setShowOrderByConfig(true); } },
111
- { icon: showAdvancedMenu ? _jsx(IconHide, {}) : _jsx(IconShow, {}), beginGroup: true, operationType: 'singleRow', text: showAdvancedMenu ? SDKUI_Localizator.StandardMode : SDKUI_Localizator.ExpertMode, onClick: () => setShowAdvancedMenu(!showAdvancedMenu) },
112
110
  ] })
113
111
  : _jsx(_Fragment, {}) }), children: [_jsx(ConfirmQueryParamsDialog, {}), SQD
114
112
  ? _jsxs("div", { style: { height: '100%', width: '100%', position: 'relative', display: 'flex', flexDirection: 'column', gap: 5 }, children: [showAdvancedSearch
115
113
  ? _jsx(TMQueryEditor, { formMode: FormModes.Update, showToolbar: false, inputData: qd, validateSelect: true, showApply: false, onQDChanged: (newQd) => { if (!deepCompare(qd, newQd))
116
114
  setQd(newQd); } })
117
- : _jsx(TMSearchQueryEditor, { qd: qd, fromDTD: fromDTD, dcmtTypesList: dcmtTypesList, isOpenDistinctValuesPanel: isOpenDistinctValuesPanel, showAdvancedMenu: showAdvancedMenu, showAllMdWhere: showAllMdWhere, onFocusedMetadataChanged: setFocusedTidMid, onQdChanged: (newQd) => { if (!deepCompare(qd, newQd))
115
+ : _jsx(TMSearchQueryEditor, { qd: qd, fromDTD: fromDTD, dcmtTypesList: dcmtTypesList, isOpenDistinctValuesPanel: isOpenDistinctValuesPanel, isExpertMode: isExpertMode, showAllMdWhere: showAllMdWhere, onFocusedMetadataChanged: setFocusedTidMid, onQdChanged: (newQd) => { if (!deepCompare(qd, newQd))
118
116
  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 ?
119
117
  _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}` }) }) :
120
118
  _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 &&
@@ -35,6 +35,7 @@ export declare function useQueryApplyForm<T>(d: Descriptors, formMode: FormModes
35
35
  applyData: () => void;
36
36
  };
37
37
  interface ITMQueryEditor extends ITMApplyFormProps<QueryDescriptor> {
38
+ isExpertMode?: boolean;
38
39
  validateSelect?: boolean;
39
40
  validateOrderBy?: boolean;
40
41
  showDistinct?: boolean;
@@ -3,7 +3,7 @@ import { useEffect, useState } from 'react';
3
3
  import { SDK_Localizator, AccessLevels, OnJoinItem, JoinTypes, PlatformObjectValidator, MetadataDataDomains, DcmtTypeListCacheService, JoinItem, MetadataDataTypes, OrderByItem, QueryFunctions, QueryOperators, ResultTypes, SelectItem, SDK_Globals, UserListCacheService, WhereItem, SearchEngine, SelectItemVisibilities, DataListCacheService, QueryValidatorOptions, TMPropertyNames, AppModules, LayoutModes } from '@topconsultnpm/sdk-ts-beta';
4
4
  import styled from 'styled-components';
5
5
  import Accordion, { Item } from 'devextreme-react/accordion';
6
- import { SDKUI_Localizator, IconSearch, IconCount, getQueryCountAsync, calcIsModified, IconClear, IconAddCircleOutline, IconDotsVerticalCircleOutline, IconHide, IconShow, IconDraggabledots, genUniqueId, LocalizeQueryOperators, LocalizeQueryFunctions, LocalizeQueryJoinTypes, IconArchiveDoc, IconArrowRight, svgToString } from '../../helper';
6
+ import { SDKUI_Localizator, IconSearch, IconCount, getQueryCountAsync, calcIsModified, IconClear, IconAddCircleOutline, IconDotsVerticalCircleOutline, IconHide, IconShow, IconDraggabledots, genUniqueId, LocalizeQueryOperators, LocalizeQueryFunctions, LocalizeQueryJoinTypes, IconArchiveDoc, IconArrowRight, svgToString, SDKUI_Globals } from '../../helper';
7
7
  import { displayMetadataValue, getDcmtTypesByQdAsync, getTIDsByQd, IsParametricQuery, prepareQdForSearchAsync } from '../../helper/queryHelper';
8
8
  import { useOutsideClick } from '../../hooks/useOutsideClick';
9
9
  import { FormModes, SearchResultContext } from '../../ts';
@@ -62,7 +62,7 @@ export function useQueryApplyForm(d, formMode, inputData, onApplied, parameters)
62
62
  const [validationItems, setValidationItems] = useState([]);
63
63
  return { formData, setFormData, formDataOrig, validationItems, setValidationItems, exception, applyData };
64
64
  }
65
- const TMQueryEditor = ({ formMode, inputData, onQDChanged, isModal, showDistinct = false, showToolbar = true, validateSelect = true, validateOrderBy = true, raiseWarningForOnlyMetadataDcmtTypes = false, onApplied, onClose, height = 'auto', borderRadius = '4px', searchText, showApply, showUndo, showBack, onFromTIDChanged }) => {
65
+ const TMQueryEditor = ({ formMode, inputData, onQDChanged, isExpertMode, showDistinct = false, showToolbar = true, validateSelect = true, validateOrderBy = true, raiseWarningForOnlyMetadataDcmtTypes = false, onApplied, onClose, height = 'auto', borderRadius = '4px', searchText, showApply, showUndo, showBack, onFromTIDChanged }) => {
66
66
  const [confirmQueryParams, ConfirmQueryParamsDialog] = useQueryParametersDialog();
67
67
  const { formData, setFormData, formDataOrig, validationItems, setValidationItems, exception, applyData } = useQueryApplyForm(Descriptors.Query, formMode, inputData, onApplied);
68
68
  const [dcmtTypesList, setDcmtTypesList] = useState([]);
@@ -73,6 +73,7 @@ const TMQueryEditor = ({ formMode, inputData, onQDChanged, isModal, showDistinct
73
73
  const [showCompleteMetadataName, setShowCompleteMetadataName] = useState(false);
74
74
  const [showResultSearch, setShowResultSearch] = useState(false);
75
75
  const [fromCount, setFromCount] = useState(0);
76
+ const [isExpertModeInternal, setIsExpertModeInternal] = useState(isExpertMode ?? SDKUI_Globals.userSettings.advancedSettings.expertMode === 1);
76
77
  useEffect(() => { setShowResultSearch(false); }, [JSON.stringify(inputData)]);
77
78
  useEffect(() => {
78
79
  if (!formData)
@@ -85,6 +86,25 @@ const TMQueryEditor = ({ formMode, inputData, onQDChanged, isModal, showDistinct
85
86
  //Se non c'è la toolbar significa che il qd deve essere gestito dall'esterno
86
87
  useEffect(() => { if (!showToolbar)
87
88
  onQDChanged?.(formData); }, [JSON.stringify(formData)]);
89
+ // Sync with global state when SDKUI_Globals.userSettings.advancedSettings.expertMode changes
90
+ useEffect(() => {
91
+ const handleExpertModeChange = (event) => {
92
+ if (isExpertMode === undefined) {
93
+ setIsExpertModeInternal(event.detail === 1); // Update internal state only if prop is not provided
94
+ }
95
+ };
96
+ // Listen for changes in expertMode
97
+ window.addEventListener('expertModeChanged', handleExpertModeChange);
98
+ return () => {
99
+ window.removeEventListener('expertModeChanged', handleExpertModeChange);
100
+ };
101
+ }, [isExpertMode]);
102
+ // Sync with prop changes
103
+ useEffect(() => {
104
+ if (isExpertMode !== undefined) {
105
+ setIsExpertModeInternal(isExpertMode);
106
+ }
107
+ }, [isExpertMode]);
88
108
  const validateQd = () => {
89
109
  let vil = [];
90
110
  let qvo = new QueryValidatorOptions();
@@ -99,6 +119,13 @@ const TMQueryEditor = ({ formMode, inputData, onQDChanged, isModal, showDistinct
99
119
  const whereCount = formData?.where?.length ?? 0;
100
120
  const orderByCount = formData?.orderBy?.length ?? 0;
101
121
  const qdTIDs = getTIDsByQd(formData);
122
+ const canShowSelect = (() => {
123
+ if (fromCount <= 0)
124
+ return false;
125
+ if (isReadOnly)
126
+ return (validateSelect && selectCount > 0);
127
+ return validateSelect || isExpertModeInternal;
128
+ })();
102
129
  // #region Join
103
130
  const onAdd_JoinItem = (index = -1) => {
104
131
  const joinCopy = formData?.join?.map((ji) => { return { ...ji }; }) ?? [];
@@ -712,7 +739,7 @@ const TMQueryEditor = ({ formMode, inputData, onQDChanged, isModal, showDistinct
712
739
  }
713
740
  ] }), _jsx(TMMetadataChooser, { disabled: isReadOnly, showEditButton: false, getColorIndex: getColorIndex, showCompleteMetadataName: showCompleteMetadataName, openEditorOnSummaryClick: true, showBorder: false, borderRadius: borderRadius, showId: showId, backgroundColor: getColorIndex({ tid: onItem.leftTID, alias: onItem.leftAlias }), qd: formData, values: onItem.leftTID ? [{ tid: onItem.leftTID, mid: onItem.leftMID, aliasTID: onItem.leftAlias }] : [], onValueChanged: (values) => { values.length > 0 && onChange_OnJoinMetadatoLeft(values[0], index, indexOn); } }), _jsx(TMQdDropDownMenu, { backgroundColor: colorOperator, color: 'green', borderRadius: borderRadius, content: _jsx(StyledItemWrapper, { children: LocalizeQueryOperators(onItem.operator) }), items: [] }), _jsx(TMMetadataChooser, { disabled: isReadOnly, showEditButton: false, getColorIndex: getColorIndex, showCompleteMetadataName: showCompleteMetadataName, openEditorOnSummaryClick: true, showBorder: false, borderRadius: borderRadius, showId: showId, backgroundColor: getColorIndex({ tid: onItem.rightTID, alias: onItem.rightAlias }), qd: formData, values: onItem.rightTID ? [{ tid: onItem.rightTID, mid: onItem.rightMID, aliasTID: onItem.rightAlias }] : [], onValueChanged: (values) => { values.length > 0 && onChange_OnJoinMetadatoRight(values[0], index, indexOn); } })] }, indexOn));
714
741
  })] }, `${ji.tid}_${index}`));
715
- }), _jsx(TMVilViewer, { vil: validationItems.filter((o) => o.PropertyName === TMPropertyNames.join) })] }) }) }), fromCount > 0 && (!isReadOnly || selectCount > 0) && validateSelect && _jsx(Item, { title: SDK_Localizator.QuerySelect, titleRender: (tabItemProps) => renderAccordionTitle(tabItemProps, selectCount, validationItems.filter((o) => o.PropertyName == TMPropertyNames.select)), children: _jsx(StyledAccordionItemContainer, { children: _jsxs(StyledAccordionItemContent, { "$disabled": isReadOnly, children: [_jsx(TMVilViewer, { vil: validationItems.filter((o) => o.PropertyName === TMPropertyNames.select) }), (!formData?.select || formData?.select.length <= 0) && !isReadOnly &&
742
+ }), _jsx(TMVilViewer, { vil: validationItems.filter((o) => o.PropertyName === TMPropertyNames.join) })] }) }) }), canShowSelect && _jsx(Item, { title: SDK_Localizator.QuerySelect, titleRender: (tabItemProps) => renderAccordionTitle(tabItemProps, selectCount, validationItems.filter((o) => o.PropertyName == TMPropertyNames.select)), children: _jsx(StyledAccordionItemContainer, { children: _jsxs(StyledAccordionItemContent, { "$disabled": isReadOnly, children: [_jsx(TMVilViewer, { vil: validationItems.filter((o) => o.PropertyName === TMPropertyNames.select) }), (!formData?.select || formData?.select.length <= 0) && !isReadOnly &&
716
743
  _jsxs(StyledRowItem, { children: [_jsx(TMButton, { btnStyle: 'normal', disabled: !formData?.from?.tid, caption: SDKUI_Localizator.Add, onClick: onAdd_SelectItem }), dcmtTypesList.length == 1
717
744
  ? _jsx(TMButton, { btnStyle: 'normal', disabled: !formData?.from?.tid, caption: SDKUI_Localizator.AddAlls, onClick: () => { onAddAll_SelectItem(qdTIDs[0]); } })
718
745
  : _jsx(TMQdDropDownMenu, { backgroundColor: 'white', borderRadius: '3px', content: _jsx(TMButton, { btnStyle: 'normal', disabled: !formData?.from?.tid, caption: SDKUI_Localizator.AddAlls }), items: qdTIDs.map((tid_alias) => ({ text: `${getDisplayAlias(getDcmtTypeName(tid_alias.tid), tid_alias.alias)}`, onClick: () => { onAddAll_SelectItem(tid_alias); } })) })] }), formData?.select?.map((si, index) => {
@@ -40,7 +40,12 @@ export declare class FullTextSettings {
40
40
  mruTerms: string[];
41
41
  }
42
42
  export declare class AdvancedSettings {
43
- expertMode: number;
43
+ private _expertMode;
44
+ get expertMode(): number;
45
+ set expertMode(value: number);
46
+ toJSON(): {
47
+ expertMode: number;
48
+ };
44
49
  }
45
50
  export declare class SDKUI_Globals {
46
51
  static userSettings: UserSettings;
@@ -84,7 +84,24 @@ export class FullTextSettings {
84
84
  }
85
85
  export class AdvancedSettings {
86
86
  constructor() {
87
- this.expertMode = 0;
87
+ this._expertMode = 0;
88
+ }
89
+ get expertMode() {
90
+ return this._expertMode;
91
+ }
92
+ set expertMode(value) {
93
+ if (this._expertMode !== value) {
94
+ this._expertMode = value;
95
+ // Emit a custom event when expertMode changes
96
+ const event = new CustomEvent('expertModeChanged', { detail: value });
97
+ window.dispatchEvent(event);
98
+ }
99
+ }
100
+ // Override toJSON to control serialization (called by JSON.stringify)
101
+ toJSON() {
102
+ return {
103
+ expertMode: this._expertMode, // Serialize only the public property
104
+ };
88
105
  }
89
106
  }
90
107
  export class SDKUI_Globals {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@topconsultnpm/sdkui-react-beta",
3
- "version": "6.12.136",
3
+ "version": "6.12.137",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "test": "echo \"Error: no test specified\" && exit 1",