@itilite/iui-user-management 1.4.963 → 1.4.964-beta.10

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,8 @@
1
- import { IUIAsyncSelect, IUIBox, IUILabel, IUIFileUpload, IUICheckboxButton, IUIPhone, IUISelect, IUIDatePicker, IUIInput, IUIGrid, IUIDivider, IUITypography, IUIRadio, IUIButton, IUIModal, IUISearch, IUICircularProgress, IUIAccordion, IUIAccordionSummary, IUIAccordionDetails, IUICard, IUIBackdrop, IUIBreadCrumb, IUIDropdownButton, IUIDropzone, IUIStepper, IUIIconButton, IUIFormControlLabel, IUICheckBox, IUIPrimaryRadio, IUITable, IUISkeleton, IUIProfileBox, IUIFormGroup, IUITabs } from '@itilite/iuistyles';
1
+ import { IUIAsyncSelect, IUIBox, IUILabel, IUIFileUpload, IUICheckboxButton, IUIPhone, IUISelect, IUIDatePicker, IUIInput, IUIGrid, IUIDivider, IUITypography, IUITooltip, IUIRadio, IUIButton, IUIModal, IUISearch, IUICircularProgress, IUIAccordion, IUIAccordionSummary, IUIAccordionDetails, IUICard, IUIBackdrop, IUIBreadCrumb, IUIDropdownButton, IUIDropzone, IUIStepper, IUIIconButton, IUIFormControlLabel, IUICheckBox, IUIPrimaryRadio, IUITable, IUISkeleton, IUIProfileBox, IUIFormGroup, IUITabs } from '@itilite/iuistyles';
2
2
  import React, { useState, Fragment as Fragment$1, useEffect, memo, useRef } from 'react';
3
3
  import { configs, services, utilUrls } from '@itilite/utils';
4
4
  import axios from 'axios';
5
- import { IconButton, Menu, MenuItem, Popper, Grow, Paper, ClickAwayListener, MenuList, Typography, Box } from '@material-ui/core';
5
+ import { Tooltip, IconButton, Menu, MenuItem, Popper, Grow, Paper, ClickAwayListener, MenuList, Typography, Box } from '@material-ui/core';
6
6
  import { useDispatch, useSelector, Provider } from 'react-redux';
7
7
  import { combineReducers, createStore, applyMiddleware } from 'redux';
8
8
  import thunk from 'redux-thunk';
@@ -10,7 +10,7 @@ import moment from 'moment';
10
10
  import { composeWithDevTools } from 'redux-devtools-extension';
11
11
  import { useParams, useHistory, useLocation } from 'react-router-dom';
12
12
  import { withStyles, makeStyles } from '@material-ui/core/styles';
13
- import Tooltip from '@material-ui/core/Tooltip';
13
+ import Tooltip$1 from '@material-ui/core/Tooltip';
14
14
  import Switch from '@material-ui/core/Switch';
15
15
  import MoreHorizIcon from '@material-ui/icons/MoreHoriz';
16
16
  import Button from '@material-ui/core/Button';
@@ -184,7 +184,17 @@ function _finallyRethrows(body, finalizer) {
184
184
 
185
185
  var styles = {"UUIUserManagementAddEdit":"_3n-WG","pageHeader":"_3qWcA","buttonWrapper":"_1IP9P","scrolled":"_m8f96","headingButtonWrapper":"_w9z7b","headingButtonWrapperProfile":"_12Wd9","hintText":"_ySdbZ","heading":"_2Y1Aw","headingLarge":"_2K1NF","headingMedium":"_RUuAz","headingSmall":"_23Dye","additionalInfoContainer":"_1Suhw","additionalInfoTitle":"_56iJF","titleContainer":"_H5nfl","expandIconAlign":"_3F4i0","detailsContainer":"_2G0LW","formWrapper":"_2fPRc","sectionWrapper":"_37Gqp","margin":"_2Sdl7","minGridWidth":"_2D7iu","firstRowMargin":"_1BozG","firstChildMargin":"_2C3Mb","paddingTop":"_DBPjV","backGrdColorOnHover":"_5oE6H","fieldMargin":"_RCWjq","productContainerGap":"_tuCbi","containerWidth":"_1oWos","productItemBroder":"_T0Hcd","headingPadding":"_2MFfQ","emptyFieldContainer":"_3VWtw","emptyFieldDescription":"_2jC5u","rowGap":"_1NJFY","formTitle":"_GAKk2","formDescription":"_3TZ6Z","themeLink":"_eJ_1B","dashedLine":"_3ZOs1","dividerColor":"_2pxEJ","errorTextCls":"_27eth","backdrop":"_Pm0Au","inputWidth":"_ajB82","buttonRight":"_1lEyQ","containedDropdownBtn":"_3ymE1"};
186
186
 
187
- function r(e){var t,f,n="";if("string"==typeof e||"number"==typeof e)n+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=" "),n+=f);else for(t in e)e[t]&&(n&&(n+=" "),n+=t);return n}function clsx(){for(var e,t,f=0,n="";f<arguments.length;)(e=arguments[f++])&&(t=r(e))&&(n&&(n+=" "),n+=t);return n}
187
+ function r(e) {
188
+ var t,
189
+ f,
190
+ n = "";
191
+ if ("string" == typeof e || "number" == typeof e) n += e;else if ("object" == typeof e) if (Array.isArray(e)) for (t = 0; t < e.length; t++) e[t] && (f = r(e[t])) && (n && (n += " "), n += f);else for (t in e) e[t] && (n && (n += " "), n += t);
192
+ return n;
193
+ }
194
+ function clsx() {
195
+ for (var e, t, f = 0, n = ""; f < arguments.length;) (e = arguments[f++]) && (t = r(e)) && (n && (n += " "), n += t);
196
+ return n;
197
+ }
188
198
 
