@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.
@@ -1,3 +1,3 @@
1
1
  {
2
- ".": "4.28.0"
2
+ ".": "4.29.0"
3
3
  }
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)
@@ -1,6 +1,6 @@
1
1
  import React from "react";
2
2
  export declare const AuthContext: React.Context<{
3
- getUserName: () => string;
3
+ getUserName: () => any;
4
4
  saveUserData: (userToken: any) => void;
5
5
  clearUserData: () => void;
6
6
  getFirstName: () => any;
@@ -1,2 +1,4 @@
1
+ import "ag-grid-community/styles/ag-grid.css";
2
+ import "ag-grid-community/styles/ag-theme-material.css";
1
3
  import React from "react";
2
4
  export declare const Account: () => React.JSX.Element;
@@ -1,6 +1,6 @@
1
1
  export declare const getTokenFromLS: () => string;
2
2
  export declare function useToken(): {
3
- getUserName: () => string;
3
+ getUserName: () => any;
4
4
  saveUserData: (userToken: any) => void;
5
5
  clearUserData: () => void;
6
6
  getFirstName: () => any;
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(false), showError = _d[0], setShowError = _d[1];
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(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(Alert$1, { show: showError, variant: "danger", dismissible: true, onClose: function () {
8892
- setShowError(false);
8893
- setError(undefined);
8894
- } },
8895
- React__default.createElement("strong", null, "There was an error"),
8896
- React__default.createElement("p", null,
8897
- " ",
8898
- error === undefined
8899
- ? "There was an error"
8900
- : error.internalError.message === undefined
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 (((userData || {}).lastName || "") +
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(""), userProfiles = _h[0], setUserProfiles = _h[1];
9037
- var _j = useState(""), userPermissions = _j[0], setUserPermissions = _j[1];
9038
- var _k = useState(""), userProcedures = _k[0], setUserProcedures = _k[1];
9039
- var _l = useState(false), open = _l[0], setOpen = _l[1];
9040
- var _m = useState(false), showSuccess = _m[0], setShowSuccess = _m[1];
9041
- var _o = useState(""), successMessage = _o[0], setSuccessMessage = _o[1];
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 stringToList = function (s) {
9053
- s = s.replace(/,/g, "\n");
9054
- s = s.replace(/ *\([^)]*\) */g, "");
9055
- return s;
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 (_j) {
9061
- switch (_j.label) {
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 = _j.sent();
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
- setUserProfiles(stringToList(((_f = userData[0]) === null || _f === void 0 ? void 0 : _f.Profiles) || ""));
9073
- setUserProcedures(stringToList(((_g = userData[0]) === null || _g === void 0 ? void 0 : _g.Procedures) || ""));
9074
- setUserPermissions(stringToList(((_h = userData[0]) === null || _h === void 0 ? void 0 : _h.Permissions) || ""));
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("div", { className: "row" },
9109
- React__default.createElement("div", { className: "col-md-3 px-3 py-1" },
9110
- React__default.createElement(SimpleTextControl, { title: "Username", styleLabel: { minWidth: "110px" }, styleTextBox: { maxWidth: "200px", minWidth: "100px" }, readOnly: true, name: "userName", value: userName, styleGeneral: { display: "flex" } })),
9111
- React__default.createElement("div", { className: "col-md-4 px-3 py-1" },
9112
- React__default.createElement("button", { className: "btn btn-primary mes-button-primary", onClick: changePassword },
9113
- React__default.createElement("i", { className: "fas fa-lock pr-1" }),
9114
- "Change Password"),
9115
- React__default.createElement(ChangePassword, { open: open, onClose: closeChangePassword, userId: userId }))),
9116
- React__default.createElement("div", { className: "row" },
9117
- React__default.createElement("div", { className: "col-md-3 px-3 py-1" },
9118
- React__default.createElement(SimpleTextControl, { title: "Name", styleLabel: { minWidth: "110px" }, styleTextBox: { maxWidth: "200px", minWidth: "100px" }, readOnly: true, name: "firstName", value: userFirstName, styleGeneral: { display: "flex" } })),
9119
- React__default.createElement("div", { className: "col-md-3 px-3 py-1" },
9120
- React__default.createElement(SimpleTextControl, { title: "Lastname", styleLabel: { minWidth: "110px" }, styleTextBox: { maxWidth: "200px", minWidth: "100px" }, readOnly: true, name: "lastName", value: userLastName, styleGeneral: { display: "flex" } }))),
9121
- React__default.createElement("div", { className: "row" },
9122
- React__default.createElement("div", { className: "col-md-3 px-3 py-1" },
9123
- React__default.createElement(CheckBoxControl, { value: userIsDomain, title: "Domain User", readOnly: true, styleTextBox: { maxWidth: "300px" }, disabled: true })),
9124
- React__default.createElement("div", { className: "col-md-3 px-3 py-1" },
9125
- React__default.createElement(CheckBoxControl, { value: userIsActive, title: "Active", readOnly: true, styleTextBox: { maxWidth: "300px" }, disabled: true }))),
9126
- React__default.createElement("div", { className: "row" },
9127
- React__default.createElement("div", { className: "col-md-4" },
9128
- React__default.createElement(Typography$1, { gutterBottom: true, variant: "h5", component: "h2", className: "pt-1" }, "Profiles"),
9129
- React__default.createElement("textarea", { className: "form-control", placeholder: userProfiles, readOnly: true, style: { height: "50vh" } })),
9130
- React__default.createElement("div", { className: "col-md-4" },
9131
- React__default.createElement(Typography$1, { gutterBottom: true, variant: "h5", component: "h2", className: "pt-1" }, "Permissions"),
9132
- React__default.createElement("textarea", { className: "form-control", placeholder: userPermissions, readOnly: true, style: { height: "50vh" } })),
9133
- React__default.createElement("div", { className: "col-md-4" },
9134
- React__default.createElement(Typography$1, { gutterBottom: true, variant: "h5", component: "h2", className: "pt-1" }, "Procedures"),
9135
- React__default.createElement("textarea", { className: "form-control", placeholder: userProcedures, readOnly: true, style: { height: "50vh" } })))),
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
  } })));