@dexteel/mesf-core 3.1.0 → 3.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.
@@ -1,8 +1,2 @@
1
1
  /// <reference types="react" />
2
- import PropTypes from 'prop-types';
3
2
  export declare function Logout(): JSX.Element;
4
- export declare namespace Logout {
5
- var propTypes: {
6
- clearEvent: PropTypes.Requireable<(...args: any[]) => any>;
7
- };
8
- }
package/dist/index.esm.js CHANGED
@@ -29,7 +29,7 @@ import MomentUtils from '@date-io/moment';
29
29
  import Select from '@material-ui/core/Select';
30
30
  import MenuItem from '@material-ui/core/MenuItem';
31
31
  import InputLabel from '@material-ui/core/InputLabel';
32
- import { FormHelperText, TextField as TextField$1, CircularProgress as CircularProgress$1, Typography as Typography$1 } from '@material-ui/core';
32
+ import { FormHelperText, TextField as TextField$1, CircularProgress as CircularProgress$1, Typography as Typography$1, Snackbar as Snackbar$1 } from '@material-ui/core';
33
33
  import FormControl from '@material-ui/core/FormControl';
34
34
  import FormGroup from '@material-ui/core/FormGroup';
35
35
  import FormControlLabel from '@material-ui/core/FormControlLabel';
@@ -38,7 +38,7 @@ import FormHelperText$1 from '@material-ui/core/FormHelperText';
38
38
  import stc from 'string-to-color';
39
39
  import DeleteIcon from '@material-ui/icons/Delete';
40
40
  import EditIcon from '@material-ui/icons/Edit';
41
- import { Outlet, useNavigate, Link, useParams, Navigate, Routes, Route, BrowserRouter } from 'react-router-dom';
41
+ import { Outlet, BrowserRouter, Routes, Route, useSearchParams, useNavigate, Link, useParams, Navigate } from 'react-router-dom';
42
42
  import PropTypes from 'prop-types';
43
43
  import { ResponsiveBar } from '@nivo/bar';
44
44
  import DatePicker from 'react-datepicker';
@@ -3820,6 +3820,7 @@ var Configuration$1 = /** @class */ (function () {
3820
3820
  return Configuration;
3821
3821
  }());
3822
3822
 
