makerspace-react-rails 0.6.4 → 0.6.5

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f04a07e9cae65c9607d484b6ad4626aefce9cd84f3855277cbcbdd33db628eab
4
- data.tar.gz: 0ae58b73988db684e8e469dc3208de3eb60fd832f54d06223af1f4a57a5df8e9
3
+ metadata.gz: cda93434b99ca2f11cc55c4826803465e0fba2517aff2fdab2302a60855f91ef
4
+ data.tar.gz: 7d1a023c1bf6571c13d6a7e2b378ddb9622a3d8b9457c3312c97db45b2410dc0
5
5
  SHA512:
6
- metadata.gz: 751cdfb4a2a45f1f442999261224571f4f799a627cd438d53ea030b2884029dcbdfecf4cd06f1cdd0e7ef3eedb1f9bd223db44a680ff547720dd0ff9d8b0df8c
7
- data.tar.gz: 25dcb45052d1ad046d64f967aea31d7481c4e4cd20b18523b122c66328f6383547e2a1470018884fc385847a88153e28a2e7a26e8eeea8ca9981a7232e5c517e
6
+ metadata.gz: 0d1a06280a16b841f8e9a1b74b5830749fe8da15f4286cf9f5e1c8a5f62589dbac3d26a11660efc04c892c4c2f4f2504845ab88e8ea3e3f06ffe52ea93c8266b
7
+ data.tar.gz: 017bd6aada76a89abf23d4152f5ede786b9912aa0eee09968a5d7ed5f38083da742d41dc89622bf37e3f4e235d99997bccc7f5da35287c698e96d3638ee1fd10
@@ -1,7 +1,7 @@
1
1
  module Makerspace
2
2
  module React
3
3
  module Rails
4
- VERSION = "0.6.4"
4
+ VERSION = "0.6.5"
5
5
  end
6
6
  end
7
7
  end
@@ -166780,7 +166780,7 @@ if (false) {} else {
166780
166780
  /*!***************************************************************!*\
166781
166781
  !*** ./node_modules/react-router-dom/esm/react-router-dom.js ***!
166782
166782
  \***************************************************************/
166783
- /*! exports provided: MemoryRouter, Prompt, Redirect, Route, Router, StaticRouter, Switch, generatePath, matchPath, withRouter, __RouterContext, BrowserRouter, HashRouter, Link, NavLink */
166783
+ /*! exports provided: BrowserRouter, HashRouter, Link, NavLink, MemoryRouter, Prompt, Redirect, Route, Router, StaticRouter, Switch, generatePath, matchPath, withRouter, __RouterContext */
166784
166784
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
166785
166785
 
166786
166786
  "use strict";
@@ -186950,14 +186950,17 @@ module.exports = function(module) {
186950
186950
  __webpack_require__.r(__webpack_exports__);
186951
186951
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
186952
186952
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
186953
- /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-redux */ "./node_modules/react-redux/es/index.js");
186954
- /* harmony import */ var ui_auth_actions__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ui/auth/actions */ "./src/ui/auth/actions.ts");
186955
- /* harmony import */ var ui_common_Header__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ui/common/Header */ "./src/ui/common/Header.tsx");
186956
- /* harmony import */ var ui_common_LoadingOverlay__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ui/common/LoadingOverlay */ "./src/ui/common/LoadingOverlay.tsx");
186957
- /* harmony import */ var app_PrivateRouting__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! app/PrivateRouting */ "./src/app/PrivateRouting.tsx");
186958
- /* harmony import */ var app_PublicRouting__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! app/PublicRouting */ "./src/app/PublicRouting.tsx");
186959
- /* harmony import */ var react_router__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react-router */ "./node_modules/react-router/esm/react-router.js");
186960
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
186953
+ /* harmony import */ var use_react_router__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! use-react-router */ "./node_modules/use-react-router/use-react-router.js");
186954
+ /* harmony import */ var use_react_router__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(use_react_router__WEBPACK_IMPORTED_MODULE_1__);
186955
+ /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-redux */ "./node_modules/react-redux/es/index.js");
186956
+ /* harmony import */ var ui_auth_actions__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ui/auth/actions */ "./src/ui/auth/actions.ts");
186957
+ /* harmony import */ var ui_common_Header__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ui/common/Header */ "./src/ui/common/Header.tsx");
186958
+ /* harmony import */ var ui_common_LoadingOverlay__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ui/common/LoadingOverlay */ "./src/ui/common/LoadingOverlay.tsx");
186959
+ /* harmony import */ var ui_reducer_hooks__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ui/reducer/hooks */ "./src/ui/reducer/hooks.ts");
186960
+ /* harmony import */ var app_PrivateRouting__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! app/PrivateRouting */ "./src/app/PrivateRouting.tsx");
186961
+ /* harmony import */ var app_PublicRouting__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! app/PublicRouting */ "./src/app/PublicRouting.tsx");
186962
+ /* harmony import */ var app_constants__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! app/constants */ "./src/app/constants.ts");
186963
+ /* harmony import */ var ui_member_utils__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ui/member/utils */ "./src/ui/member/utils.ts");
186961
186964
 
186962
186965
 
186963
186966
 
@@ -186968,96 +186971,64 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
186968
186971
 
186969
186972
 
186970
186973
 
186971
- class App extends react__WEBPACK_IMPORTED_MODULE_0__["Component"] {
186972
- constructor(props) {
186973
- super(props);
186974
186974
 
186975
- _defineProperty(this, "renderBody", () => {
186976
- const {
186977
- attemptingLogin
186978
- } = this.state;
186979
- const {
186980
- currentUserId,
186981
- permissions,
186982
- isAdmin
186983
- } = this.props;
186975
+ const publicPaths = [app_constants__WEBPACK_IMPORTED_MODULE_9__["Routing"].Login, app_constants__WEBPACK_IMPORTED_MODULE_9__["Routing"].SignUp, app_constants__WEBPACK_IMPORTED_MODULE_9__["Routing"].PasswordReset];
186984
186976
 
186985
- if (attemptingLogin) {
186986
- return react__WEBPACK_IMPORTED_MODULE_0__["createElement"](ui_common_LoadingOverlay__WEBPACK_IMPORTED_MODULE_4__["default"], {
186987
- id: "body"
186988
- });
186989
- } else {
186990
- return currentUserId ? react__WEBPACK_IMPORTED_MODULE_0__["createElement"](app_PrivateRouting__WEBPACK_IMPORTED_MODULE_5__["default"], {
186991
- permissions: permissions,
186992
- currentUserId: currentUserId,
186993
- isAdmin: isAdmin
186994
- }) : react__WEBPACK_IMPORTED_MODULE_0__["createElement"](app_PublicRouting__WEBPACK_IMPORTED_MODULE_6__["default"], null);
186995
- }
186996
- });
186997
-
186998
- this.state = {
186999
- attemptingLogin: true
187000
- };
187001
- }
187002
-
187003
- componentDidMount() {
187004
- this.setState({
187005
- attemptingLogin: true
187006
- });
187007
- this.props.attemptLogin();
187008
- }
187009
-
187010
- componentDidUpdate(prevProps) {
187011
- const {
187012
- isSigningIn: wasSigningIn
187013
- } = prevProps;
187014
- const {
187015
- isSigningIn
187016
- } = this.props;
187017
- const {
187018
- attemptingLogin
187019
- } = this.state;
186977
+ const App = () => {
186978
+ const {
186979
+ location: {
186980
+ pathname
186981
+ },
186982
+ history
186983
+ } = use_react_router__WEBPACK_IMPORTED_MODULE_1___default()();
186984
+ const dispatch = Object(react_redux__WEBPACK_IMPORTED_MODULE_2__["useDispatch"])();
186985
+ const {
186986
+ currentUser: {
186987
+ id: currentUserId,
186988
+ isAdmin
186989
+ },
186990
+ permissions,
186991
+ isRequesting,
186992
+ error
186993
+ } = Object(ui_reducer_hooks__WEBPACK_IMPORTED_MODULE_6__["useAuthState"])();
186994
+ const [attemptingLogin, setAttemptingLogin] = react__WEBPACK_IMPORTED_MODULE_0__["useState"](true);
186995
+ const [loginAttempted, setLoginAttempted] = react__WEBPACK_IMPORTED_MODULE_0__["useState"]();
186996
+ const [initialPath] = react__WEBPACK_IMPORTED_MODULE_0__["useState"](pathname); // Attempt login on mount except when going to password reset
187020
186997
 
187021
- if (wasSigningIn && !isSigningIn) {
187022
- if (attemptingLogin) {
187023
- this.setState({
187024
- attemptingLogin: false
187025
- });
187026
- }
186998
+ react__WEBPACK_IMPORTED_MODULE_0__["useEffect"](() => {
186999
+ if (initialPath !== app_constants__WEBPACK_IMPORTED_MODULE_9__["Routing"].PasswordReset) {
187000
+ dispatch(Object(ui_auth_actions__WEBPACK_IMPORTED_MODULE_3__["sessionLoginUserAction"])());
187027
187001
  }
187028
- }
187029
-
187030
- render() {
187031
- return react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("div", {
187032
- className: "root"
187033
- }, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](ui_common_Header__WEBPACK_IMPORTED_MODULE_3__["default"], null), this.renderBody());
187034
- }
187002
+ }, []);
187003
+ react__WEBPACK_IMPORTED_MODULE_0__["useEffect"](() => {
187004
+ setLoginAttempted(true);
187005
+ }, []); // Redirect after login if they were navigation elsewhere
187035
187006
 
187036
- }
187007
+ react__WEBPACK_IMPORTED_MODULE_0__["useEffect"](() => {
187008
+ if (!error && !isRequesting) {
187009
+ loginAttempted && setAttemptingLogin(false);
187037
187010
 
187038
- const mapStateToProps = (state, _ownProps) => {
187039
- const {
187040
- auth: {
187041
- currentUser,
187042
- permissions,
187043
- isRequesting: isSigningIn
187011
+ if (currentUserId) {
187012
+ if (initialPath && initialPath !== app_constants__WEBPACK_IMPORTED_MODULE_9__["Routing"].Root && !publicPaths.some(path => initialPath.startsWith(path))) {
187013
+ history.push(initialPath);
187014
+ } else {
187015
+ history.push(Object(ui_member_utils__WEBPACK_IMPORTED_MODULE_10__["buildProfileRouting"])(currentUserId));
187016
+ }
187017
+ }
187044
187018
  }
187045
- } = state;
187046
- return {
187047
- currentUserId: currentUser.id,
187048
- isAdmin: currentUser.isAdmin,
187049
- permissions,
187050
- isSigningIn
187051
- };
187052
- };
187053
-
187054
- const mapDispatchToProps = dispatch => {
187055
- return {
187056
- attemptLogin: () => dispatch(Object(ui_auth_actions__WEBPACK_IMPORTED_MODULE_2__["sessionLoginUserAction"])())
187057
- };
187019
+ }, [isRequesting]);
187020
+ return react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("div", {
187021
+ className: "root"
187022
+ }, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](ui_common_Header__WEBPACK_IMPORTED_MODULE_4__["default"], null), attemptingLogin ? react__WEBPACK_IMPORTED_MODULE_0__["createElement"](ui_common_LoadingOverlay__WEBPACK_IMPORTED_MODULE_5__["default"], {
187023
+ id: "body"
187024
+ }) : currentUserId ? react__WEBPACK_IMPORTED_MODULE_0__["createElement"](app_PrivateRouting__WEBPACK_IMPORTED_MODULE_7__["default"], {
187025
+ permissions: permissions,
187026
+ currentUserId: currentUserId,
187027
+ isAdmin: isAdmin
187028
+ }) : react__WEBPACK_IMPORTED_MODULE_0__["createElement"](app_PublicRouting__WEBPACK_IMPORTED_MODULE_8__["default"], null));
187058
187029
  };
187059
187030
 
187060
- /* harmony default export */ __webpack_exports__["default"] = (Object(react_router__WEBPACK_IMPORTED_MODULE_7__["withRouter"])(Object(react_redux__WEBPACK_IMPORTED_MODULE_1__["connect"])(mapStateToProps, mapDispatchToProps)(App)));
187031
+ /* harmony default export */ __webpack_exports__["default"] = (App);
187061
187032
 
187062
187033
  /***/ }),
187063
187034
 
@@ -187075,7 +187046,7 @@ __webpack_require__.r(__webpack_exports__);
187075
187046
  /* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-router-dom */ "./node_modules/react-router-dom/esm/react-router-dom.js");
187076
187047
  /* harmony import */ var app_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! app/constants */ "./src/app/constants.ts");
187077
187048
  /* harmony import */ var ui_common_NotFound__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ui/common/NotFound */ "./src/ui/common/NotFound.tsx");
187078
- /* harmony import */ var ui_members_MembersList__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ui/members/MembersList */ "./src/ui/members/MembersList.tsx");
187049
+ /* harmony import */ var ui_member_MembersList__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ui/member/MembersList */ "./src/ui/member/MembersList.tsx");
187079
187050
  /* harmony import */ var ui_rentals_RentalsList__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ui/rentals/RentalsList */ "./src/ui/rentals/RentalsList.tsx");
187080
187051
  /* harmony import */ var ui_earnedMemberships_EarnedMembershipsList__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ui/earnedMemberships/EarnedMembershipsList */ "./src/ui/earnedMemberships/EarnedMembershipsList.tsx");
187081
187052
  /* harmony import */ var ui_member_MemberDetail__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ui/member/MemberDetail */ "./src/ui/member/MemberDetail.tsx");
@@ -187110,7 +187081,7 @@ const PrivateRouting = ({
187110
187081
  return react__WEBPACK_IMPORTED_MODULE_0__["createElement"](react_router_dom__WEBPACK_IMPORTED_MODULE_1__["Switch"], null, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](react_router_dom__WEBPACK_IMPORTED_MODULE_1__["Route"], {
187111
187082
  exact: true,
187112
187083
  path: app_constants__WEBPACK_IMPORTED_MODULE_2__["Routing"].Members,
187113
- component: ui_members_MembersList__WEBPACK_IMPORTED_MODULE_4__["default"]
187084
+ component: ui_member_MembersList__WEBPACK_IMPORTED_MODULE_4__["default"]
187114
187085
  }), react__WEBPACK_IMPORTED_MODULE_0__["createElement"](react_router_dom__WEBPACK_IMPORTED_MODULE_1__["Route"], {
187115
187086
  exact: true,
187116
187087
  path: `${app_constants__WEBPACK_IMPORTED_MODULE_2__["Routing"].Documents}`,
@@ -188356,6 +188327,7 @@ class PasswordReset extends react__WEBPACK_IMPORTED_MODULE_0__["Component"] {
188356
188327
  id: passwordId,
188357
188328
  title: "Reset Password",
188358
188329
  onSubmit: this.submit,
188330
+ loading: passwordRequesting,
188359
188331
  submitText: "Save"
188360
188332
  }, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_4___default.a, {
188361
188333
  container: true,
@@ -188376,13 +188348,13 @@ class PasswordReset extends react__WEBPACK_IMPORTED_MODULE_0__["Component"] {
188376
188348
  name: passwordFields.password.name,
188377
188349
  id: passwordFields.password.name,
188378
188350
  placeholder: passwordFields.password.placeholder,
188379
- type: passwordMask ? 'password' : 'text',
188351
+ type: passwordMask ? "password" : "text",
188380
188352
  InputProps: {
188381
188353
  endAdornment: react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_material_ui_core_InputAdornment__WEBPACK_IMPORTED_MODULE_5___default.a, {
188382
188354
  position: "end"
188383
188355
  }, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_material_ui_icons_RemoveRedEye__WEBPACK_IMPORTED_MODULE_8___default.a, {
188384
188356
  style: {
188385
- cursor: 'pointer'
188357
+ cursor: "pointer"
188386
188358
  },
188387
188359
  onClick: this.togglePasswordMask
188388
188360
  }))
@@ -191752,10 +191724,8 @@ class PaypalButton extends react__WEBPACK_IMPORTED_MODULE_0__["Component"] {
191752
191724
  client: braintreeInstance
191753
191725
  }, (paypalCheckoutErr, paypalCheckoutInstance) => {
191754
191726
  if (paypalCheckoutErr) throw paypalCheckoutErr;
191755
- const env = false ? undefined : "sandbox";
191756
- console.log("Loading PayPal env", env);
191757
191727
  paypal_checkout__WEBPACK_IMPORTED_MODULE_4__["Button"].render({
191758
- env,
191728
+ env: "production",
191759
191729
  payment: () => {
191760
191730
  return paypalCheckoutInstance.createPayment({
191761
191731
  flow: 'vault'
@@ -193484,11 +193454,12 @@ const OptionsList = ({
193484
193454
  /*!***************************************!*\
193485
193455
  !*** ./src/ui/common/RenewalForm.tsx ***!
193486
193456
  \***************************************/
193487
- /*! exports provided: default */
193457
+ /*! exports provided: renewalOptions, default */
193488
193458
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
193489
193459
 
193490
193460
  "use strict";
193491
193461
  __webpack_require__.r(__webpack_exports__);
193462
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "renewalOptions", function() { return renewalOptions; });
193492
193463
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
193493
193464
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
193494
193465
  /* harmony import */ var _material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @material-ui/core/Typography */ "./node_modules/@material-ui/core/Typography/index.js");
@@ -193510,6 +193481,22 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
193510
193481
 
193511
193482
 
193512
193483
 
193484
+ const renewalOptions = [{
193485
+ label: "None",
193486
+ value: undefined
193487
+ }, {
193488
+ label: "1 month",
193489
+ value: 1
193490
+ }, {
193491
+ label: "3 months",
193492
+ value: 3
193493
+ }, {
193494
+ label: "6 months",
193495
+ value: 6
193496
+ }, {
193497
+ label: "12 months",
193498
+ value: 12
193499
+ }];
193513
193500
  const formId = "renewal-form";
193514
193501
  const renewalSelectName = `${formId}-renewal-length`;
193515
193502
 
@@ -193550,8 +193537,7 @@ class RenewalForm extends react__WEBPACK_IMPORTED_MODULE_0__["Component"] {
193550
193537
 
193551
193538
  _defineProperty(this, "renderForm", () => {
193552
193539
  const {
193553
- entity,
193554
- renewalOptions
193540
+ entity
193555
193541
  } = this.props;
193556
193542
  return react__WEBPACK_IMPORTED_MODULE_0__["createElement"](react__WEBPACK_IMPORTED_MODULE_0__["Fragment"], null, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_1___default.a, {
193557
193543
  id: `${formId}-entity-name`,
@@ -196991,7 +196977,7 @@ const InvoicesTable = ({
196991
196977
  refunded: undefined,
196992
196978
  pastDue: undefined,
196993
196979
  refundRequested: undefined,
196994
- memberId: memberId
196980
+ memberId: [memberId]
196995
196981
  });
196996
196982
  const [selectedInvoice, setSelectedInvoice] = react__WEBPACK_IMPORTED_MODULE_0__["useState"]();
196997
196983
  const {
@@ -197402,6 +197388,87 @@ const renderInvoiceStatus = invoice => {
197402
197388
 
197403
197389
  /***/ }),
197404
197390
 
197391
+ /***/ "./src/ui/member/CreateMember.tsx":
197392
+ /*!****************************************!*\
197393
+ !*** ./src/ui/member/CreateMember.tsx ***!
197394
+ \****************************************/
197395
+ /*! exports provided: default */
197396
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
197397
+
197398
+ "use strict";
197399
+ __webpack_require__.r(__webpack_exports__);
197400
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
197401
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
197402
+ /* harmony import */ var makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! makerspace-ts-api-client */ "./node_modules/makerspace-ts-api-client/dist/apiClient.js");
197403
+ /* harmony import */ var makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_1__);
197404
+ /* harmony import */ var _hooks_useWriteTransaction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../hooks/useWriteTransaction */ "./src/ui/hooks/useWriteTransaction.ts");
197405
+ /* harmony import */ var _common_ButtonRow__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../common/ButtonRow */ "./src/ui/common/ButtonRow.tsx");
197406
+ /* harmony import */ var _hooks_useModal__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../hooks/useModal */ "./src/ui/hooks/useModal.ts");
197407
+ /* harmony import */ var _reducer_hooks__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../reducer/hooks */ "./src/ui/reducer/hooks.ts");
197408
+ /* harmony import */ var _MemberForm__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./MemberForm */ "./src/ui/member/MemberForm.tsx");
197409
+
197410
+
197411
+
197412
+
197413
+
197414
+
197415
+
197416
+
197417
+ const CreateMember = ({
197418
+ onCreate
197419
+ }) => {
197420
+ const {
197421
+ isOpen,
197422
+ openModal,
197423
+ closeModal
197424
+ } = Object(_hooks_useModal__WEBPACK_IMPORTED_MODULE_4__["default"])();
197425
+ const {
197426
+ currentUser: {
197427
+ isAdmin
197428
+ }
197429
+ } = Object(_reducer_hooks__WEBPACK_IMPORTED_MODULE_5__["useAuthState"])();
197430
+ const formRef = react__WEBPACK_IMPORTED_MODULE_0__["useRef"]();
197431
+ const onSuccess = react__WEBPACK_IMPORTED_MODULE_0__["useCallback"](({
197432
+ response
197433
+ }) => {
197434
+ onCreate(response.data.id);
197435
+ closeModal();
197436
+ }, [onCreate, closeModal]);
197437
+ const {
197438
+ isRequesting,
197439
+ error,
197440
+ call: create
197441
+ } = Object(_hooks_useWriteTransaction__WEBPACK_IMPORTED_MODULE_2__["default"])(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_1__["adminCreateMember"], onSuccess);
197442
+ const onSubmit = react__WEBPACK_IMPORTED_MODULE_0__["useCallback"](async form => {
197443
+ const validUpdate = await formRef.current.validate(form);
197444
+ if (!form.isValid()) return;
197445
+ create({
197446
+ createMemberDetails: validUpdate
197447
+ });
197448
+ }, [formRef, create]);
197449
+ return react__WEBPACK_IMPORTED_MODULE_0__["createElement"](react__WEBPACK_IMPORTED_MODULE_0__["Fragment"], null, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_common_ButtonRow__WEBPACK_IMPORTED_MODULE_3__["ActionButton"], {
197450
+ id: "members-list-create",
197451
+ color: "primary",
197452
+ variant: "contained",
197453
+ disabled: isRequesting,
197454
+ label: "Create New Member",
197455
+ onClick: openModal
197456
+ }), isOpen && react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_MemberForm__WEBPACK_IMPORTED_MODULE_6__["default"], {
197457
+ ref: formRef,
197458
+ isAdmin: isAdmin,
197459
+ isOpen: true,
197460
+ isRequesting: isRequesting,
197461
+ error: error,
197462
+ onClose: closeModal,
197463
+ onSubmit: onSubmit,
197464
+ title: "Create New Member"
197465
+ }));
197466
+ };
197467
+
197468
+ /* harmony default export */ __webpack_exports__["default"] = (CreateMember);
197469
+
197470
+ /***/ }),
197471
+
197405
197472
  /***/ "./src/ui/member/EditMember.tsx":
197406
197473
  /*!**************************************!*\
197407
197474
  !*** ./src/ui/member/EditMember.tsx ***!
@@ -197413,15 +197480,13 @@ const renderInvoiceStatus = invoice => {
197413
197480
  __webpack_require__.r(__webpack_exports__);
197414
197481
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
197415
197482
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
197416
- /* harmony import */ var _hooks_useReadTransaction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../hooks/useReadTransaction */ "./src/ui/hooks/useReadTransaction.ts");
197417
- /* harmony import */ var makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! makerspace-ts-api-client */ "./node_modules/makerspace-ts-api-client/dist/apiClient.js");
197418
- /* harmony import */ var makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_2__);
197419
- /* harmony import */ var _hooks_useWriteTransaction__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../hooks/useWriteTransaction */ "./src/ui/hooks/useWriteTransaction.ts");
197420
- /* harmony import */ var _common_ButtonRow__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../common/ButtonRow */ "./src/ui/common/ButtonRow.tsx");
197421
- /* harmony import */ var _hooks_useModal__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../hooks/useModal */ "./src/ui/hooks/useModal.ts");
197422
- /* harmony import */ var _reducer_hooks__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../reducer/hooks */ "./src/ui/reducer/hooks.ts");
197423
- /* harmony import */ var _MemberForm__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./MemberForm */ "./src/ui/member/MemberForm.tsx");
197424
-
197483
+ /* harmony import */ var makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! makerspace-ts-api-client */ "./node_modules/makerspace-ts-api-client/dist/apiClient.js");
197484
+ /* harmony import */ var makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_1__);
197485
+ /* harmony import */ var _hooks_useWriteTransaction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../hooks/useWriteTransaction */ "./src/ui/hooks/useWriteTransaction.ts");
197486
+ /* harmony import */ var _common_ButtonRow__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../common/ButtonRow */ "./src/ui/common/ButtonRow.tsx");
197487
+ /* harmony import */ var _hooks_useModal__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../hooks/useModal */ "./src/ui/hooks/useModal.ts");
197488
+ /* harmony import */ var _reducer_hooks__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../reducer/hooks */ "./src/ui/reducer/hooks.ts");
197489
+ /* harmony import */ var _MemberForm__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./MemberForm */ "./src/ui/member/MemberForm.tsx");
197425
197490
 