189
199
  var GetInputType = React.forwardRef(function (props, ref) {
190
200
  var _p = props._p,
@@ -829,7 +839,7 @@ var UserRole = function UserRole(_ref) {
829
839
 
830
840
  var styles$1 = {"defaultLabel":"_smjc4","card":"_3_S9J","cardNumber":"_36E9M","cardDigit":"_2pm-T","expiryDate":"_2tBnF","cardImage":"_3QvZh","visa":"_1IpBm","mastercard":"_2x6IX","amex":"_2a38S","discover":"_2vksl","diners":"_2kQRs","jcb":"_2bO1f","unionpay":"_2_jfu","is_nothing":"_1Lrzs","addCard":"_3711U","cardDeleteBtn":"_7Da2t","cardLabel":"_PQTex","defaultBtn":"_1_ArA","cursonPointer":"_1L115","sectionWrapper":"_VpUCK","margin":"_1Fs_D","minGridWidth":"_1hl-Z","firstRowMargin":"_1WZZj","firstChildMargin":"_IT_O_","paddingTop":"_Mhnl7","dividerColor":"_3ltFd"};
831
841
 
832
- var classes = {"disabledCard":"_3MVKj","expiredLabel":"_2_sgJ","expiresoonLabel":"_3G7La","sectionHeader":"_2d_OH","myCardsSection":"_3MNHj","companyCardsSection":"_34lN6","disabledNotice":"_1yV0j","cardsGrid":"_1oHGu","card":"_3ZTQc","moreIcon":"_3utA0","personal":"_duePd","corporate":"_3O33a","company":"_180_L","cardHeader":"_1eF61","cardTitleSection":"_2c40W","cardMaskedNumber":"_2Vlhq","cardName":"_bp-Mt","cardAlias":"_19m4v","cardType":"_3l4HZ","menuButton":"_3TTEn","lockIcon":"_1S27X","cardDetails":"_IP2rg","cardNumber":"_7FOPe","cardExpiry":"_CI_p2","cardCvv":"_3Gzqu","cardUnhide":"_ivgBf","cardFooter":"_1WgPL","brandLogo":"_EV0l8","addCardButton":"_1oaCc","plusIcon":"_w9L5L"};
842
+ var classes = {"disabledCard":"_3MVKj","expiredLabel":"_2_sgJ","invalidLabel":"_1Oqzs","expiresoonLabel":"_3G7La","sectionHeader":"_2d_OH","myCardsSection":"_3MNHj","companyCardsSection":"_34lN6","disabledNotice":"_1yV0j","cardsGrid":"_1oHGu","card":"_3ZTQc","moreIcon":"_3utA0","personal":"_duePd","corporate":"_3O33a","company":"_180_L","cardHeader":"_1eF61","cardTitleSection":"_2c40W","cardMaskedNumber":"_2Vlhq","cardName":"_bp-Mt","cardAlias":"_19m4v","cardType":"_3l4HZ","menuButton":"_3TTEn","lockIcon":"_1S27X","cardDetails":"_IP2rg","cardNumber":"_7FOPe","cardExpiry":"_CI_p2","cardCvv":"_3Gzqu","cardUnhide":"_ivgBf","cardFooter":"_1WgPL","brandLogo":"_EV0l8","addCardButton":"_1oaCc","plusIcon":"_w9L5L"};
833
843
 
834
844
  var SHOW_LOADER = 'SHOW_LOADER';
835
845
  var STOP_LOADER = 'STOP_LOADER';
@@ -2658,6 +2668,12 @@ var Visa = function Visa(props) {
2658
2668
  }))));
