@topconsultnpm/sdkui-react-beta 6.12.136 → 6.12.138
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/components/editors/TMMetadataValues.d.ts +1 -1
- package/lib/components/editors/TMMetadataValues.js +3 -3
- package/lib/components/features/documents/TMBatchUpdateForm.d.ts +1 -0
- package/lib/components/features/documents/TMBatchUpdateForm.js +3 -5
- package/lib/components/features/documents/TMDcmtForm.d.ts +1 -0
- package/lib/components/features/documents/TMDcmtForm.js +3 -5
- package/lib/components/features/search/TMSearch.d.ts +1 -0
- package/lib/components/features/search/TMSearch.js +2 -2
- package/lib/components/features/search/TMSearchQueryEditor.d.ts +1 -1
- package/lib/components/features/search/TMSearchQueryEditor.js +3 -3
- package/lib/components/features/search/TMSearchQueryPanel.d.ts +1 -0
- package/lib/components/features/search/TMSearchQueryPanel.js +3 -5
- package/lib/components/query/TMQueryEditor.d.ts +1 -0
- package/lib/components/query/TMQueryEditor.js +30 -3
- package/lib/helper/SDKUI_Globals.d.ts +6 -1
- package/lib/helper/SDKUI_Globals.js +18 -1
- package/package.json +2 -2
@@ -23,7 +23,7 @@ interface ITMMetadataValuesProps extends DeviceContextProps {
|
|
23
23
|
metadataValues: MetadataValueDescriptorEx[];
|
24
24
|
metadataValuesOrig?: MetadataValueDescriptorEx[];
|
25
25
|
customMenuItems?: any[];
|
26
|
-
|
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,
|
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
|
-
} }) }),
|
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,
|
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,
|
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;
|
@@ -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,
|
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,
|
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;
|
@@ -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
|
-
|
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,
|
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, {})] }),
|
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,
|
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,
|
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,
|
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) })] }) }) }),
|
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
|
-
|
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.
|
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.
|
3
|
+
"version": "6.12.138",
|
4
4
|
"description": "",
|
5
5
|
"scripts": {
|
6
6
|
"test": "echo \"Error: no test specified\" && exit 1",
|
@@ -42,7 +42,7 @@
|
|
42
42
|
"lib"
|
43
43
|
],
|
44
44
|
"dependencies": {
|
45
|
-
"@topconsultnpm/sdk-ts-beta": "6.12.
|
45
|
+
"@topconsultnpm/sdk-ts-beta": "^6.12.15",
|
46
46
|
"buffer": "^6.0.3",
|
47
47
|
"devextreme": "24.2.6",
|
48
48
|
"devextreme-react": "24.2.6",
|