197426
197491
 
197427
197492
 
@@ -197431,59 +197496,57 @@ __webpack_require__.r(__webpack_exports__);
197431
197496
 
197432
197497
 
197433
197498
  const EditMember = ({
197434
- memberId
197499
+ member = {},
197500
+ formOnly,
197501
+ onEdit
197435
197502
  }) => {
197436
197503
  const {
197437
197504
  isOpen,
197438
197505
  openModal,
197439
197506
  closeModal
197440
- } = Object(_hooks_useModal__WEBPACK_IMPORTED_MODULE_5__["default"])();
197507
+ } = Object(_hooks_useModal__WEBPACK_IMPORTED_MODULE_4__["default"])();
197441
197508
  const {
197442
197509
  currentUser: {
197510
+ id,
197443
197511
  isAdmin
197444
197512
  }
197445
- } = Object(_reducer_hooks__WEBPACK_IMPORTED_MODULE_6__["useAuthState"])();
197513
+ } = Object(_reducer_hooks__WEBPACK_IMPORTED_MODULE_5__["useAuthState"])();
197514
+ const asAdmin = isAdmin && member.id !== id;
197446
197515
  const formRef = react__WEBPACK_IMPORTED_MODULE_0__["useRef"]();
197447
- const {
197448
- isRequesting: memberLoading,
197449
- refresh: refreshMember,
197450
- data: member = {}
197451
- } = Object(_hooks_useReadTransaction__WEBPACK_IMPORTED_MODULE_1__["default"])(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_2__["getMember"], {
197452
- id: memberId
197453
- });
197454
197516
  const onSuccess = react__WEBPACK_IMPORTED_MODULE_0__["useCallback"](() => {
197455
- refreshMember();
197456
197517
  closeModal();
197457
- }, [refreshMember, closeModal]);
197518
+ onEdit && onEdit();
197519
+ }, [onEdit, closeModal]);
197458
197520
  const {
197459
197521
  isRequesting: memberUpdating,
197460
197522
  error: updateError,
197461
197523
  call: update
197462
- } = Object(_hooks_useWriteTransaction__WEBPACK_IMPORTED_MODULE_3__["default"])(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_2__["adminUpdateMember"], onSuccess);
197524
+ } = Object(_hooks_useWriteTransaction__WEBPACK_IMPORTED_MODULE_2__["default"])(asAdmin ? makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_1__["adminUpdateMember"] : makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_1__["updateMember"], onSuccess);
197463
197525
  const onSubmit = react__WEBPACK_IMPORTED_MODULE_0__["useCallback"](async form => {
197464
197526
  const validUpdate = await formRef.current.validate(form);
197465
197527
  if (!form.isValid()) return;
197466
197528
  update({
197467
- id: memberId,
197529
+ id: member.id,
197468
197530
  updateMemberDetails: validUpdate
197469
197531
  });
197470
197532
  }, [formRef, update]);
197471
- return react__WEBPACK_IMPORTED_MODULE_0__["createElement"](react__WEBPACK_IMPORTED_MODULE_0__["Fragment"], null, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_common_ButtonRow__WEBPACK_IMPORTED_MODULE_4__["ActionButton"], {
197533
+ return react__WEBPACK_IMPORTED_MODULE_0__["createElement"](react__WEBPACK_IMPORTED_MODULE_0__["Fragment"], null, !formOnly && react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_common_ButtonRow__WEBPACK_IMPORTED_MODULE_3__["ActionButton"], {
197472
197534
  id: "member-detail-open-edit-modal",
197473
197535
  color: "primary",
197474
197536
  variant: "outlined",
197475
- disabled: memberLoading || memberUpdating,
197537
+ disabled: !member.id,
197476
197538
  label: "Edit",
197477
197539
  onClick: openModal
197478
- }), isOpen && react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_MemberForm__WEBPACK_IMPORTED_MODULE_7__["default"], {
197540
+ }), (isOpen || formOnly) && react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_MemberForm__WEBPACK_IMPORTED_MODULE_6__["default"], {
197479
197541
  ref: formRef,
197480
197542
  member: member,
197481
- isAdmin: isAdmin,
197543
+ isAdmin: asAdmin,
197482
197544
  isOpen: true,
197483
197545
  isRequesting: memberUpdating,
197484
197546
  error: updateError,
197485
197547
  onClose: closeModal,
197486
- onSubmit: onSubmit
197548
+ onSubmit: onSubmit,
197549
+ noDialog: formOnly
197487
197550
  }));
197488
197551
  };
197489
197552
 
@@ -197642,11 +197705,13 @@ const MemberProfile = () => {
197642
197705
  label: "Account Settings",
197643
197706
  onClick: goToSettings
197644
197707
  })] : []), ...(isAdmin ? [react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_EditMember__WEBPACK_IMPORTED_MODULE_18__["default"], {
197645
- memberId: memberId,
197646
- key: "edit-member"
197708
+ member: member,
197709
+ key: "edit-member",
197710
+ onEdit: refreshMember
197647
197711
  }), react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_RenewMember__WEBPACK_IMPORTED_MODULE_19__["default"], {
197648
- memberId: memberId,
197649
- key: "renew-member"
197712
+ member: member,
197713
+ key: "renew-member",
197714
+ onRenew: refreshMember
197650
197715
  }), react__WEBPACK_IMPORTED_MODULE_0__["createElement"](ui_accessCards_AccessCardForm__WEBPACK_IMPORTED_MODULE_13__["default"], {
197651
197716
  memberId: memberId,
197652
197717
  key: "card-form"
@@ -197730,6 +197795,7 @@ __webpack_require__.r(__webpack_exports__);
197730
197795
  /* harmony import */ var ui_member_constants__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ui/member/constants */ "./src/ui/member/constants.ts");
197731
197796
  /* harmony import */ var ui_common_Form__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ui/common/Form */ "./src/ui/common/Form.tsx");
197732
197797
  /* harmony import */ var ui_utils_timeToDate__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ui/utils/timeToDate */ "./src/ui/utils/timeToDate.ts");
197798
+ /* harmony import */ var _MemberStatusLabel__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./MemberStatusLabel */ "./src/ui/member/MemberStatusLabel.tsx");
197733
197799
  function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
197734
197800
 
197735
197801
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
@@ -197747,6 +197813,7 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
197747
197813
 
197748
197814
 
197749
197815
 
197816
+
197750
197817
  class MemberForm extends react__WEBPACK_IMPORTED_MODULE_0__["Component"] {
197751
197818
  constructor(props) {
197752
197819
  super(props);
@@ -197775,7 +197842,7 @@ class MemberForm extends react__WEBPACK_IMPORTED_MODULE_0__["Component"] {
197775
197842
 
197776
197843
  _defineProperty(this, "renderFormContents", () => {
197777
197844
  const {
197778
- member,
197845
+ member = {},
197779
197846
  isAdmin
197780
197847
  } = this.props;
197781
197848
  const fields = Object(ui_member_constants__WEBPACK_IMPORTED_MODULE_9__["fields"])(isAdmin, member);
@@ -197837,12 +197904,12 @@ class MemberForm extends react__WEBPACK_IMPORTED_MODULE_0__["Component"] {
197837
197904
  component: "legend"
197838
197905
  }, fields.status.label), react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_material_ui_core_Select__WEBPACK_IMPORTED_MODULE_4___default.a, {
197839
197906
  name: fields.status.name,
197840
- value: member.status,
197907
+ value: member.status || Object.keys(_MemberStatusLabel__WEBPACK_IMPORTED_MODULE_12__["memberStatusLabelMap"])[0],
197841
197908
  fullWidth: true,
197842
197909
  native: true,
197843
197910
  required: true,
197844
197911
  placeholder: fields.status.placeholder
197845
- }, Object.entries(ui_member_constants__WEBPACK_IMPORTED_MODULE_9__["MemberStatusOptions"]).map(([key, value]) => react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("option", {
197912
+ }, Object.entries(_MemberStatusLabel__WEBPACK_IMPORTED_MODULE_12__["memberStatusLabelMap"]).map(([key, value]) => react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("option", {
197846
197913
  id: `${fields.status.name}-option-${Object(lodash_es_kebabCase__WEBPACK_IMPORTED_MODULE_1__["default"])(key)}`,
197847
197914
  key: Object(lodash_es_kebabCase__WEBPACK_IMPORTED_MODULE_1__["default"])(key),
197848
197915
  value: key
@@ -197853,7 +197920,7 @@ class MemberForm extends react__WEBPACK_IMPORTED_MODULE_0__["Component"] {
197853
197920
  component: "legend"
197854
197921
  }, fields.role.label), react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_material_ui_core_Select__WEBPACK_IMPORTED_MODULE_4___default.a, {
197855
197922
  name: fields.role.name,
197856
- value: member.role,
197923
+ value: member.role || Object.keys(ui_member_constants__WEBPACK_IMPORTED_MODULE_9__["MemberRoleOptions"])[0],
197857
197924
  fullWidth: true,
197858
197925
  native: true,
197859
197926
  required: true,
@@ -198014,6 +198081,152 @@ const MemberStatusLabel = ({
198014
198081
 
198015
198082
  /***/ }),
198016
198083
 
198084
+ /***/ "./src/ui/member/MembersList.tsx":
198085
+ /*!***************************************!*\
198086
+ !*** ./src/ui/member/MembersList.tsx ***!
198087
+ \***************************************/
198088
+ /*! exports provided: default */
198089
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
198090
+
198091
+ "use strict";
198092
+ __webpack_require__.r(__webpack_exports__);
198093
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
198094
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
198095
+ /* harmony import */ var use_react_router__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! use-react-router */ "./node_modules/use-react-router/use-react-router.js");
198096
+ /* harmony import */ var use_react_router__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(use_react_router__WEBPACK_IMPORTED_MODULE_1__);
198097
+ /* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-router-dom */ "./node_modules/react-router-dom/esm/react-router-dom.js");
198098
+ /* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/core/Grid */ "./node_modules/@material-ui/core/Grid/index.js");
198099
+ /* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_3__);
198100
+ /* harmony import */ var _material_ui_core_FormControlLabel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @material-ui/core/FormControlLabel */ "./node_modules/@material-ui/core/FormControlLabel/index.js");
198101
+ /* harmony import */ var _material_ui_core_FormControlLabel__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_FormControlLabel__WEBPACK_IMPORTED_MODULE_4__);
198102
+ /* harmony import */ var _material_ui_core_Checkbox__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @material-ui/core/Checkbox */ "./node_modules/@material-ui/core/Checkbox/index.js");
198103
+ /* harmony import */ var _material_ui_core_Checkbox__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Checkbox__WEBPACK_IMPORTED_MODULE_5__);
198104
+ /* harmony import */ var ui_member_utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ui/member/utils */ "./src/ui/member/utils.ts");
198105
+ /* harmony import */ var ui_common_table_constants__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ui/common/table/constants */ "./src/ui/common/table/constants.ts");
198106
+ /* harmony import */ var ui_member_MemberStatusLabel__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ui/member/MemberStatusLabel */ "./src/ui/member/MemberStatusLabel.tsx");
198107
+ /* harmony import */ var makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! makerspace-ts-api-client */ "./node_modules/makerspace-ts-api-client/dist/apiClient.js");
198108
+ /* harmony import */ var makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_9__);
198109
+ /* harmony import */ var ui_member_CreateMember__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ui/member/CreateMember */ "./src/ui/member/CreateMember.tsx");
198110
+ /* harmony import */ var ui_member_RenewMember__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ui/member/RenewMember */ "./src/ui/member/RenewMember.tsx");
198111
+ /* harmony import */ var _utils_extractTotalItems__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../utils/extractTotalItems */ "./src/ui/utils/extractTotalItems.ts");
198112
+ /* harmony import */ var ui_hooks_useReadTransaction__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ui/hooks/useReadTransaction */ "./src/ui/hooks/useReadTransaction.ts");
198113
+ /* harmony import */ var _common_table_StatefulTable__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../common/table/StatefulTable */ "./src/ui/common/table/StatefulTable.tsx");
198114
+ /* harmony import */ var _common_Filters_QueryContext__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../common/Filters/QueryContext */ "./src/ui/common/Filters/QueryContext.tsx");
198115
+ /* harmony import */ var ui_reducer_hooks__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ui/reducer/hooks */ "./src/ui/reducer/hooks.ts");
198116
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
198117
+
198118
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
198119
+
198120
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
198121
+
198122
+
198123
+
198124
+
198125
+
198126
+
198127
+
198128
+
198129
+
198130
+
198131
+
198132
+
198133
+
198134
+
198135
+
198136
+
198137
+
198138
+
198139
+ const fields = [{
198140
+ id: "lastname",
198141
+ label: "Name",
198142
+ cell: row => react__WEBPACK_IMPORTED_MODULE_0__["createElement"](react_router_dom__WEBPACK_IMPORTED_MODULE_2__["Link"], {
198143
+ to: `/members/${row.id}`
198144
+ }, row.firstname, " ", row.lastname),
198145
+ defaultSortDirection: ui_common_table_constants__WEBPACK_IMPORTED_MODULE_7__["SortDirection"].Desc
198146
+ }, {
198147
+ id: "expirationTime",
198148
+ label: "Expiration",
198149
+ cell: ui_member_utils__WEBPACK_IMPORTED_MODULE_6__["displayMemberExpiration"],
198150
+ defaultSortDirection: ui_common_table_constants__WEBPACK_IMPORTED_MODULE_7__["SortDirection"].Desc
198151
+ }, {
198152
+ id: "status",
198153
+ label: "Status",
198154
+ cell: row => react__WEBPACK_IMPORTED_MODULE_0__["createElement"](ui_member_MemberStatusLabel__WEBPACK_IMPORTED_MODULE_8__["default"], {
198155
+ member: row
198156
+ })
198157
+ }];
198158
+
198159
+ const rowId = member => member.id;
198160
+
198161
+ const MembersList = () => {
198162
+ const [selectedId, setSelectedId] = react__WEBPACK_IMPORTED_MODULE_0__["useState"]();
198163
+ const {
198164
+ history
198165
+ } = use_react_router__WEBPACK_IMPORTED_MODULE_1___default()();
198166
+ const {
198167
+ params
198168
+ } = Object(_common_Filters_QueryContext__WEBPACK_IMPORTED_MODULE_15__["useQueryContext"])();
198169
+ const {
198170
+ currentUser: {
198171
+ isAdmin
198172
+ }
198173
+ } = Object(ui_reducer_hooks__WEBPACK_IMPORTED_MODULE_16__["useAuthState"])();
198174
+ const [currentMembers, setCurrentMembers] = react__WEBPACK_IMPORTED_MODULE_0__["useState"](true);
198175
+ const updateFilter = react__WEBPACK_IMPORTED_MODULE_0__["useCallback"](() => setCurrentMembers(curr => !curr), [setCurrentMembers]);
198176
+ const {
198177
+ isRequesting,
198178
+ data: members = [],
198179
+ response,
198180
+ refresh,
198181
+ error
198182
+ } = Object(ui_hooks_useReadTransaction__WEBPACK_IMPORTED_MODULE_13__["default"])(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_9__["listMembers"], _objectSpread({}, params));
198183
+ const onRenew = react__WEBPACK_IMPORTED_MODULE_0__["useCallback"](() => {
198184
+ refresh();
198185
+ }, [refresh]);
198186
+ const onCreate = react__WEBPACK_IMPORTED_MODULE_0__["useCallback"](id => {
198187
+ history.push(Object(ui_member_utils__WEBPACK_IMPORTED_MODULE_6__["buildProfileRouting"])(id));
198188
+ }, [history]);
198189
+ const selectedMember = members.find(member => member.id === selectedId);
198190
+ return react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_3___default.a, {
198191
+ container: true,
198192
+ spacing: 24,
198193
+ justify: "center"
198194
+ }, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_3___default.a, {
198195
+ item: true,
198196
+ md: 10,
198197
+ xs: 12
198198
+ }, isAdmin && react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_3___default.a, null, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](ui_member_CreateMember__WEBPACK_IMPORTED_MODULE_10__["default"], {
198199
+ onCreate: onCreate
198200
+ }), react__WEBPACK_IMPORTED_MODULE_0__["createElement"](ui_member_RenewMember__WEBPACK_IMPORTED_MODULE_11__["default"], {
198201
+ member: selectedMember,
198202
+ onRenew: onRenew
198203
+ }), react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_material_ui_core_FormControlLabel__WEBPACK_IMPORTED_MODULE_4___default.a, {
198204
+ control: react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_material_ui_core_Checkbox__WEBPACK_IMPORTED_MODULE_5___default.a, {
198205
+ color: "primary",
198206
+ value: "true",
198207
+ checked: !!currentMembers,
198208
+ onChange: updateFilter
198209
+ }),
198210
+ label: "View only current members"
198211
+ })), react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_common_table_StatefulTable__WEBPACK_IMPORTED_MODULE_14__["default"], {
198212
+ id: "members-table",
198213
+ title: "Members",
198214
+ loading: isRequesting,
198215
+ data: Object.values(members),
198216
+ error: error,
198217
+ totalItems: Object(_utils_extractTotalItems__WEBPACK_IMPORTED_MODULE_12__["default"])(response),
198218
+ selectedIds: selectedId,
198219
+ setSelectedIds: setSelectedId,
198220
+ columns: fields,
198221
+ rowId: rowId,
198222
+ renderSearch: true
198223
+ })));
198224
+ };
198225
+
198226
+ /* harmony default export */ __webpack_exports__["default"] = (MembersList);
198227
+
198228
+ /***/ }),
198229
+
198017
198230
  /***/ "./src/ui/member/NotificationModal.tsx":
198018
198231
  /*!*********************************************!*\
198019
198232
  !*** ./src/ui/member/NotificationModal.tsx ***!
@@ -198105,17 +198318,13 @@ const NotificationModal = ({
198105
198318
  __webpack_require__.r(__webpack_exports__);
198106
198319
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
198107
198320
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
198108
- /* harmony import */ var ui_members_constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ui/members/constants */ "./src/ui/members/constants.ts");
198109
- /* harmony import */ var ui_member_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ui/member/utils */ "./src/ui/member/utils.ts");
198110
- /* harmony import */ var ui_common_RenewalForm__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ui/common/RenewalForm */ "./src/ui/common/RenewalForm.tsx");
198111
- /* harmony import */ var _hooks_useReadTransaction__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../hooks/useReadTransaction */ "./src/ui/hooks/useReadTransaction.ts");
198112
- /* harmony import */ var makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! makerspace-ts-api-client */ "./node_modules/makerspace-ts-api-client/dist/apiClient.js");
198113
- /* harmony import */ var makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_5__);
198114
- /* harmony import */ var _hooks_useWriteTransaction__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../hooks/useWriteTransaction */ "./src/ui/hooks/useWriteTransaction.ts");
198115
- /* harmony import */ var _common_ButtonRow__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../common/ButtonRow */ "./src/ui/common/ButtonRow.tsx");
198116
- /* harmony import */ var _hooks_useModal__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../hooks/useModal */ "./src/ui/hooks/useModal.ts");
198117
-
198118
-
198321
+ /* harmony import */ var ui_member_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ui/member/utils */ "./src/ui/member/utils.ts");
198322
+ /* harmony import */ var ui_common_RenewalForm__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ui/common/RenewalForm */ "./src/ui/common/RenewalForm.tsx");
198323
+ /* harmony import */ var makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! makerspace-ts-api-client */ "./node_modules/makerspace-ts-api-client/dist/apiClient.js");
198324
+ /* harmony import */ var makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_3__);
198325
+ /* harmony import */ var _hooks_useWriteTransaction__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../hooks/useWriteTransaction */ "./src/ui/hooks/useWriteTransaction.ts");
198326
+ /* harmony import */ var _common_ButtonRow__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../common/ButtonRow */ "./src/ui/common/ButtonRow.tsx");
198327
+ /* harmony import */ var _hooks_useModal__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../hooks/useModal */ "./src/ui/hooks/useModal.ts");
198119
198328
 
198120
198329
 
198121
198330
 
@@ -198125,53 +198334,46 @@ __webpack_require__.r(__webpack_exports__);
198125
198334
 
198126
198335
 
198127
198336
  const RenewMember = ({
198128
- memberId
198337
+ member = {},
198338
+ onRenew
198129
198339
  }) => {
198130
198340
  const {
198131
198341
  isOpen,
198132
198342
  openModal,
198133
198343
  closeModal
198134
- } = Object(_hooks_useModal__WEBPACK_IMPORTED_MODULE_8__["default"])();
198344
+ } = Object(_hooks_useModal__WEBPACK_IMPORTED_MODULE_6__["default"])();
198135
198345
  const formRef = react__WEBPACK_IMPORTED_MODULE_0__["useRef"]();