3823
+ var base$2 = document.getElementsByTagName('base')[0].getAttribute('href') || '/';
3823
3824
  var MESApiService = /** @class */ (function () {
3824
3825
  function MESApiService() {
3825
3826
  this.config = new Configuration$1();
@@ -3982,6 +3983,9 @@ var MESApiService = /** @class */ (function () {
3982
3983
  throw new FetchError(errorMsg.message, 404, "ERR_CONNECTION_REFUSED");
3983
3984
  })
3984
3985
  .then(function (response) {
3986
+ if (response.status === 401) {
3987
+ window.location.href = "".concat(base$2, "logout?message=Session%20expired&redirectTo=").concat(window.location.href);
3988
+ }
3985
3989
  isError = { ok: response.ok, status: response.status, statusText: response.statusText };
3986
3990
  return response.json();
3987
3991
  })
@@ -4031,6 +4035,9 @@ var MESApiService = /** @class */ (function () {
4031
4035
  throw new FetchError(errorMsg.message, 404, "ERR_CONNECTION_REFUSED");
4032
4036
  })
4033
4037
  .then(function (response) {
4038
+ if (response.status === 401) {
4039
+ window.location.href = "".concat(base$2, "logout?message=Session%20expired&redirectTo=").concat(window.location.href);
4040
+ }
4034
4041
  isError = { ok: response.ok, status: response.status, statusText: response.statusText };
4035
4042
  return response.json();
4036
4043
  })
@@ -4083,6 +4090,9 @@ var MESApiService = /** @class */ (function () {
4083
4090
  throw new FetchError(errorMsg.message, 404, "ERR_CONNECTION_REFUSED");
4084
4091
  })
4085
4092
  .then(function (response) {
4093
+ if (response.status === 401) {
4094
+ window.location.href = "".concat(base$2, "logout?message=Session%20expired&redirectTo=").concat(window.location.href);
4095
+ }
4086
4096
  isError = { ok: response.ok, status: response.status, statusText: response.statusText };
4087
4097
  return response.json();
4088
4098
  })
@@ -4133,6 +4143,9 @@ var MESApiService = /** @class */ (function () {
4133
4143
  throw new FetchError(errorMsg.message, 404, "ERR_CONNECTION_REFUSED");
4134
4144
  })
4135
4145
  .then(function (response) {
4146
+ if (response.status === 401) {
4147
+ window.location.href = "".concat(base$2, "logout?message=Session%20expired&redirectTo=").concat(window.location.href);
4148
+ }
4136
4149
  isError = { ok: response.ok, status: response.status, statusText: response.statusText };
4137
4150
  if (!isError.ok)
4138
4151
  return response.json();
@@ -4199,6 +4212,9 @@ var MESApiService = /** @class */ (function () {
4199
4212
  throw new FetchError(errorMsg.message, 404, "ERR_CONNECTION_REFUSED");
4200
4213
  })
4201
4214
  .then(function (response) {
4215
+ if (response.status === 401) {
4216
+ window.location.href = "".concat(base$2, "logout?message=Session%20expired&redirectTo=").concat(window.location.href);
4217
+ }
4202
4218
  isError = { ok: response.ok, status: response.status, statusText: response.statusText };
4203
4219
  if (!isError.ok)
4204
4220
  return response.json();
@@ -5225,6 +5241,7 @@ function Account() {
5225
5241
  }
5226
5242
 
5227
5243
  var AuthContext = React__default.createContext({});
5244
+ var base$1 = document.getElementsByTagName('base')[0].getAttribute('href') || '/';
5228
5245
  var AuthProvider = function (_a) {
5229
5246
  var children = _a.children, authConfig = _a.authConfig;
5230
5247
  var useTokenHook = useToken();
@@ -5239,8 +5256,9 @@ var Authenticated = function (_a) {
5239
5256
  };
5240
5257
  var Unauthenticated = function (_a) {
5241
5258
  var authConfig = _a.authConfig;
5242
- return (React__default.createElement(React__default.Fragment, null,
5243
- React__default.createElement(Login, { authConfig: authConfig })));
5259
+ return (React__default.createElement(BrowserRouter, { basename: base$1 },
5260
+ React__default.createElement(Routes, null,
5261
+ React__default.createElement(Route, { path: '/', element: React__default.createElement(Login, { authConfig: authConfig }) }))));
5244
5262
  };
5245
5263
 
5246
5264
  var LoginWithEmailAndPassword = function () {
@@ -5440,9 +5458,23 @@ var LoginAsGuest = function () {
5440
5458
 
5441
5459
  function Login(_a) {
5442
5460
  var authConfig = _a.authConfig;
5461
+ var _b = useSearchParams(), params = _b[0], setParams = _b[1];
5462
+ var _c = useState(false), open = _c[0], setOpen = _c[1];
5463
+ var _d = useState(''), message = _d[0], setMessage = _d[1];
5443
5464
  var useEmailAndPassword = get$1(authConfig, 'useEmailAndPassword', true);
5444
5465
  var useAzureAD = get$1(authConfig, 'useAzureAD', false);
5445
5466
  var guestIsEnabled = get$1(authConfig, 'guestIsEnabled', false);
5467
+ var handleClose = function () {
5468
+ setOpen(false);
5469
+ params["delete"]('message');
5470
+ setParams(params);
5471
+ };
5472
+ useEffect(function () {
5473
+ if (params.has('message')) {
5474
+ setMessage(params.get('message'));
5475
+ setOpen(true);
5476
+ }
5477
+ }, [params.toString()]);
5446
5478
  return (React__default.createElement(React__default.Fragment, null,
5447
5479
  React__default.createElement("header", null,
5448
5480
  React__default.createElement(Navbar, { variant: "dark", expand: "lg", className: "mes-primary-color mes-menu-top" },
@@ -5455,7 +5487,8 @@ function Login(_a) {
5455
5487
  React__default.createElement("div", { className: "card-body m-3" },
5456
5488
  useEmailAndPassword && React__default.createElement(LoginWithEmailAndPassword, null),
5457
5489
  useAzureAD && React__default.createElement(LoginWithAzureAD, { config: authConfig.AzureConfig }),
5458
- guestIsEnabled && React__default.createElement(LoginAsGuest, null))))))));
5490
+ guestIsEnabled && React__default.createElement(LoginAsGuest, null)))))),
5491
+ React__default.createElement(Snackbar$1, { open: open, autoHideDuration: 6000, onClose: handleClose, message: message })));
5459
5492
  }
5460
5493
  Login.propTypes = {
5461
5494
  setToken: PropTypes.func
@@ -5465,10 +5498,11 @@ function Logout() {
5465
5498
  var _this = this;
5466
5499
  var clearToken = useContext(AuthContext).clearToken;
5467
5500
  var navigate = useNavigate();
5501
+ var _a = useSearchParams(), params = _a[0]; _a[1];
5468
5502
  var logout = function () { return __awaiter(_this, void 0, void 0, function () {
5469
5503
  return __generator(this, function (_a) {
5470
5504
  clearToken();
5471
- navigate("/");
5505
+ navigate("/?".concat(params.toString()));
5472
5506
  return [2 /*return*/];
5473
5507
  });
5474
5508
  }); };
@@ -5477,10 +5511,7 @@ function Logout() {
5477
5511
  }, []);
5478
5512
  return (React__default.createElement(React__default.Fragment, null,
5479
5513
  React__default.createElement("div", null, "logging out!!!")));
5480
- }
5481
- Logout.propTypes = {
5482
- clearEvent: PropTypes.func
5483
- };
5514
+ }
5484
5515
 
5485
5516
  var RouterContext = React__default.createContext(function () { return React__default.createElement(React__default.Fragment, null); });
5486
5517
  var ConfigurationContext = React__default.createContext([
@@ -5611,10 +5642,26 @@ var MESFMainRouter = function () {
5611
5642
  var MESFMainContainer = function () { return (React__default.createElement("div", { id: "mainSection", className: "container-fluid container-fluid-main" },
5612
5643
  React__default.createElement(MESFMainRouter, null))); };
5613
5644
 
5614
- var Navigation = function () { return (React__default.createElement(React__default.Fragment, null,
5615
- React__default.createElement("div", { className: "wrapper" },
5645
+ var Navigation = function () {
5646
+ var _a = useSearchParams(), params = _a[0]; _a[1];
5647
+ var mounted = useRef(true);
5648
+ useEffect(function () {
5649
+ mounted.current = true;
5650
+ if (params.has('redirectTo')) {
5651
+ setTimeout(function () {
5652
+ if (mounted.current) {
5653
+ window.location.href = decodeURI(params.get('redirectTo'));
5654
+ }
5655
+ }, 100);
5656
+ }
5657
+ return function () {
5658
+ mounted.current = false;
5659
+ };
5660
+ }, [params.toString()]);
5661
+ return (React__default.createElement("div", { className: "wrapper" },
5616
5662
  React__default.createElement(Header, null),
5617
- React__default.createElement(MESFMainContainer, null)))); };
5663
+ React__default.createElement(MESFMainContainer, null)));
5664
+ };
5618
5665
 
5619
5666
  var css = "body {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',\n 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',\n sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n background-color: #fafbfc !important;\n}\n.container-fluid-main{\n padding-right: 0px !important; \n padding-left: 0px !important;\n}\n\ncode {\n font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',\n monospace;\n}\n\n.mes-primary-color {\n background-color: #479dc4 !important;\n}\n.mes-button-primary{\n background-color: #479dc4 !important;\n border-color: #479dc4 !important;\n}\n\n.mes-selectable-datagrid .MuiDataGrid-row{\n cursor: pointer;\n}\n\n.mes-menu-top .navbar-brand{\n color: #FFFF !important;\n}\n.mes-menu-top .nav-link {\n color: #FFFF !important;\n}\n.mes-menu-top .navbar-toggler {\n color: #FFFF !important;\n}\n.mes-menu-top .navbar-text {\n color: #FFFF !important;\n}\n.mes-footer-login{\n position: absolute;\n bottom: 0;\n width: 100%;\n height: 10em;\n line-height: 60px;\n text-align:center;\n}\n.mes-filter-datepicker{\n padding: unset !important;\n border-top-left-radius: 0 !important;\n border-bottom-left-radius: 0 !important;\n padding-top: 0.375rem !important;\n padding-bottom: 0.375rem !important;\n padding-left: 0.75rem !important;\n cursor: pointer !important;\n max-width: 120px;\n}\n.mes-filter-datetimepicker{\n max-width: 97px;\n}\n.mes-not-rounded{\n border-radius: unset !important;\n}\n\n.mes-numeric{\n text-align: right;\n}\n.mes-drag-over{\n border: 3px dotted #666;\n background-color: #479dc4 !important;\n}\n.mes-drag-start{\n border: 3px solid #666;\n}\n\n.mes-selectable{\n cursor: pointer !important;\n}\n\n.mes-custom-select{\n width: auto !important;\n padding: 0.375rem 0 0.375rem 0 !important;\n background: unset !important;\n font-family: inherit !important;\n}\n.mes-custom-select .MuiSelect-select{\n padding-left: 14px;\n}\n\n.mes-custom-select::before{\n border-bottom: unset !important;\n}\n.mes-custom-select::after{\n border-bottom: unset !important;\n}\n.mes-no-border{\n border: unset;\n}\n.mes-no-border:focus-visible {\n outline: unset;\n}\n.mes-div-submenu{\n border-right: 1px solid #cfdbe2; \n}\n.mes-submenu a{\n width: 100% !important;\n /* color: rgba(0, 0, 0, 0.87); */\n color: #479dc4\n}\n.mes-submenu .Mui-selected{\n border-right: 3px solid #479dc4; \n}\n.mes-menu-group{\n font-size: 20px;\n line-height: 1.1;\n color: #929292; \n font-weight: normal; \n}\n\n/********************MUI DATAGRID*****************************/\n.Mui-selected{\n font-weight: bolder !important;\n opacity: 1 !important;\n}\n\n.mes-upload-control{\n\n}\n.mes-upload-control .file-box{\n /* border : 1px solid black; */\n height : 100px;\n position: relative; \n}\n.mes-upload-control .file-detail{\n position: absolute;\n left: 0px;\n top: 0px; \n z-index: 1;\n height: 100%;\n width: 100%;\n}\n\n.mes-upload-control input[type=file]{\n left: 0px;\n top: 0px;\n opacity: 0;\n z-index: 10000;\n height: 100%;\n cursor: pointer;\n}\n.mes-upload-control table{\n width: 100%;\n}\n.mes-upload-control td{\n font-size: 0.8rem !important;\n max-width:0;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;\n}\n\n\n.input-group-text{\n background-color: #ced2cc !important;\n /* border: 1px solid #ced4da !important; */\n /* color: #000000 !important; */\n}\n\n\n\n\n.content-wrapper {\n padding: 15px;\n width: 100%;\n border-top: 1px solid rgba(0, 0, 0, 0.15);\n margin-top: -1px;\n}\n.content-wrapper > .unwrap {\n margin: -15px;\n}\n@media only screen and (min-width: 768px) {\n .content-wrapper > .unwrap {\n margin: -20px;\n }\n}\n.content-wrapper > h3,\n.content-wrapper > .content-heading {\n font-size: 24px;\n line-height: 1.1;\n color: #929292;\n margin: -15px;\n margin-bottom: 20px;\n padding: 15px;\n font-weight: normal;\n background-color: #fafbfc;\n border-bottom: 1px solid #cfdbe2;\n}\n.content-wrapper > h3 > small,\n.content-wrapper > .content-heading > small {\n display: block;\n font-size: 12px;\n color: #909fa7;\n}\n.content-wrapper > button,\n.content-wrapper > .btn {\n margin: 10px 10px 0 0;\n}\n.content-wrapper .container,\n.content-wrapper .container-fluid {\n padding-left: 0;\n padding-right: 0;\n}\n@media only screen and (min-width: 768px) {\n .content-wrapper {\n padding: 20px;\n }\n .content-wrapper > h3,\n .content-wrapper > .content-heading {\n margin: -20px;\n margin-bottom: 5px;\n padding: 15px;\n }\n .content-wrapper > button,\n .content-wrapper > .btn {\n margin: 0;\n }\n}\n\n @media print {\n .sidebar,\n .topnavbar,\n .offsidebar,\n .btn {\n display: none !important;\n width: 0 !important;\n height: 0 !important;\n }\n .wrapper,\n .wrapper > section,\n .content-wrapper {\n margin: 0 !important;\n /* remove margin used for sidebar and expand the content */\n padding: 0 !important;\n width: 100% !important;\n }\n .content-wrapper {\n overflow: hidden !important;\n }\n }\n ";
5620
5667
  n(css,{});
@@ -5633,3 +5680,4 @@ function MESFMain(props) {
5633
5680
  }
5634
5681
 
5635
5682
  export { Account, AuthContext, AuthProvider, BarChartControl, ChangePassword, CheckBoxControl, Configuration$1 as Configuration, CurrencyFormatter, DataGridControl, DateControl, DateFormatter, DateTimeControl, DateTimeFormatter, FetchError, FilterPanel, GenericPanel, GenericTable, GetCrewColor, GetShiftColor, HorizontalTextControl, IntegerFormatter, Login, Logout, LongFilterPanel, MESApiService, MESFMain, MESSAGE_API, MESSAGE_ERRORS, MasterDetailPanel, ModalTreeFilterControl, MultipleSelectorControl, NumberFormatter, NumericTextControl, SimpleInputSearchControl, SimplePasswordControl, SimpleSelectorControl, SimpleTextAreaControl, SimpleTextControl, SimpleTimeControl, TimeControl, TimeFormatter, TreePickerControl, USER_LABELS, UploadFileControl, formatNumber, getCrewStyle, getShiftStyle, useToken };
5683
+ //# sourceMappingURL=index.esm.js.map