2659
2669
  };
2660
2670
 
2671
+ var CARDS_DISABLED = {
2672
+ DISABLED: '0',
2673
+ EXPIRED: '2',
2674
+ INVALID: '3'
2675
+ };
2676
+
2661
2677
  var IUILocalStorageService$4 = services.IUILocalStorageService;
2662
2678
  var env$3 = configs.env;
2663
2679
  var CardsManagement = function CardsManagement(_ref) {
@@ -2814,14 +2830,20 @@ var CardsManagement = function CardsManagement(_ref) {
2814
2830
  var isCompanyCard = (card === null || card === void 0 ? void 0 : card.category) === 'Company';
2815
2831
  var cardClass = getCardTypeClass(card === null || card === void 0 ? void 0 : card.category);
2816
2832
  var isDefaultCard = !!+(card === null || card === void 0 ? void 0 : (_card$metadata = card.metadata) === null || _card$metadata === void 0 ? void 0 : _card$metadata.default_card);
2817
- var isExpired = card.metadata.is_enabled === '2';
2818
- var isDisabled = card.metadata.is_enabled === '0' || isExpired;
2833
+ var isExpired = card.metadata.is_enabled === CARDS_DISABLED.EXPIRED;
2834
+ var isInvalid = card.metadata.is_enabled === CARDS_DISABLED.INVALID;
2835
+ var isDisabled = card.metadata.is_enabled === CARDS_DISABLED.DISABLED || isExpired || isInvalid;
2819
2836
  var currentDate = new Date();
2820
2837
  var cardExpDate = new Date(parseInt(card.card.exp_year, 10), parseInt(card.card.exp_month, 10) - 1);
2821
2838
  var timeDiff = cardExpDate.getTime() - currentDate.getTime();
2822
2839
  var daysToExpire = Math.ceil(timeDiff / (1000 * 3600 * 24));
2823
2840
  var expiresSoon = daysToExpire <= 30 && !isExpired;
2824
- return /*#__PURE__*/React.createElement("div", {
2841
+ return /*#__PURE__*/React.createElement(Tooltip, {
2842
+ title: isInvalid ? 'This card is invalid, because you have been issued a new card.' : null,
2843
+ disableHoverListener: !isInvalid,
2844
+ placement: "top",
2845
+ arrow: true
2846
+ }, /*#__PURE__*/React.createElement("div", {
2825
2847
  key: card.id,
2826
2848
  className: clsx(classes.card, classes[cardClass], (_clsx = {}, _clsx[classes.disabledCard] = isDisabled, _clsx))
2827
2849
  }, /*#__PURE__*/React.createElement("div", {
@@ -2834,7 +2856,9 @@ var CardsManagement = function CardsManagement(_ref) {
2834
2856
  className: classes.cardAlias
2835
2857
  }, card === null || card === void 0 ? void 0 : card.alias), isExpired && /*#__PURE__*/React.createElement("span", {
2836
2858
  className: classes.expiredLabel
2837
- }, "Expired"), expiresSoon && /*#__PURE__*/React.createElement("span", {
2859
+ }, "Expired"), isInvalid && /*#__PURE__*/React.createElement("span", {
2860
+ className: classes.invalidLabel
2861
+ }, "Invalid"), expiresSoon && !isInvalid && /*#__PURE__*/React.createElement("span", {
2838
2862
  className: clsx(classes.expiresoonLabel, classes.expiredLabel)
2839
2863
  }, "Expires Soon")), /*#__PURE__*/React.createElement("span", {
2840
2864
  className: classes.cardType
@@ -2861,7 +2885,7 @@ var CardsManagement = function CardsManagement(_ref) {
2861
2885
  className: classes.cardCvv
2862
2886
  }, "CVV \u2022\u2022\u2022")), /*#__PURE__*/React.createElement("div", {
2863
2887
  className: classes.cardFooter
2864
- }, /*#__PURE__*/React.createElement("div", null), getBrandLogo(card === null || card === void 0 ? void 0 : (_card$card4 = card.card) === null || _card$card4 === void 0 ? void 0 : _card$card4.brand)));
2888
+ }, /*#__PURE__*/React.createElement("div", null), getBrandLogo(card === null || card === void 0 ? void 0 : (_card$card4 = card.card) === null || _card$card4 === void 0 ? void 0 : _card$card4.brand))));
2865
2889
  };