198136
- const {
198137
- isRequesting: memberLoading,
198138
- refresh: refreshMember,
198139
- data: member
198140
- } = Object(_hooks_useReadTransaction__WEBPACK_IMPORTED_MODULE_4__["default"])(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_5__["getMember"], {
198141
- id: memberId
198142
- });
198143
198346
  const onSuccess = react__WEBPACK_IMPORTED_MODULE_0__["useCallback"](({
198144
198347
  reset
198145
198348
  }) => {
198146
- refreshMember();
198147
198349
  closeModal();
198350
+ onRenew();
198148
198351
  reset();
198149
- }, [refreshMember, closeModal]);
198352
+ }, [closeModal]);
198150
198353
  const {
198151
198354
  isRequesting: memberRenewing,
198152
198355
  error: renewError,
198153
198356
  call: renew
198154
- } = Object(_hooks_useWriteTransaction__WEBPACK_IMPORTED_MODULE_6__["default"])(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_5__["adminUpdateMember"], onSuccess);
198357
+ } = Object(_hooks_useWriteTransaction__WEBPACK_IMPORTED_MODULE_4__["default"])(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_3__["adminUpdateMember"], onSuccess);
198155
198358
  const onSubmit = react__WEBPACK_IMPORTED_MODULE_0__["useCallback"](async form => {
198156
198359
  const validUpdate = await formRef.current.validate(form);
198157
198360
  if (!form.isValid()) return;
198158
198361
  renew({
198159
- id: memberId,
198362
+ id: member.id,
198160
198363
  updateMemberDetails: validUpdate
198161
198364
  });
198162
- }, [formRef, renew]);
198163
- return react__WEBPACK_IMPORTED_MODULE_0__["createElement"](react__WEBPACK_IMPORTED_MODULE_0__["Fragment"], null, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_common_ButtonRow__WEBPACK_IMPORTED_MODULE_7__["ActionButton"], {
198164
- id: "member-detail-open-renew-modal",
198365
+ }, [formRef, renew, member]);
198366
+ return react__WEBPACK_IMPORTED_MODULE_0__["createElement"](react__WEBPACK_IMPORTED_MODULE_0__["Fragment"], null, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_common_ButtonRow__WEBPACK_IMPORTED_MODULE_5__["ActionButton"], {
198367
+ id: "members-list-renew",
198165
198368
  color: "primary",
198166
- variant: "contained",
198167
- disabled: memberLoading || memberRenewing,
198369
+ variant: "outlined",
198370
+ disabled: !member.id,
198168
198371
  label: "Renew",
198169
198372
  onClick: openModal
198170
- }), isOpen && react__WEBPACK_IMPORTED_MODULE_0__["createElement"](ui_common_RenewalForm__WEBPACK_IMPORTED_MODULE_3__["default"], {
198373
+ }), isOpen && react__WEBPACK_IMPORTED_MODULE_0__["createElement"](ui_common_RenewalForm__WEBPACK_IMPORTED_MODULE_2__["default"], {
198171
198374
  ref: formRef,
198172
- renewalOptions: ui_members_constants__WEBPACK_IMPORTED_MODULE_1__["membershipRenewalOptions"],
198173
198375
  title: "Renew Membership",
198174
- entity: Object(ui_member_utils__WEBPACK_IMPORTED_MODULE_2__["memberToRenewal"])(member),
198376
+ entity: Object(ui_member_utils__WEBPACK_IMPORTED_MODULE_1__["memberToRenewal"])(member),
198175
198377
  isOpen: true,
198176
198378
  isRequesting: memberRenewing,
198177
198379
  error: renewError,
@@ -198184,295 +198386,16 @@ const RenewMember = ({
198184
198386
 
198185
198387
  /***/ }),
198186
198388
 
198187
- /***/ "./src/ui/member/UpdateMemberContainer.tsx":
198188
- /*!*************************************************!*\
198189
- !*** ./src/ui/member/UpdateMemberContainer.tsx ***!
198190
- \*************************************************/
198191
- /*! exports provided: default */
198192
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
198193
-
198194
- "use strict";
198195
- __webpack_require__.r(__webpack_exports__);
198196
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
198197
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
198198
- /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-redux */ "./node_modules/react-redux/es/index.js");
198199
- /* harmony import */ var app_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! app/constants */ "./src/app/constants.ts");
198200
- /* harmony import */ var ui_member_actions__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ui/member/actions */ "./src/ui/member/actions.ts");
198201
- /* harmony import */ var ui_members_actions__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ui/members/actions */ "./src/ui/members/actions.ts");
198202
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
198203
-
198204
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
198205
-
198206
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
198207
-
198208
-
198209
-
198210
-
198211
-
198212
-
198213
-
198214
- class EditMember extends react__WEBPACK_IMPORTED_MODULE_0__["Component"] {
198215
- constructor(...args) {
198216
- super(...args);
198217
-
198218
- _defineProperty(this, "formRef", void 0);
198219
-
198220
- _defineProperty(this, "setFormRef", ref => this.formRef = ref);
198221
-
198222
- _defineProperty(this, "submitMemberForm", async form => {
198223
- const validUpdate = await this.formRef.validate(form);
198224
- if (!form.isValid()) return;
198225
- return await this.props.dispatchMember(validUpdate, this.props.isAdmin);
198226
- });
198227
- }
198228
-
198229
- componentDidUpdate(prevProps) {
198230
- const {
198231
- isRequesting: wasRequesting
198232
- } = prevProps;
198233
- const {
198234
- isOpen,
198235
- isRequesting,
198236
- closeHandler,
198237
- error
198238
- } = this.props;
198239
-
198240
- if (isOpen && wasRequesting && !isRequesting && !error) {
198241
- closeHandler();
198242
- }
198243
- }
198244
-
198245
- render() {
198246
- const {
198247
- render
198248
- } = this.props;
198249
-
198250
- const renderPayload = _objectSpread({}, this.props, {
198251
- submit: this.submitMemberForm,
198252
- setRef: this.setFormRef
198253
- });
198254
-
198255
- return render(renderPayload);
198256
- }
198257
-
198258
- }
198259
-
198260
- const mapStateToProps = (state, ownProps) => {
198261
- const {
198262
- isRequesting: isUpdating,
198263
- error: updateError
198264
- } = state.member.update;
198265
- const {
198266
- isRequesting: isCreating,
198267
- error: createError
198268
- } = state.members.create;
198269
- const {
198270
- currentUser: {
198271
- isAdmin
198272
- }
198273
- } = state.auth;
198274
- return {
198275
- isAdmin,
198276
- isRequesting: ownProps.member && ownProps.member.id ? isUpdating : isCreating,
198277
- error: ownProps.member && ownProps.member.id ? updateError : createError
198278
- };
198279
- };
198280
-
198281
- const mapDispatchToProps = (dispatch, ownProps) => {
198282
- const {
198283
- member,
198284
- operation
198285
- } = ownProps;
198286
- return {
198287
- dispatchMember: (memberDetails, isAdmin) => {
198288
- let action;
198289
-
198290
- switch (operation) {
198291
- case app_constants__WEBPACK_IMPORTED_MODULE_2__["CrudOperation"].Update:
198292
- action = Object(ui_member_actions__WEBPACK_IMPORTED_MODULE_3__["updateMemberAction"])(member.id, memberDetails, isAdmin);
198293
- break;
198294
-
198295
- case app_constants__WEBPACK_IMPORTED_MODULE_2__["CrudOperation"].Create:
198296
- action = Object(ui_members_actions__WEBPACK_IMPORTED_MODULE_4__["createMembersAction"])(memberDetails);
198297
- break;
198298
- }
198299
-
198300
- return dispatch(action);
198301
- }
198302
- };
198303
- };
198304
-
198305
- /* harmony default export */ __webpack_exports__["default"] = (Object(react_redux__WEBPACK_IMPORTED_MODULE_1__["connect"])(mapStateToProps, mapDispatchToProps)(EditMember));
198306
-
198307
- /***/ }),
198308
-
198309
- /***/ "./src/ui/member/actions.ts":
198310
- /*!**********************************!*\
198311
- !*** ./src/ui/member/actions.ts ***!
198312
- \**********************************/
198313
- /*! exports provided: readMemberAction, updateMemberAction, memberReducer */
198314
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
198315
-
198316
- "use strict";
198317
- __webpack_require__.r(__webpack_exports__);
198318
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "readMemberAction", function() { return readMemberAction; });
198319
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "updateMemberAction", function() { return updateMemberAction; });
198320
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "memberReducer", function() { return memberReducer; });
198321
- /* harmony import */ var ui_member_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ui/member/constants */ "./src/ui/member/constants.ts");
198322
- /* harmony import */ var makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! makerspace-ts-api-client */ "./node_modules/makerspace-ts-api-client/dist/apiClient.js");
198323
- /* harmony import */ var makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_1__);
198324
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
198325
-
198326
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
198327
-
198328
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
198329
-
198330
-
198331
-
198332
- const readMemberAction = memberId => async dispatch => {
198333
- dispatch({
198334
- type: ui_member_constants__WEBPACK_IMPORTED_MODULE_0__["Action"].StartReadRequest
198335
- });
198336
- const result = await Object(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_1__["getMember"])({
198337
- id: memberId
198338
- });
198339
-
198340
- if (Object(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_1__["isApiErrorResponse"])(result)) {
198341
- dispatch({
198342
- type: ui_member_constants__WEBPACK_IMPORTED_MODULE_0__["Action"].GetMemberFailure,
198343
- error: result.error.message
198344
- });
198345
- } else {
198346
- dispatch({
198347
- type: ui_member_constants__WEBPACK_IMPORTED_MODULE_0__["Action"].GetMemberSuccess,
198348
- data: result.data
198349
- });
198350
- }
198351
- };
198352
- const updateMemberAction = (memberId, updateDetails, isAdmin = false) => async dispatch => {
198353
- dispatch({
198354
- type: ui_member_constants__WEBPACK_IMPORTED_MODULE_0__["Action"].StartUpdateRequest
198355
- });
198356
- let updatedMember;
198357
- let result;
198358
-
198359
- if (isAdmin) {
198360
- result = await Object(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_1__["adminUpdateMember"])({
198361
- id: memberId,
198362
- updateMemberDetails: updateDetails
198363
- });
198364
- } else {
198365
- result = await Object(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_1__["updateMember"])({
198366
- id: memberId,
198367
- updateMemberDetails: updateDetails
198368
- });
198369
- }
198370
-
198371
- if (Object(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_1__["isApiErrorResponse"])(result)) {
198372
- dispatch({
198373
- type: ui_member_constants__WEBPACK_IMPORTED_MODULE_0__["Action"].UpdateMemberFailure,
198374
- error: result.error.message
198375
- });
198376
- } else {
198377
- updatedMember = result.data;
198378
- dispatch({
198379
- type: ui_member_constants__WEBPACK_IMPORTED_MODULE_0__["Action"].UpdateMemberSuccess,
198380
- data: updatedMember
198381
- });
198382
- }
198383
-
198384
- return updatedMember;
198385
- };
198386
- const defaultState = {
198387
- entity: undefined,
198388
- read: {
198389
- isRequesting: false,
198390
- error: ""
198391
- },
198392
- update: {
198393
- isRequesting: false,
198394
- error: ""
198395
- }
198396
- };
198397
- const memberReducer = (state = defaultState, action) => {
198398
- let error;
198399
-
198400
- switch (action.type) {
198401
- case ui_member_constants__WEBPACK_IMPORTED_MODULE_0__["Action"].StartReadRequest:
198402
- return _objectSpread({}, state, {
198403
- read: _objectSpread({}, state.read, {
198404
- isRequesting: true
198405
- })
198406
- });
198407
-
198408
- case ui_member_constants__WEBPACK_IMPORTED_MODULE_0__["Action"].GetMemberSuccess:
198409
- const {
198410
- data: member
198411
- } = action;
198412
- return _objectSpread({}, state, {
198413
- entity: member,
198414
- read: _objectSpread({}, state.read, {
198415
- isRequesting: false,
198416
- error: ""
198417
- })
198418
- });
198419
-
198420
- case ui_member_constants__WEBPACK_IMPORTED_MODULE_0__["Action"].GetMemberFailure:
198421
- error = action.error;
198422
- return _objectSpread({}, state, {
198423
- read: _objectSpread({}, state.read, {
198424
- isRequesting: false,
198425
- error
198426
- })
198427
- });
198428
-
198429
- case ui_member_constants__WEBPACK_IMPORTED_MODULE_0__["Action"].StartUpdateRequest:
198430
- return _objectSpread({}, state, {
198431
- update: _objectSpread({}, state.update, {
198432
- isRequesting: true
198433
- })
198434
- });
198435
-
198436
- case ui_member_constants__WEBPACK_IMPORTED_MODULE_0__["Action"].UpdateMemberSuccess:
198437
- const {
198438
- data: updatedMemebr
198439
- } = action;
198440
- return _objectSpread({}, state, {
198441
- entity: updatedMemebr,
198442
- update: _objectSpread({}, state.update, {
198443
- isRequesting: false,
198444
- error: ""
198445
- })
198446
- });
198447
-
198448
- case ui_member_constants__WEBPACK_IMPORTED_MODULE_0__["Action"].UpdateMemberFailure:
198449
- error = action.error;
198450
- return _objectSpread({}, state, {
198451
- update: _objectSpread({}, state.update, {
198452
- isRequesting: false,
198453
- error
198454
- })
198455
- });
198456
-
198457
- default:
198458
- return state;
198459
- }
198460
- };
198461
-
198462
- /***/ }),
198463
-
198464
198389
  /***/ "./src/ui/member/constants.ts":
198465
198390
  /*!************************************!*\
198466
198391
  !*** ./src/ui/member/constants.ts ***!
198467
198392
  \************************************/
198468
- /*! exports provided: Action, fields, MemberStatusOptions, MemberRoleOptions, getDetailsForMember */
198393
+ /*! exports provided: fields, MemberRoleOptions, getDetailsForMember */
198469
198394
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
198470
198395
 
198471
198396
  "use strict";
198472
198397
  __webpack_require__.r(__webpack_exports__);
198473
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Action", function() { return Action; });
198474
198398
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fields", function() { return fields; });
198475
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MemberStatusOptions", function() { return MemberStatusOptions; });
198476
198399
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MemberRoleOptions", function() { return MemberRoleOptions; });
198477
198400
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getDetailsForMember", function() { return getDetailsForMember; });
198478
198401
  /* harmony import */ var app_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! app/utils */ "./src/app/utils.ts");
@@ -198487,17 +198410,6 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
198487
198410
 
198488
198411
 
198489
198412
 
198490
- let Action;
198491
-
198492
- (function (Action) {
198493
- Action["StartReadRequest"] = "MEMBER/START_READ_REQUEST";
198494
- Action["GetMemberSuccess"] = "MEMBER/GET_MEMBER_SUCCESS";
198495
- Action["GetMemberFailure"] = "MEMBER/GET_MEMBER_FAILURE";
198496
- Action["StartUpdateRequest"] = "MEMBER/START_UPDATE_REQUEST";
198497
- Action["UpdateMemberSuccess"] = "MEMBER/UPDATE_MEMBER_SUCCESS";
198498
- Action["UpdateMemberFailure"] = "MEMBER/UPDATE_MEMBER_FAILURE";
198499
- })(Action || (Action = {}));
198500
-
198501
198413
  const formPrefix = "member-form";
198502
198414
  const fields = (admin, member) => _objectSpread({
198503
198415
  firstname: {
@@ -198559,12 +198471,6 @@ const fields = (admin, member) => _objectSpread({
198559
198471
  error: "Member must sign contract"
198560
198472
  }
198561
198473
  }));
198562
- const MemberStatusOptions = {
198563
- [app_entities_member__WEBPACK_IMPORTED_MODULE_1__["MemberStatus"].Active]: "Active",
198564
- [app_entities_member__WEBPACK_IMPORTED_MODULE_1__["MemberStatus"].Revoked]: "Revoked",
198565
- [app_entities_member__WEBPACK_IMPORTED_MODULE_1__["MemberStatus"].NonMember]: "Non-Member",
198566
- [app_entities_member__WEBPACK_IMPORTED_MODULE_1__["MemberStatus"].Inactive]: "Inactive"
198567
- };
198568
198474
  const MemberRoleOptions = {
198569
198475
  [app_entities_member__WEBPACK_IMPORTED_MODULE_1__["MemberRole"].Member]: "Member",
198570
198476
  [app_entities_member__WEBPACK_IMPORTED_MODULE_1__["MemberRole"].Admin]: "Admin"
@@ -198661,10 +198567,10 @@ const buildProfileRouting = memberId => {
198661
198567
 
198662
198568
  /***/ }),
198663
198569
 
198664
- /***/ "./src/ui/members/MembersList.tsx":
198665
- /*!****************************************!*\
198666
- !*** ./src/ui/members/MembersList.tsx ***!
198667
- \****************************************/
198570
+ /***/ "./src/ui/membership/ChangePaymentMethodModal.tsx":
198571
+ /*!********************************************************!*\
198572
+ !*** ./src/ui/membership/ChangePaymentMethodModal.tsx ***!
198573
+ \********************************************************/
198668
198574
  /*! exports provided: default */
198669
198575
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
198670
198576
 
@@ -198672,30 +198578,13 @@ const buildProfileRouting = memberId => {
198672
198578
  __webpack_require__.r(__webpack_exports__);
198673
198579
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
198674
198580
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
198675
- /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-redux */ "./node_modules/react-redux/es/index.js");
198676
- /* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-router-dom */ "./node_modules/react-router-dom/esm/react-router-dom.js");
198677
- /* harmony import */ var connected_react_router__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! connected-react-router */ "./node_modules/connected-react-router/esm/index.js");
198678
- /* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @material-ui/core/Grid */ "./node_modules/@material-ui/core/Grid/index.js");
198679
- /* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_4__);
198680
- /* harmony import */ var _material_ui_core_FormControlLabel__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @material-ui/core/FormControlLabel */ "./node_modules/@material-ui/core/FormControlLabel/index.js");
198681
- /* harmony import */ var _material_ui_core_FormControlLabel__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_FormControlLabel__WEBPACK_IMPORTED_MODULE_5__);
198682
- /* harmony import */ var _material_ui_core_Checkbox__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @material-ui/core/Checkbox */ "./node_modules/@material-ui/core/Checkbox/index.js");
198683
- /* harmony import */ var _material_ui_core_Checkbox__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Checkbox__WEBPACK_IMPORTED_MODULE_6__);
198684
- /* harmony import */ var lodash_es_isUndefined__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! lodash-es/isUndefined */ "./node_modules/lodash-es/isUndefined.js");
198685
- /* harmony import */ var app_entities_member__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! app/entities/member */ "./src/app/entities/member.ts");
198686
- /* harmony import */ var ui_member_utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ui/member/utils */ "./src/ui/member/utils.ts");
198687
- /* harmony import */ var ui_common_ButtonRow__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ui/common/ButtonRow */ "./src/ui/common/ButtonRow.tsx");
198688
- /* harmony import */ var ui_common_table_constants__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ui/common/table/constants */ "./src/ui/common/table/constants.ts");
198689
- /* harmony import */ var ui_common_table_TableContainer__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ui/common/table/TableContainer */ "./src/ui/common/table/TableContainer.tsx");
198690
- /* harmony import */ var ui_common_RenewalForm__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ui/common/RenewalForm */ "./src/ui/common/RenewalForm.tsx");
198691
- /* harmony import */ var ui_members_actions__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ui/members/actions */ "./src/ui/members/actions.ts");
198692
- /* harmony import */ var ui_members_constants__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ui/members/constants */ "./src/ui/members/constants.ts");
198693
- /* harmony import */ var ui_member_MemberStatusLabel__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ui/member/MemberStatusLabel */ "./src/ui/member/MemberStatusLabel.tsx");
198694
- /* harmony import */ var ui_member_actions__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ui/member/actions */ "./src/ui/member/actions.ts");
198695
- /* harmony import */ var ui_member_MemberForm__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ui/member/MemberForm */ "./src/ui/member/MemberForm.tsx");
198696
- /* harmony import */ var ui_member_UpdateMemberContainer__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ui/member/UpdateMemberContainer */ "./src/ui/member/UpdateMemberContainer.tsx");
198697
- /* harmony import */ var app_constants__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! app/constants */ "./src/app/constants.ts");
198698
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
198581
+ /* harmony import */ var ui_common_FormModal__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ui/common/FormModal */ "./src/ui/common/FormModal.tsx");
198582
+ /* harmony import */ var makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! makerspace-ts-api-client */ "./node_modules/makerspace-ts-api-client/dist/apiClient.js");
198583
+ /* harmony import */ var makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_2__);
198584
+ /* harmony import */ var _hooks_useWriteTransaction__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../hooks/useWriteTransaction */ "./src/ui/hooks/useWriteTransaction.ts");
198585
+ /* harmony import */ var _common_ButtonRow__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../common/ButtonRow */ "./src/ui/common/ButtonRow.tsx");
198586
+ /* harmony import */ var _hooks_useModal__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../hooks/useModal */ "./src/ui/hooks/useModal.ts");
198587
+ /* harmony import */ var _checkout_PaymentMethodsContainer__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../checkout/PaymentMethodsContainer */ "./src/ui/checkout/PaymentMethodsContainer.tsx");
198699
198588
 
198700
198589
 
198701
198590
 
@@ -198704,12 +198593,86 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
198704
198593
 
198705
198594
 
198706
198595
 
198596
+ const ChangePaymentMethodModal = ({
198597
+ subscription: {
198598
+ id: subscriptionId,
198599
+ paymentMethodToken
198600
+ } = {}
198601
+ }) => {
198602
+ const {
198603
+ isOpen,
198604
+ openModal,
198605
+ closeModal
198606
+ } = Object(_hooks_useModal__WEBPACK_IMPORTED_MODULE_5__["default"])();
198607
+ const [paymentMethodId, setPaymentMethodId] = react__WEBPACK_IMPORTED_MODULE_0__["useState"]();
198608
+ const {
198609
+ isRequesting,
198610
+ error,
198611
+ call
198612
+ } = Object(_hooks_useWriteTransaction__WEBPACK_IMPORTED_MODULE_3__["default"])(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_2__["updateSubscription"], () => {
198613
+ closeModal();
198614
+ });
198615
+ const onSubmit = react__WEBPACK_IMPORTED_MODULE_0__["useCallback"](async () => {
198616
+ paymentMethodId && call({
198617
+ id: subscriptionId,
198618
+ updateSubscriptionDetails: {
198619
+ paymentMethodToken: paymentMethodId
198620
+ }
198621
+ });
198622
+ }, [call, subscriptionId, paymentMethodId]);
198707
198623
 
198624
+ if (!subscriptionId) {
198625
+ return null;
198626
+ }
198708
198627
 
198628
+ return react__WEBPACK_IMPORTED_MODULE_0__["createElement"](react__WEBPACK_IMPORTED_MODULE_0__["Fragment"], null, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_common_ButtonRow__WEBPACK_IMPORTED_MODULE_4__["ActionButton"], {
198629
+ id: "subscription-option-payment-method",
198630
+ color: "primary",
198631
+ variant: "contained",
198632
+ disabled: isRequesting || !!error,
198633
+ label: "Change Payment Method",
198634
+ onClick: openModal
198635
+ }), isOpen && react__WEBPACK_IMPORTED_MODULE_0__["createElement"](ui_common_FormModal__WEBPACK_IMPORTED_MODULE_1__["default"], {
198636
+ id: "change-payment-method",
198637
+ isOpen: true,
198638
+ closeHandler: closeModal,
198639
+ onSubmit: onSubmit,
198640
+ loading: isRequesting,
198641
+ error: error
198642
+ }, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_checkout_PaymentMethodsContainer__WEBPACK_IMPORTED_MODULE_6__["default"], {
198643
+ onPaymentMethodChange: setPaymentMethodId,
198644
+ title: "Select or add a new payment method",
198645
+ paymentMethodToken: paymentMethodToken
198646
+ })));
198647
+ };
198709
198648
 
198649
+ /* harmony default export */ __webpack_exports__["default"] = (ChangePaymentMethodModal);
198710
198650
 
198651
+ /***/ }),
198711
198652
 
198653
+ /***/ "./src/ui/membership/DuplicateInvoiceModal.tsx":
198654
+ /*!*****************************************************!*\
198655
+ !*** ./src/ui/membership/DuplicateInvoiceModal.tsx ***!
198656
+ \*****************************************************/
198657
+ /*! exports provided: default */
198658
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
198712
198659
 
198660
+ "use strict";
198661
+ __webpack_require__.r(__webpack_exports__);
198662
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
198663
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
198664
+ /* harmony import */ var use_react_router__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! use-react-router */ "./node_modules/use-react-router/use-react-router.js");
198665
+ /* harmony import */ var use_react_router__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(use_react_router__WEBPACK_IMPORTED_MODULE_1__);
198666
+ /* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/core/Grid */ "./node_modules/@material-ui/core/Grid/index.js");
198667
+ /* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2__);
198668
+ /* harmony import */ var makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! makerspace-ts-api-client */ "./node_modules/makerspace-ts-api-client/dist/apiClient.js");
198669
+ /* harmony import */ var makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_3__);
198670
+ /* harmony import */ var _hooks_useReadTransaction__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../hooks/useReadTransaction */ "./src/ui/hooks/useReadTransaction.ts");
198671
+ /* harmony import */ var _invoice_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../invoice/utils */ "./src/ui/invoice/utils.ts");
198672
+ /* harmony import */ var _common_FormModal__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../common/FormModal */ "./src/ui/common/FormModal.tsx");
198673
+ /* harmony import */ var _member_utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../member/utils */ "./src/ui/member/utils.ts");
198674
+ /* harmony import */ var _reducer_hooks__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../reducer/hooks */ "./src/ui/reducer/hooks.ts");
198675
+ /* harmony import */ var _hooks_useUUID__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../hooks/useUUID */ "./src/ui/hooks/useUUID.ts");
198713
198676
 
198714
198677
 
198715
198678
 
@@ -198719,760 +198682,98 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
198719
198682
 
198720
198683
 
198721
198684
 
198722
- const fields = [{
198723
- id: "lastname",
198724
- label: "Name",
198725
- cell: row => react__WEBPACK_IMPORTED_MODULE_0__["createElement"](react_router_dom__WEBPACK_IMPORTED_MODULE_2__["Link"], {
198726
- to: `/members/${row.id}`
198727
- }, row.firstname, " ", row.lastname),
198728
- defaultSortDirection: ui_common_table_constants__WEBPACK_IMPORTED_MODULE_11__["SortDirection"].Desc
198729
- }, {
198730
- id: "expirationTime",
198731
- label: "Expiration",
198732
- cell: ui_member_utils__WEBPACK_IMPORTED_MODULE_9__["displayMemberExpiration"],
198733
- defaultSortDirection: ui_common_table_constants__WEBPACK_IMPORTED_MODULE_11__["SortDirection"].Desc
198734
- }, {
198735
- id: "status",
198736
- label: "Status",
198737
- cell: row => react__WEBPACK_IMPORTED_MODULE_0__["createElement"](ui_member_MemberStatusLabel__WEBPACK_IMPORTED_MODULE_16__["default"], {
198738
- member: row
198739
- })
198740
- }];
198741
198685
 
