@topconsultnpm/sdkui-react-beta 6.13.30 → 6.13.31

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