2866
2890
  var _url = env$3.getPaymentUrl() + ("/api/v1/auth/" + IUILocalStorageService$4.getAccessToken() + "/1/" + pg.entity_id + "/0/" + pg.vendor_id + "/1");
2867
2891
  var showMenuButton = cardsCount === 1 || cardsCount > 1 && !+(selectedCard === null || selectedCard === void 0 ? void 0 : (_selectedCard$metadat = selectedCard.metadata) === null || _selectedCard$metadat === void 0 ? void 0 : _selectedCard$metadat.default_card);
@@ -3067,6 +3091,9 @@ var TravelExpenseFields = function TravelExpenseFields(props) {
3067
3091
  var paymentDetails = useSelector(function (state) {
3068
3092
  return state.userAddEdit.paymentDetails;
3069
3093
  });
3094
+ var isItiliteAdminRoleRestricted = type === 'travel' && roles.some(function (role) {
3095
+ return (role === null || role === void 0 ? void 0 : role.name) === 'travel_itilite_admin';
3096
+ });
3070
3097
  var openEditAproverModal = function openEditAproverModal() {
3071
3098
  setOpenEditAproverModalFlag(true);
3072
3099
  };
@@ -3174,7 +3201,16 @@ var TravelExpenseFields = function TravelExpenseFields(props) {
3174
3201
  }, isProfile ? /*#__PURE__*/React.createElement(UserRole, {
3175
3202
  list: roles,
3176
3203
  value: roleValue
3177
- }) : /*#__PURE__*/React.createElement(IUIRadio, {
3204
+ }) : isItiliteAdminRoleRestricted ? /*#__PURE__*/React.createElement(IUITooltip, {
3205
+ tooltipText: "To change the role, please reach out to IT team"
3206
+ }, /*#__PURE__*/React.createElement(IUIGrid, {
3207
+ item: true
3208
+ }, /*#__PURE__*/React.createElement(IUIRadio, {
3209
+ list: roles,
3210
+ value: roleValue,
3211
+ onValueChange: onRoleChange,
3212
+ disabled: true
3213
+ }))) : /*#__PURE__*/React.createElement(IUIRadio, {
3178
3214
  list: roles,
3179
3215
  value: roleValue,
3180
3216
  onValueChange: onRoleChange
@@ -10309,7 +10345,7 @@ var StickyHeadTable = function StickyHeadTable(props) {
10309
10345
  return /*#__PURE__*/React.createElement(IUIBox, {
10310
10346
  component: "div",
10311
10347
  width: 80
10312
- }, row && row.has_visited === 0 ? /*#__PURE__*/React.createElement(Tooltip, {
10348
+ }, row && row.has_visited === 0 ? /*#__PURE__*/React.createElement(Tooltip$1, {
10313
10349
  title: "This user hasn't logged in to the platform yet",
10314
10350
  arrow: true,
10315
10351
  classes: {
@@ -10687,9 +10723,11 @@ var UndoButton = function UndoButton(_ref) {
10687
10723
  }, "UNDO"));
10688
10724
  };
10689
10725
  var UserList = function UserList(_ref2) {
10726
+ var _config$features;
10690
10727
  var config = _ref2.config,
10691
10728
  isProfile = _ref2.isProfile;
10692
10729
  env$7.init(config, isProfile);
10730
+ var hideSignupRequestsTab = !!(config !== null && config !== void 0 && (_config$features = config.features) !== null && _config$features !== void 0 && _config$features.hideSignupRequestsTab);
10693
10731
  var history = useHistory();
10694
10732
  var _useSelector = useSelector(function (state) {
10695
10733
  return state.userList;
@@ -11290,6 +11328,10 @@ var UserList = function UserList(_ref2) {
11290
11328
  if (!isSearchingChange && !isSortingChange && !isSignUpSearchingChange && !isSignUpSortingChange) {
11291
11329
  dispatch(showDataFetchingStatus());
11292
11330
  dispatch(fetchUsersList(url)).then(function () {
11331
+ if (hideSignupRequestsTab) {
11332
+ dispatch(stopDataFetchingStatus());
11333
+ return;
11334
+ }
11293
11335
  dispatch(fetchUserSignupRequests({
11294
11336
  ordering: signup_order === 'asc' ? signup_orderBy : "-" + signup_orderBy,
11295
11337
  length: signup_rowsPerPage,
@@ -11343,6 +11385,38 @@ var UserList = function UserList(_ref2) {
11343
11385
  onClick: handleAddPageNavigation
11344
11386
  })));
11345
11387
  };
11388
+ var currentUsersPanel = /*#__PURE__*/React.createElement(IUIBox, {
11389
+ style: {
11390
+ marginLeft: '-17px'
11391
+ }
11392
+ }, /*#__PURE__*/React.createElement(IUIBox, {
11393
+ component: "div",
11394
+ className: styles$6.headingWrapper
11395
+ }, /*#__PURE__*/React.createElement(IUITypography, {
11396
+ variant: "body2",
11397
+ className: clsx(styles$6.description)
11398
+ }, "Create new users, customize user permissions and manage user accounts")), /*#__PURE__*/React.createElement(StickyHeadTable, {
11399
+ data: userListInfo,
11400
+ handleChangeRowsPerPage: handleChangeRowsPerPage,
11401
+ handleChangePage: handleChangePage,
11402
+ page: page,
11403
+ rowsPerPage: rowsPerPage,
11404
+ handleActiveUser: handleActiveUser,
11405
+ handleSelectAllClick: handleSelectAllClick,
11406
+ selected: selected,
11407
+ handleSingleCheckBoxClick: handleSingleCheckBoxClick,
11408
+ orderBy: orderBy,
11409
+ order: order,
11410
+ onRequestSort: onRequestSort,
11411
+ onSearchHandler: onSearchHandler,
11412
+ onEditHandler: handleEditUserClick,
11413
+ disableRowCheckbox: deactivatedUsers,
11414
+ searchValue: searchValue,
11415
+ isILadmin: isILadmin,
11416
+ onPrimaryAdminHandler: onPrimaryAdminHandler,
11417
+ onResetPasswordHandler: onResetPasswordHandler,
11418
+ toggleInviteModal: toggleInviteModal
11419
+ }));
11346
11420
  return /*#__PURE__*/React.createElement(IUIBox, {
11347
11421
  component: "div",
11348
11422
  className: styles$6.UUIUserManagementList
@@ -11417,7 +11491,7 @@ var UserList = function UserList(_ref2) {
11417
11491
  alignItems: "center"
11418
11492
  })), /*#__PURE__*/React.createElement(IUIBox, {
11419
11493
  className: styles$6.tablewrapper
11420
- }, /*#__PURE__*/React.createElement(IUITabs, {
11494
+ }, hideSignupRequestsTab ? currentUsersPanel : /*#__PURE__*/React.createElement(IUITabs, {
11421
11495
  value: tabValue,
11422
11496
  customTabHandler: function customTabHandler(value) {
11423
11497
  return dispatch(updateTabValue(value));
@@ -11427,38 +11501,7 @@ var UserList = function UserList(_ref2) {
11427
11501
  label: /*#__PURE__*/React.createElement(IUIBox, null, "Current users", ' ', /*#__PURE__*/React.createElement(TabLabelCount, {
11428
11502
  count: userListInfo.count
11429
11503
  }), ' '),
11430
- content: /*#__PURE__*/React.createElement(IUIBox, {
11431
- style: {
11432
- marginLeft: '-17px'
11433
- }
11434
- }, /*#__PURE__*/React.createElement(IUIBox, {
11435
- component: "div",
11436
- className: styles$6.headingWrapper
11437
- }, /*#__PURE__*/React.createElement(IUITypography, {
11438
- variant: "body2",
11439
- className: clsx(styles$6.description)
11440
- }, "Create new users, customize user permissions and manage user accounts")), /*#__PURE__*/React.createElement(StickyHeadTable, {
11441
- data: userListInfo,
11442
- handleChangeRowsPerPage: handleChangeRowsPerPage,
11443
- handleChangePage: handleChangePage,
11444
- page: page,
11445
- rowsPerPage: rowsPerPage,
11446
- handleActiveUser: handleActiveUser,
11447
- handleSelectAllClick: handleSelectAllClick,
11448
- selected: selected,
11449
- handleSingleCheckBoxClick: handleSingleCheckBoxClick,
11450
- orderBy: orderBy,
11451
- order: order,
11452
- onRequestSort: onRequestSort,
11453
- onSearchHandler: onSearchHandler,
11454
- onEditHandler: handleEditUserClick,
11455
- disableRowCheckbox: deactivatedUsers,
11456
- searchValue: searchValue,
11457
- isILadmin: isILadmin,
11458
- onPrimaryAdminHandler: onPrimaryAdminHandler,
11459
- onResetPasswordHandler: onResetPasswordHandler,
11460
- toggleInviteModal: toggleInviteModal
11461
- }))
11504
+ content: currentUsersPanel
11462
11505
  }, {
11463
11506
  label: /*#__PURE__*/React.createElement(IUIBox, null, "Sign-up requests", ' ', /*#__PURE__*/React.createElement(TabLabelCount, {
11464
11507
  count: signupRequestListInfo.count