198742
- class MembersList extends react__WEBPACK_IMPORTED_MODULE_0__["Component"] {
198743
- constructor(props) {
198744
- super(props);
198745
198686
 
198746
- _defineProperty(this, "openCreateForm", () => {
198747
- this.setState({
198748
- openCreateForm: true
198749
- });
198750
- });
198687
+ const DuplicateInvoiceModal = ({
198688
+ type
198689
+ }) => {
198690
+ const uuid = Object(_hooks_useUUID__WEBPACK_IMPORTED_MODULE_9__["useUUID"])();
198691
+ const {
198692
+ data: invoices = []
198693
+ } = Object(_hooks_useReadTransaction__WEBPACK_IMPORTED_MODULE_4__["default"])(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_3__["listInvoices"], {}, undefined, uuid);
198694
+ const {
198695
+ currentUser: {
198696
+ id: currentUserId
198697
+ }
198698
+ } = Object(_reducer_hooks__WEBPACK_IMPORTED_MODULE_8__["useAuthState"])();
198699
+ const [outstandingInvoice, setOutstandingInvoice] = react__WEBPACK_IMPORTED_MODULE_0__["useState"]();
198700
+ const {
198701
+ history
198702
+ } = use_react_router__WEBPACK_IMPORTED_MODULE_1___default()();
198703
+ const goToProfile = react__WEBPACK_IMPORTED_MODULE_0__["useCallback"](() => history.push(Object(_member_utils__WEBPACK_IMPORTED_MODULE_7__["buildProfileRouting"])(currentUserId)), [history, currentUserId]);
198704
+ react__WEBPACK_IMPORTED_MODULE_0__["useEffect"](() => {
198705
+ const outstandingInvoiceOfType = invoices.find(invoice => Object(_invoice_utils__WEBPACK_IMPORTED_MODULE_5__["isInvoicePayable"])(invoice) && invoice.resourceClass === type);
198706
+ setOutstandingInvoice(outstandingInvoiceOfType);
198707
+ }, [invoices, setOutstandingInvoice, type]);
198751
198708
 
198752
- _defineProperty(this, "closeCreateForm", () => {
198753
- this.setState({
198754
- openCreateForm: false
198755
- });
198756
- });
198709
+ if (!outstandingInvoice) {
198710
+ return null;
198711
+ }
198757
198712
 
198758
- _defineProperty(this, "openRenewalForm", () => {
198759
- this.setState({
198760
- openRenewalForm: true
198761
- });
198762
- });
198713
+ return react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_common_FormModal__WEBPACK_IMPORTED_MODULE_6__["default"], {
198714
+ id: "outstanding-invoice",
198715
+ onSubmit: goToProfile,
198716
+ closeHandler: () => setOutstandingInvoice(undefined),
198717
+ cancelText: "Ignore",
198718
+ submitText: "View Dues",
198719
+ title: "Existing Dues Found",
198720
+ isOpen: true
198721
+ }, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2___default.a, {
198722
+ container: true,
198723
+ spacing: 16
198724
+ }, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2___default.a, {
198725
+ item: true,
198726
+ xs: 12
198727
+ }, "We found existing outstanding dues matching your selection category. \
198728
+ This may cause issues trying to purchase additional items of this type. \
198729
+ Would you like to view your outstanding dues?"), react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2___default.a, {
198730
+ item: true,
198731
+ xs: 12
198732
+ }, "If you're having trouble with your dues, please don't hesitate to ", react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("a", {
198733
+ href: "mailto:contact@manchestermakerspace.org"
198734
+ }, "contact us"), ".")));
198735
+ };
198763
198736
 
198764
- _defineProperty(this, "closeRenewalForm", () => {
198765
- this.setState({
198766
- openRenewalForm: false
198767
- });
198768
- });
198737
+ /* harmony default export */ __webpack_exports__["default"] = (DuplicateInvoiceModal);
198769
198738
 
198770
- _defineProperty(this, "renderMemberForms", () => {
198771
- const {
198772
- admin,
198773
- members
198774
- } = this.props;
198775
- const {
198776
- selectedId,
198777
- openRenewalForm,
198778
- openCreateForm
198779
- } = this.state;
198739
+ /***/ }),
198780
198740
 
198781
- const createForm = renderProps => {
198782
- const submitCreate = async form => {
198783
- const newMember = await renderProps.submit(form);
198741
+ /***/ "./src/ui/membership/InvoicingGate.tsx":
198742
+ /*!*********************************************!*\
198743
+ !*** ./src/ui/membership/InvoicingGate.tsx ***!
198744
+ \*********************************************/
198745
+ /*! exports provided: default */
198746
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
198784
198747
 
198785
- if (newMember) {
198786
- this.props.goToMemberProfile(newMember.id);
198787
- }
198788
- };
198748
+ "use strict";
198749
+ __webpack_require__.r(__webpack_exports__);
198750
+ /* harmony import */ var makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! makerspace-ts-api-client */ "./node_modules/makerspace-ts-api-client/dist/apiClient.js");
198751
+ /* harmony import */ var makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_0__);
198752
+ /* harmony import */ var ui_hooks_useReadTransaction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ui/hooks/useReadTransaction */ "./src/ui/hooks/useReadTransaction.ts");
198753
+ /* harmony import */ var app_entities_invoice__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! app/entities/invoice */ "./src/app/entities/invoice.ts");
198789
198754
 
198790
- return react__WEBPACK_IMPORTED_MODULE_0__["createElement"](ui_member_MemberForm__WEBPACK_IMPORTED_MODULE_18__["default"], {
198791
- ref: renderProps.setRef,
198792
- member: renderProps.member,
198793
- isAdmin: admin,
198794
- isOpen: renderProps.isOpen,
198795
- isRequesting: renderProps.isRequesting,
198796
- error: renderProps.error,
198797
- onClose: renderProps.closeHandler,
198798
- onSubmit: submitCreate,
198799
- title: "Create New Member"
198800
- });
198801
- };
198802
198755
 
198803
- const renewForm = renderProps => react__WEBPACK_IMPORTED_MODULE_0__["createElement"](ui_common_RenewalForm__WEBPACK_IMPORTED_MODULE_13__["default"], {
198804
- ref: renderProps.setRef,
198805
- renewalOptions: ui_members_constants__WEBPACK_IMPORTED_MODULE_15__["membershipRenewalOptions"],
198806
- title: "Renew Membership",
198807
- entity: Object(ui_member_utils__WEBPACK_IMPORTED_MODULE_9__["memberToRenewal"])(renderProps.member),
198808
- isOpen: renderProps.isOpen,
198809
- isRequesting: renderProps.isRequesting,
198810
- error: renderProps.error,
198811
- onClose: renderProps.closeHandler,
198812
- onSubmit: renderProps.submit
198813
- });
198814
198756
 
198815
- return admin && react__WEBPACK_IMPORTED_MODULE_0__["createElement"](react__WEBPACK_IMPORTED_MODULE_0__["Fragment"], null, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](ui_member_UpdateMemberContainer__WEBPACK_IMPORTED_MODULE_19__["default"], {
198816
- isOpen: openRenewalForm,
198817
- member: !Object(lodash_es_isUndefined__WEBPACK_IMPORTED_MODULE_7__["default"])(selectedId) && members[selectedId],
198818
- closeHandler: this.closeRenewalForm,
198819
- render: renewForm,
198820
- operation: app_constants__WEBPACK_IMPORTED_MODULE_20__["CrudOperation"].Update
198821
- }), react__WEBPACK_IMPORTED_MODULE_0__["createElement"](ui_member_UpdateMemberContainer__WEBPACK_IMPORTED_MODULE_19__["default"], {
198822
- isOpen: openCreateForm,
198823
- member: {
198824
- status: app_entities_member__WEBPACK_IMPORTED_MODULE_8__["MemberStatus"].Active,
198825
- role: app_entities_member__WEBPACK_IMPORTED_MODULE_8__["MemberRole"].Member
198826
- },
198827
- closeHandler: this.closeCreateForm,
198828
- render: createForm,
198829
- operation: app_constants__WEBPACK_IMPORTED_MODULE_20__["CrudOperation"].Create
198830
- }));
198831
- });
198757
+ /**
198758
+ * Since we cant gate all Invoicing features by a user permission, this allows disabling of all invoicing by disabling or removing
198759
+ * invoice options. If all billing permissions are set to false and no results return from this options request, effectively
198760
+ * all invoicing components will be disabled. Useful for an emergency response.
198761
+ */
198832
198762
 
198833
- _defineProperty(this, "updateFilter", () => this.setState(state => ({
198834
- currentMembers: state.currentMembers ? "" : "true"
198835
- }), () => this.getMembers(true)));
198763
+ const InvoicingGate = ({
198764
+ children
198765
+ }) => {
198766
+ const {
198767
+ data: options = []
198768
+ } = Object(ui_hooks_useReadTransaction__WEBPACK_IMPORTED_MODULE_1__["default"])(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_0__["listInvoiceOptions"], {
198769
+ types: [app_entities_invoice__WEBPACK_IMPORTED_MODULE_2__["InvoiceableResource"].Membership]
198770
+ });
198771
+ return children(!!options.length);
198772
+ };
198836
198773
 
198837
- _defineProperty(this, "getActionButtons", () => {
198838
- const {
198839
- selectedId
198840
- } = this.state;
198841
- return react__WEBPACK_IMPORTED_MODULE_0__["createElement"](ui_common_ButtonRow__WEBPACK_IMPORTED_MODULE_10__["default"], {
198842
- actionButtons: [{
198843
- id: "members-list-create",
198844
- variant: "contained",
198845
- color: "primary",
198846
- onClick: this.openCreateForm,
198847
- label: "Create New Member"
198848
- }, {
198849
- id: "members-list-renew",
198850
- variant: "outlined",
198851
- color: "primary",
198852
- disabled: !selectedId,
198853
- onClick: this.openRenewalForm,
198854
- label: "Renew Member"
198855
- }]
198856
- });
198857
- });
198774
+ /* harmony default export */ __webpack_exports__["default"] = (InvoicingGate);
198858
198775
 
198859
- _defineProperty(this, "getQueryParams", () => {
198860
- const {
198861
- pageNum,
198862
- orderBy,
198863
- order,
198864
- search,
198865
- currentMembers
198866
- } = this.state;
198867
- return {
198868
- pageNum,
198869
- orderBy,
198870
- order,
198871
- search,
198872
- currentMembers
198873
- };
198874
- });
198875
-
198876
- _defineProperty(this, "getMembers", (resetPage = false) => {
198877
- if (resetPage) {
198878
- this.setState({
198879
- pageNum: 0
198880
- });
198881
- }
198882
-
198883
- this.setState({
198884
- selectedId: undefined
198885
- });
198886
- this.props.getMembers(this.getQueryParams());
198887
- });
198888
-
198889
- _defineProperty(this, "rowId", row => row.id);
198890
-
198891
- _defineProperty(this, "onSort", prop => {
198892
- const orderBy = prop;
198893
- let order = ui_common_table_constants__WEBPACK_IMPORTED_MODULE_11__["SortDirection"].Desc;
198894
-
198895
- if (this.state.orderBy === orderBy && this.state.order === order) {
198896
- order = ui_common_table_constants__WEBPACK_IMPORTED_MODULE_11__["SortDirection"].Asc;
198897
- }
198898
-
198899
- this.setState({
198900
- order,
198901
- orderBy,
198902
- pageNum: 0
198903
- }, () => this.getMembers(true));
198904
- });
198905
-
198906
- _defineProperty(this, "onPageChange", newPage => {
198907
- this.setState({
198908
- pageNum: newPage
198909
- }, this.getMembers);
198910
- });
198911
-
198912
- _defineProperty(this, "onSearchEnter", searchTerm => {
198913
- this.setState({
198914
- search: searchTerm,
198915
- pageNum: 0
198916
- }, () => this.getMembers(true));
198917
- });
198918
-
198919
- _defineProperty(this, "onSelect", (id, selected) => {
198920
- if (selected) {
198921
- this.setState({
198922
- selectedId: id
198923
- });
198924
- } else {
198925
- this.setState({
198926
- selectedId: undefined
198927
- });
198928
- }
198929
- });
198930
-
198931
- this.state = {
198932
- selectedId: undefined,
198933
- pageNum: 0,
198934
- orderBy: "",
198935
- search: "",
198936
- currentMembers: "true",
198937
- order: ui_common_table_constants__WEBPACK_IMPORTED_MODULE_11__["SortDirection"].Asc,
198938
- openRenewalForm: false,
198939
- openCreateForm: false
198940
- };
198941
- }
198942
-
198943
- componentDidMount() {
198944
- this.getMembers();
198945
- }
198946
-
198947
- componentDidUpdate(prevProps) {
198948
- const {
198949
- isCreating: wasCreating,
198950
- isUpdating: wasUpdating
198951
- } = prevProps;
198952
- const {
198953
- isCreating,
198954
- createError,
198955
- isUpdating,
198956
- updateError
198957
- } = this.props;
198958
-
198959
- if (wasCreating && !isCreating && !createError || // refresh list on create or update
198960
- wasUpdating && !isUpdating && !updateError) {
198961
- this.getMembers(true);
198962
- }
198963
- }
198964
-
198965
- render() {
198966
- const {
198967
- members,
198968
- totalItems,
198969
- loading,
198970
- error,
198971
- admin
198972
- } = this.props;
198973
- const {
198974
- selectedId,
198975
- pageNum,
198976
- order,
198977
- orderBy,
198978
- currentMembers
198979
- } = this.state;
198980
- return react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_4___default.a, {
198981
- container: true,
198982
- spacing: 24,
198983
- justify: "center"
198984
- }, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_4___default.a, {
198985
- item: true,
198986
- md: 10,
198987
- xs: 12
198988
- }, admin && react__WEBPACK_IMPORTED_MODULE_0__["createElement"](react__WEBPACK_IMPORTED_MODULE_0__["Fragment"], null, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_4___default.a, {
198989
- style: {
198990
- paddingTop: 20
198991
- }
198992
- }, this.getActionButtons()), react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_4___default.a, null, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_material_ui_core_FormControlLabel__WEBPACK_IMPORTED_MODULE_5___default.a, {
198993
- control: react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_material_ui_core_Checkbox__WEBPACK_IMPORTED_MODULE_6___default.a, {
198994
- color: "primary",
198995
- value: "true",
198996
- checked: !!currentMembers,
198997
- onChange: this.updateFilter
198998
- }),
198999
- label: "View only current members"
199000
- }))), react__WEBPACK_IMPORTED_MODULE_0__["createElement"](ui_common_table_TableContainer__WEBPACK_IMPORTED_MODULE_12__["default"], {
199001
- id: "members-table",
199002
- title: "Members",
199003
- loading: loading,
199004
- data: Object.values(members),
199005
- error: error,
199006
- totalItems: totalItems,
199007
- selectedIds: [selectedId],
199008
- pageNum: pageNum,
199009
- onSearchEnter: this.onSearchEnter,
199010
- columns: fields,
199011
- order: order,
199012
- orderBy: orderBy,
199013
- onSort: this.onSort,
199014
- rowId: this.rowId,
199015
- onPageChange: this.onPageChange,
199016
- onSelect: admin && this.onSelect
199017
- }), this.renderMemberForms()));
199018
- }
199019
-
199020
- }
199021
-
199022
- const mapStateToProps = (state, _ownProps) => {
199023
- const {
199024
- entities: members,
199025
- read: {
199026
- totalItems,
199027
- isRequesting: loading,
199028
- error
199029
- },
199030
- create: {
199031
- isRequesting: isCreating,
199032
- error: createError
199033
- }
199034
- } = state.members;
199035
- const {
199036
- update: {
199037
- isRequesting: isUpdating,
199038
- error: updateError
199039
- }
199040
- } = state.member;
199041
- const {
199042
- currentUser: {
199043
- isAdmin: admin
199044
- }
199045
- } = state.auth;
199046
- return {
199047
- members,
199048
- totalItems,
199049
- loading,
199050
- error,
199051
- isUpdating,
199052
- updateError,
199053
- isCreating,
199054
- createError,
199055
- admin
199056
- };
199057
- };
199058
-
199059
- const mapDispatchToProps = dispatch => {
199060
- return {
199061
- getMembers: queryParams => dispatch(Object(ui_members_actions__WEBPACK_IMPORTED_MODULE_14__["readMembersAction"])(queryParams)),
199062
- updateMember: (id, Member, admin) => dispatch(Object(ui_member_actions__WEBPACK_IMPORTED_MODULE_17__["updateMemberAction"])(id, Member, admin)),
199063
- goToMemberProfile: id => dispatch(Object(connected_react_router__WEBPACK_IMPORTED_MODULE_3__["push"])(Object(ui_member_utils__WEBPACK_IMPORTED_MODULE_9__["buildProfileRouting"])(id)))
199064
- };
199065
- };
199066
-
199067
- /* harmony default export */ __webpack_exports__["default"] = (Object(react_router_dom__WEBPACK_IMPORTED_MODULE_2__["withRouter"])(Object(react_redux__WEBPACK_IMPORTED_MODULE_1__["connect"])(mapStateToProps, mapDispatchToProps)(MembersList)));
199068
-
199069
- /***/ }),
199070
-
199071
- /***/ "./src/ui/members/actions.ts":
199072
- /*!***********************************!*\
199073
- !*** ./src/ui/members/actions.ts ***!
199074
- \***********************************/
199075
- /*! exports provided: readMembersAction, createMembersAction, membersReducer */
199076
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
199077
-
199078
- "use strict";
199079
- __webpack_require__.r(__webpack_exports__);
199080
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "readMembersAction", function() { return readMembersAction; });
199081
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createMembersAction", function() { return createMembersAction; });
199082
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "membersReducer", function() { return membersReducer; });
199083
- /* harmony import */ var ui_members_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ui/members/constants */ "./src/ui/members/constants.ts");
199084
- /* harmony import */ var makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! makerspace-ts-api-client */ "./node_modules/makerspace-ts-api-client/dist/apiClient.js");
199085
- /* harmony import */ var makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_1__);
199086
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
199087
-
199088
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
199089
-
199090
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
199091
-
199092
-
199093
-
199094
- const readMembersAction = queryParams => async dispatch => {
199095
- dispatch({
199096
- type: ui_members_constants__WEBPACK_IMPORTED_MODULE_0__["Action"].StartReadRequest
199097
- });
199098
- const result = await Object(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_1__["listMembers"])(queryParams);
199099
-
199100
- if (Object(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_1__["isApiErrorResponse"])(result)) {
199101
- dispatch({
199102
- type: ui_members_constants__WEBPACK_IMPORTED_MODULE_0__["Action"].GetMembersFailure,
199103
- error: result.error.message
199104
- });
199105
- } else {
199106
- const {
199107
- data,
199108
- response
199109
- } = result;
199110
- const totalItems = response.headers.get("total-items");
199111
- dispatch({
199112
- type: ui_members_constants__WEBPACK_IMPORTED_MODULE_0__["Action"].GetMembersSuccess,
199113
- data: {
199114
- members: data,
199115
- totalItems: Number(totalItems)
199116
- }
199117
- });
199118
- }
199119
- };
199120
- const createMembersAction = memberForm => async dispatch => {
199121
- dispatch({
199122
- type: ui_members_constants__WEBPACK_IMPORTED_MODULE_0__["Action"].StartCreateRequest
199123
- });
199124
- let newMember;
199125
- const result = await Object(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_1__["adminCreateMember"])({
199126
- createMemberDetails: memberForm
199127
- });
199128
-
199129
- if (Object(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_1__["isApiErrorResponse"])(result)) {
199130
- dispatch({
199131
- type: ui_members_constants__WEBPACK_IMPORTED_MODULE_0__["Action"].CreateMembersFailure,
199132
- error: result.error.message
199133
- });
199134
- } else {
199135
- dispatch({
199136
- type: ui_members_constants__WEBPACK_IMPORTED_MODULE_0__["Action"].CreateMembersSuccess
199137
- });
199138
- newMember = result.data;
199139
- }
199140
-
199141
- return newMember;
199142
- };
199143
- const defaultState = {
199144
- entities: {},
199145
- read: {
199146
- isRequesting: false,
199147
- error: "",
199148
- totalItems: 0
199149
- },
199150
- create: {
199151
- isRequesting: false,
199152
- error: ""
199153
- }
199154
- };
199155
- const membersReducer = (state = defaultState, action) => {
199156
- switch (action.type) {
199157
- case ui_members_constants__WEBPACK_IMPORTED_MODULE_0__["Action"].StartReadRequest:
199158
- return _objectSpread({}, state, {
199159
- read: _objectSpread({}, state.read, {
199160
- isRequesting: true
199161
- })
199162
- });
199163
-
199164
- case ui_members_constants__WEBPACK_IMPORTED_MODULE_0__["Action"].GetMembersSuccess:
199165
- const {
199166
- data: {
199167
- members,
199168
- totalItems
199169
- }
199170
- } = action;
199171
- const newMembers = {};
199172
- members.forEach(member => {
199173
- newMembers[member.id] = member;
199174
- });
199175
- return _objectSpread({}, state, {
199176
- entities: newMembers,
199177
- read: _objectSpread({}, state.read, {
199178
- totalItems,
199179
- isRequesting: false,
199180
- error: ""
199181
- })
199182
- });
199183
-
199184
- case ui_members_constants__WEBPACK_IMPORTED_MODULE_0__["Action"].GetMembersFailure:
199185
- const {
199186
- error
199187
- } = action;
199188
- return _objectSpread({}, state, {
199189
- read: _objectSpread({}, state.read, {
199190
- isRequesting: false,
199191
- error
199192
- })
199193
- });
199194
-
199195
- case ui_members_constants__WEBPACK_IMPORTED_MODULE_0__["Action"].StartCreateRequest:
199196
- return _objectSpread({}, state, {
199197
- create: _objectSpread({}, state.create, {
199198
- isRequesting: true
199199
- })
199200
- });
199201
-
199202
- case ui_members_constants__WEBPACK_IMPORTED_MODULE_0__["Action"].CreateMembersSuccess:
199203
- return _objectSpread({}, state, {
199204
- create: _objectSpread({}, state.create, {
199205
- isRequesting: false,
199206
- error: ""
199207
- })
199208
- });
199209
-
199210
- case ui_members_constants__WEBPACK_IMPORTED_MODULE_0__["Action"].CreateMembersFailure:
199211
- const {
199212
- error: createError
199213
- } = action;
199214
- return _objectSpread({}, state, {
199215
- create: _objectSpread({}, state.create, {
199216
- isRequesting: false,
199217
- error: createError
199218
- })
199219
- });
199220
-
199221
- default:
199222
- return state;
199223
- }
199224
- };
199225
-
199226
- /***/ }),
199227
-
199228
- /***/ "./src/ui/members/constants.ts":
199229
- /*!*************************************!*\
199230
- !*** ./src/ui/members/constants.ts ***!
199231
- \*************************************/
199232
- /*! exports provided: Action, membershipRenewalOptions */
199233
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
199234
-
199235
- "use strict";
199236
- __webpack_require__.r(__webpack_exports__);
199237
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Action", function() { return Action; });
199238
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "membershipRenewalOptions", function() { return membershipRenewalOptions; });
199239
- let Action;
199240
-
199241
- (function (Action) {
199242
- Action["StartReadRequest"] = "MEMBERS/START_READ_REQUEST";
199243
- Action["GetMembersSuccess"] = "MEMBERS/GET_MEMBERS_SUCCESS";
199244
- Action["GetMembersFailure"] = "MEMBERS/GET_MEMBERS_FAILURE";
199245
- Action["StartCreateRequest"] = "MEMBERS/START_CREATE_REQUEST";
199246
- Action["CreateMembersSuccess"] = "MEMBERS/CREATE_MEMBERS_SUCCESS";
199247
- Action["CreateMembersFailure"] = "MEMBERS/CREATE_MEMBERS_FAILURE";
199248
- })(Action || (Action = {}));
199249
-
199250
- const membershipRenewalOptions = [{
199251
- label: "None",
199252
- value: undefined
199253
- }, {
199254
- label: "1 month",
199255
- value: 1
199256
- }, {
199257
- label: "3 months",
199258
- value: 3
199259
- }, {
199260
- label: "6 months",
199261
- value: 6
199262
- }, {
199263
- label: "12 months",
199264
- value: 12
199265
- }];
199266
-
199267
- /***/ }),
199268
-
199269
- /***/ "./src/ui/membership/ChangePaymentMethodModal.tsx":
199270
- /*!********************************************************!*\
199271
- !*** ./src/ui/membership/ChangePaymentMethodModal.tsx ***!
199272
- \********************************************************/
199273
- /*! exports provided: default */
199274
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
199275
-
199276
- "use strict";
199277
- __webpack_require__.r(__webpack_exports__);
199278
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
199279
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
199280
- /* harmony import */ var ui_common_FormModal__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ui/common/FormModal */ "./src/ui/common/FormModal.tsx");
199281
- /* harmony import */ var makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! makerspace-ts-api-client */ "./node_modules/makerspace-ts-api-client/dist/apiClient.js");
199282
- /* harmony import */ var makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_2__);
199283
- /* harmony import */ var _hooks_useWriteTransaction__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../hooks/useWriteTransaction */ "./src/ui/hooks/useWriteTransaction.ts");
199284
- /* harmony import */ var _common_ButtonRow__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../common/ButtonRow */ "./src/ui/common/ButtonRow.tsx");
199285
- /* harmony import */ var _hooks_useModal__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../hooks/useModal */ "./src/ui/hooks/useModal.ts");
199286
- /* harmony import */ var _checkout_PaymentMethodsContainer__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../checkout/PaymentMethodsContainer */ "./src/ui/checkout/PaymentMethodsContainer.tsx");
199287
-
199288
-
199289
-
199290
-
199291
-
199292
-
199293
-
199294
-
199295
- const ChangePaymentMethodModal = ({
199296
- subscription: {
199297
- id: subscriptionId,
199298
- paymentMethodToken
199299
- } = {}
199300
- }) => {
199301
- const {
199302
- isOpen,
199303
- openModal,
199304
- closeModal
199305
- } = Object(_hooks_useModal__WEBPACK_IMPORTED_MODULE_5__["default"])();
199306
- const [paymentMethodId, setPaymentMethodId] = react__WEBPACK_IMPORTED_MODULE_0__["useState"]();
199307
- const {
199308
- isRequesting,
199309
- error,
199310
- call
199311
- } = Object(_hooks_useWriteTransaction__WEBPACK_IMPORTED_MODULE_3__["default"])(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_2__["updateSubscription"], () => {
199312
- closeModal();
199313
- });
199314
- const onSubmit = react__WEBPACK_IMPORTED_MODULE_0__["useCallback"](async () => {
199315
- paymentMethodId && call({
199316
- id: subscriptionId,
199317
- updateSubscriptionDetails: {
199318
- paymentMethodToken: paymentMethodId
199319
- }
199320
- });
199321
- }, [call, subscriptionId, paymentMethodId]);
199322
-
199323
- if (!subscriptionId) {
199324
- return null;
199325
- }
199326
-
199327
- return react__WEBPACK_IMPORTED_MODULE_0__["createElement"](react__WEBPACK_IMPORTED_MODULE_0__["Fragment"], null, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_common_ButtonRow__WEBPACK_IMPORTED_MODULE_4__["ActionButton"], {
199328
- id: "subscription-option-payment-method",
199329
- color: "primary",
199330
- variant: "contained",
199331
- disabled: isRequesting || !!error,
199332
- label: "Change Payment Method",
199333
- onClick: openModal
199334
- }), isOpen && react__WEBPACK_IMPORTED_MODULE_0__["createElement"](ui_common_FormModal__WEBPACK_IMPORTED_MODULE_1__["default"], {
199335
- id: "change-payment-method",
199336
- isOpen: true,
199337
- closeHandler: closeModal,
199338
- onSubmit: onSubmit,
199339
- loading: isRequesting,
199340
- error: error
199341
- }, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_checkout_PaymentMethodsContainer__WEBPACK_IMPORTED_MODULE_6__["default"], {
199342
- onPaymentMethodChange: setPaymentMethodId,
199343
- title: "Select or add a new payment method",
199344
- paymentMethodToken: paymentMethodToken
199345
- })));
199346
- };
199347
-
199348
- /* harmony default export */ __webpack_exports__["default"] = (ChangePaymentMethodModal);
199349
-
199350
- /***/ }),
199351
-
199352
- /***/ "./src/ui/membership/DuplicateInvoiceModal.tsx":
199353
- /*!*****************************************************!*\
199354
- !*** ./src/ui/membership/DuplicateInvoiceModal.tsx ***!
199355
- \*****************************************************/
199356
- /*! exports provided: default */
199357
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
199358
-
199359
- "use strict";
199360
- __webpack_require__.r(__webpack_exports__);
199361
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
199362
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
199363
- /* harmony import */ var use_react_router__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! use-react-router */ "./node_modules/use-react-router/use-react-router.js");
199364
- /* harmony import */ var use_react_router__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(use_react_router__WEBPACK_IMPORTED_MODULE_1__);
199365
- /* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/core/Grid */ "./node_modules/@material-ui/core/Grid/index.js");
199366
- /* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2__);
199367
- /* harmony import */ var makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! makerspace-ts-api-client */ "./node_modules/makerspace-ts-api-client/dist/apiClient.js");
199368
- /* harmony import */ var makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_3__);
199369
- /* harmony import */ var _hooks_useReadTransaction__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../hooks/useReadTransaction */ "./src/ui/hooks/useReadTransaction.ts");
199370
- /* harmony import */ var _invoice_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../invoice/utils */ "./src/ui/invoice/utils.ts");
199371
- /* harmony import */ var _common_FormModal__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../common/FormModal */ "./src/ui/common/FormModal.tsx");
199372
- /* harmony import */ var _member_utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../member/utils */ "./src/ui/member/utils.ts");
199373
- /* harmony import */ var _reducer_hooks__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../reducer/hooks */ "./src/ui/reducer/hooks.ts");
199374
- /* harmony import */ var _hooks_useUUID__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../hooks/useUUID */ "./src/ui/hooks/useUUID.ts");
199375
-
199376
-
199377
-
199378
-
199379
-
199380
-
199381
-
199382
-
199383
-
199384
-
199385
-
199386
- const DuplicateInvoiceModal = ({
199387
- type
199388
- }) => {
199389
- const uuid = Object(_hooks_useUUID__WEBPACK_IMPORTED_MODULE_9__["useUUID"])();
199390
- const {
199391
- data: invoices = []
199392
- } = Object(_hooks_useReadTransaction__WEBPACK_IMPORTED_MODULE_4__["default"])(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_3__["listInvoices"], {}, undefined, uuid);
199393
- const {
199394
- currentUser: {
199395
- id: currentUserId
199396
- }
199397
- } = Object(_reducer_hooks__WEBPACK_IMPORTED_MODULE_8__["useAuthState"])();
199398
- const [outstandingInvoice, setOutstandingInvoice] = react__WEBPACK_IMPORTED_MODULE_0__["useState"]();
199399
- const {
199400
- history
199401
- } = use_react_router__WEBPACK_IMPORTED_MODULE_1___default()();
199402
- const goToProfile = react__WEBPACK_IMPORTED_MODULE_0__["useCallback"](() => history.push(Object(_member_utils__WEBPACK_IMPORTED_MODULE_7__["buildProfileRouting"])(currentUserId)), [history, currentUserId]);
199403
- react__WEBPACK_IMPORTED_MODULE_0__["useEffect"](() => {
199404
- const outstandingInvoiceOfType = invoices.find(invoice => Object(_invoice_utils__WEBPACK_IMPORTED_MODULE_5__["isInvoicePayable"])(invoice) && invoice.resourceClass === type);
199405
- setOutstandingInvoice(outstandingInvoiceOfType);
199406
- }, [invoices, setOutstandingInvoice, type]);
199407
-
199408
- if (!outstandingInvoice) {
199409
- return null;
199410
- }
199411
-
199412
- return react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_common_FormModal__WEBPACK_IMPORTED_MODULE_6__["default"], {
199413
- id: "outstanding-invoice",
199414
- onSubmit: goToProfile,
199415
- closeHandler: () => setOutstandingInvoice(undefined),
199416
- cancelText: "Ignore",
199417
- submitText: "View Dues",
199418
- title: "Existing Dues Found",
199419
- isOpen: true
199420
- }, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2___default.a, {
199421
- container: true,
199422
- spacing: 16
199423
- }, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2___default.a, {
199424
- item: true,
199425
- xs: 12
199426
- }, "We found existing outstanding dues matching your selection category. \
199427
- This may cause issues trying to purchase additional items of this type. \
199428
- Would you like to view your outstanding dues?"), react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2___default.a, {
199429
- item: true,
199430
- xs: 12
199431
- }, "If you're having trouble with your dues, please don't hesitate to ", react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("a", {
199432
- href: "mailto:contact@manchestermakerspace.org"
199433
- }, "contact us"), ".")));
199434
- };
199435
-
199436
- /* harmony default export */ __webpack_exports__["default"] = (DuplicateInvoiceModal);
199437
-
199438
- /***/ }),
199439
-
199440
- /***/ "./src/ui/membership/InvoicingGate.tsx":
199441
- /*!*********************************************!*\
199442
- !*** ./src/ui/membership/InvoicingGate.tsx ***!
199443
- \*********************************************/
199444
- /*! exports provided: default */
199445
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
199446
-
199447
- "use strict";
199448
- __webpack_require__.r(__webpack_exports__);
199449
- /* harmony import */ var makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! makerspace-ts-api-client */ "./node_modules/makerspace-ts-api-client/dist/apiClient.js");
199450
- /* harmony import */ var makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_0__);
199451
- /* harmony import */ var ui_hooks_useReadTransaction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ui/hooks/useReadTransaction */ "./src/ui/hooks/useReadTransaction.ts");
199452
- /* harmony import */ var app_entities_invoice__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! app/entities/invoice */ "./src/app/entities/invoice.ts");
199453
-
199454
-
199455
-
199456
- /**
199457
- * Since we cant gate all Invoicing features by a user permission, this allows disabling of all invoicing by disabling or removing
199458
- * invoice options. If all billing permissions are set to false and no results return from this options request, effectively
199459
- * all invoicing components will be disabled. Useful for an emergency response.
199460
- */
199461
-
199462
- const InvoicingGate = ({
199463
- children
199464
- }) => {
199465
- const {
199466
- data: options = []
199467
- } = Object(ui_hooks_useReadTransaction__WEBPACK_IMPORTED_MODULE_1__["default"])(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_0__["listInvoiceOptions"], {
199468
- types: [app_entities_invoice__WEBPACK_IMPORTED_MODULE_2__["InvoiceableResource"].Membership]
199469
- });
199470
- return children(!!options.length);
199471
- };
199472
-
199473
- /* harmony default export */ __webpack_exports__["default"] = (InvoicingGate);
199474
-
199475
- /***/ }),
198776
+ /***/ }),
199476
198777
 
