@dexteel/mesf-core 4.28.0 → 4.29.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,3 +1,21 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## [4.29.0](https://github.com/dexteel/mesf-core-frontend/compare/@dexteel/mesf-core-v4.28.0...@dexteel/mesf-core-v4.29.0) (2025-05-08)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* **account-page:** Refactor account page, using MaterialUI ([#384](https://github.com/dexteel/mesf-core-frontend/issues/384)) ([16e00f5](https://github.com/dexteel/mesf-core-frontend/commit/16e00f5a73087e1df80b60721b51c1232a427f38))
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* **devops:** Remove tsc package in favor of typescript cli ([4b5f7bc](https://github.com/dexteel/mesf-core-frontend/commit/4b5f7bceaecbd1d57408f3e24034e6967a2a8727))
|
|
14
|
+
|
|
15
|
+
## [4.28.0] - 2025-04-16
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
1
19
|
# Changelog
|
|
2
20
|
|
|
3
21
|
## [4.28.0](https://github.com/dexteel/mesf-core-frontend/compare/@dexteel/mesf-core-v4.27.0...@dexteel/mesf-core-v4.28.0) (2025-04-16)
|
package/dist/index.esm.js
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
export { LicenseManager } from 'ag-grid-enterprise';
|
|
2
2
|
import { withStyles, DialogTitle as DialogTitle$1, DialogContent as DialogContent$1, DialogActions as DialogActions$1, createStyles, Grid, Button, alpha, makeStyles, Dialog as Dialog$1, SvgIcon, Collapse, Typography as Typography$1, Checkbox, TextField, InputAdornment, IconButton as IconButton$1, MenuItem, Card, CardContent, CardActions, CircularProgress, Snackbar, FormControlLabel, Switch, Paper, InputLabel, Select, FormHelperText, DialogContentText, Badge, useTheme, FormControl, Input, Chip, Tooltip, ListItemIcon, Box, List, ListItem, ListItemText, MenuList, Divider, debounce } from '@material-ui/core';
|
|
3
|
+
import LockIcon from '@material-ui/icons/Lock';
|
|
4
|
+
import 'ag-grid-community/styles/ag-grid.css';
|
|
5
|
+
import 'ag-grid-community/styles/ag-theme-material.css';
|
|
6
|
+
import { AgGridReact } from 'ag-grid-react';
|
|
3
7
|
import { isNil, get, isEmpty, values, round, isNaN, isNumber } from 'lodash-es';
|
|
4
8
|
import * as React from 'react';
|
|
5
9
|
import React__default, { useState, useRef, useEffect, useMemo, Component, createContext, useContext, useCallback, lazy, Suspense } from 'react';
|
|
@@ -15,7 +19,6 @@ import { useComplexState } from 'use-complex-state';
|
|
|
15
19
|
import { createSlice } from '@reduxjs/toolkit';
|
|
16
20
|
import { DndProvider } from 'react-dnd';
|
|
17
21
|
import { HTML5Backend } from 'react-dnd-html5-backend';
|
|
18
|
-
import { AgGridReact } from 'ag-grid-react';
|
|
19
22
|
import MomentUtils from '@date-io/moment';
|
|
20
23
|
import { MuiPickersUtilsProvider, KeyboardDatePicker, KeyboardTimePicker } from '@material-ui/pickers';
|
|
21
24
|
import moment$7 from 'moment';
|
|
@@ -33,7 +36,6 @@ import FormatListBulletedSharpIcon from '@material-ui/icons/FormatListBulletedSh
|
|
|
33
36
|
import axios from 'axios';
|
|
34
37
|
import { _adapters, Chart, CategoryScale, LinearScale, PointElement, LineElement, Title, Tooltip as Tooltip$1, Legend, TimeScale } from 'chart.js';
|
|
35
38
|
import zoomPlugin from 'chartjs-plugin-zoom';
|
|
36
|
-
import LockIcon from '@material-ui/icons/Lock';
|
|
37
39
|
import SaveIcon from '@material-ui/icons/Save';
|
|
38
40
|
import Button$1 from '@material-ui/core/Button';
|
|
39
41
|
import Popover from '@material-ui/core/Popover';
|
|
@@ -62,7 +64,6 @@ import { useSpring, animated } from '@react-spring/web';
|
|
|
62
64
|
import { DataGrid, GridOverlay } from '@material-ui/data-grid';
|
|
63
65
|
import { format, fromZonedTime, formatInTimeZone } from 'date-fns-tz';
|
|
64
66
|
import { findIana } from 'windows-iana';
|
|
65
|
-
import 'ag-grid-community/styles/ag-grid.css';
|
|
66
67
|
import RefreshIcon from '@material-ui/icons/Refresh';
|
|
67
68
|
import ReplayIcon from '@material-ui/icons/Replay';
|
|
68
69
|
import ToggleOfIcon from '@material-ui/icons/ToggleOff';
|
|
@@ -8854,8 +8855,7 @@ function ChangePassword(props) {
|
|
|
8854
8855
|
var _a = React__default.useState(""), password = _a[0], setPassword = _a[1];
|
|
8855
8856
|
var _b = React__default.useState(""), confirmPassword = _b[0], setConfirmPassword = _b[1];
|
|
8856
8857
|
var _c = React__default.useState(false), canChange = _c[0], setCanChange = _c[1];
|
|
8857
|
-
var _d = React__default.useState(
|
|
8858
|
-
var _e = React__default.useState(undefined), error = _e[0], setError = _e[1];
|
|
8858
|
+
var _d = React__default.useState(""), error = _d[0], setError = _d[1];
|
|
8859
8859
|
//functions
|
|
8860
8860
|
var handleCancel = function () {
|
|
8861
8861
|
onClose(false);
|
|
@@ -8865,7 +8865,6 @@ function ChangePassword(props) {
|
|
|
8865
8865
|
var apiService_1 = new MESApiService();
|
|
8866
8866
|
apiService_1.changePassword(userId, password).then(function (response) {
|
|
8867
8867
|
if (apiService_1.hasErrors) {
|
|
8868
|
-
setShowError(true);
|
|
8869
8868
|
setError(apiService_1.error);
|
|
8870
8869
|
}
|
|
8871
8870
|
else {
|
|
@@ -8885,30 +8884,19 @@ function ChangePassword(props) {
|
|
|
8885
8884
|
setPassword("");
|
|
8886
8885
|
setConfirmPassword("");
|
|
8887
8886
|
}, [userId, open]);
|
|
8888
|
-
return (React__default.createElement(
|
|
8889
|
-
React__default.createElement(
|
|
8890
|
-
|
|
8891
|
-
React__default.createElement(
|
|
8892
|
-
|
|
8893
|
-
|
|
8894
|
-
|
|
8895
|
-
|
|
8896
|
-
|
|
8897
|
-
|
|
8898
|
-
|
|
8899
|
-
|
|
8900
|
-
|
|
8901
|
-
? error.internalError
|
|
8902
|
-
: error.internalError.message)),
|
|
8903
|
-
React__default.createElement("div", { className: "row" },
|
|
8904
|
-
React__default.createElement("div", { className: "col-md-12 px-3 py-1" },
|
|
8905
|
-
React__default.createElement(SimplePasswordControl, { title: "Password", styleLabel: { minWidth: "150px" }, onChange: setPassword, name: "password", value: password }))),
|
|
8906
|
-
React__default.createElement("div", { className: "row" },
|
|
8907
|
-
React__default.createElement("div", { className: "col-md-12 px-3 py-1" },
|
|
8908
|
-
React__default.createElement(SimplePasswordControl, { title: "Confirm Password", styleLabel: { minWidth: "150px" }, onChange: setConfirmPassword, name: "confirmPassword", value: confirmPassword })))),
|
|
8909
|
-
React__default.createElement(DialogActions$1, null,
|
|
8910
|
-
React__default.createElement(Button, { autoFocus: true, onClick: handleCancel, color: "primary" }, "Cancel"),
|
|
8911
|
-
React__default.createElement(Button, { onClick: handleOk, color: "primary", disabled: !canChange }, "Change Password"))));
|
|
8887
|
+
return (React__default.createElement(React__default.Fragment, null,
|
|
8888
|
+
React__default.createElement(Dialog$1, { onClose: function () { }, "aria-label": "Change Password", maxWidth: "xs", "aria-labelledby": "confirmation-dialog-title", open: open },
|
|
8889
|
+
React__default.createElement(DialogTitle$1, { id: "confirmation-dialog-title" }, "Change Password"),
|
|
8890
|
+
React__default.createElement(DialogContent$1, { dividers: true },
|
|
8891
|
+
React__default.createElement(Grid, { container: true, spacing: 2 },
|
|
8892
|
+
React__default.createElement(Grid, { item: true, md: 12 },
|
|
8893
|
+
React__default.createElement(TextField, { "aria-readonly": true, label: "Password", value: password, onChange: function (e) { return setPassword(e.target.value); }, variant: "outlined", size: "small", fullWidth: true, style: { minWidth: "150px" } })),
|
|
8894
|
+
React__default.createElement(Grid, { item: true, md: 12 },
|
|
8895
|
+
React__default.createElement(TextField, { "aria-readonly": true, label: "Confirm Password", value: confirmPassword, onChange: function (e) { return setConfirmPassword(e.target.value); }, variant: "outlined", size: "small", fullWidth: true, style: { minWidth: "150px" } })))),
|
|
8896
|
+
React__default.createElement(DialogActions$1, null,
|
|
8897
|
+
React__default.createElement(Button, { autoFocus: true, onClick: handleCancel, color: "primary" }, "Cancel"),
|
|
8898
|
+
React__default.createElement(Button, { onClick: handleOk, color: "primary", variant: "contained", disabled: !canChange }, "Change Password"))),
|
|
8899
|
+
React__default.createElement(ErrorModal, { error: error, onHide: function () { return setError(""); } })));
|
|
8912
8900
|
}
|
|
8913
8901
|
|
|
8914
8902
|
var UserInitialState = {
|
|
@@ -8983,9 +8971,7 @@ function useToken() {
|
|
|
8983
8971
|
var getUserName = function () {
|
|
8984
8972
|
var sessionData = localStorage.getItem("userMESData");
|
|
8985
8973
|
var userData = JSON.parse(sessionData);
|
|
8986
|
-
return (
|
|
8987
|
-
", " +
|
|
8988
|
-
((userData || {}).firstName || ""));
|
|
8974
|
+
return (userData || {}).username || "";
|
|
8989
8975
|
};
|
|
8990
8976
|
var getFirstName = function () {
|
|
8991
8977
|
var sessionData = localStorage.getItem("userMESData");
|
|
@@ -9033,12 +9019,15 @@ var Account = function () {
|
|
|
9033
9019
|
var _e = useState(""), userName = _e[0], setUserName = _e[1];
|
|
9034
9020
|
var _f = useState(false), userIsDomain = _f[0], setUserIsDomain = _f[1];
|
|
9035
9021
|
var _g = useState(false), userIsActive = _g[0], setUserIsActive = _g[1];
|
|
9036
|
-
var _h = useState(
|
|
9037
|
-
var _j = useState(
|
|
9038
|
-
var _k = useState(""),
|
|
9039
|
-
var _l = useState(
|
|
9040
|
-
var _m = useState(
|
|
9041
|
-
var _o = useState(
|
|
9022
|
+
var _h = useState(false), open = _h[0], setOpen = _h[1];
|
|
9023
|
+
var _j = useState(false), showSuccess = _j[0], setShowSuccess = _j[1];
|
|
9024
|
+
var _k = useState(""), successMessage = _k[0], setSuccessMessage = _k[1];
|
|
9025
|
+
var _l = useState([]), userProfiles = _l[0], setUserProfiles = _l[1];
|
|
9026
|
+
var _m = useState(""), profileQuickFilter = _m[0], setProfileQuickFilter = _m[1];
|
|
9027
|
+
var _o = useState(null), profileGridApi = _o[0], setProfileGridApi = _o[1];
|
|
9028
|
+
var _p = useState([]), userPermissions = _p[0], setUserPermissions = _p[1];
|
|
9029
|
+
var _q = useState(""), permissionQuickFilter = _q[0], setPermissionQuickFilter = _q[1];
|
|
9030
|
+
var _r = useState(null), permissionGridApi = _r[0], setPermissionGridApi = _r[1];
|
|
9042
9031
|
var changePassword = function () {
|
|
9043
9032
|
setOpen(true);
|
|
9044
9033
|
};
|
|
@@ -9049,19 +9038,30 @@ var Account = function () {
|
|
|
9049
9038
|
}
|
|
9050
9039
|
setOpen(false);
|
|
9051
9040
|
};
|
|
9052
|
-
var
|
|
9053
|
-
|
|
9054
|
-
|
|
9055
|
-
|
|
9056
|
-
|
|
9041
|
+
var profilesColumnDefs = [
|
|
9042
|
+
{
|
|
9043
|
+
field: "profile",
|
|
9044
|
+
headerName: "",
|
|
9045
|
+
minWidth: 20,
|
|
9046
|
+
flex: 1
|
|
9047
|
+
},
|
|
9048
|
+
];
|
|
9049
|
+
var permissionColumnDefs = [
|
|
9050
|
+
{
|
|
9051
|
+
field: "permission",
|
|
9052
|
+
headerName: "",
|
|
9053
|
+
minWidth: 20,
|
|
9054
|
+
flex: 1
|
|
9055
|
+
},
|
|
9056
|
+
];
|
|
9057
9057
|
var loadUserData = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
9058
|
-
var resp, userData;
|
|
9059
|
-
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
9060
|
-
return __generator(this, function (
|
|
9061
|
-
switch (
|
|
9058
|
+
var resp, userData, profiles, permissions;
|
|
9059
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
9060
|
+
return __generator(this, function (_k) {
|
|
9061
|
+
switch (_k.label) {
|
|
9062
9062
|
case 0: return [4 /*yield*/, getUser(userId, userParam)];
|
|
9063
9063
|
case 1:
|
|
9064
|
-
resp =
|
|
9064
|
+
resp = _k.sent();
|
|
9065
9065
|
if (resp.ok) {
|
|
9066
9066
|
userData = get(resp, "data.tables[0].rows", null);
|
|
9067
9067
|
setUserName((_a = userData[0]) === null || _a === void 0 ? void 0 : _a.UserName);
|
|
@@ -9069,9 +9069,18 @@ var Account = function () {
|
|
|
9069
9069
|
setUserFirstName((_c = userData[0]) === null || _c === void 0 ? void 0 : _c.FirstName);
|
|
9070
9070
|
setUserIsDomain((_d = userData[0]) === null || _d === void 0 ? void 0 : _d.AuthTypeId);
|
|
9071
9071
|
setUserIsActive((_e = userData[0]) === null || _e === void 0 ? void 0 : _e.IsActive);
|
|
9072
|
-
|
|
9073
|
-
|
|
9074
|
-
|
|
9072
|
+
profiles = ((_f = userData[0]) === null || _f === void 0 ? void 0 : _f.Profiles)
|
|
9073
|
+
? (_g = userData[0]) === null || _g === void 0 ? void 0 : _g.Profiles.split(",").map(function (profile) { return ({ profile: profile.trim() }); }).sort(function (a, b) {
|
|
9074
|
+
return a.profile.localeCompare(b.profile);
|
|
9075
|
+
})
|
|
9076
|
+
: [];
|
|
9077
|
+
setUserProfiles(profiles);
|
|
9078
|
+
permissions = ((_h = userData[0]) === null || _h === void 0 ? void 0 : _h.Permissions)
|
|
9079
|
+
? (_j = userData[0]) === null || _j === void 0 ? void 0 : _j.Permissions.split(",").map(function (permission) { return ({ permission: permission.trim() }); }).sort(function (a, b) {
|
|
9080
|
+
return a.permission.localeCompare(b.permission);
|
|
9081
|
+
})
|
|
9082
|
+
: [];
|
|
9083
|
+
setUserPermissions(permissions);
|
|
9075
9084
|
}
|
|
9076
9085
|
else {
|
|
9077
9086
|
setError(resp.message);
|
|
@@ -9105,34 +9114,42 @@ var Account = function () {
|
|
|
9105
9114
|
}, [showSuccess]);
|
|
9106
9115
|
return (React__default.createElement(React__default.Fragment, null,
|
|
9107
9116
|
React__default.createElement(GenericPanel, { title: "Account Configuration", showPromptSuccess: showSuccess, successMessage: successMessage },
|
|
9108
|
-
React__default.createElement(
|
|
9109
|
-
React__default.createElement(
|
|
9110
|
-
React__default.createElement(
|
|
9111
|
-
|
|
9112
|
-
|
|
9113
|
-
React__default.createElement(
|
|
9114
|
-
|
|
9115
|
-
|
|
9116
|
-
|
|
9117
|
-
|
|
9118
|
-
|
|
9119
|
-
|
|
9120
|
-
|
|
9121
|
-
|
|
9122
|
-
|
|
9123
|
-
|
|
9124
|
-
|
|
9125
|
-
|
|
9126
|
-
|
|
9127
|
-
|
|
9128
|
-
|
|
9129
|
-
|
|
9130
|
-
|
|
9131
|
-
|
|
9132
|
-
|
|
9133
|
-
|
|
9134
|
-
|
|
9135
|
-
|
|
9117
|
+
React__default.createElement(Grid, { container: true, spacing: 2, style: { marginTop: 10 } },
|
|
9118
|
+
React__default.createElement(Grid, { item: true, md: 12, component: Paper, style: { padding: 10 } },
|
|
9119
|
+
React__default.createElement(Grid, { container: true, md: 12, spacing: 2 },
|
|
9120
|
+
React__default.createElement(Grid, { item: true, xs: 12, md: 3 },
|
|
9121
|
+
React__default.createElement(TextField, { "aria-readonly": true, label: "Username", value: userName, variant: "outlined", size: "small", fullWidth: true })),
|
|
9122
|
+
React__default.createElement(Grid, { item: true, xs: 12, md: 4 },
|
|
9123
|
+
React__default.createElement(Button, { onClick: changePassword, variant: "contained", color: "primary", startIcon: React__default.createElement(LockIcon, null) }, "Change Password"),
|
|
9124
|
+
React__default.createElement(ChangePassword, { open: open, onClose: closeChangePassword, userId: userId }))),
|
|
9125
|
+
React__default.createElement(Grid, { container: true, md: 12, spacing: 2 },
|
|
9126
|
+
React__default.createElement(Grid, { item: true, xs: 12, md: 3 },
|
|
9127
|
+
React__default.createElement(TextField, { "aria-readonly": true, label: "Name", value: userFirstName, variant: "outlined", size: "small", fullWidth: true })),
|
|
9128
|
+
React__default.createElement(Grid, { item: true, xs: 12, md: 3 },
|
|
9129
|
+
React__default.createElement(TextField, { "aria-readonly": true, label: "Last Name", value: userLastName, variant: "outlined", size: "small", fullWidth: true }))),
|
|
9130
|
+
React__default.createElement(Grid, { item: true, container: true, md: 12, spacing: 2 },
|
|
9131
|
+
React__default.createElement(Grid, { item: true, xs: 12, md: 3 },
|
|
9132
|
+
React__default.createElement(FormControlLabel, { style: { margin: 0 }, control: React__default.createElement(Checkbox, { "aria-readonly": true, checked: userIsDomain, name: "DomainUser", disabled: true }), label: "Domain User" })),
|
|
9133
|
+
React__default.createElement(Grid, { item: true, xs: 12, md: 3 },
|
|
9134
|
+
React__default.createElement(FormControlLabel, { style: { margin: 0 }, control: React__default.createElement(Checkbox, { "aria-readonly": true, checked: userIsActive, name: "Active", disabled: true }), label: "Active" })))),
|
|
9135
|
+
React__default.createElement(Grid, { item: true, md: 12, component: Paper, style: { marginTop: 4, padding: 10 } },
|
|
9136
|
+
React__default.createElement(Grid, { container: true, md: 12, spacing: 2 },
|
|
9137
|
+
React__default.createElement(Grid, { item: true, xs: 12, md: 4 },
|
|
9138
|
+
React__default.createElement(Typography$1, { gutterBottom: true, variant: "h5", component: "h2", className: "pt-1" }, "Profiles"),
|
|
9139
|
+
React__default.createElement(TextField, { label: "Search", value: profileQuickFilter, onChange: function (e) {
|
|
9140
|
+
setProfileQuickFilter(e.target.value);
|
|
9141
|
+
profileGridApi === null || profileGridApi === void 0 ? void 0 : profileGridApi.setQuickFilter(e.target.value);
|
|
9142
|
+
}, variant: "outlined", size: "small", fullWidth: true }),
|
|
9143
|
+
React__default.createElement("div", { style: { height: "43vh", width: "100%", marginTop: 5 }, className: "ag-theme-material" },
|
|
9144
|
+
React__default.createElement(AgGridReact, { rowData: userProfiles, rowHeight: 30, headerHeight: 0, columnDefs: profilesColumnDefs, animateRows: true, suppressRowClickSelection: true, onGridReady: function (params) { return setProfileGridApi(params.api); } }))),
|
|
9145
|
+
React__default.createElement(Grid, { item: true, xs: 12, md: 8 },
|
|
9146
|
+
React__default.createElement(Typography$1, { gutterBottom: true, variant: "h5", component: "h2", className: "pt-1" }, "Permissions"),
|
|
9147
|
+
React__default.createElement(TextField, { label: "Search", value: permissionQuickFilter, onChange: function (e) {
|
|
9148
|
+
setPermissionQuickFilter(e.target.value);
|
|
9149
|
+
permissionGridApi === null || permissionGridApi === void 0 ? void 0 : permissionGridApi.setQuickFilter(e.target.value);
|
|
9150
|
+
}, variant: "outlined", size: "small", fullWidth: true }),
|
|
9151
|
+
React__default.createElement("div", { style: { height: "43vh", width: "100%", marginTop: 5 }, className: "ag-theme-material" },
|
|
9152
|
+
React__default.createElement(AgGridReact, { rowData: userPermissions, rowHeight: 30, headerHeight: 0, columnDefs: permissionColumnDefs, animateRows: true, suppressRowClickSelection: true, onGridReady: function (params) { return setPermissionGridApi(params.api); } }))))))),
|
|
9136
9153
|
React__default.createElement(ErrorModal, { error: error, onHide: function () {
|
|
9137
9154
|
setError("");
|
|
9138
9155
|
} })));
|