@dexteel/mesf-core 7.1.0 → 7.2.0
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/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [7.2.0](https://github.com/dexteel/mesf-core-frontend/compare/@dexteel/mesf-core-v7.1.0...@dexteel/mesf-core-v7.2.0) (2025-11-05)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* **MESFModal:** Add subtitle prop to Modal for enhanced title display ([e64b4f2](https://github.com/dexteel/mesf-core-frontend/commit/e64b4f2a7833cc470e7e9cd5d2bc7c21bdd92905))
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* **Alert:** Import Alert for `mui/material` and use forwardRef for improved ref handling ([34868c8](https://github.com/dexteel/mesf-core-frontend/commit/34868c8e0b95d601aaabd60d35434695c64b2401))
|
|
14
|
+
* **Context Menu:** Change width of context menu to auto for better responsiveness ([287b20a](https://github.com/dexteel/mesf-core-frontend/commit/287b20ab377a03bbfd5668edbb9f3d97baff153a))
|
|
15
|
+
* **Trending:** Replace TextFields for DateTimePickers, Fix style of TagTree & Fix save of views ([0bfb906](https://github.com/dexteel/mesf-core-frontend/commit/0bfb9064ebcce0ee0336afc594743d344d78b09d))
|
|
16
|
+
|
|
3
17
|
## [7.1.0](https://github.com/dexteel/mesf-core-frontend/compare/@dexteel/mesf-core-v7.0.2...@dexteel/mesf-core-v7.1.0) (2025-10-31)
|
|
4
18
|
|
|
5
19
|
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import { DialogActionsProps, DialogContentProps } from "@mui/material";
|
|
2
|
+
import { DialogProps } from "@mui/material/Dialog";
|
|
2
3
|
import React, { ComponentType, ReactNode } from "react";
|
|
3
|
-
interface MESFModalProps {
|
|
4
|
+
interface MESFModalProps extends Omit<DialogProps, "onClose" | "open"> {
|
|
4
5
|
handleClose: (shouldUpdate?: boolean) => void;
|
|
5
6
|
open: boolean;
|
|
6
7
|
id?: string;
|
|
7
8
|
maxWidth?: "xs" | "sm" | "md" | "lg" | "xl" | false;
|
|
8
9
|
children: ReactNode;
|
|
9
10
|
title?: string;
|
|
11
|
+
subtitle?: string;
|
|
10
12
|
}
|
|
11
|
-
declare function Modal({ children, title, handleClose, open, id, maxWidth, }: MESFModalProps): React.JSX.Element;
|
|
13
|
+
declare function Modal({ children, title, subtitle, handleClose, open, id, maxWidth, }: MESFModalProps): React.JSX.Element;
|
|
12
14
|
export declare const MesfModal: typeof Modal & {
|
|
13
15
|
Content: ComponentType<DialogContentProps>;
|
|
14
16
|
Actions: ComponentType<DialogActionsProps>;
|
package/dist/controls/alert.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { type AlertProps } from "@mui/lab/Alert";
|
|
2
2
|
import React from "react";
|
|
3
|
-
export declare const Alert:
|
|
3
|
+
export declare const Alert: React.ForwardRefExoticComponent<Omit<AlertProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
package/dist/index.esm.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { HubConnectionBuilder, LogLevel } from '@microsoft/signalr';
|
|
2
2
|
export * from '@microsoft/signalr';
|
|
3
3
|
export { LicenseManager } from 'ag-grid-enterprise';
|
|
4
|
-
import { styled, DialogTitle as DialogTitle$1, DialogContent as DialogContent$1, DialogActions as DialogActions$1, Grid2, Button, alpha, Dialog as Dialog$1, TextField, Paper, List, ListItem, ListItemIcon, ListItemText, Box, Chip, SvgIcon, Typography as Typography$1, Checkbox, InputAdornment, IconButton as IconButton$1, MenuItem, Card, CardContent, CardActions, Collapse, createTheme, CircularProgress, Snackbar, FormControlLabel, Switch, InputLabel, Select, DialogContentText, useTheme, Popover, MenuList, FormControl, FormHelperText, Badge, Tooltip, Input, Divider, CssBaseline, AppBar, Toolbar, Container, Menu, Hidden, Drawer, useMediaQuery, ListSubheader, ListItemButton, Autocomplete as Autocomplete$1,
|
|
4
|
+
import { styled, DialogTitle as DialogTitle$1, DialogContent as DialogContent$1, DialogActions as DialogActions$1, Grid2, Button, alpha, Dialog as Dialog$1, TextField, Paper, List, ListItem, ListItemIcon, ListItemText, Box, Chip, SvgIcon, Typography as Typography$1, Checkbox, InputAdornment, IconButton as IconButton$1, MenuItem, Card, CardContent, CardActions, Collapse, createTheme, CircularProgress, Snackbar, FormControlLabel, Switch, InputLabel, Select, Alert as Alert$3, DialogContentText, useTheme, Popover, MenuList, FormControl, FormHelperText, Badge, Tooltip, Input, Divider, CssBaseline, AppBar, Toolbar, Container, Menu, Hidden, Drawer, useMediaQuery, ListSubheader, ListItemButton, Autocomplete as Autocomplete$1, TableContainer, Table, TableHead, TableRow, TableCell, TableBody, debounce, StyledEngineProvider, ThemeProvider, ListItemSecondaryAction } from '@mui/material';
|
|
5
5
|
import { useMutation, useQueryClient, useQuery, QueryClient, QueryClientProvider } from '@tanstack/react-query';
|
|
6
6
|
import * as React from 'react';
|
|
7
7
|
import React__default, { createContext, useContext, useState, useRef, useEffect, useMemo, Component, useCallback, lazy, Suspense } from 'react';
|
|
8
8
|
import CloseIcon from '@mui/icons-material/Close';
|
|
9
|
-
import Alert$
|
|
9
|
+
import Alert$4 from '@mui/lab/Alert';
|
|
10
10
|
import IconButton from '@mui/material/IconButton';
|
|
11
11
|
import GetAppIcon from '@mui/icons-material/GetApp';
|
|
12
12
|
import { ArrowRight, ArrowBackRounded, ArrowForwardRounded, SkipNext, ChevronLeft, ChevronRight, Cloud, Timeline, Send, Menu as Menu$1, People, Storage, Group, Assignment, Chat, ViewList, Build, Settings as Settings$2, FastRewind, FastForward, ZoomIn, Restore, Lock, Create, Delete, Folder, InsertChart, Search, PlaylistAdd, DragIndicator, Save, AttachFile, CloudUpload, GetApp } from '@mui/icons-material';
|
|
@@ -47,6 +47,7 @@ import MenuIcon from '@mui/icons-material/Menu';
|
|
|
47
47
|
import Settings$1 from '@mui/icons-material/Settings';
|
|
48
48
|
import ShowChartIcon from '@mui/icons-material/ShowChart';
|
|
49
49
|
import axios from 'axios';
|
|
50
|
+
import { LocalizationProvider as LocalizationProvider$1 } from '@mui/x-date-pickers/LocalizationProvider';
|
|
50
51
|
import { DataGrid, GridOverlay } from '@mui/x-data-grid';
|
|
51
52
|
import { isAncestor, Tree, DndProvider as DndProvider$1 } from '@minoru/react-dnd-treeview';
|
|
52
53
|
import FolderIcon from '@mui/icons-material/Folder';
|
|
@@ -230,9 +231,11 @@ var DialogActions = styled(DialogActions$1)(function (_a) {
|
|
|
230
231
|
});
|
|
231
232
|
});
|
|
232
233
|
function Modal(_a) {
|
|
233
|
-
var children = _a.children, title = _a.title, handleClose = _a.handleClose, open = _a.open, _b = _a.id, id = _b === void 0 ? "mesf-modal" : _b, _c = _a.maxWidth, maxWidth = _c === void 0 ? "lg" : _c;
|
|
234
|
+
var children = _a.children, title = _a.title, subtitle = _a.subtitle, handleClose = _a.handleClose, open = _a.open, _b = _a.id, id = _b === void 0 ? "mesf-modal" : _b, _c = _a.maxWidth, maxWidth = _c === void 0 ? "lg" : _c;
|
|
234
235
|
return (React__default.createElement(Dialog, { onClose: function () { return handleClose(); }, "aria-labelledby": id, open: open, maxWidth: maxWidth, style: { minWidth: 320 } },
|
|
235
|
-
React__default.createElement(DialogTitle, { id: id, onClose: function () { return handleClose(); } },
|
|
236
|
+
React__default.createElement(DialogTitle, { id: id, onClose: function () { return handleClose(); } },
|
|
237
|
+
title,
|
|
238
|
+
subtitle ? (React__default.createElement(Typography, { variant: "caption", color: "text.secondary", display: "block" }, subtitle)) : null),
|
|
236
239
|
children));
|
|
237
240
|
}
|
|
238
241
|
var MesfModal = Object.assign(Modal, {
|
|
@@ -2633,9 +2636,9 @@ var LogsPage = function (props) {
|
|
|
2633
2636
|
return React.createElement(Logs, null);
|
|
2634
2637
|
};
|
|
2635
2638
|
|
|
2636
|
-
var Alert = function (props) {
|
|
2637
|
-
return React__default.createElement(Alert$3, __assign({ elevation: 6, variant: "filled" }, props));
|
|
2638
|
-
};
|
|
2639
|
+
var Alert = React__default.forwardRef(function Alert(props, ref) {
|
|
2640
|
+
return React__default.createElement(Alert$3, __assign({ elevation: 6, variant: "filled", ref: ref }, props));
|
|
2641
|
+
});
|
|
2639
2642
|
|
|
2640
2643
|
var INITIAL_VALUES$3 = {
|
|
2641
2644
|
ProfileId: null,
|
|
@@ -4872,7 +4875,6 @@ var AssetSearchInput = function (_a) {
|
|
|
4872
4875
|
};
|
|
4873
4876
|
|
|
4874
4877
|
var buildTreeAssets$1 = function (nodes) {
|
|
4875
|
-
debugger;
|
|
4876
4878
|
//tree build functions
|
|
4877
4879
|
var idMapping = nodes.reduce(function (acc, el, i) {
|
|
4878
4880
|
// console.log(acc)
|
|
@@ -5058,7 +5060,7 @@ var CreateNewAssetDialog = function (_a) {
|
|
|
5058
5060
|
React__default.createElement(Button, { fullWidth: true, startIcon: isSubmitLoading && React__default.createElement(CircularProgress, { size: "1rem" }), disabled: isSubmitLoading, variant: "contained", color: "primary", type: "submit" }, "Save")))))))),
|
|
5059
5061
|
React__default.createElement(ErrorModal, { error: error, onHide: function () { return setError(""); } }),
|
|
5060
5062
|
React__default.createElement(Snackbar, { open: assetCreatedSuccess, autoHideDuration: 2500, onClose: handleClose },
|
|
5061
|
-
React__default.createElement(Alert$
|
|
5063
|
+
React__default.createElement(Alert$4, { severity: "info", onClose: handleClose }, "Document created successfully"))));
|
|
5062
5064
|
};
|
|
5063
5065
|
|
|
5064
5066
|
var EditAssetDialog = function (_a) {
|
|
@@ -5250,7 +5252,7 @@ var RemoveAssetDialog = function (_a) {
|
|
|
5250
5252
|
React__default.createElement(Button, { autoFocus: true, color: "secondary", startIcon: isSubmitLoading && React__default.createElement(CircularProgress, { size: "1rem" }), onClick: handleRemoveAsset }, "Delete"))),
|
|
5251
5253
|
React__default.createElement(ErrorModal, { error: error, onHide: function () { return setError(""); } }),
|
|
5252
5254
|
React__default.createElement(Snackbar, { open: assetRemovedSuccess, autoHideDuration: 2500, onClose: handleClose },
|
|
5253
|
-
React__default.createElement(Alert$
|
|
5255
|
+
React__default.createElement(Alert$4, { severity: "info", onClose: handleClose }, "Asset removed succesfully"))));
|
|
5254
5256
|
};
|
|
5255
5257
|
|
|
5256
5258
|
var ViewerAssetDialog = function (_a) {
|
|
@@ -7490,7 +7492,7 @@ var ContextMenu$1 = function () {
|
|
|
7490
7492
|
backgroundColor: "#fff",
|
|
7491
7493
|
borderRadius: "2px",
|
|
7492
7494
|
padding: "5px 0",
|
|
7493
|
-
width: "
|
|
7495
|
+
width: "auto",
|
|
7494
7496
|
height: "auto",
|
|
7495
7497
|
margin: "0",
|
|
7496
7498
|
zIndex: 1,
|
|
@@ -9143,7 +9145,7 @@ function ChangePassword(props) {
|
|
|
9143
9145
|
React__default.createElement(DialogTitle$1, { id: "confirmation-dialog-title" }, "Change Password"),
|
|
9144
9146
|
React__default.createElement(DialogContent$1, { dividers: true },
|
|
9145
9147
|
React__default.createElement(Collapse, { in: showError },
|
|
9146
|
-
React__default.createElement(Alert$
|
|
9148
|
+
React__default.createElement(Alert$4, { severity: "error", action: React__default.createElement(IconButton, { "aria-label": "close", color: "inherit", size: "small", onClick: function () {
|
|
9147
9149
|
setShowError(false);
|
|
9148
9150
|
setError(undefined);
|
|
9149
9151
|
} },
|
|
@@ -11908,7 +11910,7 @@ var SaveUpdateDeleteViewModalV2 = function (_a) {
|
|
|
11908
11910
|
: "Save")))))),
|
|
11909
11911
|
React__default.createElement(ConfirmationDialogRaw, { title: "Confirmation", message: "Are you sure you want to delete permanently the view: ".concat((_d = (view || viewSelected)) === null || _d === void 0 ? void 0 : _d.ViewName, "?"), open: openDeleteDialog, onClose: deleteViewAction }),
|
|
11910
11912
|
React__default.createElement(Snackbar, { open: snackbarOpen, autoHideDuration: 2500, onClose: handleSnackbarClose },
|
|
11911
|
-
React__default.createElement(Alert$
|
|
11913
|
+
React__default.createElement(Alert$4, { elevation: 6, variant: "filled", severity: "success", onClose: handleSnackbarClose }, snackbarMessage)),
|
|
11912
11914
|
React__default.createElement(ErrorModal, { error: error, onHide: function () { return setError(""); } })));
|
|
11913
11915
|
};
|
|
11914
11916
|
|
|
@@ -12119,13 +12121,18 @@ var HeaderSectionV2 = React__default.memo(function (_a) {
|
|
|
12119
12121
|
React__default.createElement(IconButton$1, { onClick: function () { return handlePartialDateNavigator("subtract"); }, size: "small" },
|
|
12120
12122
|
React__default.createElement(FastRewind, { fontSize: "medium", sx: { color: "black" } })))),
|
|
12121
12123
|
React__default.createElement(Grid2, { size: { md: 3.5 } },
|
|
12122
|
-
React__default.createElement(
|
|
12123
|
-
|
|
12124
|
-
|
|
12125
|
-
|
|
12126
|
-
|
|
12127
|
-
|
|
12128
|
-
|
|
12124
|
+
React__default.createElement(LocalizationProvider$1, { dateAdapter: AdapterMoment },
|
|
12125
|
+
React__default.createElement(DateTimePicker, { label: "Start", format: "MM/DD/YYYY HH:mm:ss", value: moment$8(timeScopeStart), onChange: function (newValue) {
|
|
12126
|
+
if (newValue) {
|
|
12127
|
+
handleDateChange(newValue.toDate(), "start");
|
|
12128
|
+
}
|
|
12129
|
+
}, minutesStep: 1, slotProps: {
|
|
12130
|
+
textField: {
|
|
12131
|
+
size: "small",
|
|
12132
|
+
variant: "outlined",
|
|
12133
|
+
fullWidth: true,
|
|
12134
|
+
},
|
|
12135
|
+
} }))),
|
|
12129
12136
|
React__default.createElement(Grid2, { size: { md: 2 }, marginTop: 0.5 },
|
|
12130
12137
|
React__default.createElement(FormControl, { variant: "outlined", fullWidth: true, size: "small" },
|
|
12131
12138
|
React__default.createElement(Select, { value: scope, onChange: function (e) {
|
|
@@ -12139,14 +12146,18 @@ var HeaderSectionV2 = React__default.memo(function (_a) {
|
|
|
12139
12146
|
React__default.createElement(MenuItem, { value: "10 days" }, "10 days"),
|
|
12140
12147
|
React__default.createElement(MenuItem, { value: "custom" }, "Custom")))),
|
|
12141
12148
|
React__default.createElement(Grid2, { size: { md: 3.5 } },
|
|
12142
|
-
React__default.createElement(
|
|
12143
|
-
|
|
12144
|
-
|
|
12145
|
-
|
|
12146
|
-
|
|
12147
|
-
|
|
12148
|
-
|
|
12149
|
-
|
|
12149
|
+
React__default.createElement(LocalizationProvider$1, { dateAdapter: AdapterMoment },
|
|
12150
|
+
React__default.createElement(DateTimePicker, { label: "End", format: "MM/DD/YYYY HH:mm:ss", value: autoRefresh ? null : moment$8(timeScopeEnd), onChange: function (newValue) {
|
|
12151
|
+
if (newValue) {
|
|
12152
|
+
handleDateChange(newValue.toDate(), "end");
|
|
12153
|
+
}
|
|
12154
|
+
}, minutesStep: 1, slotProps: {
|
|
12155
|
+
textField: {
|
|
12156
|
+
size: "small",
|
|
12157
|
+
variant: "outlined",
|
|
12158
|
+
fullWidth: true,
|
|
12159
|
+
},
|
|
12160
|
+
}, disabled: autoRefresh }))),
|
|
12150
12161
|
React__default.createElement(Grid2, null,
|
|
12151
12162
|
React__default.createElement(Tooltip, { title: "Navigate forward 20%", arrow: true },
|
|
12152
12163
|
React__default.createElement(IconButton$1, { onClick: function () { return handlePartialDateNavigator("add"); }, size: "small" },
|
|
@@ -12235,7 +12246,9 @@ var HeaderSectionV2 = React__default.memo(function (_a) {
|
|
|
12235
12246
|
backgroundColor: "white",
|
|
12236
12247
|
width: "100%",
|
|
12237
12248
|
} },
|
|
12238
|
-
React__default.createElement(Autocomplete$1, { size: "small", id: "view-selector", options: views, getOptionLabel: function (option) { return option.ViewName; }, value: viewSelected,
|
|
12249
|
+
React__default.createElement(Autocomplete$1, { size: "small", id: "view-selector", options: views, getOptionLabel: function (option) { return option.ViewName; }, value: viewSelected, isOptionEqualToValue: function (option, value) {
|
|
12250
|
+
return option.ViewId === (value === null || value === void 0 ? void 0 : value.ViewId);
|
|
12251
|
+
}, onChange: handleViewChange, noOptionsText: "No views available", renderOption: function (props, option) { return (React__default.createElement(Box, __assign({}, props, { component: "li", style: {
|
|
12239
12252
|
display: "flex",
|
|
12240
12253
|
justifyContent: "space-between",
|
|
12241
12254
|
width: "100%",
|
|
@@ -12588,11 +12601,8 @@ var TagFolderCustomNodeV2 = function (_a) {
|
|
|
12588
12601
|
};
|
|
12589
12602
|
}, []);
|
|
12590
12603
|
return (React__default.createElement(Box, { onClick: onClickHandler, sx: {
|
|
12591
|
-
|
|
12604
|
+
paddingInlineStart: depth * 2,
|
|
12592
12605
|
cursor: "pointer",
|
|
12593
|
-
listStyleType: "none",
|
|
12594
|
-
margin: 0,
|
|
12595
|
-
padding: 0,
|
|
12596
12606
|
alignItems: "center",
|
|
12597
12607
|
display: "flex",
|
|
12598
12608
|
height: "32px",
|
|
@@ -12615,7 +12625,6 @@ var TagFolderCustomNodeV2 = function (_a) {
|
|
|
12615
12625
|
alignItems: "center",
|
|
12616
12626
|
fontSize: "10px",
|
|
12617
12627
|
fontWeight: "bold",
|
|
12618
|
-
margin: "0 5px",
|
|
12619
12628
|
borderRadius: "3px",
|
|
12620
12629
|
border: "1px solid rgba(0, 0, 0, 0.2)",
|
|
12621
12630
|
backgroundColor: ((_f = node.data) === null || _f === void 0 ? void 0 : _f.TagTypeCode) === "A" ? "#AD48C4" : "#C46F48",
|
|
@@ -13511,7 +13520,7 @@ var TagsTableV2 = function () {
|
|
|
13511
13520
|
key: "saveView",
|
|
13512
13521
|
name: "Save View",
|
|
13513
13522
|
onClick: function () {
|
|
13514
|
-
|
|
13523
|
+
handleSaveViewRef.current();
|
|
13515
13524
|
},
|
|
13516
13525
|
},
|
|
13517
13526
|
{
|
|
@@ -13652,12 +13661,16 @@ var TagsTableV2 = function () {
|
|
|
13652
13661
|
// This prevents closure issues with the context menu registration
|
|
13653
13662
|
var viewTagsRef = React__default.useRef(viewTags);
|
|
13654
13663
|
var handleDeleteTagRef = React__default.useRef(handleDeleteTag);
|
|
13655
|
-
React__default.
|
|
13664
|
+
var handleSaveViewRef = React__default.useRef(handleSaveView);
|
|
13665
|
+
useEffect(function () {
|
|
13656
13666
|
viewTagsRef.current = viewTags;
|
|
13657
13667
|
}, [viewTags]);
|
|
13658
|
-
|
|
13668
|
+
useEffect(function () {
|
|
13659
13669
|
handleDeleteTagRef.current = handleDeleteTag;
|
|
13660
13670
|
}, [handleDeleteTag]);
|
|
13671
|
+
useEffect(function () {
|
|
13672
|
+
handleSaveViewRef.current = handleSaveView;
|
|
13673
|
+
}, [handleSaveView, viewSelected]);
|
|
13661
13674
|
var handleColorChange = useCallback(function (tagId, newColor) {
|
|
13662
13675
|
var _a;
|
|
13663
13676
|
var currentViewTags = viewTagsRef.current;
|
|
@@ -14043,7 +14056,7 @@ var TagsTableV2 = function () {
|
|
|
14043
14056
|
React__default.createElement(LoadViewModalV2, { open: loadViewOpen, handleClose: function () { return setLoadViewOpen(false); } }),
|
|
14044
14057
|
React__default.createElement(ErrorModal, { error: error, onHide: function () { return setError(""); } }),
|
|
14045
14058
|
React__default.createElement(Snackbar, { open: !!snackbarMessage, autoHideDuration: 3000, onClose: handleCloseSnackbar, anchorOrigin: { vertical: "bottom", horizontal: "center" } },
|
|
14046
|
-
React__default.createElement(Alert$
|
|
14059
|
+
React__default.createElement(Alert$3, { onClose: handleCloseSnackbar, severity: "success" }, snackbarMessage))));
|
|
14047
14060
|
};
|
|
14048
14061
|
|
|
14049
14062
|
/**
|
|
@@ -19173,7 +19186,7 @@ var NotificationSnackBar = function (_a) {
|
|
|
19173
19186
|
setOpen(!!message);
|
|
19174
19187
|
}, [message]);
|
|
19175
19188
|
return (React__default.createElement(Snackbar, { open: open, autoHideDuration: 2500, onClose: handleClose },
|
|
19176
|
-
React__default.createElement(Alert$
|
|
19189
|
+
React__default.createElement(Alert$4, { elevation: 6, variant: "filled", severity: severity, onClose: handleClose }, message)));
|
|
19177
19190
|
};
|
|
19178
19191
|
|
|
19179
19192
|
var useEntrySubmission = function (_a) {
|