199477
198778
  /***/ "./src/ui/membership/MembershipSelectForm.tsx":
199478
198779
  /*!****************************************************!*\
@@ -199660,12 +198961,9 @@ __webpack_require__.r(__webpack_exports__);
199660
198961
  /* harmony import */ var redux__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! redux */ "./node_modules/redux/es/redux.js");
199661
198962
  /* harmony import */ var connected_react_router__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! connected-react-router */ "./node_modules/connected-react-router/esm/index.js");
199662
198963
  /* harmony import */ var ui_auth_actions__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ui/auth/actions */ "./src/ui/auth/actions.ts");
199663
- /* harmony import */ var ui_members_actions__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ui/members/actions */ "./src/ui/members/actions.ts");
199664
- /* harmony import */ var ui_rentals_actions__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ui/rentals/actions */ "./src/ui/rentals/actions.ts");
199665
- /* harmony import */ var ui_billing_actions__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ui/billing/actions */ "./src/ui/billing/actions.ts");
199666
- /* harmony import */ var ui_member_actions__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ui/member/actions */ "./src/ui/member/actions.ts");
199667
- /* harmony import */ var ui_earnedMemberships_actions__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ui/earnedMemberships/actions */ "./src/ui/earnedMemberships/actions.ts");
199668
- /* harmony import */ var _checkout_cart__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./checkout/cart */ "./src/ui/checkout/cart.ts");
198964
+ /* harmony import */ var ui_billing_actions__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ui/billing/actions */ "./src/ui/billing/actions.ts");
198965
+ /* harmony import */ var ui_earnedMemberships_actions__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ui/earnedMemberships/actions */ "./src/ui/earnedMemberships/actions.ts");
198966
+ /* harmony import */ var _checkout_cart__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./checkout/cart */ "./src/ui/checkout/cart.ts");
199669
198967
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
199670
198968
 
199671
198969
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
@@ -199678,19 +198976,13 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
199678
198976
 
199679
198977
 
199680
198978
 
199681
-
199682
-
199683
-
199684
198979
  const getRootReducer = history => Object(redux__WEBPACK_IMPORTED_MODULE_0__["combineReducers"])({
199685
198980
  router: Object(connected_react_router__WEBPACK_IMPORTED_MODULE_1__["connectRouter"])(history),
199686
198981
  base: baseReducer,
199687
198982
  auth: ui_auth_actions__WEBPACK_IMPORTED_MODULE_2__["authReducer"],
199688
- cart: _checkout_cart__WEBPACK_IMPORTED_MODULE_8__["cartReducer"],
199689
- members: ui_members_actions__WEBPACK_IMPORTED_MODULE_3__["membersReducer"],
199690
- member: ui_member_actions__WEBPACK_IMPORTED_MODULE_6__["memberReducer"],
199691
- rentals: ui_rentals_actions__WEBPACK_IMPORTED_MODULE_4__["rentalsReducer"],
199692
- billing: ui_billing_actions__WEBPACK_IMPORTED_MODULE_5__["billingReducer"],
199693
- earnedMemberships: ui_earnedMemberships_actions__WEBPACK_IMPORTED_MODULE_7__["earnedMembershipsReducer"]
198983
+ cart: _checkout_cart__WEBPACK_IMPORTED_MODULE_5__["cartReducer"],
198984
+ billing: ui_billing_actions__WEBPACK_IMPORTED_MODULE_3__["billingReducer"],
198985
+ earnedMemberships: ui_earnedMemberships_actions__WEBPACK_IMPORTED_MODULE_4__["earnedMembershipsReducer"]
199694
198986
  });
199695
198987
  let TransactionAction;
199696
198988
 
@@ -199785,32 +199077,110 @@ __webpack_require__.r(__webpack_exports__);
199785
199077
  /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-redux */ "./node_modules/react-redux/es/index.js");
199786
199078
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
199787
199079
 
199788
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
199080
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
199081
+
199082
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
199083
+
199084
+
199085
+
199086
+ const useAuthState = () => {
199087
+ const getState = react__WEBPACK_IMPORTED_MODULE_0__["useCallback"](state => state.auth, []);
199088
+ return Object(react_redux__WEBPACK_IMPORTED_MODULE_1__["useSelector"])(getState, react_redux__WEBPACK_IMPORTED_MODULE_1__["shallowEqual"]);
199089
+ };
199090
+ const useApiState = reducerKey => {
199091
+ const dispatch = Object(react_redux__WEBPACK_IMPORTED_MODULE_1__["useDispatch"])();
199092
+ const dispatchApi = react__WEBPACK_IMPORTED_MODULE_0__["useCallback"](action => {
199093
+ dispatch(_objectSpread({
199094
+ key: reducerKey
199095
+ }, action));
199096
+ }, [reducerKey]);
199097
+ const getState = react__WEBPACK_IMPORTED_MODULE_0__["useCallback"](state => getApiState(reducerKey, state), [reducerKey]);
199098
+ return [Object(react_redux__WEBPACK_IMPORTED_MODULE_1__["useSelector"])(getState, react_redux__WEBPACK_IMPORTED_MODULE_1__["shallowEqual"]), dispatchApi];
199099
+ };
199100
+ const getApiState = (reducerKey, state) => {
199101
+ return state.base[reducerKey] || {
199102
+ isRequesting: false
199103
+ };
199104
+ };
199105
+
199106
+ /***/ }),
199107
+
199108
+ /***/ "./src/ui/rentals/CreateRental.tsx":
199109
+ /*!*****************************************!*\
199110
+ !*** ./src/ui/rentals/CreateRental.tsx ***!
199111
+ \*****************************************/
199112
+ /*! exports provided: default */
199113
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
199114
+
199115
+ "use strict";
199116
+ __webpack_require__.r(__webpack_exports__);
199117
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
199118
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
199119
+ /* harmony import */ var makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! makerspace-ts-api-client */ "./node_modules/makerspace-ts-api-client/dist/apiClient.js");
199120
+ /* harmony import */ var makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_1__);
199121
+ /* harmony import */ var _hooks_useWriteTransaction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../hooks/useWriteTransaction */ "./src/ui/hooks/useWriteTransaction.ts");
199122
+ /* harmony import */ var _common_ButtonRow__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../common/ButtonRow */ "./src/ui/common/ButtonRow.tsx");
199123
+ /* harmony import */ var _hooks_useModal__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../hooks/useModal */ "./src/ui/hooks/useModal.ts");
199124
+ /* harmony import */ var _RentalForm__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./RentalForm */ "./src/ui/rentals/RentalForm.tsx");
199125
+
199789
199126
 
199790
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
199791
199127
 
199792
199128
 
199793
199129
 
199794
- const useAuthState = () => {
199795
- const getState = react__WEBPACK_IMPORTED_MODULE_0__["useCallback"](state => state.auth, []);
199796
- return Object(react_redux__WEBPACK_IMPORTED_MODULE_1__["useSelector"])(getState, react_redux__WEBPACK_IMPORTED_MODULE_1__["shallowEqual"]);
199797
- };
199798
- const useApiState = reducerKey => {
199799
- const dispatch = Object(react_redux__WEBPACK_IMPORTED_MODULE_1__["useDispatch"])();
199800
- const dispatchApi = react__WEBPACK_IMPORTED_MODULE_0__["useCallback"](action => {
199801
- dispatch(_objectSpread({
199802
- key: reducerKey
199803
- }, action));
199804
- }, [reducerKey]);
199805
- const getState = react__WEBPACK_IMPORTED_MODULE_0__["useCallback"](state => getApiState(reducerKey, state), [reducerKey]);
199806
- return [Object(react_redux__WEBPACK_IMPORTED_MODULE_1__["useSelector"])(getState, react_redux__WEBPACK_IMPORTED_MODULE_1__["shallowEqual"]), dispatchApi];
199807
- };
199808
- const getApiState = (reducerKey, state) => {
199809
- return state.base[reducerKey] || {
199810
- isRequesting: false
199811
- };
199130
+
199131
+
199132
+ const CreateRental = ({
199133
+ member,
199134
+ onCreate
199135
+ }) => {
199136
+ const {
199137
+ isOpen,
199138
+ openModal,
199139
+ closeModal
199140
+ } = Object(_hooks_useModal__WEBPACK_IMPORTED_MODULE_4__["default"])();
199141
+ const formRef = react__WEBPACK_IMPORTED_MODULE_0__["useRef"]();
199142
+ const onSuccess = react__WEBPACK_IMPORTED_MODULE_0__["useCallback"](({
199143
+ response
199144
+ }) => {
199145
+ onCreate(response.data.id);
199146
+ closeModal();
199147
+ }, [onCreate, closeModal]);
199148
+ const {
199149
+ isRequesting,
199150
+ error,
199151
+ call: create
199152
+ } = Object(_hooks_useWriteTransaction__WEBPACK_IMPORTED_MODULE_2__["default"])(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_1__["adminCreateRental"], onSuccess);
199153
+ const onSubmit = react__WEBPACK_IMPORTED_MODULE_0__["useCallback"](async form => {
199154
+ const validUpdate = await formRef.current.validate(form);
199155
+ if (!form.isValid()) return;
199156
+ create({
199157
+ createRentalDetails: validUpdate
199158
+ });
199159
+ }, [formRef, create]);
199160
+ return react__WEBPACK_IMPORTED_MODULE_0__["createElement"](react__WEBPACK_IMPORTED_MODULE_0__["Fragment"], null, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_common_ButtonRow__WEBPACK_IMPORTED_MODULE_3__["ActionButton"], {
199161
+ id: "rentals-list-create",
199162
+ color: "primary",
199163
+ variant: "contained",
199164
+ disabled: isRequesting,
199165
+ label: "Create New Rental",
199166
+ onClick: openModal
199167
+ }), isOpen && react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_RentalForm__WEBPACK_IMPORTED_MODULE_5__["default"], {
199168
+ ref: formRef,
199169
+ isOpen: true,
199170
+ rental: member ? {
199171
+ memberId: member.id,
199172
+ memberName: `${member.firstname} ${member.lastname}`
199173
+ } : {},
199174
+ isRequesting: isRequesting,
199175
+ error: error,
199176
+ onClose: closeModal,
199177
+ onSubmit: onSubmit,
199178
+ title: "Create New Rental"
199179
+ }));
199812
199180
  };
199813
199181
 
199182
+ /* harmony default export */ __webpack_exports__["default"] = (CreateRental);
199183
+
199814
199184
  /***/ }),
199815
199185
 
199816
199186
  /***/ "./src/ui/rentals/DeleteRentalModal.tsx":
@@ -199905,6 +199275,162 @@ const DeleteRentalModal = ({
199905
199275
 
199906
199276
  /***/ }),
199907
199277
 
199278
+ /***/ "./src/ui/rentals/EditRental.tsx":
199279
+ /*!***************************************!*\
199280
+ !*** ./src/ui/rentals/EditRental.tsx ***!
199281
+ \***************************************/
199282
+ /*! exports provided: default */
199283
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
199284
+
199285
+ "use strict";
199286
+ __webpack_require__.r(__webpack_exports__);
199287
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
199288
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
199289
+ /* harmony import */ var makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! makerspace-ts-api-client */ "./node_modules/makerspace-ts-api-client/dist/apiClient.js");
199290
+ /* harmony import */ var makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_1__);
199291
+ /* harmony import */ var _hooks_useModal__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../hooks/useModal */ "./src/ui/hooks/useModal.ts");
199292
+ /* harmony import */ var _hooks_useWriteTransaction__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../hooks/useWriteTransaction */ "./src/ui/hooks/useWriteTransaction.ts");
199293
+ /* harmony import */ var ui_common_ButtonRow__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ui/common/ButtonRow */ "./src/ui/common/ButtonRow.tsx");
199294
+ /* harmony import */ var _RentalForm__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./RentalForm */ "./src/ui/rentals/RentalForm.tsx");
199295
+
199296
+
199297
+
199298
+
199299
+
199300
+
199301
+
199302
+ const EditRental = ({
199303
+ rental,
199304
+ onUpdate
199305
+ }) => {
199306
+ const {
199307
+ isOpen,
199308
+ openModal,
199309
+ closeModal
199310
+ } = Object(_hooks_useModal__WEBPACK_IMPORTED_MODULE_2__["default"])();
199311
+ const formRef = react__WEBPACK_IMPORTED_MODULE_0__["useRef"]();
199312
+ const onSuccess = react__WEBPACK_IMPORTED_MODULE_0__["useCallback"](({
199313
+ reset
199314
+ }) => {
199315
+ onUpdate();
199316
+ closeModal();
199317
+ reset();
199318
+ }, [onUpdate, closeModal]);
199319
+ const {
199320
+ call,
199321
+ isRequesting,
199322
+ error
199323
+ } = Object(_hooks_useWriteTransaction__WEBPACK_IMPORTED_MODULE_3__["default"])(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_1__["adminUpdateRental"], onSuccess);
199324
+ const onSubmit = react__WEBPACK_IMPORTED_MODULE_0__["useCallback"](async form => {
199325
+ const validUpdate = await formRef.current.validate(form);
199326
+ if (!form.isValid()) return;
199327
+ call({
199328
+ id: rental.id,
199329
+ updateRentalDetails: validUpdate
199330
+ });
199331
+ }, [rental, formRef]);
199332
+ return react__WEBPACK_IMPORTED_MODULE_0__["createElement"](react__WEBPACK_IMPORTED_MODULE_0__["Fragment"], null, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](ui_common_ButtonRow__WEBPACK_IMPORTED_MODULE_4__["ActionButton"], {
199333
+ id: "rentals-list-edit",
199334
+ variant: "outlined",
199335
+ color: "primary",
199336
+ disabled: !rental,
199337
+ onClick: openModal,
199338
+ label: "Edit Rental"
199339
+ }), isOpen && react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_RentalForm__WEBPACK_IMPORTED_MODULE_5__["default"], {
199340
+ ref: formRef,
199341
+ rental: rental,
199342
+ isOpen: true,
199343
+ isRequesting: isRequesting,
199344
+ error: error,
199345
+ onClose: closeModal,
199346
+ onSubmit: onSubmit
199347
+ }));
199348
+ };
199349
+
199350
+ /* harmony default export */ __webpack_exports__["default"] = (EditRental);
199351
+
199352
+ /***/ }),
199353
+
199354
+ /***/ "./src/ui/rentals/RenewRental.tsx":
199355
+ /*!****************************************!*\
199356
+ !*** ./src/ui/rentals/RenewRental.tsx ***!
199357
+ \****************************************/
199358
+ /*! exports provided: default */
199359
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
199360
+
199361
+ "use strict";
199362
+ __webpack_require__.r(__webpack_exports__);
199363
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
199364
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
199365
+ /* harmony import */ var ui_rentals_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ui/rentals/utils */ "./src/ui/rentals/utils.ts");
199366
+ /* harmony import */ var ui_common_RenewalForm__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ui/common/RenewalForm */ "./src/ui/common/RenewalForm.tsx");
199367
+ /* harmony import */ var makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! makerspace-ts-api-client */ "./node_modules/makerspace-ts-api-client/dist/apiClient.js");
199368
+ /* harmony import */ var makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_3__);
199369
+ /* harmony import */ var _hooks_useWriteTransaction__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../hooks/useWriteTransaction */ "./src/ui/hooks/useWriteTransaction.ts");
199370
+ /* harmony import */ var _common_ButtonRow__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../common/ButtonRow */ "./src/ui/common/ButtonRow.tsx");
199371
+ /* harmony import */ var _hooks_useModal__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../hooks/useModal */ "./src/ui/hooks/useModal.ts");
199372
+
199373
+
199374
+
199375
+
199376
+
199377
+
199378
+
199379
+
199380
+ const RenewRental = ({
199381
+ rental = {},
199382
+ onRenew
199383
+ }) => {
199384
+ const {
199385
+ isOpen,
199386
+ openModal,
199387
+ closeModal
199388
+ } = Object(_hooks_useModal__WEBPACK_IMPORTED_MODULE_6__["default"])();
199389
+ const formRef = react__WEBPACK_IMPORTED_MODULE_0__["useRef"]();
199390
+ const onSuccess = react__WEBPACK_IMPORTED_MODULE_0__["useCallback"](({
199391
+ reset
199392
+ }) => {
199393
+ closeModal();
199394
+ onRenew();
199395
+ reset();
199396
+ }, [closeModal]);
199397
+ const {
199398
+ isRequesting: rentalRenewing,
199399
+ error: renewError,
199400
+ call: renew
199401
+ } = Object(_hooks_useWriteTransaction__WEBPACK_IMPORTED_MODULE_4__["default"])(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_3__["adminUpdateRental"], onSuccess);
199402
+ const onSubmit = react__WEBPACK_IMPORTED_MODULE_0__["useCallback"](async form => {
199403
+ const validUpdate = await formRef.current.validate(form);
199404
+ if (!form.isValid()) return; // TODO: renew rental type isn't supported
199405
+
199406
+ renew({
199407
+ id: rental.id,
199408
+ updateRentalDetails: validUpdate
199409
+ });
199410
+ }, [formRef, renew, rental]);
199411
+ return react__WEBPACK_IMPORTED_MODULE_0__["createElement"](react__WEBPACK_IMPORTED_MODULE_0__["Fragment"], null, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_common_ButtonRow__WEBPACK_IMPORTED_MODULE_5__["ActionButton"], {
199412
+ id: "rentals-list-renew",
199413
+ color: "primary",
199414
+ variant: "outlined",
199415
+ disabled: !rental.id,
199416
+ label: "Renew",
199417
+ onClick: openModal
199418
+ }), isOpen && react__WEBPACK_IMPORTED_MODULE_0__["createElement"](ui_common_RenewalForm__WEBPACK_IMPORTED_MODULE_2__["default"], {
199419
+ ref: formRef,
199420
+ title: "Renew Rental",
199421
+ entity: Object(ui_rentals_utils__WEBPACK_IMPORTED_MODULE_1__["rentalToRenewal"])(rental),
199422
+ isOpen: true,
199423
+ isRequesting: rentalRenewing,
199424
+ error: renewError,
199425
+ onClose: closeModal,
199426
+ onSubmit: onSubmit
199427
+ }));
199428
+ };
199429
+
199430
+ /* harmony default export */ __webpack_exports__["default"] = (RenewRental);
199431
+
199432
+ /***/ }),
199433
+
199908
199434
  /***/ "./src/ui/rentals/RentalForm.tsx":
199909
199435
  /*!***************************************!*\
199910
199436
  !*** ./src/ui/rentals/RentalForm.tsx ***!
@@ -199976,7 +199502,7 @@ class RentalForm extends react__WEBPACK_IMPORTED_MODULE_0__["Component"] {
199976
199502
  isRequesting,
199977
199503
  error,
199978
199504
  onSubmit,
199979
- rental
199505
+ rental = {}
199980
199506
  } = this.props;
199981
199507
  const rentalFields = Object(ui_rentals_constants__WEBPACK_IMPORTED_MODULE_7__["fields"])(rental);
199982
199508
  return isOpen && react__WEBPACK_IMPORTED_MODULE_0__["createElement"](ui_common_FormModal__WEBPACK_IMPORTED_MODULE_6__["default"], {
@@ -200053,603 +199579,47 @@ class RentalForm extends react__WEBPACK_IMPORTED_MODULE_0__["Component"] {
200053
199579
  onChange: this.toggleContract,
200054
199580
  color: "default"
200055
199581
  }),
200056
- label: rentalFields.contractOnFile.label
200057
- }))));
200058
- }
200059
-
200060
- }
200061
-
200062
- /* harmony default export */ __webpack_exports__["default"] = (RentalForm);
200063
-
200064
- /***/ }),
200065
-
200066
- /***/ "./src/ui/rentals/RentalsList.tsx":
200067
- /*!****************************************!*\
200068
- !*** ./src/ui/rentals/RentalsList.tsx ***!
200069
- \****************************************/
200070
- /*! exports provided: default */
200071
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
200072
-
200073
- "use strict";
200074
- __webpack_require__.r(__webpack_exports__);
200075
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
200076
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
200077
- /* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! moment */ "./node_modules/moment/moment.js");
200078
- /* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_1__);
200079
- /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-redux */ "./node_modules/react-redux/es/index.js");
200080
- /* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-router-dom */ "./node_modules/react-router-dom/esm/react-router-dom.js");
200081
- /* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @material-ui/core/Grid */ "./node_modules/@material-ui/core/Grid/index.js");
200082
- /* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_4__);
200083
- /* harmony import */ var app_entities_rental__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! app/entities/rental */ "./src/app/entities/rental.ts");
200084
- /* harmony import */ var ui_common_table_constants__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ui/common/table/constants */ "./src/ui/common/table/constants.ts");
200085
- /* harmony import */ var ui_common_table_TableContainer__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ui/common/table/TableContainer */ "./src/ui/common/table/TableContainer.tsx");
200086
- /* harmony import */ var ui_rentals_actions__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ui/rentals/actions */ "./src/ui/rentals/actions.ts");
200087
- /* harmony import */ var ui_constants__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ui/constants */ "./src/ui/constants.ts");
200088
- /* harmony import */ var ui_common_StatusLabel__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ui/common/StatusLabel */ "./src/ui/common/StatusLabel.tsx");
200089
- /* harmony import */ var ui_utils_timeToDate__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ui/utils/timeToDate */ "./src/ui/utils/timeToDate.ts");
200090
- /* harmony import */ var app_constants__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! app/constants */ "./src/app/constants.ts");
200091
- /* harmony import */ var ui_rentals_RentalForm__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ui/rentals/RentalForm */ "./src/ui/rentals/RentalForm.tsx");
200092
- /* harmony import */ var ui_rentals_UpdateRentalContainer__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ui/rentals/UpdateRentalContainer */ "./src/ui/rentals/UpdateRentalContainer.tsx");
200093
- /* harmony import */ var ui_rentals_DeleteRentalModal__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ui/rentals/DeleteRentalModal */ "./src/ui/rentals/DeleteRentalModal.tsx");
200094
- /* harmony import */ var ui_common_ButtonRow__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ui/common/ButtonRow */ "./src/ui/common/ButtonRow.tsx");
200095
- /* harmony import */ var ui_rentals_utils__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ui/rentals/utils */ "./src/ui/rentals/utils.ts");
200096
- /* harmony import */ var ui_rentals_constants__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ui/rentals/constants */ "./src/ui/rentals/constants.ts");
200097
- /* harmony import */ var ui_common_RenewalForm__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ui/common/RenewalForm */ "./src/ui/common/RenewalForm.tsx");
200098
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
200099
-
200100
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
200101
-
200102
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
200103
-
200104
-
200105
-
200106
-
200107
-
200108
-
200109
-
200110
-
200111
-
200112
-
200113
-
200114
-
200115
-
200116
-
200117
-
200118
-
200119
-
200120
-
200121
-
200122
-
200123
-
200124
-
200125
- class RentalsList extends react__WEBPACK_IMPORTED_MODULE_0__["Component"] {
200126
- constructor(props) {
200127
- super(props);
200128
-
200129
- _defineProperty(this, "fields", [{
200130
- id: "number",
200131
- label: "Number",
200132
- cell: row => row.number,
200133
- defaultSortDirection: ui_common_table_constants__WEBPACK_IMPORTED_MODULE_6__["SortDirection"].Desc
200134
- }, {
200135
- id: "description",
200136
- label: "Description",
200137
- cell: row => row.description
200138
- }, {
200139
- id: "expiration",
200140
- label: "Expiration Date",
200141
- cell: row => row.expiration ? Object(ui_utils_timeToDate__WEBPACK_IMPORTED_MODULE_11__["timeToDate"])(row.expiration) : "N/A",
200142
- defaultSortDirection: ui_common_table_constants__WEBPACK_IMPORTED_MODULE_6__["SortDirection"].Desc
200143
- }, ...(this.props.admin ? [{
200144
- id: "member",
200145
- label: "Member",
200146
- cell: row => react__WEBPACK_IMPORTED_MODULE_0__["createElement"](react_router_dom__WEBPACK_IMPORTED_MODULE_3__["Link"], {
200147
- to: `/members/${row.memberId}`
200148
- }, row.memberName),
200149
- defaultSortDirection: ui_common_table_constants__WEBPACK_IMPORTED_MODULE_6__["SortDirection"].Desc,
200150
- width: 200
200151
- }] : []), {
200152
- id: "status",
200153
- label: "Status",
200154
- cell: row => {
200155
- const current = moment__WEBPACK_IMPORTED_MODULE_1__(row.expiration).valueOf() > Date.now();
200156
- const statusColor = current ? ui_constants__WEBPACK_IMPORTED_MODULE_9__["Status"].Success : ui_constants__WEBPACK_IMPORTED_MODULE_9__["Status"].Danger;
200157
- const label = current ? "Active" : "Expired";
200158
- return react__WEBPACK_IMPORTED_MODULE_0__["createElement"](ui_common_StatusLabel__WEBPACK_IMPORTED_MODULE_10__["default"], {
200159
- label: label,
200160
- color: statusColor
200161
- });
200162
- }
200163
- }]);
200164
-
200165
- _defineProperty(this, "openCreateModal", () => this.openRentalModal(app_constants__WEBPACK_IMPORTED_MODULE_12__["CrudOperation"].Create));
200166
-
200167
- _defineProperty(this, "openUpdateModal", () => this.openRentalModal(app_constants__WEBPACK_IMPORTED_MODULE_12__["CrudOperation"].Update));
200168
-
200169
- _defineProperty(this, "openDeleteModal", () => this.openRentalModal(app_constants__WEBPACK_IMPORTED_MODULE_12__["CrudOperation"].Delete));
200170
-
200171
- _defineProperty(this, "openRentalModal", operation => this.setState({
200172
- openRentalForm: true,
200173
- modalOperation: operation
200174
- }));
200175
-
200176
- _defineProperty(this, "closeRentalModal", () => {
200177
- this.setState({
200178
- openRentalForm: false
200179
- });
200180
- });
200181
-
200182
- _defineProperty(this, "openRenewalModal", () => this.setState({
200183
- openRenewalForm: true
200184
- }));
200185
-
200186
- _defineProperty(this, "closeRenewalModal", () => {
200187
- this.setState({
200188
- openRenewalForm: false
200189
- });
200190
- });
200191
-
200192
- _defineProperty(this, "getActionButtons", () => {
200193
- const {
200194
- selectedId
200195
- } = this.state;
200196
- const {
200197
- admin,
200198
- rentals
200199
- } = this.props;
200200
- const selectedRental = selectedId && rentals[selectedId];
200201
-
200202
- const onDelete = () => {
200203
- this.setState({
200204
- selectedId: undefined,
200205
- pageNum: 0
200206
- }, this.getRentals);
200207
- };
200208
-
200209
- const actionButtons = [...(admin ? [{
200210
- id: "rentals-list-create",
200211
- variant: "contained",
200212
- color: "primary",
200213
- onClick: this.openCreateModal,
200214
- label: "Create New Rental"
200215
- }, {
200216
- id: "rentals-list-edit",
200217
- variant: "outlined",
200218
- color: "primary",
200219
- disabled: !selectedId,
200220
- onClick: this.openUpdateModal,
200221
- label: "Edit Rental"
200222
- }, {
200223
- id: "rentals-list-renew",
200224
- variant: "outlined",
200225
- color: "primary",
200226
- disabled: !selectedId,
200227
- onClick: this.openRenewalModal,
200228
- label: "Renew Rental"
200229
- }] : [])];
200230
- return react__WEBPACK_IMPORTED_MODULE_0__["createElement"](react__WEBPACK_IMPORTED_MODULE_0__["Fragment"], null, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](ui_common_ButtonRow__WEBPACK_IMPORTED_MODULE_16__["default"], {
200231
- actionButtons: actionButtons
200232
- }), react__WEBPACK_IMPORTED_MODULE_0__["createElement"](ui_rentals_DeleteRentalModal__WEBPACK_IMPORTED_MODULE_15__["default"], {
200233
- rental: selectedRental,
200234
- onDelete: onDelete
200235
- }));
200236
- });
200237
-
200238
- _defineProperty(this, "getQueryParams", () => {
200239
- const {
200240
- pageNum,
200241
- orderBy,
200242
- order
200243
- } = this.state;
200244
- return {
200245
- pageNum,
200246
- orderBy,
200247
- order
200248
- };
200249
- });
200250
-
200251
- _defineProperty(this, "getRentals", (resetPage = false) => {
200252
- if (resetPage) {
200253
- this.setState({
200254
- pageNum: 0
200255
- });
200256
- }
200257
-
200258
- this.props.getRentals(this.props.admin, this.getQueryParams());
200259
- });
200260
-
200261
- _defineProperty(this, "rowId", row => row.id);
200262
-
200263
- _defineProperty(this, "onSort", prop => {
200264
- const orderBy = prop;
200265
- let order = ui_common_table_constants__WEBPACK_IMPORTED_MODULE_6__["SortDirection"].Desc;
200266
-
200267
- if (this.state.orderBy === orderBy && this.state.order === order) {
200268
- order = ui_common_table_constants__WEBPACK_IMPORTED_MODULE_6__["SortDirection"].Asc;
200269
- }
200270
-
200271
- this.setState({
200272
- order,
200273
- orderBy,
200274
- pageNum: 0
200275
- }, () => this.getRentals(true));
200276
- });
200277
-
200278
- _defineProperty(this, "onPageChange", newPage => {
200279
- this.setState({
200280
- pageNum: newPage
200281
- }, this.getRentals);
200282
- });
200283
-
200284
- _defineProperty(this, "onSelect", (id, selected) => {
200285
- if (selected) {
200286
- this.setState({
200287
- selectedId: id
200288
- });
200289
- } else {
200290
- this.setState({
200291
- selectedId: undefined
200292
- });
200293
- }
200294
- });
200295
-
200296
- _defineProperty(this, "renderInvoiceForms", () => {
200297
- const {
200298
- selectedId,
200299
- openRentalForm,
200300
- modalOperation,
200301
- openRenewalForm
200302
- } = this.state;
200303
- const {
200304
- rentals,
200305
- member,
200306
- admin
200307
- } = this.props;
200308
-
200309
- const editForm = renderProps => react__WEBPACK_IMPORTED_MODULE_0__["createElement"](ui_rentals_RentalForm__WEBPACK_IMPORTED_MODULE_13__["default"], {
200310
- ref: renderProps.setRef,
200311
- rental: renderProps.rental,
200312
- isOpen: renderProps.isOpen,
200313
- isRequesting: renderProps.isRequesting,
200314
- error: renderProps.error,
200315
- onClose: renderProps.closeHandler,
200316
- onSubmit: renderProps.submit
200317
- });
200318
-
200319
- const createForm = renderProps => react__WEBPACK_IMPORTED_MODULE_0__["createElement"](ui_rentals_RentalForm__WEBPACK_IMPORTED_MODULE_13__["default"], {
200320
- ref: renderProps.setRef,
200321
- rental: renderProps.rental,
200322
- isOpen: renderProps.isOpen,
200323
- isRequesting: renderProps.isRequesting,
200324
- error: renderProps.error,
200325
- onClose: renderProps.closeHandler,
200326
- onSubmit: renderProps.submit,
200327
- title: "Create Rental"
200328
- });
200329
-
200330
- const renewForm = renderProps => react__WEBPACK_IMPORTED_MODULE_0__["createElement"](ui_common_RenewalForm__WEBPACK_IMPORTED_MODULE_19__["default"], {
200331
- ref: renderProps.setRef,
200332
- renewalOptions: ui_rentals_constants__WEBPACK_IMPORTED_MODULE_18__["rentalRenewalOptions"],
200333
- title: "Renew Rental",
200334
- entity: Object(ui_rentals_utils__WEBPACK_IMPORTED_MODULE_17__["rentalToRenewal"])(renderProps.rental),
200335
- isOpen: renderProps.isOpen,
200336
- isRequesting: renderProps.isRequesting,
200337
- error: renderProps.error,
200338
- onClose: renderProps.closeHandler,
200339
- onSubmit: renderProps.submit
200340
- });
200341
-
200342
- const selectedRental = rentals[selectedId];
200343
- return admin && react__WEBPACK_IMPORTED_MODULE_0__["createElement"](react__WEBPACK_IMPORTED_MODULE_0__["Fragment"], null, !!selectedRental && react__WEBPACK_IMPORTED_MODULE_0__["createElement"](react__WEBPACK_IMPORTED_MODULE_0__["Fragment"], null, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](ui_rentals_UpdateRentalContainer__WEBPACK_IMPORTED_MODULE_14__["default"], {
200344
- operation: app_constants__WEBPACK_IMPORTED_MODULE_12__["CrudOperation"].Update,
200345
- isOpen: openRentalForm && modalOperation === app_constants__WEBPACK_IMPORTED_MODULE_12__["CrudOperation"].Update,
200346
- rental: rentals[selectedId],
200347
- closeHandler: this.closeRentalModal,
200348
- render: editForm
200349
- }), react__WEBPACK_IMPORTED_MODULE_0__["createElement"](ui_rentals_UpdateRentalContainer__WEBPACK_IMPORTED_MODULE_14__["default"], {
200350
- operation: app_constants__WEBPACK_IMPORTED_MODULE_12__["CrudOperation"].Update,
200351
- isOpen: openRenewalForm,
200352
- rental: rentals[selectedId],
200353
- closeHandler: this.closeRenewalModal,
200354
- render: renewForm
200355
- })), react__WEBPACK_IMPORTED_MODULE_0__["createElement"](ui_rentals_UpdateRentalContainer__WEBPACK_IMPORTED_MODULE_14__["default"], {
200356
- operation: app_constants__WEBPACK_IMPORTED_MODULE_12__["CrudOperation"].Create,
200357
- isOpen: openRentalForm && modalOperation === app_constants__WEBPACK_IMPORTED_MODULE_12__["CrudOperation"].Create,
200358
- rental: member ? {
200359
- memberId: member.id,
200360
- memberName: `${member.firstname} ${member.lastname}`
200361
- } : {},
200362
- closeHandler: this.closeRentalModal,
200363
- render: createForm
200364
- }));
200365
- });
200366
-
200367
- this.state = {
200368
- selectedId: undefined,
200369
- pageNum: 0,
200370
- orderBy: "",
200371
- order: ui_common_table_constants__WEBPACK_IMPORTED_MODULE_6__["SortDirection"].Asc,
200372
- modalOperation: undefined,
200373
- openRentalForm: false,
200374
- openRenewalForm: false
200375
- };
200376
- }
200377
-
200378
- componentDidMount() {
200379
- this.getRentals();
200380
- }
200381
-
200382
- componentDidUpdate(prevProps) {
200383
- const {
200384
- isCreating: wasCreating,
200385
- isUpdating: wasUpdating,
200386
- member: oldMember
200387
- } = prevProps;
200388
- const {
200389
- isCreating,
200390
- createError,
200391
- isUpdating,
200392
- updateError,
200393
- member
200394
- } = this.props;
200395
-
200396
- if (wasCreating && !isCreating && !createError || // refresh list on create
200397
- wasUpdating && !isUpdating && !updateError || // or update
200398
- (oldMember && oldMember.id) !== (member && member.id) // or member change
200399
- ) {
200400
- this.getRentals(true);
200401
- }
200402
- }
200403
-
200404
- render() {
200405
- const {
200406
- rentals,
200407
- totalItems,
200408
- isReading,
200409
- readError,
200410
- admin,
200411
- member
200412
- } = this.props;
200413
- const {
200414
- selectedId,
200415
- pageNum,
200416
- order,
200417
- orderBy
200418
- } = this.state;
200419
- return react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_4___default.a, {
200420
- container: true,
200421
- spacing: 24,
200422
- justify: "center"
200423
- }, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_4___default.a, {
200424
- item: true,
200425
- md: member ? 12 : 10,
200426
- xs: 12
200427
- }, admin && this.getActionButtons(), react__WEBPACK_IMPORTED_MODULE_0__["createElement"](ui_common_table_TableContainer__WEBPACK_IMPORTED_MODULE_7__["default"], {
200428
- id: "rentals-table",
200429
- title: "Rentals",
200430
- loading: isReading,
200431
- data: Object.values(rentals),
200432
- error: readError,
200433
- totalItems: totalItems,
200434
- selectedIds: [selectedId],
200435
- pageNum: pageNum,
200436
- columns: this.fields,
200437
- order: order,
200438
- orderBy: orderBy,
200439
- onSort: this.onSort,
200440
- rowId: this.rowId,
200441
- onPageChange: this.onPageChange,
200442
- onSelect: this.onSelect
200443
- }), this.renderInvoiceForms()));
200444
- }
200445
-
200446
- }
200447
-
200448
- const mapStateToProps = (state, _ownProps) => {
200449
- const {
200450
- entities: rentals,
200451
- read: {
200452
- totalItems,
200453
- isRequesting: isReading,
200454
- error: readError
200455
- },
200456
- create: {
200457
- isRequesting: isCreating,
200458
- error: createError
200459
- },
200460
- update: {
200461
- isRequesting: isUpdating,
200462
- error: updateError
200463
- }
200464
- } = state.rentals;
200465
- const {
200466
- currentUser: {
200467
- isAdmin: admin
200468
- }
200469
- } = state.auth;
200470
- return {
200471
- rentals,
200472
- totalItems,
200473
- isReading,
200474
- readError,
200475
- isCreating,
200476
- createError,
200477
- isUpdating,
200478
- updateError,
200479
- admin
200480
- };
200481
- };
200482
-
200483
- const mapDispatchToProps = (dispatch, ownProps) => {
200484
- const {
200485
- member
200486
- } = ownProps;
200487
- return {
200488
- getRentals: (admin, queryParams) => dispatch(Object(ui_rentals_actions__WEBPACK_IMPORTED_MODULE_8__["readRentalsAction"])(admin, _objectSpread({}, queryParams, {}, member && {
200489
- [app_entities_rental__WEBPACK_IMPORTED_MODULE_5__["Properties"].MemberId]: member.id
200490
- })))
200491
- };
200492
- };
200493
-
200494
- /* harmony default export */ __webpack_exports__["default"] = (Object(react_router_dom__WEBPACK_IMPORTED_MODULE_3__["withRouter"])(Object(react_redux__WEBPACK_IMPORTED_MODULE_2__["connect"])(mapStateToProps, mapDispatchToProps)(RentalsList)));
200495
-
200496
- /***/ }),
200497
-
200498
- /***/ "./src/ui/rentals/UpdateRentalContainer.tsx":
200499
- /*!**************************************************!*\
200500
- !*** ./src/ui/rentals/UpdateRentalContainer.tsx ***!
200501
- \**************************************************/
200502
- /*! exports provided: default */
200503
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
200504
-
200505
- "use strict";
200506
- __webpack_require__.r(__webpack_exports__);
200507
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
200508
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
200509
- /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-redux */ "./node_modules/react-redux/es/index.js");
200510
- /* harmony import */ var ui_rentals_actions__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ui/rentals/actions */ "./src/ui/rentals/actions.ts");
200511
- /* harmony import */ var app_constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! app/constants */ "./src/app/constants.ts");
200512
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
200513
-
200514
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
200515
-
200516
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
200517
-
200518
-
200519
-
200520
-
200521
-
200522
-
200523
- class UpdateRental extends react__WEBPACK_IMPORTED_MODULE_0__["Component"] {
200524
- constructor(...args) {
200525
- super(...args);
200526
-
200527
- _defineProperty(this, "formRef", void 0);
200528
-
200529
- _defineProperty(this, "setFormRef", ref => this.formRef = ref);
200530
-
200531
- _defineProperty(this, "submitRentalForm", async form => {
200532
- const validUpdate = this.formRef.validate && (await this.formRef.validate(form));
200533
- if (!form.isValid()) return;
200534
- await this.props.dispatchRental(validUpdate);
200535
-
200536
- if (!this.props.error) {
200537
- return true;
200538
- }
200539
- });
200540
- }
200541
-
200542
- componentDidUpdate(prevProps) {
200543
- const {
200544
- isRequesting: wasRequesting
200545
- } = prevProps;
200546
- const {
200547
- isOpen,
200548
- isRequesting,
200549
- closeHandler,
200550
- error
200551
- } = this.props;
200552
-
200553
- if (isOpen && wasRequesting && !isRequesting && !error) {
200554
- closeHandler();
200555
- }
200556
- }
200557
-
200558
- render() {
200559
- const {
200560
- render
200561
- } = this.props;
200562
-
200563
- const renderPayload = _objectSpread({}, this.props, {
200564
- submit: this.submitRentalForm,
200565
- setRef: this.setFormRef
200566
- });
200567
-
200568
- return render(renderPayload);
199582
+ label: rentalFields.contractOnFile.label
199583
+ }))));
200569
199584
  }
200570
199585
 
200571
199586
  }
200572
199587
 
200573
- const mapStateToProps = (state, ownProps) => {
200574
- let stateProps = {};
200575
- const {
200576
- operation
200577
- } = ownProps;
200578
-
200579
- switch (operation) {
200580
- case app_constants__WEBPACK_IMPORTED_MODULE_3__["CrudOperation"].Update:
200581
- stateProps = state.rentals.update;
200582
- break;
200583
-
200584
- case app_constants__WEBPACK_IMPORTED_MODULE_3__["CrudOperation"].Create:
200585
- stateProps = state.rentals.create;
200586
- break;
200587
-
200588
- case app_constants__WEBPACK_IMPORTED_MODULE_3__["CrudOperation"].Delete:
200589
- stateProps = state.rentals.delete;
200590
- break;
200591
- }
200592
-
200593
- const {
200594
- isRequesting,
200595
- error
200596
- } = stateProps;
200597
- return {
200598
- error,
200599
- isRequesting
200600
- };
200601
- };
200602
-
200603
- const mapDispatchToProps = (dispatch, ownProps) => {
200604
- const {
200605
- rental,
200606
- operation
200607
- } = ownProps;
200608
- return {
200609
- dispatchRental: rentalDetails => {
200610
- let action;
200611
-
200612
- switch (operation) {
200613
- case app_constants__WEBPACK_IMPORTED_MODULE_3__["CrudOperation"].Update:
200614
- action = Object(ui_rentals_actions__WEBPACK_IMPORTED_MODULE_2__["updateRentalAction"])(rental.id, rentalDetails);
200615
- break;
200616
-
200617
- case app_constants__WEBPACK_IMPORTED_MODULE_3__["CrudOperation"].Create:
200618
- action = Object(ui_rentals_actions__WEBPACK_IMPORTED_MODULE_2__["createRentalAction"])(rentalDetails);
200619
- break;
200620
-
200621
- case app_constants__WEBPACK_IMPORTED_MODULE_3__["CrudOperation"].Delete:
200622
- action = Object(ui_rentals_actions__WEBPACK_IMPORTED_MODULE_2__["deleteRentalAction"])(rental.id);
200623
- break;
200624
- }
200625
-
200626
- return dispatch(action);
200627
- }
200628
- };
200629
- };
200630
-
200631
- /* harmony default export */ __webpack_exports__["default"] = (Object(react_redux__WEBPACK_IMPORTED_MODULE_1__["connect"])(mapStateToProps, mapDispatchToProps)(UpdateRental));
199588
+ /* harmony default export */ __webpack_exports__["default"] = (RentalForm);
200632
199589
 
200633
199590
  /***/ }),
200634
199591
 
200635
- /***/ "./src/ui/rentals/actions.ts":
200636
- /*!***********************************!*\
200637
- !*** ./src/ui/rentals/actions.ts ***!
200638
- \***********************************/
200639
- /*! exports provided: readRentalsAction, createRentalAction, updateRentalAction, deleteRentalAction, rentalsReducer */
199592
+ /***/ "./src/ui/rentals/RentalsList.tsx":
199593
+ /*!****************************************!*\
199594
+ !*** ./src/ui/rentals/RentalsList.tsx ***!
199595
+ \****************************************/
199596
+ /*! exports provided: default */
200640
199597
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
200641
199598
 
200642
199599
  "use strict";
200643
199600
  __webpack_require__.r(__webpack_exports__);
200644
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "readRentalsAction", function() { return readRentalsAction; });
200645
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createRentalAction", function() { return createRentalAction; });
200646
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "updateRentalAction", function() { return updateRentalAction; });
200647
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "deleteRentalAction", function() { return deleteRentalAction; });
200648
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "rentalsReducer", function() { return rentalsReducer; });
200649
- /* harmony import */ var lodash_es_omit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es/omit */ "./node_modules/lodash-es/omit.js");
200650
- /* harmony import */ var ui_rentals_constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ui/rentals/constants */ "./src/ui/rentals/constants.ts");
200651
- /* harmony import */ var makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! makerspace-ts-api-client */ "./node_modules/makerspace-ts-api-client/dist/apiClient.js");
200652
- /* harmony import */ var makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_2__);
199601
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
199602
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
199603
+ /* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! moment */ "./node_modules/moment/moment.js");
199604
+ /* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_1__);
199605
+ /* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-router-dom */ "./node_modules/react-router-dom/esm/react-router-dom.js");
199606
+ /* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/core/Grid */ "./node_modules/@material-ui/core/Grid/index.js");
199607
+ /* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_3__);
199608
+ /* harmony import */ var makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! makerspace-ts-api-client */ "./node_modules/makerspace-ts-api-client/dist/apiClient.js");
199609
+ /* harmony import */ var makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_4__);
199610
+ /* harmony import */ var _common_table_StatefulTable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../common/table/StatefulTable */ "./src/ui/common/table/StatefulTable.tsx");
199611
+ /* harmony import */ var ui_common_table_constants__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ui/common/table/constants */ "./src/ui/common/table/constants.ts");
199612
+ /* harmony import */ var ui_constants__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ui/constants */ "./src/ui/constants.ts");
199613
+ /* harmony import */ var ui_common_StatusLabel__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ui/common/StatusLabel */ "./src/ui/common/StatusLabel.tsx");
199614
+ /* harmony import */ var ui_utils_timeToDate__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ui/utils/timeToDate */ "./src/ui/utils/timeToDate.ts");
199615
+ /* harmony import */ var ui_rentals_DeleteRentalModal__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ui/rentals/DeleteRentalModal */ "./src/ui/rentals/DeleteRentalModal.tsx");
199616
+ /* harmony import */ var ui_hooks_useReadTransaction__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ui/hooks/useReadTransaction */ "./src/ui/hooks/useReadTransaction.ts");
199617
+ /* harmony import */ var ui_rentals_CreateRental__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ui/rentals/CreateRental */ "./src/ui/rentals/CreateRental.tsx");
199618
+ /* harmony import */ var ui_rentals_RenewRental__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ui/rentals/RenewRental */ "./src/ui/rentals/RenewRental.tsx");
199619
+ /* harmony import */ var ui_rentals_EditRental__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ui/rentals/EditRental */ "./src/ui/rentals/EditRental.tsx");
199620
+ /* harmony import */ var _utils_extractTotalItems__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../utils/extractTotalItems */ "./src/ui/utils/extractTotalItems.ts");
199621
+ /* harmony import */ var _reducer_hooks__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../reducer/hooks */ "./src/ui/reducer/hooks.ts");
199622
+ /* harmony import */ var _common_Filters_QueryContext__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../common/Filters/QueryContext */ "./src/ui/common/Filters/QueryContext.tsx");
200653
199623
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
200654
199624
 
200655
199625
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
@@ -200659,294 +199629,149 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
200659
199629
 
200660
199630
 
200661
199631
 
200662
- const readRentalsAction = (isUserAdmin, queryParams) => async dispatch => {
200663
- dispatch({
200664
- type: ui_rentals_constants__WEBPACK_IMPORTED_MODULE_1__["Action"].StartReadRequest
200665
- });
200666
- const func = isUserAdmin ? makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_2__["adminListRentals"] : makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_2__["listRentals"];
200667
- const result = await func(queryParams);
200668
199632
 
200669
- if (Object(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_2__["isApiErrorResponse"])(result)) {
200670
- dispatch({
200671
- type: ui_rentals_constants__WEBPACK_IMPORTED_MODULE_1__["Action"].GetRentalsFailure,
200672
- error: result.error.message
200673
- });
200674
- } else {
200675
- const {
200676
- data,
200677
- response
200678
- } = result;
200679
- const totalItems = response.headers.get("total-items");
200680
- dispatch({
200681
- type: ui_rentals_constants__WEBPACK_IMPORTED_MODULE_1__["Action"].GetRentalsSuccess,
200682
- data: {
200683
- rentals: data,
200684
- totalItems: Number(totalItems)
200685
- }
200686
- });
200687
- }
200688
- };
200689
- const createRentalAction = rentalForm => async dispatch => {
200690
- dispatch({
200691
- type: ui_rentals_constants__WEBPACK_IMPORTED_MODULE_1__["Action"].StartCreateRequest
200692
- });
200693
- const result = await Object(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_2__["adminCreateRental"])({
200694
- createRentalDetails: rentalForm
200695
- });
200696
199633
 
200697
- if (Object(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_2__["isApiErrorResponse"])(result)) {
200698
- dispatch({
200699
- type: ui_rentals_constants__WEBPACK_IMPORTED_MODULE_1__["Action"].CreateRentalFailure,
200700
- error: result.error.message
200701
- });
200702
- } else {
200703
- dispatch({
200704
- type: ui_rentals_constants__WEBPACK_IMPORTED_MODULE_1__["Action"].CreateRentalSuccess,
200705
- data: result.data
200706
- });
200707
- }
200708
- };
200709
- const updateRentalAction = (rentalId, updatedRental) => async dispatch => {
200710
- dispatch({
200711
- type: ui_rentals_constants__WEBPACK_IMPORTED_MODULE_1__["Action"].StartUpdateRequest
200712
- });
200713
- const result = await Object(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_2__["adminUpdateRental"])({
200714
- id: rentalId,
200715
- updateRentalDetails: updatedRental
200716
- });
200717
199634
 
200718
- if (Object(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_2__["isApiErrorResponse"])(result)) {
200719
- dispatch({
200720
- type: ui_rentals_constants__WEBPACK_IMPORTED_MODULE_1__["Action"].UpdateRentalFailure,
200721
- error: result.error.message
200722
- });
200723
- } else {
200724
- dispatch({
200725
- type: ui_rentals_constants__WEBPACK_IMPORTED_MODULE_1__["Action"].UpdateRentalSuccess,
200726
- data: result.data
200727
- });
200728
- }
200729
- };
200730
- const deleteRentalAction = rentalId => async dispatch => {
200731
- dispatch({
200732
- type: ui_rentals_constants__WEBPACK_IMPORTED_MODULE_1__["Action"].StartDeleteRequest
200733
- });
200734
- const result = await Object(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_2__["adminDeleteRental"])({
200735
- id: rentalId
200736
- });
200737
199635
 
200738
- if (Object(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_2__["isApiErrorResponse"])(result)) {
200739
- dispatch({
200740
- type: ui_rentals_constants__WEBPACK_IMPORTED_MODULE_1__["Action"].DeleteRentalFailure,
200741
- error: result.error.message
200742
- });
200743
- } else {
200744
- dispatch({
200745
- type: ui_rentals_constants__WEBPACK_IMPORTED_MODULE_1__["Action"].DeleteRentalSuccess,
200746
- data: rentalId
200747
- });
200748
- }
200749
- };
200750
- const defaultState = {
200751
- entities: {},
200752
- read: {
200753
- isRequesting: false,
200754
- error: "",
200755
- totalItems: 0
200756
- },
200757
- create: {
200758
- isRequesting: false,
200759
- error: ""
200760
- },
200761
- update: {
200762
- isRequesting: false,
200763
- error: ""
200764
- },
200765
- delete: {
200766
- isRequesting: false,
200767
- error: ""
200768
- }
200769
- };
200770
- const rentalsReducer = (state = defaultState, action) => {
200771
- switch (action.type) {
200772
- case ui_rentals_constants__WEBPACK_IMPORTED_MODULE_1__["Action"].StartReadRequest:
200773
- return _objectSpread({}, state, {
200774
- read: _objectSpread({}, state.read, {
200775
- isRequesting: true
200776
- })
200777
- });
200778
199636
 
200779
- case ui_rentals_constants__WEBPACK_IMPORTED_MODULE_1__["Action"].GetRentalsSuccess:
200780
- const {
200781
- data: {
200782
- rentals,
200783
- totalItems
200784
- }
200785
- } = action;
200786
- const newRentals = {};
200787
- rentals.forEach(rental => {
200788
- newRentals[rental.id] = rental;
200789
- });
200790
- return _objectSpread({}, state, {
200791
- entities: newRentals,
200792
- read: _objectSpread({}, state.read, {
200793
- totalItems,
200794
- isRequesting: false,
200795
- error: ""
200796
- })
200797
- });
200798
199637
 
200799
- case ui_rentals_constants__WEBPACK_IMPORTED_MODULE_1__["Action"].GetRentalsFailure:
200800
- const {
200801
- error
200802
- } = action;
200803
- return _objectSpread({}, state, {
200804
- read: _objectSpread({}, state.read, {
200805
- isRequesting: false,
200806
- error
200807
- })
200808
- });
200809
199638
 
200810
- case ui_rentals_constants__WEBPACK_IMPORTED_MODULE_1__["Action"].StartCreateRequest:
200811
- return _objectSpread({}, state, {
200812
- create: _objectSpread({}, state.create, {
200813
- isRequesting: true
200814
- })
200815
- });
200816
199639
 
200817
- case ui_rentals_constants__WEBPACK_IMPORTED_MODULE_1__["Action"].CreateRentalSuccess:
200818
- const newRental = action.data;
200819
- return _objectSpread({}, state, {
200820
- entities: _objectSpread({}, state.entities, {
200821
- [newRental.id]: newRental
200822
- }),
200823
- create: _objectSpread({}, state.create, {
200824
- isRequesting: false,
200825
- error: ""
200826
- })
200827
- });
200828
199640
 
200829
- case ui_rentals_constants__WEBPACK_IMPORTED_MODULE_1__["Action"].CreateRentalFailure:
200830
- const {
200831
- error: createError
200832
- } = action;
200833
- return _objectSpread({}, state, {
200834
- create: _objectSpread({}, state.create, {
200835
- isRequesting: false,
200836
- error: createError
200837
- })
200838
- });
200839
199641
 
200840
- case ui_rentals_constants__WEBPACK_IMPORTED_MODULE_1__["Action"].StartUpdateRequest:
200841
- return _objectSpread({}, state, {
200842
- update: _objectSpread({}, state.update, {
200843
- isRequesting: true
200844
- })
200845
- });
200846
199642
 
200847
- case ui_rentals_constants__WEBPACK_IMPORTED_MODULE_1__["Action"].UpdateRentalSuccess:
200848
- const {
200849
- data: updatedRental
200850
- } = action;
200851
- return _objectSpread({}, state, {
200852
- entities: _objectSpread({}, state.entities, {
200853
- [updatedRental.id]: updatedRental
200854
- }),
200855
- update: _objectSpread({}, state.update, {
200856
- isRequesting: false,
200857
- error: ""
200858
- })
200859
- });
200860
199643
 
200861
- case ui_rentals_constants__WEBPACK_IMPORTED_MODULE_1__["Action"].UpdateRentalFailure:
200862
- const updateError = action.error;
200863
- return _objectSpread({}, state, {
200864
- update: _objectSpread({}, state.update, {
200865
- isRequesting: false,
200866
- error: updateError
200867
- })
200868
- });
200869
199644
 
200870
- case ui_rentals_constants__WEBPACK_IMPORTED_MODULE_1__["Action"].StartDeleteRequest:
200871
- return _objectSpread({}, state, {
200872
- delete: _objectSpread({}, state.delete, {
200873
- isRequesting: true
200874
- })
200875
- });
200876
199645
 
200877
- case ui_rentals_constants__WEBPACK_IMPORTED_MODULE_1__["Action"].DeleteRentalSuccess:
200878
- const id = action.data;
200879
- return _objectSpread({}, state, {
200880
- entities: Object(lodash_es_omit__WEBPACK_IMPORTED_MODULE_0__["default"])(state.entities, [id]),
200881
- delete: _objectSpread({}, state.delete, {
200882
- isRequesting: false,
200883
- error: ""
200884
- })
200885
- });
200886
199646
 
200887
- case ui_rentals_constants__WEBPACK_IMPORTED_MODULE_1__["Action"].DeleteRentalFailure:
200888
- const deleteError = action.error;
200889
- return _objectSpread({}, state, {
200890
- delete: _objectSpread({}, state.delete, {
200891
- isRequesting: false,
200892
- error: deleteError
200893
- })
200894
- });
200895
199647
 
200896
- default:
200897
- return state;
200898
- }
199648
+ const rowId = rental => rental.id;
199649
+
199650
+ const RentalsList = ({
199651
+ member
199652
+ }) => {
199653
+ const {
199654
+ currentUser: {
199655
+ id,
199656
+ isAdmin
199657
+ }
199658
+ } = Object(_reducer_hooks__WEBPACK_IMPORTED_MODULE_16__["useAuthState"])();
199659
+ const asAdmin = isAdmin && id !== (member && member.id);
199660
+ const fields = [{
199661
+ id: "number",
199662
+ label: "Number",
199663
+ cell: row => row.number,
199664
+ defaultSortDirection: ui_common_table_constants__WEBPACK_IMPORTED_MODULE_6__["SortDirection"].Desc
199665
+ }, {
199666
+ id: "description",
199667
+ label: "Description",
199668
+ cell: row => row.description
199669
+ }, {
199670
+ id: "expiration",
199671
+ label: "Expiration Date",
199672
+ cell: row => row.expiration ? Object(ui_utils_timeToDate__WEBPACK_IMPORTED_MODULE_9__["timeToDate"])(row.expiration) : "N/A",
199673
+ defaultSortDirection: ui_common_table_constants__WEBPACK_IMPORTED_MODULE_6__["SortDirection"].Desc
199674
+ }, ...(asAdmin ? [{
199675
+ id: "member",
199676
+ label: "Member",
199677
+ cell: row => react__WEBPACK_IMPORTED_MODULE_0__["createElement"](react_router_dom__WEBPACK_IMPORTED_MODULE_2__["Link"], {
199678
+ to: `/members/${row.memberId}`
199679
+ }, row.memberName),
199680
+ defaultSortDirection: ui_common_table_constants__WEBPACK_IMPORTED_MODULE_6__["SortDirection"].Desc,
199681
+ width: 200
199682
+ }] : []), {
199683
+ id: "status",
199684
+ label: "Status",
199685
+ cell: row => {
199686
+ const current = moment__WEBPACK_IMPORTED_MODULE_1__(row.expiration).valueOf() > Date.now();
199687
+ const statusColor = current ? ui_constants__WEBPACK_IMPORTED_MODULE_7__["Status"].Success : ui_constants__WEBPACK_IMPORTED_MODULE_7__["Status"].Danger;
199688
+ const label = current ? "Active" : "Expired";
199689
+ return react__WEBPACK_IMPORTED_MODULE_0__["createElement"](ui_common_StatusLabel__WEBPACK_IMPORTED_MODULE_8__["default"], {
199690
+ label: label,
199691
+ color: statusColor
199692
+ });
199693
+ }
199694
+ }];
199695
+ const [selectedId, setSelectedId] = react__WEBPACK_IMPORTED_MODULE_0__["useState"]();
199696
+ const {
199697
+ params,
199698
+ changePage
199699
+ } = Object(_common_Filters_QueryContext__WEBPACK_IMPORTED_MODULE_17__["useQueryContext"])();
199700
+ const adminListRentalsResponse = Object(ui_hooks_useReadTransaction__WEBPACK_IMPORTED_MODULE_11__["default"])(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_4__["adminListRentals"], _objectSpread({}, params, {}, member && {
199701
+ memberId: member.id
199702
+ }), !isAdmin);
199703
+ const listRentalsResposne = Object(ui_hooks_useReadTransaction__WEBPACK_IMPORTED_MODULE_11__["default"])(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_4__["listRentals"], {}, isAdmin);
199704
+ const {
199705
+ isRequesting,
199706
+ data: rentals = [],
199707
+ response,
199708
+ refresh,
199709
+ error
199710
+ } = isAdmin ? adminListRentalsResponse : listRentalsResposne;
199711
+ const onRenew = react__WEBPACK_IMPORTED_MODULE_0__["useCallback"](() => {
199712
+ refresh();
199713
+ }, [refresh]);
199714
+ const onEdit = react__WEBPACK_IMPORTED_MODULE_0__["useCallback"](() => {
199715
+ refresh();
199716
+ setSelectedId(null);
199717
+ }, [refresh, setSelectedId]);
199718
+ const onDelete = react__WEBPACK_IMPORTED_MODULE_0__["useCallback"](() => {
199719
+ refresh();
199720
+ changePage(0);
199721
+ setSelectedId(null);
199722
+ }, [refresh, changePage, setSelectedId]);
199723
+ const selectedRental = rentals.find(rental => rental.id === selectedId);
199724
+ return react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_3___default.a, {
199725
+ container: true,
199726
+ spacing: 24,
199727
+ justify: "center"
199728
+ }, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_3___default.a, {
199729
+ item: true,
199730
+ md: member ? 12 : 10,
199731
+ xs: 12
199732
+ }, isAdmin && react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_3___default.a, null, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](ui_rentals_CreateRental__WEBPACK_IMPORTED_MODULE_12__["default"], {
199733
+ onCreate: onRenew,
199734
+ member: member
199735
+ }), react__WEBPACK_IMPORTED_MODULE_0__["createElement"](ui_rentals_EditRental__WEBPACK_IMPORTED_MODULE_14__["default"], {
199736
+ rental: selectedRental,
199737
+ onUpdate: onEdit
199738
+ }), react__WEBPACK_IMPORTED_MODULE_0__["createElement"](ui_rentals_RenewRental__WEBPACK_IMPORTED_MODULE_13__["default"], {
199739
+ rental: selectedRental,
199740
+ onRenew: onRenew
199741
+ }), react__WEBPACK_IMPORTED_MODULE_0__["createElement"](ui_rentals_DeleteRentalModal__WEBPACK_IMPORTED_MODULE_10__["default"], {
199742
+ rental: selectedRental,
199743
+ onDelete: onDelete
199744
+ })), react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_common_table_StatefulTable__WEBPACK_IMPORTED_MODULE_5__["default"], {
199745
+ id: "rentals-table",
199746
+ title: "Rentals",
199747
+ loading: isRequesting,
199748
+ data: Object.values(rentals),
199749
+ error: error,
199750
+ totalItems: Object(_utils_extractTotalItems__WEBPACK_IMPORTED_MODULE_15__["default"])(response),
199751
+ selectedIds: selectedId,
199752
+ setSelectedIds: setSelectedId,
199753
+ columns: fields,
199754
+ rowId: rowId,
199755
+ renderSearch: true
199756
+ })));
200899
199757
  };
200900
199758
 
199759
+ /* harmony default export */ __webpack_exports__["default"] = (RentalsList);
199760
+
200901
199761
  /***/ }),
200902
199762
 
200903
199763
  /***/ "./src/ui/rentals/constants.ts":
200904
199764
  /*!*************************************!*\
200905
199765
  !*** ./src/ui/rentals/constants.ts ***!
200906
199766
  \*************************************/
200907
- /*! exports provided: Action, rentalRenewalOptions, fields */
199767
+ /*! exports provided: fields */
200908
199768
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
200909
199769
 
200910
199770
  "use strict";
200911
199771
  __webpack_require__.r(__webpack_exports__);
200912
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Action", function() { return Action; });
200913
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "rentalRenewalOptions", function() { return rentalRenewalOptions; });
200914
199772
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fields", function() { return fields; });
200915
199773
  /* harmony import */ var ui_utils_timeToDate__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ui/utils/timeToDate */ "./src/ui/utils/timeToDate.ts");
200916
199774
 
200917
- let Action;
200918
-
200919
- (function (Action) {
200920
- Action["StartReadRequest"] = "RENTALS/START_READ_REQUEST";
200921
- Action["GetRentalsSuccess"] = "RENTALS/GET_RENTALS_SUCCESS";
200922
- Action["GetRentalsFailure"] = "RENTALS/GET_RENTALS_FAILURE";
200923
- Action["StartCreateRequest"] = "RENTALS/START_CREATE_REQUEST";
200924
- Action["CreateRentalSuccess"] = "RENTALS/CREATE_RENTAL_SUCCESS";
200925
- Action["CreateRentalFailure"] = "RENTALS/CREATE_RENTAL_FAILURE";
200926
- Action["StartUpdateRequest"] = "RENTAL/START_UPDATE_REQUEST";
200927
- Action["UpdateRentalSuccess"] = "RENTAL/UPDATE_RENTAL_SUCCESS";
200928
- Action["UpdateRentalFailure"] = "RENTAL/UPDATE_RENTAL_FAILURE";
200929
- Action["StartDeleteRequest"] = "RENTAL/START_DELETE_REQUEST";
200930
- Action["DeleteRentalSuccess"] = "RENTAL/DELETE_RENTAL_SUCCESS";
200931
- Action["DeleteRentalFailure"] = "RENTAL/DELETE_RENTAL_FAILURE";
200932
- })(Action || (Action = {}));
200933
-
200934
- const rentalRenewalOptions = [{
200935
- label: "None",
200936
- value: undefined
200937
- }, {
200938
- label: "1 month",
200939
- value: 1
200940
- }, {
200941
- label: "3 months",
200942
- value: 3
200943
- }, {
200944
- label: "6 months",
200945
- value: 6
200946
- }, {
200947
- label: "12 months",
200948
- value: 12
200949
- }];
200950
199775
  const formPrefix = "rental-form";
200951
199776
  const fields = rental => ({
200952
199777
  number: {
@@ -201807,142 +200632,6 @@ const reportRequirementFields = (requirement, index) => ({
201807
200632
 
201808
200633
  /***/ }),
201809
200634
 
201810
- /***/ "./src/ui/settings/ManageRentalSubscriptions.tsx":
201811
- /*!*******************************************************!*\
201812
- !*** ./src/ui/settings/ManageRentalSubscriptions.tsx ***!
201813
- \*******************************************************/
201814
- /*! exports provided: default */
201815
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
201816
-
201817
- "use strict";
201818
- __webpack_require__.r(__webpack_exports__);
201819
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
201820
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
201821
- /* harmony import */ var _material_ui_core_Card__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @material-ui/core/Card */ "./node_modules/@material-ui/core/Card/index.js");
201822
- /* harmony import */ var _material_ui_core_Card__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Card__WEBPACK_IMPORTED_MODULE_1__);
201823
- /* harmony import */ var _material_ui_core_CardContent__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/core/CardContent */ "./node_modules/@material-ui/core/CardContent/index.js");
201824
- /* harmony import */ var _material_ui_core_CardContent__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_CardContent__WEBPACK_IMPORTED_MODULE_2__);
201825
- /* harmony import */ var _material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/core/Typography */ "./node_modules/@material-ui/core/Typography/index.js");
201826
- /* harmony import */ var _material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_3__);
201827
- /* harmony import */ var makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! makerspace-ts-api-client */ "./node_modules/makerspace-ts-api-client/dist/apiClient.js");
201828
- /* harmony import */ var makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_4__);
201829
- /* harmony import */ var _reducer_hooks__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../reducer/hooks */ "./src/ui/reducer/hooks.ts");
201830
- /* harmony import */ var _hooks_useReadTransaction__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../hooks/useReadTransaction */ "./src/ui/hooks/useReadTransaction.ts");
201831
- /* harmony import */ var _common_LoadingOverlay__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../common/LoadingOverlay */ "./src/ui/common/LoadingOverlay.tsx");
201832
- /* harmony import */ var _common_ErrorMessage__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../common/ErrorMessage */ "./src/ui/common/ErrorMessage.tsx");
201833
- /* harmony import */ var _subscriptions_SubscriptionDetails__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../subscriptions/SubscriptionDetails */ "./src/ui/subscriptions/SubscriptionDetails.tsx");
201834
- /* harmony import */ var _material_ui_core__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @material-ui/core */ "./node_modules/@material-ui/core/index.es.js");
201835
-
201836
-
201837
-
201838
-
201839
-
201840
-
201841
-
201842
-
201843
-
201844
-
201845
-
201846
-
201847
- const ManageRentalSubscriptions = () => {
201848
- const {
201849
- currentUser: {
201850
- id: memberId
201851
- }
201852
- } = Object(_reducer_hooks__WEBPACK_IMPORTED_MODULE_5__["useAuthState"])();
201853
- const {
201854
- isRequesting: rentalsLoading,
201855
- data: rentals = [],
201856
- error: rentalsError
201857
- } = Object(_hooks_useReadTransaction__WEBPACK_IMPORTED_MODULE_6__["default"])(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_4__["listRentals"], {});
201858
- ;
201859
- const subscriptionRentals = rentals.filter(rental => !!rental.subscriptionId);
201860
- const fallbackUI = rentalsLoading && react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_common_LoadingOverlay__WEBPACK_IMPORTED_MODULE_7__["default"], {
201861
- id: "manage-rental-subscription-loading",
201862
- contained: true
201863
- }) || rentalsError && react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_common_ErrorMessage__WEBPACK_IMPORTED_MODULE_8__["default"], {
201864
- error: rentalsError
201865
- });
201866
-
201867
- if (!rentalsLoading && !rentalsError && !(subscriptionRentals.length && subscriptionRentals.some(r => !!r.subscriptionId))) {
201868
- return null;
201869
- }
201870
-
201871
- return react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_material_ui_core_Card__WEBPACK_IMPORTED_MODULE_1___default.a, null, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_material_ui_core_CardContent__WEBPACK_IMPORTED_MODULE_2___default.a, null, fallbackUI || react__WEBPACK_IMPORTED_MODULE_0__["createElement"](react__WEBPACK_IMPORTED_MODULE_0__["Fragment"], null, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_3___default.a, {
201872
- variant: "h4",
201873
- gutterBottom: true
201874
- }, "Rentals"), subscriptionRentals.map(rental => react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_material_ui_core__WEBPACK_IMPORTED_MODULE_10__["Grid"], {
201875
- style: {
201876
- padding: "1em",
201877
- border: "1px solid black",
201878
- borderRadius: "3px"
201879
- }
201880
- }, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_subscriptions_SubscriptionDetails__WEBPACK_IMPORTED_MODULE_9__["default"], {
201881
- memberId: memberId,
201882
- key: rental.id,
201883
- rentalSubId: rental.subscriptionId
201884
- }))))));
201885
- };
201886
-
201887
- /* harmony default export */ __webpack_exports__["default"] = (ManageRentalSubscriptions);
201888
-
201889
- /***/ }),
201890
-
201891
- /***/ "./src/ui/settings/ManageSubscriptions.tsx":
201892
- /*!*************************************************!*\
201893
- !*** ./src/ui/settings/ManageSubscriptions.tsx ***!
201894
- \*************************************************/
201895
- /*! exports provided: default */
201896
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
201897
-
201898
- "use strict";
201899
- __webpack_require__.r(__webpack_exports__);
201900
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
201901
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
201902
- /* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @material-ui/core/Grid */ "./node_modules/@material-ui/core/Grid/index.js");
201903
- /* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_1__);
201904
- /* harmony import */ var _material_ui_core_Card__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/core/Card */ "./node_modules/@material-ui/core/Card/index.js");
201905
- /* harmony import */ var _material_ui_core_Card__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Card__WEBPACK_IMPORTED_MODULE_2__);
201906
- /* harmony import */ var _material_ui_core_CardContent__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/core/CardContent */ "./node_modules/@material-ui/core/CardContent/index.js");
201907
- /* harmony import */ var _material_ui_core_CardContent__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_CardContent__WEBPACK_IMPORTED_MODULE_3__);
201908
- /* harmony import */ var _material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @material-ui/core/Typography */ "./node_modules/@material-ui/core/Typography/index.js");
201909
- /* harmony import */ var _material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_4__);
201910
- /* harmony import */ var _ManageRentalSubscriptions__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./ManageRentalSubscriptions */ "./src/ui/settings/ManageRentalSubscriptions.tsx");
201911
- /* harmony import */ var _subscriptions_SubscriptionDetails__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../subscriptions/SubscriptionDetails */ "./src/ui/subscriptions/SubscriptionDetails.tsx");
201912
- /* harmony import */ var _reducer_hooks__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../reducer/hooks */ "./src/ui/reducer/hooks.ts");
201913
-
201914
-
201915
-
201916
-
201917
-
201918
-
201919
-
201920
-
201921
-
201922
- const ManageSubscriptions = () => {
201923
- const {
201924
- currentUser: {
201925
- id: currentUserId
201926
- }
201927
- } = Object(_reducer_hooks__WEBPACK_IMPORTED_MODULE_7__["useAuthState"])();
201928
- return react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_1___default.a, {
201929
- container: true,
201930
- spacing: 24
201931
- }, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_1___default.a, {
201932
- item: true,
201933
- xs: 12
201934
- }, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_material_ui_core_Card__WEBPACK_IMPORTED_MODULE_2___default.a, null, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_material_ui_core_CardContent__WEBPACK_IMPORTED_MODULE_3___default.a, null, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_4___default.a, {
201935
- variant: "h4",
201936
- gutterBottom: true
201937
- }, "Membership"), react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_subscriptions_SubscriptionDetails__WEBPACK_IMPORTED_MODULE_6__["default"], {
201938
- memberId: currentUserId
201939
- }))), react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_ManageRentalSubscriptions__WEBPACK_IMPORTED_MODULE_5__["default"], null)));
201940
- };
201941
-
201942
- /* harmony default export */ __webpack_exports__["default"] = (ManageSubscriptions);
201943
-
201944
- /***/ }),
201945
-
201946
200635
  /***/ "./src/ui/settings/SettingsContainer.tsx":
201947
200636
  /*!***********************************************!*\
201948
200637
  !*** ./src/ui/settings/SettingsContainer.tsx ***!
@@ -201966,15 +200655,16 @@ __webpack_require__.r(__webpack_exports__);
201966
200655
  /* harmony import */ var _material_ui_core_ListItem__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_ListItem__WEBPACK_IMPORTED_MODULE_5__);
201967
200656
  /* harmony import */ var _material_ui_core_ListItemText__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @material-ui/core/ListItemText */ "./node_modules/@material-ui/core/ListItemText/index.js");
201968
200657
  /* harmony import */ var _material_ui_core_ListItemText__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_ListItemText__WEBPACK_IMPORTED_MODULE_6__);
201969
- /* harmony import */ var app_constants__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! app/constants */ "./src/app/constants.ts");
201970
- /* harmony import */ var ui_member_UpdateMemberContainer__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ui/member/UpdateMemberContainer */ "./src/ui/member/UpdateMemberContainer.tsx");
201971
- /* harmony import */ var ui_member_MemberForm__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ui/member/MemberForm */ "./src/ui/member/MemberForm.tsx");
201972
- /* harmony import */ var ui_checkout_PaymentMethodsContainer__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ui/checkout/PaymentMethodsContainer */ "./src/ui/checkout/PaymentMethodsContainer.tsx");
201973
- /* harmony import */ var makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! makerspace-ts-api-client */ "./node_modules/makerspace-ts-api-client/dist/apiClient.js");
201974
- /* harmony import */ var makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_11__);
201975
- /* harmony import */ var _hooks_useReadTransaction__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../hooks/useReadTransaction */ "./src/ui/hooks/useReadTransaction.ts");
201976
- /* harmony import */ var _reducer_hooks__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../reducer/hooks */ "./src/ui/reducer/hooks.ts");
201977
- /* harmony import */ var _ManageSubscriptions__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./ManageSubscriptions */ "./src/ui/settings/ManageSubscriptions.tsx");
200658
+ /* harmony import */ var ui_checkout_PaymentMethodsContainer__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ui/checkout/PaymentMethodsContainer */ "./src/ui/checkout/PaymentMethodsContainer.tsx");
200659
+ /* harmony import */ var app_constants__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! app/constants */ "./src/app/constants.ts");
200660
+ /* harmony import */ var _reducer_hooks__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../reducer/hooks */ "./src/ui/reducer/hooks.ts");
200661
+ /* harmony import */ var _subscriptions_SubscriptionDetails__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../subscriptions/SubscriptionDetails */ "./src/ui/subscriptions/SubscriptionDetails.tsx");
200662
+ /* harmony import */ var _subscriptions_ManageRentalSubscriptions__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../subscriptions/ManageRentalSubscriptions */ "./src/ui/subscriptions/ManageRentalSubscriptions.tsx");
200663
+ /* harmony import */ var ui_member_EditMember__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ui/member/EditMember */ "./src/ui/member/EditMember.tsx");
200664
+ /* harmony import */ var makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! makerspace-ts-api-client */ "./node_modules/makerspace-ts-api-client/dist/apiClient.js");
200665
+ /* harmony import */ var makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_13__);
200666
+ /* harmony import */ var ui_hooks_useReadTransaction__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ui/hooks/useReadTransaction */ "./src/ui/hooks/useReadTransaction.ts");
200667
+ /* harmony import */ var ui_common_LoadingOverlay__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ui/common/LoadingOverlay */ "./src/ui/common/LoadingOverlay.tsx");
201978
200668
 
201979
200669
 
201980
200670
 
@@ -201998,14 +200688,15 @@ const SettingsContainer = () => {
201998
200688
  id: currentUserId
201999
200689
  },
202000
200690
  permissions
202001
- } = Object(_reducer_hooks__WEBPACK_IMPORTED_MODULE_13__["useAuthState"])();
202002
- const billingEnabled = !!permissions[app_constants__WEBPACK_IMPORTED_MODULE_7__["Whitelists"].billing];
200691
+ } = Object(_reducer_hooks__WEBPACK_IMPORTED_MODULE_9__["useAuthState"])();
200692
+ const billingEnabled = !!permissions[app_constants__WEBPACK_IMPORTED_MODULE_8__["Whitelists"].billing];
202003
200693
  const [selectedIndex, setIndex] = react__WEBPACK_IMPORTED_MODULE_0__["useState"](0);
202004
200694
  const {
202005
200695
  isRequesting: loadingMember,
202006
- error: memberError,
202007
- data: member
202008
- } = Object(_hooks_useReadTransaction__WEBPACK_IMPORTED_MODULE_12__["default"])(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_11__["getMember"], {
200696
+ data: member = {
200697
+ id: currentUserId
200698
+ }
200699
+ } = Object(ui_hooks_useReadTransaction__WEBPACK_IMPORTED_MODULE_14__["default"])(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_13__["getMember"], {
202009
200700
  id: currentUserId
202010
200701
  });
202011
200702
  return react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_1___default.a, {
@@ -202044,36 +200735,27 @@ const SettingsContainer = () => {
202044
200735
  md: 8,
202045
200736
  sm: 7,
202046
200737
  xs: 12
202047
- }, selectedIndex == 0 && react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_material_ui_core_Card__WEBPACK_IMPORTED_MODULE_2___default.a, null, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_material_ui_core_CardContent__WEBPACK_IMPORTED_MODULE_3___default.a, null, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_1___default.a, {
200738
+ }, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_material_ui_core_Card__WEBPACK_IMPORTED_MODULE_2___default.a, null, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_material_ui_core_CardContent__WEBPACK_IMPORTED_MODULE_3___default.a, null, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_1___default.a, {
202048
200739
  container: true,
202049
200740
  spacing: 16
202050
200741
  }, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_1___default.a, {
202051
200742
  item: true,
202052
200743
  xs: 12
202053
- }, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](ui_member_UpdateMemberContainer__WEBPACK_IMPORTED_MODULE_8__["default"], {
202054
- closeHandler: () => {},
202055
- operation: app_constants__WEBPACK_IMPORTED_MODULE_7__["CrudOperation"].Update,
202056
- isOpen: selectedIndex === 0,
202057
- member: member,
202058
- render: renderProps => react__WEBPACK_IMPORTED_MODULE_0__["createElement"](ui_member_MemberForm__WEBPACK_IMPORTED_MODULE_9__["default"], {
202059
- ref: renderProps.setRef,
202060
- member: member || {},
202061
- isAdmin: false,
202062
- isOpen: renderProps.isOpen,
202063
- isRequesting: loadingMember || renderProps.isRequesting,
202064
- error: memberError || renderProps.error,
202065
- onClose: renderProps.closeHandler,
202066
- onSubmit: renderProps.submit,
202067
- noDialog: true,
202068
- title: "Update Personal Information"
202069
- })
202070
- }))))), selectedIndex === 1 && react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_ManageSubscriptions__WEBPACK_IMPORTED_MODULE_14__["default"], null), selectedIndex === 2 && react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_material_ui_core_Card__WEBPACK_IMPORTED_MODULE_2___default.a, null, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_material_ui_core_CardContent__WEBPACK_IMPORTED_MODULE_3___default.a, null, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_1___default.a, {
200744
+ }, selectedIndex === 0 && react__WEBPACK_IMPORTED_MODULE_0__["createElement"](react__WEBPACK_IMPORTED_MODULE_0__["Fragment"], null, loadingMember && react__WEBPACK_IMPORTED_MODULE_0__["createElement"](ui_common_LoadingOverlay__WEBPACK_IMPORTED_MODULE_15__["default"], null), react__WEBPACK_IMPORTED_MODULE_0__["createElement"](ui_member_EditMember__WEBPACK_IMPORTED_MODULE_12__["default"], {
200745
+ formOnly: true,
200746
+ member: member
200747
+ })), selectedIndex === 1 && react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_1___default.a, {
202071
200748
  container: true,
202072
200749
  spacing: 16
202073
200750
  }, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_1___default.a, {
202074
200751
  item: true,
202075
200752
  xs: 12
202076
- }, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](ui_checkout_PaymentMethodsContainer__WEBPACK_IMPORTED_MODULE_10__["default"], {
200753
+ }, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_subscriptions_SubscriptionDetails__WEBPACK_IMPORTED_MODULE_10__["default"], {
200754
+ memberId: currentUserId
200755
+ })), react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_1___default.a, {
200756
+ item: true,
200757
+ xs: 12
200758
+ }, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_subscriptions_ManageRentalSubscriptions__WEBPACK_IMPORTED_MODULE_11__["default"], null))), selectedIndex === 2 && react__WEBPACK_IMPORTED_MODULE_0__["createElement"](ui_checkout_PaymentMethodsContainer__WEBPACK_IMPORTED_MODULE_7__["default"], {
202077
200759
  title: "Manage Payment Methods",
202078
200760
  managingMethods: true
202079
200761
  })))))));
@@ -202176,6 +200858,82 @@ const CancelSubscriptionModal = ({
202176
200858
 
202177
200859
  /***/ }),
202178
200860
 
200861
+ /***/ "./src/ui/subscriptions/ManageRentalSubscriptions.tsx":
200862
+ /*!************************************************************!*\
200863
+ !*** ./src/ui/subscriptions/ManageRentalSubscriptions.tsx ***!
200864
+ \************************************************************/
200865
+ /*! exports provided: default */
200866
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
200867
+
200868
+ "use strict";
200869
+ __webpack_require__.r(__webpack_exports__);
200870
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
200871
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
200872
+ /* harmony import */ var _material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @material-ui/core/Typography */ "./node_modules/@material-ui/core/Typography/index.js");
200873
+ /* harmony import */ var _material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_1__);
200874
+ /* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/core/Grid */ "./node_modules/@material-ui/core/Grid/index.js");
200875
+ /* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2__);
200876
+ /* harmony import */ var makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! makerspace-ts-api-client */ "./node_modules/makerspace-ts-api-client/dist/apiClient.js");
200877
+ /* harmony import */ var makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_3__);
200878
+ /* harmony import */ var _reducer_hooks__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../reducer/hooks */ "./src/ui/reducer/hooks.ts");
200879
+ /* harmony import */ var _hooks_useReadTransaction__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../hooks/useReadTransaction */ "./src/ui/hooks/useReadTransaction.ts");
200880
+ /* harmony import */ var _common_LoadingOverlay__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../common/LoadingOverlay */ "./src/ui/common/LoadingOverlay.tsx");
200881
+ /* harmony import */ var _common_ErrorMessage__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../common/ErrorMessage */ "./src/ui/common/ErrorMessage.tsx");
200882
+ /* harmony import */ var _SubscriptionDetails__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./SubscriptionDetails */ "./src/ui/subscriptions/SubscriptionDetails.tsx");
200883
+
200884
+
200885
+
200886
+
200887
+
200888
+
200889
+
200890
+
200891
+
200892
+
200893
+ const ManageRentalSubscriptions = () => {
200894
+ const {
200895
+ currentUser: {
200896
+ id: memberId
200897
+ }
200898
+ } = Object(_reducer_hooks__WEBPACK_IMPORTED_MODULE_4__["useAuthState"])();
200899
+ const {
200900
+ isRequesting: rentalsLoading,
200901
+ data: rentals = [],
200902
+ error: rentalsError
200903
+ } = Object(_hooks_useReadTransaction__WEBPACK_IMPORTED_MODULE_5__["default"])(makerspace_ts_api_client__WEBPACK_IMPORTED_MODULE_3__["listRentals"], {});
200904
+ ;
200905
+ const subscriptionRentals = rentals.filter(rental => !!rental.subscriptionId);
200906
+ const fallbackUI = rentalsLoading && react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_common_LoadingOverlay__WEBPACK_IMPORTED_MODULE_6__["default"], {
200907
+ id: "manage-rental-subscription-loading",
200908
+ contained: true
200909
+ }) || rentalsError && react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_common_ErrorMessage__WEBPACK_IMPORTED_MODULE_7__["default"], {
200910
+ error: rentalsError
200911
+ });
200912
+
200913
+ if (!rentalsLoading && !rentalsError && !(subscriptionRentals.length && subscriptionRentals.some(r => !!r.subscriptionId))) {
200914
+ return null;
200915
+ }
200916
+
200917
+ return fallbackUI || react__WEBPACK_IMPORTED_MODULE_0__["createElement"](react__WEBPACK_IMPORTED_MODULE_0__["Fragment"], null, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_1___default.a, {
200918
+ variant: "h4",
200919
+ gutterBottom: true
200920
+ }, "Rentals"), subscriptionRentals.map(rental => react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2___default.a, {
200921
+ style: {
200922
+ padding: "1em",
200923
+ border: "1px solid black",
200924
+ borderRadius: "3px"
200925
+ }
200926
+ }, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_SubscriptionDetails__WEBPACK_IMPORTED_MODULE_8__["default"], {
200927
+ memberId: memberId,
200928
+ key: rental.id,
200929
+ rentalSubId: rental.subscriptionId
200930
+ }))));
200931
+ };
200932
+
200933
+ /* harmony default export */ __webpack_exports__["default"] = (ManageRentalSubscriptions);
200934
+
200935
+ /***/ }),
200936
+
202179
200937
  /***/ "./src/ui/subscriptions/NoSubscriptionDetails.tsx":
202180
200938
  /*!********************************************************!*\
202181
200939
  !*** ./src/ui/subscriptions/NoSubscriptionDetails.tsx ***!