@roomstay/frontend 2.6.62 → 2.6.63

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.
Files changed (78) hide show
  1. package/dist/537.bundle.js +1 -1
  2. package/dist/950.bundle.js +1 -1
  3. package/dist/978.bundle.js +1 -1
  4. package/dist/main.bundle.js +1 -1
  5. package/dist/src/api/ReservationAPI.d.ts +23 -3
  6. package/dist/src/api/ReservationAPI.js +75 -31
  7. package/dist/src/api/ReservationAPI.js.map +1 -1
  8. package/dist/src/components/User/Forms/ForgotPasswordForm.js +11 -5
  9. package/dist/src/components/User/Forms/ForgotPasswordForm.js.map +1 -1
  10. package/dist/src/components/User/Forms/SignInForm.js +5 -2
  11. package/dist/src/components/User/Forms/SignInForm.js.map +1 -1
  12. package/dist/src/components/User/Forms/SignUpForm.d.ts +5 -0
  13. package/dist/src/components/User/Forms/SignUpForm.js +27 -10
  14. package/dist/src/components/User/Forms/SignUpForm.js.map +1 -1
  15. package/dist/src/components/generic/date/DatePicker.js +1 -1
  16. package/dist/src/components/generic/date/DatePicker.js.map +1 -1
  17. package/dist/src/components/members/InlineSignUpSection.d.ts +7 -0
  18. package/dist/src/components/members/InlineSignUpSection.js +122 -0
  19. package/dist/src/components/members/InlineSignUpSection.js.map +1 -0
  20. package/dist/src/components/members/SignInModal/ExternalMemberModal.js +4 -4
  21. package/dist/src/components/members/SignInModal/ExternalMemberModal.js.map +1 -1
  22. package/dist/src/components/members/SignInModal/InternalMemberSignInModal.js +78 -33
  23. package/dist/src/components/members/SignInModal/InternalMemberSignInModal.js.map +1 -1
  24. package/dist/src/components/members/SignInModal/MemberSignInModal.js +11 -1
  25. package/dist/src/components/members/SignInModal/MemberSignInModal.js.map +1 -1
  26. package/dist/src/components/reservation/ReservationItem.js +1 -1
  27. package/dist/src/components/reservation/ReservationItem.js.map +1 -1
  28. package/dist/src/components/steps/addons/AddonCard.js +14 -14
  29. package/dist/src/components/steps/addons/AddonCard.js.map +1 -1
  30. package/dist/src/components/steps/confirmation/RoomContactDetails.js +12 -12
  31. package/dist/src/components/steps/confirmation/RoomContactDetails.js.map +1 -1
  32. package/dist/src/components/steps/room/AvailableUpgradesModal.js +1 -1
  33. package/dist/src/components/steps/room/AvailableUpgradesModal.js.map +1 -1
  34. package/dist/src/components/summary/BESummaryAddonRow.js +1 -1
  35. package/dist/src/components/summary/BESummaryAddonRow.js.map +1 -1
  36. package/dist/src/contexts/BasketContext/BasketContextType.d.ts +2 -5
  37. package/dist/src/contexts/BasketContext/BasketContextType.js.map +1 -1
  38. package/dist/src/contexts/BasketContext/BasketContextWrapper.js +48 -22
  39. package/dist/src/contexts/BasketContext/BasketContextWrapper.js.map +1 -1
  40. package/dist/src/contexts/CompanyContext/CompanyContextType.type.d.ts +1 -1
  41. package/dist/src/contexts/CompanyContext/CompanyContextType.type.js.map +1 -1
  42. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js +4 -0
  43. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js.map +1 -1
  44. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js +18 -18
  45. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js.map +1 -1
  46. package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.js +3 -0
  47. package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.js.map +1 -1
  48. package/dist/src/contexts/Members/RoomstayMemberContext/RoomstayMemberContextProvider.js.map +1 -1
  49. package/dist/src/hooks/useSignedInMember.d.ts +1 -1
  50. package/dist/src/models/Addon/Addon.d.ts +6 -64
  51. package/dist/src/models/Addon/Addon.js +14 -28
  52. package/dist/src/models/Addon/Addon.js.map +1 -1
  53. package/dist/src/models/BasketAddonRow.js +3 -2
  54. package/dist/src/models/BasketAddonRow.js.map +1 -1
  55. package/dist/src/models/BasketRow.d.ts +1 -0
  56. package/dist/src/models/BasketRow.js.map +1 -1
  57. package/dist/src/models/Client/Hotel/Hotel.d.ts +3 -2
  58. package/dist/src/models/Client/Hotel/Hotel.js.map +1 -1
  59. package/dist/src/models/RoomstaySession.d.ts +1 -0
  60. package/dist/src/models/RoomstaySession.js.map +1 -1
  61. package/dist/src/models/UserProfile.d.ts +20 -20
  62. package/dist/src/models/UserProfile.js.map +1 -1
  63. package/dist/src/pages/account/Reservations/AccountReservationSinglePage.js +2 -2
  64. package/dist/src/pages/account/Reservations/AccountReservationSinglePage.js.map +1 -1
  65. package/dist/src/pages/steps/StepThanks/StepThanksComponent.js +6 -4
  66. package/dist/src/pages/steps/StepThanks/StepThanksComponent.js.map +1 -1
  67. package/dist/src/providers/feature/MemberPortalFeature.d.ts +7 -1
  68. package/dist/src/providers/feature/MemberPortalFeature.js +11 -0
  69. package/dist/src/providers/feature/MemberPortalFeature.js.map +1 -1
  70. package/dist/src/util/Analytics/GoogleAnalytics4.d.ts +1 -1
  71. package/dist/src/util/Analytics/UniversalAnalytics.d.ts +1 -1
  72. package/dist/src/util/EventsHelper.js +1 -1
  73. package/dist/src/util/EventsHelper.js.map +1 -1
  74. package/dist/src/util/TotalCalculator.js +2 -2
  75. package/dist/src/util/TotalCalculator.js.map +1 -1
  76. package/dist/test.bundle.js +1 -1
  77. package/dist/vendors.bundle.js +1 -1
  78. package/package.json +2 -2
@@ -1,8 +1,9 @@
1
- import { IBookingPayment } from '@roomstay/core';
1
+ import { IBookingPayment, IBookingQuoteRequest, IBookingQuoteResponse, IPencilReservationRequest, IPencilReservationResponse } from '@roomstay/core';
2
2
  import BaseAPI from './BaseAPI';
3
3
  import ReservationsDTO from '../models/Api/ReservationsDTO';
4
4
  import BasketAddonRow from '../models/BasketAddonRow';
5
5
  import BasketRow from '../models/BasketRow';
6
+ import { IRoomstayMemberBooking } from '../models/RoomstayMembers/IRoomstayMemberBooking';
6
7
  import UserProfile from '../models/UserProfile';
7
8
  export declare enum EPaymentMethod {
8
9
  PLANPAY = "Planpay",
@@ -10,7 +11,22 @@ export declare enum EPaymentMethod {
10
11
  }
11
12
  export default class ReservationAPI extends BaseAPI {
12
13
  private storedReservations;
13
- getPriceQuote: (hotelId: string, rows: BasketRow[], memberNumber?: string) => Promise<any>;
14
+ /**
15
+ * Populates a booking quote request.
16
+ */
17
+ buildQuoteRequest: (rows: BasketRow[], memberNumber?: string) => IBookingQuoteRequest;
18
+ /**
19
+ * Populates a pencil reservation request based on a quote request.
20
+ */
21
+ buildPencilRequest: (rows: BasketRow[], memberNumber?: string, pencilId?: string) => IPencilReservationRequest;
22
+ /**
23
+ * Returns a quote for the given
24
+ */
25
+ getPriceQuote: (hotelId: string, rows: BasketRow[], memberNumber?: string) => Promise<IBookingQuoteResponse>;
26
+ /**
27
+ * Pencils a reservation for the given rooms. Returns the timeout, and quote if applicable.
28
+ */
29
+ pencilReservation: (hotelId: string, rows: BasketRow[], memberNumber?: string, pencilId?: string) => Promise<IPencilReservationResponse>;
14
30
  /**
15
31
  *
16
32
  * @param basketRows
@@ -23,9 +39,13 @@ export default class ReservationAPI extends BaseAPI {
23
39
  * @param specialReq
24
40
  * @returns
25
41
  */
26
- bookNow: (basketRows: BasketRow[], userProfiles: UserProfile[], payment: IBookingPayment, addonRows: BasketAddonRow[], comments: string, hotelId: string, sessionId: string, specialReq?: string | undefined, retryPayment?: boolean, RoomstayId?: string | undefined, MemberNumber?: string | undefined) => Promise<ReservationsDTO>;
42
+ bookNow: (basketRows: BasketRow[], userProfiles: UserProfile[], payment: IBookingPayment, addonRows: BasketAddonRow[], comments: string, hotelId: string, sessionId: string, pencilId?: string | undefined, specialReq?: string | undefined, retryPayment?: boolean, roomstayId?: string | undefined, memberNumber?: string | undefined) => Promise<ReservationsDTO>;
27
43
  commit: (reservations: string[], itineraryId: string, hotelId: string, planpayCheckoutId?: string) => Promise<ReservationsDTO>;
28
44
  rollback: (reservations: string[], itineraryId: string, hotelId: string) => Promise<boolean>;
29
45
  cancelReservation: (id: string, email: string, hotelId: string) => Promise<boolean>;
30
46
  findReservation: (id: string, email: string, hotelId: string) => Promise<ReservationsDTO>;
47
+ linkBookingToMember: (hotelId: string, reservationId: string, reservationEmail: string) => Promise<{
48
+ message: string;
49
+ booking: IRoomstayMemberBooking;
50
+ }>;
31
51
  }
@@ -43,8 +43,11 @@ class ReservationAPI extends BaseAPI_1.default {
43
43
  constructor() {
44
44
  super(...arguments);
45
45
  this.storedReservations = {};
46
- this.getPriceQuote = (hotelId, rows, memberNumber) => __awaiter(this, void 0, void 0, function* () {
47
- const quoteBody = {
46
+ /**
47
+ * Populates a booking quote request.
48
+ */
49
+ this.buildQuoteRequest = (rows, memberNumber) => {
50
+ return {
48
51
  rows: rows.map((row) => {
49
52
  var _a;
50
53
  return {
@@ -62,8 +65,33 @@ class ReservationAPI extends BaseAPI_1.default {
62
65
  };
63
66
  }),
64
67
  };
68
+ };
69
+ /**
70
+ * Populates a pencil reservation request based on a quote request.
71
+ */
72
+ this.buildPencilRequest = (rows, memberNumber, pencilId) => {
73
+ const quoteRequest = this.buildQuoteRequest(rows, memberNumber);
74
+ const pencilRequest = Object.assign(Object.assign({}, quoteRequest), { pencilId: pencilId });
75
+ pencilRequest.rows = quoteRequest.rows.map((requestRow) => {
76
+ const basketRow = rows.find((r) => r.getID() == requestRow.rowId);
77
+ return Object.assign(Object.assign({}, requestRow), { pencilId: basketRow === null || basketRow === void 0 ? void 0 : basketRow.pencilId });
78
+ });
79
+ return pencilRequest;
80
+ };
81
+ /**
82
+ * Returns a quote for the given
83
+ */
84
+ this.getPriceQuote = (hotelId, rows, memberNumber) => __awaiter(this, void 0, void 0, function* () {
85
+ const quoteBody = this.buildQuoteRequest(rows, memberNumber);
65
86
  return this.post(BaseAPI_1.APIEndpoint.Reservations, quoteBody, hotelId, {}, 'quote');
66
87
  });
88
+ /**
89
+ * Pencils a reservation for the given rooms. Returns the timeout, and quote if applicable.
90
+ */
91
+ this.pencilReservation = (hotelId, rows, memberNumber, pencilId) => __awaiter(this, void 0, void 0, function* () {
92
+ const quoteBody = this.buildPencilRequest(rows, memberNumber, pencilId);
93
+ return this.post(BaseAPI_1.APIEndpoint.Reservations, quoteBody, hotelId, {}, 'pencil');
94
+ });
67
95
  /**
68
96
  *
69
97
  * @param basketRows
@@ -76,22 +104,23 @@ class ReservationAPI extends BaseAPI_1.default {
76
104
  * @param specialReq
77
105
  * @returns
78
106
  */
79
- this.bookNow = (basketRows, userProfiles, payment, addonRows, comments, hotelId, sessionId, specialReq = undefined, retryPayment = false, RoomstayId = undefined, MemberNumber = undefined) => __awaiter(this, void 0, void 0, function* () {
107
+ this.bookNow = (basketRows, userProfiles, payment, addonRows, comments, hotelId, sessionId, pencilId = undefined, specialReq = undefined, retryPayment = false, roomstayId = undefined, memberNumber = undefined) => __awaiter(this, void 0, void 0, function* () {
80
108
  const rooms = [];
81
109
  basketRows.forEach((row) => {
82
110
  var _a, _b;
83
111
  const room = {
84
- RoomType: row.getRoom().code,
85
- RatePlan: (_a = row.getRate()) === null || _a === void 0 ? void 0 : _a.code,
86
- PromoCode: row.getPromoCode(),
87
- Adults: row.getAdults(),
88
- Children: row.getChildren(),
89
- Infants: row.getInfants(),
90
- CheckInDate: row.getStartDate().format('YYYY-MM-DD'),
91
- CheckOutDate: row.getEndDate().format('YYYY-MM-DD'),
92
- QuoteId: (_b = row.quoteDetails) === null || _b === void 0 ? void 0 : _b.quoteId,
93
- RowId: row.getID(),
94
- MemberNumber,
112
+ roomType: row.getRoom().code || '',
113
+ ratePlan: ((_a = row.getRate()) === null || _a === void 0 ? void 0 : _a.code) || '',
114
+ promoCode: row.getPromoCode(),
115
+ adults: row.getAdults(),
116
+ children: row.getChildren(),
117
+ infants: row.getInfants(),
118
+ checkInDate: row.getStartDate().format('YYYY-MM-DD'),
119
+ checkOutDate: row.getEndDate().format('YYYY-MM-DD'),
120
+ quoteId: (_b = row.quoteDetails) === null || _b === void 0 ? void 0 : _b.quoteId,
121
+ rowId: row.getID(),
122
+ memberNumber,
123
+ pencilId: row.pencilId,
95
124
  };
96
125
  rooms.push(room);
97
126
  });
@@ -99,26 +128,26 @@ class ReservationAPI extends BaseAPI_1.default {
99
128
  const addon = row.getAddon();
100
129
  const priceInfo = addon.availability[row.getSelectedDate()];
101
130
  const response = {
102
- Code: addon.code,
103
- StartDate: row.getSelectedDate(),
131
+ code: addon.code,
132
+ startDate: row.getSelectedDate(),
104
133
  };
105
134
  if (addon === null || addon === void 0 ? void 0 : addon.ratePlanCode) {
106
- response.RatePlanCode = row.getAddon().ratePlanCode;
135
+ response.ratePlanCode = row.getAddon().ratePlanCode;
107
136
  }
108
137
  if (row.getSelectedTime()) {
109
- response.StartTime = row.getSelectedTime();
138
+ response.startTime = row.getSelectedTime();
110
139
  }
111
140
  if (priceInfo.price) {
112
- response.Quantity = row.getQuantity();
141
+ response.quantity = row.getQuantity();
113
142
  }
114
143
  if (priceInfo.adultPrice) {
115
- response.Adults = row.getAdultQuantity();
144
+ response.adults = row.getAdultQuantity();
116
145
  }
117
146
  if (priceInfo.childPrice) {
118
- response.Children = row.getChildQuantity();
147
+ response.children = row.getChildQuantity();
119
148
  }
120
149
  if (addon.pricingType) {
121
- response.PricingType = addon.pricingType;
150
+ response.pricingType = addon.pricingType;
122
151
  }
123
152
  return response;
124
153
  });
@@ -127,15 +156,16 @@ class ReservationAPI extends BaseAPI_1.default {
127
156
  getParams.retryPayment = true;
128
157
  }
129
158
  return this.post(BaseAPI_1.APIEndpoint.Reservations, {
130
- Rooms: rooms,
131
- Services: addons,
132
- SpecialRequest: specialReq,
133
- Comments: comments,
134
- Profiles: userProfiles,
135
- Payment: payment,
136
- SessionId: sessionId,
137
- SourceUrl: window.location.href,
138
- RoomstayId,
159
+ rooms: rooms,
160
+ services: addons,
161
+ specialRequest: specialReq,
162
+ comments: comments,
163
+ profiles: userProfiles,
164
+ payment: payment,
165
+ sessionId: sessionId,
166
+ pencilId: pencilId,
167
+ sourceUrl: window.location.href,
168
+ roomstayId: roomstayId,
139
169
  }, hotelId, getParams);
140
170
  });
141
171
  this.commit = (reservations, itineraryId, hotelId, planpayCheckoutId) => __awaiter(this, void 0, void 0, function* () {
@@ -183,6 +213,20 @@ class ReservationAPI extends BaseAPI_1.default {
183
213
  reject(ex);
184
214
  }
185
215
  }));
216
+ this.linkBookingToMember = (hotelId, reservationId, reservationEmail) => __awaiter(this, void 0, void 0, function* () {
217
+ return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
218
+ try {
219
+ const response = yield this.post(BaseAPI_1.APIEndpoint.Reservations, {
220
+ reservationId,
221
+ reservationEmail,
222
+ }, hotelId, {}, 'link-booking');
223
+ resolve(response);
224
+ }
225
+ catch (ex) {
226
+ reject(ex);
227
+ }
228
+ }));
229
+ });
186
230
  }
187
231
  }
188
232
  exports.default = ReservationAPI;
@@ -1 +1 @@
1
- {"version":3,"file":"ReservationAPI.js","sourceRoot":"/","sources":["src/api/ReservationAPI.ts"],"names":[],"mappings":"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","sourcesContent":["import { IBookingPayment, IBookingQuoteRequest } from '@roomstay/core';\n\nimport BaseAPI, { APIEndpoint } from '@/api/BaseAPI';\nimport ReservationsDTO, { ReservationDTO } from '@/models/Api/ReservationsDTO';\nimport BasketAddonRow from '@/models/BasketAddonRow';\nimport BasketRow from '@/models/BasketRow';\nimport UserProfile from '@/models/UserProfile';\n\nexport enum EPaymentMethod {\n PLANPAY = 'Planpay',\n CARD = 'Card',\n}\n\nexport default class ReservationAPI extends BaseAPI {\n private storedReservations: { [ref: string]: any } = {};\n\n public getPriceQuote = async (hotelId: string, rows: BasketRow[], memberNumber?: string) => {\n const quoteBody: IBookingQuoteRequest = {\n rows: rows.map((row) => {\n return {\n rowId: row.getID(),\n\n roomCode: row.getRoom().code as string,\n rateCode: row.getRate()?.code as string,\n\n promoCode: row.getPromoCode(),\n\n adults: row.getAdults(),\n children: row.getChildren(),\n infants: row.getInfants(),\n\n checkIn: row.getStartDate().format('YYYY-MM-DD'),\n checkOut: row.getEndDate().format('YYYY-MM-DD'),\n memberNumber,\n totalDisplayedPrice: row.getTotalPrice(),\n };\n }),\n };\n\n return this.post(APIEndpoint.Reservations, quoteBody, hotelId, {}, 'quote');\n };\n\n /**\n *\n * @param basketRows\n * @param userProfiles\n * @param payment\n * @param addonRows\n * @param comments\n * @param hotelId\n * @param sessionId\n * @param specialReq\n * @returns\n */\n public bookNow = async (\n basketRows: BasketRow[],\n userProfiles: UserProfile[],\n payment: IBookingPayment,\n addonRows: BasketAddonRow[],\n comments: string,\n hotelId: string,\n sessionId: string,\n specialReq: string | undefined = undefined,\n retryPayment = false,\n RoomstayId: string | undefined = undefined,\n MemberNumber: string | undefined = undefined\n ): Promise<ReservationsDTO> => {\n const rooms: any[] = [];\n\n basketRows.forEach((row) => {\n const room = {\n RoomType: row.getRoom().code,\n RatePlan: row.getRate()?.code,\n PromoCode: row.getPromoCode(),\n Adults: row.getAdults(),\n Children: row.getChildren(),\n Infants: row.getInfants(),\n CheckInDate: row.getStartDate().format('YYYY-MM-DD'),\n CheckOutDate: row.getEndDate().format('YYYY-MM-DD'),\n\n QuoteId: row.quoteDetails?.quoteId,\n RowId: row.getID(),\n MemberNumber,\n };\n\n rooms.push(room);\n });\n\n const addons = addonRows.map((row) => {\n const addon = row.getAddon();\n const priceInfo = addon.availability[row.getSelectedDate()];\n\n const response: any = {\n Code: addon.code,\n StartDate: row.getSelectedDate(),\n };\n if (addon?.ratePlanCode) {\n response.RatePlanCode = row.getAddon().ratePlanCode;\n }\n if (row.getSelectedTime()) {\n response.StartTime = row.getSelectedTime();\n }\n\n if (priceInfo.price) {\n response.Quantity = row.getQuantity();\n }\n if (priceInfo.adultPrice) {\n response.Adults = row.getAdultQuantity();\n }\n if (priceInfo.childPrice) {\n response.Children = row.getChildQuantity();\n }\n\n if (addon.pricingType) {\n response.PricingType = addon.pricingType;\n }\n\n return response;\n });\n\n const getParams: any = {};\n\n if (retryPayment) {\n getParams.retryPayment = true;\n }\n\n return this.post(\n APIEndpoint.Reservations,\n {\n Rooms: rooms,\n Services: addons,\n SpecialRequest: specialReq,\n Comments: comments,\n Profiles: userProfiles,\n Payment: payment,\n SessionId: sessionId,\n SourceUrl: window.location.href,\n RoomstayId,\n },\n hotelId,\n getParams\n );\n };\n\n public commit = async (reservations: string[], itineraryId: string, hotelId: string, planpayCheckoutId?: string): Promise<ReservationsDTO> => {\n return this.post(\n APIEndpoint.Reservations,\n {\n itineraryId: itineraryId,\n reservationIds: reservations,\n planpayCheckoutId,\n },\n hotelId,\n {},\n 'commit'\n );\n };\n\n public rollback = async (reservations: string[], itineraryId: string, hotelId: string): Promise<boolean> => {\n await this.post(\n APIEndpoint.Reservations,\n {\n itineraryId: itineraryId,\n reservationIds: reservations,\n },\n hotelId,\n {},\n 'rollback'\n );\n\n return true;\n };\n\n public cancelReservation = (id: string, email: string, hotelId: string): Promise<boolean> =>\n new Promise(async (resolve, reject) => {\n try {\n const response = await this.delete(APIEndpoint.Reservations, {}, hotelId, { email: encodeURIComponent(email) }, id);\n\n this.storedReservations[id]?.reservations?.forEach((reservation: ReservationDTO) => {\n if (reservation.reservationNumber === id) {\n reservation.status = 'Cancelled';\n }\n });\n\n resolve(response);\n } catch (ex) {\n reject(ex);\n }\n });\n\n public findReservation = (id: string, email: string, hotelId: string): Promise<ReservationsDTO> =>\n new Promise(async (resolve, reject) => {\n /*\n resolve with locally cached data, so we don't have to re-query this again\n */\n if (this.storedReservations[id]) {\n return resolve(this.storedReservations[id]);\n }\n\n try {\n const response = await this.get(APIEndpoint.Reservations, { email: encodeURIComponent(email) }, id, hotelId);\n\n this.storedReservations[id] = response;\n\n resolve(response);\n } catch (ex) {\n reject(ex);\n }\n });\n}\n"]}
1
+ {"version":3,"file":"ReservationAPI.js","sourceRoot":"/","sources":["src/api/ReservationAPI.ts"],"names":[],"mappings":"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","sourcesContent":["import { IBookingPayment, IBookingQuoteRequest, IBookingQuoteResponse, IPencilReservationRequest, IPencilReservationResponse } from '@roomstay/core';\n\nimport BaseAPI, { APIEndpoint } from '@/api/BaseAPI';\nimport ReservationsDTO, { ReservationDTO } from '@/models/Api/ReservationsDTO';\nimport BasketAddonRow from '@/models/BasketAddonRow';\nimport BasketRow from '@/models/BasketRow';\nimport { IRoomstayMemberBooking } from '@/models/RoomstayMembers/IRoomstayMemberBooking';\nimport UserProfile from '@/models/UserProfile';\n\nexport enum EPaymentMethod {\n PLANPAY = 'Planpay',\n CARD = 'Card',\n}\n\nexport default class ReservationAPI extends BaseAPI {\n private storedReservations: { [ref: string]: any } = {};\n\n /**\n * Populates a booking quote request.\n */\n public buildQuoteRequest = (rows: BasketRow[], memberNumber?: string): IBookingQuoteRequest => {\n return {\n rows: rows.map((row) => {\n return {\n rowId: row.getID(),\n\n roomCode: row.getRoom().code as string,\n rateCode: row.getRate()?.code as string,\n\n promoCode: row.getPromoCode(),\n\n adults: row.getAdults(),\n children: row.getChildren(),\n infants: row.getInfants(),\n\n checkIn: row.getStartDate().format('YYYY-MM-DD'),\n checkOut: row.getEndDate().format('YYYY-MM-DD'),\n memberNumber,\n totalDisplayedPrice: row.getTotalPrice(),\n };\n }),\n };\n };\n\n /**\n * Populates a pencil reservation request based on a quote request.\n */\n public buildPencilRequest = (rows: BasketRow[], memberNumber?: string, pencilId?: string): IPencilReservationRequest => {\n const quoteRequest = this.buildQuoteRequest(rows, memberNumber);\n const pencilRequest: IPencilReservationRequest = {\n ...quoteRequest,\n pencilId: pencilId,\n };\n\n pencilRequest.rows = quoteRequest.rows.map((requestRow) => {\n const basketRow = rows.find((r) => r.getID() == requestRow.rowId);\n\n return {\n ...requestRow,\n pencilId: basketRow?.pencilId,\n };\n });\n\n return pencilRequest;\n };\n\n /**\n * Returns a quote for the given\n */\n public getPriceQuote = async (hotelId: string, rows: BasketRow[], memberNumber?: string): Promise<IBookingQuoteResponse> => {\n const quoteBody = this.buildQuoteRequest(rows, memberNumber);\n return this.post(APIEndpoint.Reservations, quoteBody, hotelId, {}, 'quote');\n };\n\n /**\n * Pencils a reservation for the given rooms. Returns the timeout, and quote if applicable.\n */\n public pencilReservation = async (hotelId: string, rows: BasketRow[], memberNumber?: string, pencilId?: string): Promise<IPencilReservationResponse> => {\n const quoteBody = this.buildPencilRequest(rows, memberNumber, pencilId);\n return this.post(APIEndpoint.Reservations, quoteBody, hotelId, {}, 'pencil');\n };\n\n /**\n *\n * @param basketRows\n * @param userProfiles\n * @param payment\n * @param addonRows\n * @param comments\n * @param hotelId\n * @param sessionId\n * @param specialReq\n * @returns\n */\n public bookNow = async (\n basketRows: BasketRow[],\n userProfiles: UserProfile[],\n payment: IBookingPayment,\n addonRows: BasketAddonRow[],\n comments: string,\n hotelId: string,\n sessionId: string,\n pencilId: string | undefined = undefined,\n specialReq: string | undefined = undefined,\n retryPayment = false,\n roomstayId: string | undefined = undefined,\n memberNumber: string | undefined = undefined\n ): Promise<ReservationsDTO> => {\n const rooms: any[] = [];\n\n basketRows.forEach((row) => {\n const room = {\n roomType: row.getRoom().code || '',\n ratePlan: row.getRate()?.code || '',\n promoCode: row.getPromoCode(),\n adults: row.getAdults(),\n children: row.getChildren(),\n infants: row.getInfants(),\n checkInDate: row.getStartDate().format('YYYY-MM-DD'),\n checkOutDate: row.getEndDate().format('YYYY-MM-DD'),\n\n quoteId: row.quoteDetails?.quoteId,\n rowId: row.getID(),\n memberNumber,\n pencilId: row.pencilId,\n };\n\n rooms.push(room);\n });\n\n const addons = addonRows.map((row) => {\n const addon = row.getAddon();\n const priceInfo = addon.availability[row.getSelectedDate()];\n\n const response: any = {\n code: addon.code,\n startDate: row.getSelectedDate(),\n };\n if (addon?.ratePlanCode) {\n response.ratePlanCode = row.getAddon().ratePlanCode;\n }\n if (row.getSelectedTime()) {\n response.startTime = row.getSelectedTime();\n }\n\n if (priceInfo.price) {\n response.quantity = row.getQuantity();\n }\n if (priceInfo.adultPrice) {\n response.adults = row.getAdultQuantity();\n }\n if (priceInfo.childPrice) {\n response.children = row.getChildQuantity();\n }\n\n if (addon.pricingType) {\n response.pricingType = addon.pricingType;\n }\n\n return response;\n });\n\n const getParams: any = {};\n\n if (retryPayment) {\n getParams.retryPayment = true;\n }\n\n return this.post(\n APIEndpoint.Reservations,\n {\n rooms: rooms,\n services: addons,\n specialRequest: specialReq,\n comments: comments,\n profiles: userProfiles,\n payment: payment,\n sessionId: sessionId,\n pencilId: pencilId,\n sourceUrl: window.location.href,\n roomstayId: roomstayId,\n },\n hotelId,\n getParams\n );\n };\n\n public commit = async (reservations: string[], itineraryId: string, hotelId: string, planpayCheckoutId?: string): Promise<ReservationsDTO> => {\n return this.post(\n APIEndpoint.Reservations,\n {\n itineraryId: itineraryId,\n reservationIds: reservations,\n planpayCheckoutId,\n },\n hotelId,\n {},\n 'commit'\n );\n };\n\n public rollback = async (reservations: string[], itineraryId: string, hotelId: string): Promise<boolean> => {\n await this.post(\n APIEndpoint.Reservations,\n {\n itineraryId: itineraryId,\n reservationIds: reservations,\n },\n hotelId,\n {},\n 'rollback'\n );\n\n return true;\n };\n\n public cancelReservation = (id: string, email: string, hotelId: string): Promise<boolean> =>\n new Promise(async (resolve, reject) => {\n try {\n const response = await this.delete(APIEndpoint.Reservations, {}, hotelId, { email: encodeURIComponent(email) }, id);\n\n this.storedReservations[id]?.reservations?.forEach((reservation: ReservationDTO) => {\n if (reservation.reservationNumber === id) {\n reservation.status = 'Cancelled';\n }\n });\n\n resolve(response);\n } catch (ex) {\n reject(ex);\n }\n });\n\n public findReservation = (id: string, email: string, hotelId: string): Promise<ReservationsDTO> =>\n new Promise(async (resolve, reject) => {\n /*\n resolve with locally cached data, so we don't have to re-query this again\n */\n if (this.storedReservations[id]) {\n return resolve(this.storedReservations[id]);\n }\n\n try {\n const response = await this.get(APIEndpoint.Reservations, { email: encodeURIComponent(email) }, id, hotelId);\n\n this.storedReservations[id] = response;\n\n resolve(response);\n } catch (ex) {\n reject(ex);\n }\n });\n\n public linkBookingToMember = async (hotelId: string, reservationId: string, reservationEmail: string): Promise<{ message: string; booking: IRoomstayMemberBooking }> =>\n new Promise(async (resolve, reject) => {\n try {\n const response = await this.post(\n APIEndpoint.Reservations,\n {\n reservationId,\n reservationEmail,\n },\n hotelId,\n {},\n 'link-booking'\n );\n\n resolve(response);\n } catch (ex) {\n reject(ex);\n }\n });\n}\n"]}
@@ -83,17 +83,23 @@ const ForgotPasswordForm = (props) => {
83
83
  const forgotPasswordStates = [contexts_1.CognitoLoginState.ForgotPassword, contexts_1.CognitoLoginState.CodeMismatch];
84
84
  const areResettingPassword = forgotPasswordStates.includes(cognitoLoginState);
85
85
  const onSubmit = (values) => __awaiter(void 0, void 0, void 0, function* () {
86
- var _a, _b;
86
+ var _a, _b, _c, _d;
87
87
  setIsLoading(true);
88
88
  try {
89
89
  if (areResettingPassword) {
90
90
  const state = yield resetPassword(values.email, values.code, values.password, { hotel });
91
- if (state === contexts_1.CognitoLoginState.CodeMismatch)
91
+ if (state === contexts_1.CognitoLoginState.CodeMismatch) {
92
92
  setError('code', {
93
93
  message: t(Translation_1.Translation.Navigation.ForgotPassword.Inputs.Code.Validation.InvalidCode),
94
94
  });
95
- else
96
- (_a = props.onDone) === null || _a === void 0 ? void 0 : _a.call(props);
95
+ }
96
+ else if (state === contexts_1.CognitoLoginState.Success) {
97
+ (_a = props.onPasswordReset) === null || _a === void 0 ? void 0 : _a.call(props);
98
+ (_b = props.onDone) === null || _b === void 0 ? void 0 : _b.call(props);
99
+ }
100
+ else {
101
+ (_c = props.onDone) === null || _c === void 0 ? void 0 : _c.call(props);
102
+ }
97
103
  }
98
104
  else {
99
105
  const state = yield forgotPassword(values.email, { hotel });
@@ -104,7 +110,7 @@ const ForgotPasswordForm = (props) => {
104
110
  }
105
111
  else if (state === contexts_1.CognitoLoginState.RequiresConfirmation) {
106
112
  setPendingCredentials({ email: values.email });
107
- (_b = props.onNotVerified) === null || _b === void 0 ? void 0 : _b.call(props);
113
+ (_d = props.onNotVerified) === null || _d === void 0 ? void 0 : _d.call(props);
108
114
  }
109
115
  }
110
116
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ForgotPasswordForm.js","sourceRoot":"/","sources":["src/components/User/Forms/ForgotPasswordForm.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAA8E;AAC9E,2CAAkD;AAClD,+CAA+D;AAC/D,qDAAsD;AACtD,iDAA+C;AAC/C,0DAAuD;AAEvD,iFAAyD;AACzD,6EAAqD;AACrD,6EAAqD;AACrD,kEAA2D;AAC3D,2EAAmD;AACnD,wCAAqC;AAErC,yDAA4H;AAC5H,uEAAoE;AAuBpE,MAAM,kBAAkB,GAAG,CAAC,KAA8B,EAAE,EAAE;IAC1D,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IAE1C,OAAO,CACH,uCAAK,SAAS,EAAC,sBAAsB;QACjC,uCAAK,SAAS,EAAC,sBAAsB;YACjC,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,aAAK,CAAC,IAAI,EAAE,IAAI,UAC9C,KAAK,CACH,CACL;QACL,SAAS;QACT,CAAC,CAAC,KAAK,IAAI,CACR,qCAAG,SAAS,EAAC,YAAY,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAChD,KAAK,CAAC,OAAO,CACd,CACP,CACC,CACT,CAAC;AACN,CAAC,CAAC;AAEK,MAAM,kBAAkB,GAAG,CAAC,KAA8B,EAAE,EAAE;IACjE,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAE/B,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,KAAK,EAAE,qBAAqB,EAAE,GAAG,IAAA,kBAAU,EAAC,gCAAqB,CAAC,CAAC;IACtJ,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,uBAAe,GAAE,CAAC;IAEpC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAA,yBAAO,EAA2B;QACtG,IAAI,EAAE,UAAU;KACnB,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;IAExC,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC/B,CAAC,EAAE,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC;IAE7B,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAElD,MAAM,kBAAkB,GAAG,CAAC,IAAoC,EAAE,EAAE;QAChE,IAAI,SAAS,CAAC,MAAM,EAAE;YAClB,IAAI,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;gBACxB,OAAO,OAAO,CAAC;aAClB;iBAAM;gBACH,OAAO,SAAS,CAAC;aACpB;SACJ;IACL,CAAC,CAAC;IAEF,MAAM,oBAAoB,GAAwB,CAAC,4BAAiB,CAAC,cAAc,EAAE,4BAAiB,CAAC,YAAY,CAAC,CAAC;IAErH,MAAM,oBAAoB,GAAG,oBAAoB,CAAC,QAAQ,CAAC,iBAAsC,CAAC,CAAC;IAEnG,MAAM,QAAQ,GAAG,CAAO,MAAW,EAAE,EAAE;;QACnC,YAAY,CAAC,IAAI,CAAC,CAAC;QAEnB,IAAI;YACA,IAAI,oBAAoB,EAAE;gBACtB,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;gBACzF,IAAI,KAAK,KAAK,4BAAiB,CAAC,YAAY;oBACxC,QAAQ,CAAC,MAAM,EAAE;wBACb,OAAO,EAAE,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;qBACvF,CAAC,CAAC;;oBACF,MAAA,KAAK,CAAC,MAAM,qDAAI,CAAC;aACzB;iBAAM;gBACH,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC5D,IAAI,KAAK,KAAK,4BAAiB,CAAC,YAAY,EAAE;oBAC1C,QAAQ,CAAC,OAAO,EAAE;wBACd,OAAO,EAAE,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC;qBACzF,CAAC,CAAC;iBACN;qBAAM,IAAI,KAAK,KAAK,4BAAiB,CAAC,oBAAoB,EAAE;oBACzD,qBAAqB,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;oBAC/C,MAAA,KAAK,CAAC,aAAa,qDAAI,CAAC;iBAC3B;aACJ;SACJ;QAAC,OAAO,EAAE,EAAE;YACT,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;SACrB;gBAAS;YACN,YAAY,CAAC,KAAK,CAAC,CAAC;SACvB;IACL,CAAC,CAAA,CAAC;IAEF,MAAM,eAAe,GAAG,GAAG,EAAE;;QACzB,KAAK,EAAE,CAAC;QACR,MAAA,KAAK,CAAC,WAAW,qDAAI,CAAC;IAC1B,CAAC,CAAC;IAEF,OAAO,CACH;QACI,uCAAK,SAAS,EAAC,sBAAsB;YACjC,8BAAC,kBAAQ,IAAC,KAAK,EAAE,aAAK,CAAC,IAAI,EAAE,IAAI,QAAC,SAAS,EAAC,sBAAsB,IAC7D,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC,CACxC;YACV,oBAAoB,IAAI,CACrB,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,aAAK,CAAC,OAAO,IAC3C,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,cAAc,CAAC,QAAQ,CAAC,CAC/C,CACV,CACC;QAEN,wCAAM,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC;YAClC,8BAAC,kBAAkB,IACf,KAAK,EAAE,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAClE,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK,EAC7B,SAAS,EACL,8BAAC,iBAAO,kBACJ,WAAW,EAAE,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,EAC9E,QAAQ,QACR,gBAAgB,EAAE,kBAAkB,CAAC,OAAO,CAAC,EAC7C,UAAU,EAAE,EAAE,QAAQ,EAAE,oBAAoB,IAAI,SAAS,IAAI,cAAc,EAAE,IACzE,QAAQ,CAAC,OAAO,EAAE;oBAClB,QAAQ,EAAE,IAAI;oBACd,OAAO,EAAE,IAAA,iCAAoB,EAAC,CAAC,CAAC;iBACnC,CAAC,EACJ,GAER;YAEF,8BAAC,wBAAc,IAAC,IAAI,EAAE,oBAAoB;gBACtC,8BAAC,kBAAkB,IACf,KAAK,EAAE,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EACjE,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,IAAI,EAC5B,SAAS,EACL,8BAAC,iBAAO,kBACJ,WAAW,EAAE,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAC7E,gBAAgB,EAAE,kBAAkB,CAAC,MAAM,CAAC,EAC5C,UAAU,EAAE,EAAE,QAAQ,EAAE,SAAS,IAAI,cAAc,EAAE,IACjD,QAAQ,CAAC,MAAM,EAAE;wBACjB,QAAQ,EAAE,IAAA,6BAAgB,EAAC,CAAC,CAAC,CAAC,oBAAoB,EAAE,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;qBAClH,CAAC,EACJ,GAER;gBACF,8BAAC,kBAAkB,IACf,KAAK,EAAE,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EACrE,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,QAAQ,EAChC,SAAS,EACL,8BAAC,yBAAW,kBACR,WAAW,EAAE,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,EACjF,gBAAgB,EAAE,kBAAkB,CAAC,UAAU,CAAC,EAChD,UAAU,EAAE,EAAE,QAAQ,EAAE,SAAS,IAAI,cAAc,EAAE,IACjD,QAAQ,CAAC,UAAU,EAAE;wBACrB,QAAQ,EAAE,IAAA,6BAAgB,EAAC,CAAC,CAAC,CAAC,oBAAoB,EAAE,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;wBACnH,OAAO,EAAE,IAAA,oCAAuB,EAAC,CAAC,CAAC;qBACtC,CAAC,EACJ,GAER;gBACF,8BAAC,kBAAkB,IACf,KAAK,EAAE,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,EAC3E,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,eAAe,EACvC,SAAS,EACL,8BAAC,yBAAW,kBACR,WAAW,EAAE,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,EACvF,gBAAgB,EAAE,kBAAkB,CAAC,iBAAiB,CAAC,EACvD,UAAU,EAAE,EAAE,QAAQ,EAAE,SAAS,IAAI,cAAc,EAAE,IACjD,QAAQ,CAAC,iBAAiB,EAAE;wBAC5B,QAAQ,EAAE,IAAA,6BAAgB,EAAC,CAAC,CAAC,CAAC,oBAAoB,EAAE,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;wBACzH,QAAQ,EAAE;4BACN,MAAM,EAAE,IAAA,4BAAe,EAAC,CAAC,CAAC,CAAC,aAAa,CAAC;yBAC5C;qBACJ,CAAC,EACJ,GAER,CACW;YACjB,uCAAK,SAAS,EAAC,YAAY;gBACvB,8BAAC,kBAAQ,IAAC,OAAO,QAAC,MAAM,QAAC,IAAI,QAAC,QAAQ,EAAC,QAAQ,EAAC,SAAS,EAAE,cAAc,IAAI,SAAS,IACjF,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAC5D,CACT;YACN,uCAAK,SAAS,EAAC,2BAA2B;gBACtC,8BAAC,kBAAQ,IAAC,MAAM,QAAC,OAAO,EAAE,eAAe,EAAE,IAAI,EAAC,OAAO,IAClD,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAC5D,CACT,CACH,CACL,CACT,CAAC;AACN,CAAC,CAAC;AA9JW,QAAA,kBAAkB,sBA8J7B","sourcesContent":["import { AuthenticationContext, CognitoLoginState } from '@frontend/contexts';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport React, { useContext, useEffect, useState } from 'react';\nimport { FieldError, useForm } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport AutoAutoHeight from '@/animations/AutoAutoHeight';\nimport BEButton from '@/components/generic/BEButton';\nimport Headline from '@/components/generic/Headline';\nimport Text, { TextType } from '@/components/generic/Text';\nimport TextBox from '@/components/generic/TextBox';\nimport { Color } from '@/util/Color';\n\nimport { isPasswordMatch, makeEmailPatternRule, makePasswordPatternRule, makeRequiredRule } from '../../../util/Validation';\nimport { PasswordBox } from '../../generic/PasswordBox/PasswordBox';\n\ntype ForgotPasswordFormProps = {\n onPasswordReset?: () => void;\n onCancelled?: () => void;\n onDone?: () => void;\n onNotVerified?: () => void;\n};\n\ntype ForgotPasswordFormValues = {\n email: string;\n code: number;\n password: string;\n confirmPassword: string;\n};\n\ntype LabelAndInputGroupProps = {\n component: React.ReactNode;\n label: string;\n\n error?: FieldError;\n};\n\nconst LabelAndInputGroup = (props: LabelAndInputGroupProps) => {\n const { label, component, error } = props;\n\n return (\n <div className=\"u-marg-bottom--light\">\n <div className=\"u-marg-bottom--light\">\n <Text type={TextType.Label} color={Color.Navy} bold>\n {label}\n </Text>\n </div>\n {component}\n {!!error && (\n <p className=\"text-small\" style={{ color: '#ED4362' }}>\n {error.message}\n </p>\n )}\n </div>\n );\n};\n\nexport const ForgotPasswordForm = (props: ForgotPasswordFormProps) => {\n const { t } = useTranslation();\n\n const { cognitoLoginState, loading: cognitoLoading, forgotPassword, resetPassword, reset, setPendingCredentials } = useContext(AuthenticationContext);\n const { hotel } = useCurrentHotel();\n\n const { register, trigger, formState, handleSubmit, watch, setError } = useForm<ForgotPasswordFormValues>({\n mode: 'onSubmit',\n });\n\n const passwordWatch = watch('password');\n\n useEffect(() => {\n trigger('confirmPassword');\n }, [passwordWatch, trigger]);\n\n const [isLoading, setIsLoading] = useState(false);\n\n const getValidationClass = (name: keyof ForgotPasswordFormValues) => {\n if (formState.errors) {\n if (formState.errors[name]) {\n return 'error';\n } else {\n return 'success';\n }\n }\n };\n\n const forgotPasswordStates: CognitoLoginState[] = [CognitoLoginState.ForgotPassword, CognitoLoginState.CodeMismatch];\n\n const areResettingPassword = forgotPasswordStates.includes(cognitoLoginState as CognitoLoginState);\n\n const onSubmit = async (values: any) => {\n setIsLoading(true);\n\n try {\n if (areResettingPassword) {\n const state = await resetPassword(values.email, values.code, values.password, { hotel });\n if (state === CognitoLoginState.CodeMismatch)\n setError('code', {\n message: t(Translation.Navigation.ForgotPassword.Inputs.Code.Validation.InvalidCode),\n });\n else props.onDone?.();\n } else {\n const state = await forgotPassword(values.email, { hotel });\n if (state === CognitoLoginState.UserNotFound) {\n setError('email', {\n message: t(Translation.Navigation.ForgotPassword.Inputs.Email.Validation.UserNotFound),\n });\n } else if (state === CognitoLoginState.RequiresConfirmation) {\n setPendingCredentials({ email: values.email });\n props.onNotVerified?.();\n }\n }\n } catch (ex) {\n console.error(ex);\n } finally {\n setIsLoading(false);\n }\n };\n\n const onCancelPressed = () => {\n reset();\n props.onCancelled?.();\n };\n\n return (\n <div>\n <div className=\"u-marg-bottom--heavy\">\n <Headline color={Color.Navy} bold className=\"u-marg-bottom--light\">\n {t(Translation.Navigation.ForgotPassword.Title)}\n </Headline>\n {areResettingPassword && (\n <Text type={TextType.Small} color={Color.Success}>\n {t(Translation.Navigation.ForgotPassword.CodeSent)}\n </Text>\n )}\n </div>\n\n <form onSubmit={handleSubmit(onSubmit)}>\n <LabelAndInputGroup\n label={t(Translation.Navigation.ForgotPassword.Inputs.Email.Label)}\n error={formState.errors.email}\n component={\n <TextBox\n placeholder={t(Translation.Navigation.ForgotPassword.Inputs.Email.Placeholder)}\n required\n validationStatus={getValidationClass('email')}\n inputProps={{ disabled: areResettingPassword || isLoading || cognitoLoading }}\n {...register('email', {\n required: true,\n pattern: makeEmailPatternRule(t),\n })}\n />\n }\n />\n\n <AutoAutoHeight open={areResettingPassword}>\n <LabelAndInputGroup\n label={t(Translation.Navigation.ForgotPassword.Inputs.Code.Label)}\n error={formState.errors.code}\n component={\n <TextBox\n placeholder={t(Translation.Navigation.ForgotPassword.Inputs.Code.Placeholder)}\n validationStatus={getValidationClass('code')}\n inputProps={{ disabled: isLoading || cognitoLoading }}\n {...register('code', {\n required: makeRequiredRule(t)(areResettingPassword, t(Translation.Navigation.ForgotPassword.Inputs.Code.Label)),\n })}\n />\n }\n />\n <LabelAndInputGroup\n label={t(Translation.Navigation.ForgotPassword.Inputs.Password.Label)}\n error={formState.errors.password}\n component={\n <PasswordBox\n placeholder={t(Translation.Navigation.ForgotPassword.Inputs.Password.Placeholder)}\n validationStatus={getValidationClass('password')}\n inputProps={{ disabled: isLoading || cognitoLoading }}\n {...register('password', {\n required: makeRequiredRule(t)(areResettingPassword, t(Translation.Navigation.ForgotPassword.Inputs.Password.Label)),\n pattern: makePasswordPatternRule(t),\n })}\n />\n }\n />\n <LabelAndInputGroup\n label={t(Translation.Navigation.ForgotPassword.Inputs.RepeatPassword.Label)}\n error={formState.errors.confirmPassword}\n component={\n <PasswordBox\n placeholder={t(Translation.Navigation.ForgotPassword.Inputs.RepeatPassword.Placeholder)}\n validationStatus={getValidationClass('confirmPassword')}\n inputProps={{ disabled: isLoading || cognitoLoading }}\n {...register('confirmPassword', {\n required: makeRequiredRule(t)(areResettingPassword, t(Translation.Navigation.ForgotPassword.Inputs.RepeatPassword.Label)),\n validate: {\n isSame: isPasswordMatch(t)(passwordWatch),\n },\n })}\n />\n }\n />\n </AutoAutoHeight>\n <div className=\"u-marg-top\">\n <BEButton primary filled wide htmlType=\"submit\" isLoading={cognitoLoading || isLoading}>\n {t(Translation.Navigation.ForgotPassword.Inputs.SubmitButton.Label)}\n </BEButton>\n </div>\n <div className=\"u-marg-top u-align-center\">\n <BEButton isText onClick={onCancelPressed} size=\"small\">\n {t(Translation.Navigation.ForgotPassword.Inputs.CancelButton.Label)}\n </BEButton>\n </div>\n </form>\n </div>\n );\n};\n"]}
1
+ {"version":3,"file":"ForgotPasswordForm.js","sourceRoot":"/","sources":["src/components/User/Forms/ForgotPasswordForm.tsx"],"names":[],"mappings":"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","sourcesContent":["import { AuthenticationContext, CognitoLoginState } from '@frontend/contexts';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport React, { useContext, useEffect, useState } from 'react';\nimport { FieldError, useForm } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport AutoAutoHeight from '@/animations/AutoAutoHeight';\nimport BEButton from '@/components/generic/BEButton';\nimport Headline from '@/components/generic/Headline';\nimport Text, { TextType } from '@/components/generic/Text';\nimport TextBox from '@/components/generic/TextBox';\nimport { Color } from '@/util/Color';\n\nimport { isPasswordMatch, makeEmailPatternRule, makePasswordPatternRule, makeRequiredRule } from '../../../util/Validation';\nimport { PasswordBox } from '../../generic/PasswordBox/PasswordBox';\n\ntype ForgotPasswordFormProps = {\n onPasswordReset?: () => void;\n onCancelled?: () => void;\n onDone?: () => void;\n onNotVerified?: () => void;\n};\n\ntype ForgotPasswordFormValues = {\n email: string;\n code: number;\n password: string;\n confirmPassword: string;\n};\n\ntype LabelAndInputGroupProps = {\n component: React.ReactNode;\n label: string;\n\n error?: FieldError;\n};\n\nconst LabelAndInputGroup = (props: LabelAndInputGroupProps) => {\n const { label, component, error } = props;\n\n return (\n <div className=\"u-marg-bottom--light\">\n <div className=\"u-marg-bottom--light\">\n <Text type={TextType.Label} color={Color.Navy} bold>\n {label}\n </Text>\n </div>\n {component}\n {!!error && (\n <p className=\"text-small\" style={{ color: '#ED4362' }}>\n {error.message}\n </p>\n )}\n </div>\n );\n};\n\nexport const ForgotPasswordForm = (props: ForgotPasswordFormProps) => {\n const { t } = useTranslation();\n\n const { cognitoLoginState, loading: cognitoLoading, forgotPassword, resetPassword, reset, setPendingCredentials } = useContext(AuthenticationContext);\n const { hotel } = useCurrentHotel();\n\n const { register, trigger, formState, handleSubmit, watch, setError } = useForm<ForgotPasswordFormValues>({\n mode: 'onSubmit',\n });\n\n const passwordWatch = watch('password');\n\n useEffect(() => {\n trigger('confirmPassword');\n }, [passwordWatch, trigger]);\n\n const [isLoading, setIsLoading] = useState(false);\n\n const getValidationClass = (name: keyof ForgotPasswordFormValues) => {\n if (formState.errors) {\n if (formState.errors[name]) {\n return 'error';\n } else {\n return 'success';\n }\n }\n };\n\n const forgotPasswordStates: CognitoLoginState[] = [CognitoLoginState.ForgotPassword, CognitoLoginState.CodeMismatch];\n\n const areResettingPassword = forgotPasswordStates.includes(cognitoLoginState as CognitoLoginState);\n\n const onSubmit = async (values: any) => {\n setIsLoading(true);\n\n try {\n if (areResettingPassword) {\n const state = await resetPassword(values.email, values.code, values.password, { hotel });\n if (state === CognitoLoginState.CodeMismatch) {\n setError('code', {\n message: t(Translation.Navigation.ForgotPassword.Inputs.Code.Validation.InvalidCode),\n });\n } else if (state === CognitoLoginState.Success) {\n props.onPasswordReset?.();\n props.onDone?.();\n } else {\n props.onDone?.();\n }\n } else {\n const state = await forgotPassword(values.email, { hotel });\n if (state === CognitoLoginState.UserNotFound) {\n setError('email', {\n message: t(Translation.Navigation.ForgotPassword.Inputs.Email.Validation.UserNotFound),\n });\n } else if (state === CognitoLoginState.RequiresConfirmation) {\n setPendingCredentials({ email: values.email });\n props.onNotVerified?.();\n }\n }\n } catch (ex) {\n console.error(ex);\n } finally {\n setIsLoading(false);\n }\n };\n\n const onCancelPressed = () => {\n reset();\n props.onCancelled?.();\n };\n\n return (\n <div>\n <div className=\"u-marg-bottom--heavy\">\n <Headline color={Color.Navy} bold className=\"u-marg-bottom--light\">\n {t(Translation.Navigation.ForgotPassword.Title)}\n </Headline>\n {areResettingPassword && (\n <Text type={TextType.Small} color={Color.Success}>\n {t(Translation.Navigation.ForgotPassword.CodeSent)}\n </Text>\n )}\n </div>\n\n <form onSubmit={handleSubmit(onSubmit)}>\n <LabelAndInputGroup\n label={t(Translation.Navigation.ForgotPassword.Inputs.Email.Label)}\n error={formState.errors.email}\n component={\n <TextBox\n placeholder={t(Translation.Navigation.ForgotPassword.Inputs.Email.Placeholder)}\n required\n validationStatus={getValidationClass('email')}\n inputProps={{ disabled: areResettingPassword || isLoading || cognitoLoading }}\n {...register('email', {\n required: true,\n pattern: makeEmailPatternRule(t),\n })}\n />\n }\n />\n\n <AutoAutoHeight open={areResettingPassword}>\n <LabelAndInputGroup\n label={t(Translation.Navigation.ForgotPassword.Inputs.Code.Label)}\n error={formState.errors.code}\n component={\n <TextBox\n placeholder={t(Translation.Navigation.ForgotPassword.Inputs.Code.Placeholder)}\n validationStatus={getValidationClass('code')}\n inputProps={{ disabled: isLoading || cognitoLoading }}\n {...register('code', {\n required: makeRequiredRule(t)(areResettingPassword, t(Translation.Navigation.ForgotPassword.Inputs.Code.Label)),\n })}\n />\n }\n />\n <LabelAndInputGroup\n label={t(Translation.Navigation.ForgotPassword.Inputs.Password.Label)}\n error={formState.errors.password}\n component={\n <PasswordBox\n placeholder={t(Translation.Navigation.ForgotPassword.Inputs.Password.Placeholder)}\n validationStatus={getValidationClass('password')}\n inputProps={{ disabled: isLoading || cognitoLoading }}\n {...register('password', {\n required: makeRequiredRule(t)(areResettingPassword, t(Translation.Navigation.ForgotPassword.Inputs.Password.Label)),\n pattern: makePasswordPatternRule(t),\n })}\n />\n }\n />\n <LabelAndInputGroup\n label={t(Translation.Navigation.ForgotPassword.Inputs.RepeatPassword.Label)}\n error={formState.errors.confirmPassword}\n component={\n <PasswordBox\n placeholder={t(Translation.Navigation.ForgotPassword.Inputs.RepeatPassword.Placeholder)}\n validationStatus={getValidationClass('confirmPassword')}\n inputProps={{ disabled: isLoading || cognitoLoading }}\n {...register('confirmPassword', {\n required: makeRequiredRule(t)(areResettingPassword, t(Translation.Navigation.ForgotPassword.Inputs.RepeatPassword.Label)),\n validate: {\n isSame: isPasswordMatch(t)(passwordWatch),\n },\n })}\n />\n }\n />\n </AutoAutoHeight>\n <div className=\"u-marg-top\">\n <BEButton primary filled wide htmlType=\"submit\" isLoading={cognitoLoading || isLoading}>\n {t(Translation.Navigation.ForgotPassword.Inputs.SubmitButton.Label)}\n </BEButton>\n </div>\n <div className=\"u-marg-top u-align-center\">\n <BEButton isText onClick={onCancelPressed} size=\"small\">\n {t(Translation.Navigation.ForgotPassword.Inputs.CancelButton.Label)}\n </BEButton>\n </div>\n </form>\n </div>\n );\n};\n"]}
@@ -71,7 +71,7 @@ const SignInForm = (props) => {
71
71
  }
72
72
  };
73
73
  const onSubmit = (values) => __awaiter(void 0, void 0, void 0, function* () {
74
- var _a, _b;
74
+ var _a, _b, _c;
75
75
  if (loading)
76
76
  return;
77
77
  clearErrors();
@@ -83,7 +83,10 @@ const SignInForm = (props) => {
83
83
  (_a = props.onNotVerified) === null || _a === void 0 ? void 0 : _a.call(props);
84
84
  }
85
85
  else {
86
- (_b = props.onDone) === null || _b === void 0 ? void 0 : _b.call(props);
86
+ if (loginState === contexts_1.CognitoLoginState.Success) {
87
+ (_b = props.onSignedIn) === null || _b === void 0 ? void 0 : _b.call(props);
88
+ }
89
+ (_c = props.onDone) === null || _c === void 0 ? void 0 : _c.call(props);
87
90
  }
88
91
  }
89
92
  catch (ex) {
@@ -1 +1 @@
1
- {"version":3,"file":"SignInForm.js","sourceRoot":"/","sources":["src/components/User/Forms/SignInForm.tsx"],"names":[],"mappings":"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","sourcesContent":["import { AuthenticationContext, CognitoLoginState, useMemberContext } from '@frontend/contexts';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport React, { FC, useContext } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport AutoAutoHeight from '@/animations/AutoAutoHeight';\nimport Alert, { AlertType } from '@/components/generic/Alert';\nimport BEButton from '@/components/generic/BEButton';\nimport Headline from '@/components/generic/Headline';\nimport { IconType } from '@/components/generic/Icon/Icon';\nimport { PasswordBox } from '@/components/generic/PasswordBox/PasswordBox';\nimport Text, { TextType } from '@/components/generic/Text';\nimport TextBox from '@/components/generic/TextBox';\nimport { Color } from '@/util/Color';\n\nexport type SignInFormProps = {\n onForgotPassword?: () => void;\n onSignedIn?: () => void;\n onNotVerified?: () => void;\n onDone?: () => void;\n};\nexport const SignInForm: FC<SignInFormProps> = (props) => {\n const { t } = useTranslation();\n\n const { error, login, reset, setPendingCredentials } = useContext(AuthenticationContext);\n const { loading } = useMemberContext();\n const { hotel } = useCurrentHotel();\n\n const { register, formState, handleSubmit, clearErrors } = useForm({\n mode: 'onSubmit',\n });\n\n const errors = formState.errors;\n\n const getValidationClass = (name: string) => {\n if (errors) {\n if (errors[name]) {\n return 'error';\n } else {\n return 'success';\n }\n }\n };\n\n const onSubmit = async (values: any) => {\n if (loading) return;\n\n clearErrors();\n reset();\n\n try {\n const loginState = await login(values.email, values.password, { hotel });\n\n if (loginState === CognitoLoginState.RequiresConfirmation) {\n setPendingCredentials({ email: values.email, password: values.password });\n props.onNotVerified?.();\n } else {\n props.onDone?.();\n }\n } catch (ex) {\n console.error(ex);\n }\n };\n\n const onInvalid = () => {\n reset();\n };\n\n const onForgotPasswordClicked = () => {\n props.onForgotPassword?.();\n };\n\n return (\n <div>\n <div className=\"u-marg-bottom--heavy\">\n <Headline color={Color.Navy} bold className=\"u-marg-bottom--light\">\n {t(Translation.Navigation.SignIn.SignIn)}\n </Headline>\n <Text color={Color.Navy} bold={false} type={TextType.Body}>\n {t(Translation.Navigation.SignIn.GetLowerPrices)}\n </Text>\n </div>\n <AutoAutoHeight open={!!error}>\n <div className=\"u-flex\">\n <Alert type={AlertType.Danger} icon={IconType.Error}>\n <Text type={TextType.Small}>{error?.message}</Text>\n </Alert>\n </div>\n </AutoAutoHeight>\n <AutoAutoHeight open={!!formState.errors}>\n <div className=\"u-flex flex-column\">\n {Object.keys(formState.errors).map((errorName, index) => {\n return (\n <Alert type={AlertType.Danger} icon={IconType.Error} key={index}>\n <Text type={TextType.Small}>{formState.errors[errorName]?.message}</Text>\n </Alert>\n );\n })}\n </div>\n </AutoAutoHeight>\n <form onSubmit={handleSubmit(onSubmit, onInvalid)} className=\"u-marg-bottom\">\n <div className=\"u-marg-bottom\">\n <div className=\"u-marg-bottom--light\">\n <Text type={TextType.Label} color={Color.Navy} bold>\n {t(Translation.Navigation.SignIn.EmailAddress)}\n </Text>\n </div>\n <TextBox\n placeholder=\"example@mail.com\"\n required\n validationStatus={getValidationClass('email')}\n inputProps={{ disabled: loading }}\n {...register('email', {\n required: {\n message: `${t(Translation.Navigation.SignIn.EmailAddress)} is required`,\n value: true,\n },\n pattern: {\n value: /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$/i,\n message: t(Translation.FindReservation.InvalidEmailAddress),\n },\n })}\n />\n </div>\n <div className=\"u-marg-bottom\">\n <div className=\"u-marg-bottom--light\">\n <Text type={TextType.Label} color={Color.Navy} bold>\n {t(Translation.Navigation.SignIn.Password)}\n </Text>\n </div>\n <PasswordBox\n inputProps={{ disabled: loading }}\n placeholder=\"•••••••••••••••\"\n required\n validationStatus={getValidationClass('password')}\n {...register('password', {\n required: { message: 'Password is required', value: true },\n minLength: { message: 'Password must be at least 8 characters long', value: 8 },\n })}\n />\n <div className=\"u-marg-top--light\">\n <BEButton isText size=\"tiny\" textColor={Color.Navy} onClick={onForgotPasswordClicked}>\n {t(Translation.Navigation.SignIn.ForgotPassword)}\n </BEButton>\n </div>\n </div>\n <BEButton wide icon={IconType.ArrowRight} iconPosition=\"right\" filled primary name=\"SignInButton\" htmlType=\"submit\" isLoading={loading}>\n {t(Translation.Navigation.SignIn.SignIn)}\n </BEButton>\n </form>\n {false && ( // TODO: We do not currently support social singin\n <>\n <div className=\"u-align-center\">{t(Translation.Navigation.SignIn.Or)}</div>\n <div className=\"u-flex u-flex-column u-marg-top u-flex-justify-center u-marg-bottom--heavy\">\n <BEButton isText className=\"u-marg-right\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M8.63085 24C5.00185 23.9799 2 16.8743 2 13.2555C2 7.34428 6.62311 6.05016 8.40483 6.05016C9.20777 6.05016 10.0652 6.35261 10.8214 6.62025C11.3502 6.80694 11.8971 6.99967 12.2013 6.99967C12.3834 6.99967 12.8124 6.83572 13.1912 6.69188C13.999 6.3834 15.0043 6 16.1749 6C16.177 6 16.1798 6 16.1819 6C17.0559 6 19.7062 6.184 21.2996 8.47917L21.6728 9.01715L21.1357 9.40593C20.3683 9.96131 18.9682 10.9744 18.9682 12.9812C18.9682 15.358 20.5538 16.2721 21.3156 16.7117C21.6519 16.9057 22 17.1058 22 17.5434C22 17.8292 19.6225 23.9646 16.17 23.9646C15.3252 23.9646 14.728 23.721 14.2013 23.5062C13.6683 23.2887 13.2086 23.1014 12.4489 23.1014C12.0638 23.1014 11.5768 23.276 11.0613 23.4614C10.3568 23.7136 9.55938 24 8.65457 24H8.63085Z\"\n fill=\"#1D1D1D\"\n />\n <path d=\"M15.9978 0C16.0763 3.0263 14.0528 5.12581 12.0317 4.99414C11.6987 2.57904 14.0526 0 15.9978 0Z\" fill=\"#1D1D1D\" />\n </svg>\n </BEButton>\n <BEButton isText className=\"u-marg-right\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M8.59895 4.63149C8.59895 4.48188 8.61961 4.15878 8.66093 3.66426C8.70535 3.16869 8.89128 2.65027 9.22493 2.10588C9.55548 1.56357 10.0916 1.07632 10.8374 0.645167C11.5801 0.216095 12.6534 0 14.0541 0H18V4.32501H15.1108C14.8247 4.32501 14.5581 4.43306 14.3175 4.64603C14.0789 4.85901 13.9559 5.0616 13.9559 5.24964V7.94044H17.999C17.9566 8.46717 17.9101 8.97935 17.8564 9.47388L17.6963 10.7808C17.6323 11.2224 17.5672 11.6317 17.5031 12.0088H13.927V24H8.59895V12.0078H6V7.94044H8.59895V4.63149Z\"\n fill=\"#1877F2\"\n />\n </svg>\n </BEButton>\n <BEButton isText>\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clipPath=\"url(#clip0_13480_12531)\">\n <path\n d=\"M5.31891 14.5034L4.4835 17.6221L1.43011 17.6867C0.517594 15.9942 0 14.0578 0 11.9999C0 10.0101 0.483938 8.13355 1.34175 6.48125H1.34241L4.06078 6.97963L5.25159 9.68169C5.00236 10.4083 4.86652 11.1883 4.86652 11.9999C4.86661 12.8808 5.02617 13.7248 5.31891 14.5034Z\"\n fill=\"#FBBB00\"\n />\n <path\n d=\"M23.7902 9.75822C23.928 10.4841 23.9999 11.2338 23.9999 12C23.9999 12.8591 23.9095 13.6971 23.7375 14.5055C23.1533 17.2563 21.6269 19.6582 19.5124 21.358L19.5118 21.3573L16.0878 21.1826L15.6032 18.1576C17.0063 17.3347 18.1028 16.047 18.6804 14.5055H12.2637V9.75822H18.774H23.7902Z\"\n fill=\"#518EF8\"\n />\n <path\n d=\"M19.5114 21.3574L19.5121 21.3581C17.4556 23.011 14.8433 24.0001 11.9996 24.0001C7.42969 24.0001 3.45652 21.4458 1.42969 17.6869L5.31848 14.5036C6.33187 17.2082 8.94089 19.1335 11.9996 19.1335C13.3143 19.1335 14.546 18.7781 15.6029 18.1577L19.5114 21.3574Z\"\n fill=\"#28B446\"\n />\n <path\n d=\"M19.6596 2.76262L15.7721 5.94525C14.6783 5.26153 13.3853 4.86656 12 4.86656C8.87213 4.86656 6.21431 6.88017 5.25169 9.68175L1.34245 6.48131H1.3418C3.33895 2.63077 7.36223 0 12 0C14.9117 0 17.5814 1.03716 19.6596 2.76262Z\"\n fill=\"#F14336\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_13480_12531\">\n <rect width=\"24\" height=\"24\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n </BEButton>\n </div>\n </>\n )}\n </div>\n );\n};\n"]}
1
+ {"version":3,"file":"SignInForm.js","sourceRoot":"/","sources":["src/components/User/Forms/SignInForm.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAgG;AAChG,2CAAkD;AAClD,+CAA8C;AAC9C,qDAA0C;AAC1C,iDAA+C;AAC/C,0DAAuD;AAEvD,iFAAyD;AACzD,oEAA8D;AAC9D,6EAAqD;AACrD,6EAAqD;AACrD,yDAA0D;AAC1D,8EAA2E;AAC3E,kEAA2D;AAC3D,2EAAmD;AACnD,wCAAqC;AAQ9B,MAAM,UAAU,GAAwB,CAAC,KAAK,EAAE,EAAE;IACrD,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAE/B,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,qBAAqB,EAAE,GAAG,IAAA,kBAAU,EAAC,gCAAqB,CAAC,CAAC;IACzF,MAAM,EAAE,OAAO,EAAE,GAAG,IAAA,2BAAgB,GAAE,CAAC;IACvC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,uBAAe,GAAE,CAAC;IAEpC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,IAAA,yBAAO,EAAC;QAC/D,IAAI,EAAE,UAAU;KACnB,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;IAEhC,MAAM,kBAAkB,GAAG,CAAC,IAAY,EAAE,EAAE;QACxC,IAAI,MAAM,EAAE;YACR,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE;gBACd,OAAO,OAAO,CAAC;aAClB;iBAAM;gBACH,OAAO,SAAS,CAAC;aACpB;SACJ;IACL,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,CAAO,MAAW,EAAE,EAAE;;QACnC,IAAI,OAAO;YAAE,OAAO;QAEpB,WAAW,EAAE,CAAC;QACd,KAAK,EAAE,CAAC;QAER,IAAI;YACA,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YAEzE,IAAI,UAAU,KAAK,4BAAiB,CAAC,oBAAoB,EAAE;gBACvD,qBAAqB,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAC1E,MAAA,KAAK,CAAC,aAAa,qDAAI,CAAC;aAC3B;iBAAM;gBACH,IAAI,UAAU,KAAK,4BAAiB,CAAC,OAAO,EAAE;oBAC1C,MAAA,KAAK,CAAC,UAAU,qDAAI,CAAC;iBACxB;gBAED,MAAA,KAAK,CAAC,MAAM,qDAAI,CAAC;aACpB;SACJ;QAAC,OAAO,EAAE,EAAE;YACT,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;SACrB;IACL,CAAC,CAAA,CAAC;IAEF,MAAM,SAAS,GAAG,GAAG,EAAE;QACnB,KAAK,EAAE,CAAC;IACZ,CAAC,CAAC;IAEF,MAAM,uBAAuB,GAAG,GAAG,EAAE;;QACjC,MAAA,KAAK,CAAC,gBAAgB,qDAAI,CAAC;IAC/B,CAAC,CAAC;IAEF,OAAO,CACH;QACI,uCAAK,SAAS,EAAC,sBAAsB;YACjC,8BAAC,kBAAQ,IAAC,KAAK,EAAE,aAAK,CAAC,IAAI,EAAE,IAAI,QAAC,SAAS,EAAC,sBAAsB,IAC7D,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CACjC;YACX,8BAAC,cAAI,IAAC,KAAK,EAAE,aAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,eAAQ,CAAC,IAAI,IACpD,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,MAAM,CAAC,cAAc,CAAC,CAC7C,CACL;QACN,8BAAC,wBAAc,IAAC,IAAI,EAAE,CAAC,CAAC,KAAK;YACzB,uCAAK,SAAS,EAAC,QAAQ;gBACnB,8BAAC,eAAK,IAAC,IAAI,EAAE,iBAAS,CAAC,MAAM,EAAE,IAAI,EAAE,eAAQ,CAAC,KAAK;oBAC/C,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,IAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,CAAQ,CAC/C,CACN,CACO;QACjB,8BAAC,wBAAc,IAAC,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM;YACpC,uCAAK,SAAS,EAAC,oBAAoB,IAC9B,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE;;gBACpD,OAAO,CACH,8BAAC,eAAK,IAAC,IAAI,EAAE,iBAAS,CAAC,MAAM,EAAE,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK;oBAC3D,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,IAAG,MAAA,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,0CAAE,OAAO,CAAQ,CACrE,CACX,CAAC;YACN,CAAC,CAAC,CACA,CACO;QACjB,wCAAM,QAAQ,EAAE,YAAY,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,SAAS,EAAC,eAAe;YACxE,uCAAK,SAAS,EAAC,eAAe;gBAC1B,uCAAK,SAAS,EAAC,sBAAsB;oBACjC,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,aAAK,CAAC,IAAI,EAAE,IAAI,UAC9C,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,CAC3C,CACL;gBACN,8BAAC,iBAAO,kBACJ,WAAW,EAAC,kBAAkB,EAC9B,QAAQ,QACR,gBAAgB,EAAE,kBAAkB,CAAC,OAAO,CAAC,EAC7C,UAAU,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,IAC7B,QAAQ,CAAC,OAAO,EAAE;oBAClB,QAAQ,EAAE;wBACN,OAAO,EAAE,GAAG,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,cAAc;wBACvE,KAAK,EAAE,IAAI;qBACd;oBACD,OAAO,EAAE;wBACL,KAAK,EAAE,2CAA2C;wBAClD,OAAO,EAAE,CAAC,CAAC,yBAAW,CAAC,eAAe,CAAC,mBAAmB,CAAC;qBAC9D;iBACJ,CAAC,EACJ,CACA;YACN,uCAAK,SAAS,EAAC,eAAe;gBAC1B,uCAAK,SAAS,EAAC,sBAAsB;oBACjC,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,aAAK,CAAC,IAAI,EAAE,IAAI,UAC9C,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CACvC,CACL;gBACN,8BAAC,yBAAW,kBACR,UAAU,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EACjC,WAAW,EAAC,4FAAiB,EAC7B,QAAQ,QACR,gBAAgB,EAAE,kBAAkB,CAAC,UAAU,CAAC,IAC5C,QAAQ,CAAC,UAAU,EAAE;oBACrB,QAAQ,EAAE,EAAE,OAAO,EAAE,sBAAsB,EAAE,KAAK,EAAE,IAAI,EAAE;oBAC1D,SAAS,EAAE,EAAE,OAAO,EAAE,6CAA6C,EAAE,KAAK,EAAE,CAAC,EAAE;iBAClF,CAAC,EACJ;gBACF,uCAAK,SAAS,EAAC,mBAAmB;oBAC9B,8BAAC,kBAAQ,IAAC,MAAM,QAAC,IAAI,EAAC,MAAM,EAAC,SAAS,EAAE,aAAK,CAAC,IAAI,EAAE,OAAO,EAAE,uBAAuB,IAC/E,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,MAAM,CAAC,cAAc,CAAC,CACzC,CACT,CACJ;YACN,8BAAC,kBAAQ,IAAC,IAAI,QAAC,IAAI,EAAE,eAAQ,CAAC,UAAU,EAAE,YAAY,EAAC,OAAO,EAAC,MAAM,QAAC,OAAO,QAAC,IAAI,EAAC,cAAc,EAAC,QAAQ,EAAC,QAAQ,EAAC,SAAS,EAAE,OAAO,IACjI,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CACjC,CACR;QACN,KAAK,IAAI,EAAE,kDAAkD;QAC1D;YACI,uCAAK,SAAS,EAAC,gBAAgB,IAAE,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAO;YAC3E,uCAAK,SAAS,EAAC,4EAA4E;gBACvF,8BAAC,kBAAQ,IAAC,MAAM,QAAC,SAAS,EAAC,cAAc;oBACrC,uCAAK,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,4BAA4B;wBAC1F,wCACI,CAAC,EAAC,4tBAA4tB,EAC9tB,IAAI,EAAC,SAAS,GAChB;wBACF,wCAAM,CAAC,EAAC,gGAAgG,EAAC,IAAI,EAAC,SAAS,GAAG,CACxH,CACC;gBACX,8BAAC,kBAAQ,IAAC,MAAM,QAAC,SAAS,EAAC,cAAc;oBACrC,uCAAK,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,4BAA4B;wBAC1F,wCACI,CAAC,EAAC,8eAA8e,EAChf,IAAI,EAAC,SAAS,GAChB,CACA,CACC;gBACX,8BAAC,kBAAQ,IAAC,MAAM;oBACZ,uCAAK,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,4BAA4B;wBAC1F,qCAAG,QAAQ,EAAC,yBAAyB;4BACjC,wCACI,CAAC,EAAC,0QAA0Q,EAC5Q,IAAI,EAAC,SAAS,GAChB;4BACF,wCACI,CAAC,EAAC,0RAA0R,EAC5R,IAAI,EAAC,SAAS,GAChB;4BACF,wCACI,CAAC,EAAC,iQAAiQ,EACnQ,IAAI,EAAC,SAAS,GAChB;4BACF,wCACI,CAAC,EAAC,8NAA8N,EAChO,IAAI,EAAC,SAAS,GAChB,CACF;wBACJ;4BACI,4CAAU,EAAE,EAAC,mBAAmB;gCAC5B,wCAAM,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,EAAC,OAAO,GAAG,CACrC,CACR,CACL,CACC,CACT,CACP,CACN,CACC,CACT,CAAC;AACN,CAAC,CAAC;AA1LW,QAAA,UAAU,cA0LrB","sourcesContent":["import { AuthenticationContext, CognitoLoginState, useMemberContext } from '@frontend/contexts';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport React, { FC, useContext } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport AutoAutoHeight from '@/animations/AutoAutoHeight';\nimport Alert, { AlertType } from '@/components/generic/Alert';\nimport BEButton from '@/components/generic/BEButton';\nimport Headline from '@/components/generic/Headline';\nimport { IconType } from '@/components/generic/Icon/Icon';\nimport { PasswordBox } from '@/components/generic/PasswordBox/PasswordBox';\nimport Text, { TextType } from '@/components/generic/Text';\nimport TextBox from '@/components/generic/TextBox';\nimport { Color } from '@/util/Color';\n\nexport type SignInFormProps = {\n onForgotPassword?: () => void;\n onSignedIn?: () => void;\n onNotVerified?: () => void;\n onDone?: () => void;\n};\nexport const SignInForm: FC<SignInFormProps> = (props) => {\n const { t } = useTranslation();\n\n const { error, login, reset, setPendingCredentials } = useContext(AuthenticationContext);\n const { loading } = useMemberContext();\n const { hotel } = useCurrentHotel();\n\n const { register, formState, handleSubmit, clearErrors } = useForm({\n mode: 'onSubmit',\n });\n\n const errors = formState.errors;\n\n const getValidationClass = (name: string) => {\n if (errors) {\n if (errors[name]) {\n return 'error';\n } else {\n return 'success';\n }\n }\n };\n\n const onSubmit = async (values: any) => {\n if (loading) return;\n\n clearErrors();\n reset();\n\n try {\n const loginState = await login(values.email, values.password, { hotel });\n\n if (loginState === CognitoLoginState.RequiresConfirmation) {\n setPendingCredentials({ email: values.email, password: values.password });\n props.onNotVerified?.();\n } else {\n if (loginState === CognitoLoginState.Success) {\n props.onSignedIn?.();\n }\n\n props.onDone?.();\n }\n } catch (ex) {\n console.error(ex);\n }\n };\n\n const onInvalid = () => {\n reset();\n };\n\n const onForgotPasswordClicked = () => {\n props.onForgotPassword?.();\n };\n\n return (\n <div>\n <div className=\"u-marg-bottom--heavy\">\n <Headline color={Color.Navy} bold className=\"u-marg-bottom--light\">\n {t(Translation.Navigation.SignIn.SignIn)}\n </Headline>\n <Text color={Color.Navy} bold={false} type={TextType.Body}>\n {t(Translation.Navigation.SignIn.GetLowerPrices)}\n </Text>\n </div>\n <AutoAutoHeight open={!!error}>\n <div className=\"u-flex\">\n <Alert type={AlertType.Danger} icon={IconType.Error}>\n <Text type={TextType.Small}>{error?.message}</Text>\n </Alert>\n </div>\n </AutoAutoHeight>\n <AutoAutoHeight open={!!formState.errors}>\n <div className=\"u-flex flex-column\">\n {Object.keys(formState.errors).map((errorName, index) => {\n return (\n <Alert type={AlertType.Danger} icon={IconType.Error} key={index}>\n <Text type={TextType.Small}>{formState.errors[errorName]?.message}</Text>\n </Alert>\n );\n })}\n </div>\n </AutoAutoHeight>\n <form onSubmit={handleSubmit(onSubmit, onInvalid)} className=\"u-marg-bottom\">\n <div className=\"u-marg-bottom\">\n <div className=\"u-marg-bottom--light\">\n <Text type={TextType.Label} color={Color.Navy} bold>\n {t(Translation.Navigation.SignIn.EmailAddress)}\n </Text>\n </div>\n <TextBox\n placeholder=\"example@mail.com\"\n required\n validationStatus={getValidationClass('email')}\n inputProps={{ disabled: loading }}\n {...register('email', {\n required: {\n message: `${t(Translation.Navigation.SignIn.EmailAddress)} is required`,\n value: true,\n },\n pattern: {\n value: /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$/i,\n message: t(Translation.FindReservation.InvalidEmailAddress),\n },\n })}\n />\n </div>\n <div className=\"u-marg-bottom\">\n <div className=\"u-marg-bottom--light\">\n <Text type={TextType.Label} color={Color.Navy} bold>\n {t(Translation.Navigation.SignIn.Password)}\n </Text>\n </div>\n <PasswordBox\n inputProps={{ disabled: loading }}\n placeholder=\"•••••••••••••••\"\n required\n validationStatus={getValidationClass('password')}\n {...register('password', {\n required: { message: 'Password is required', value: true },\n minLength: { message: 'Password must be at least 8 characters long', value: 8 },\n })}\n />\n <div className=\"u-marg-top--light\">\n <BEButton isText size=\"tiny\" textColor={Color.Navy} onClick={onForgotPasswordClicked}>\n {t(Translation.Navigation.SignIn.ForgotPassword)}\n </BEButton>\n </div>\n </div>\n <BEButton wide icon={IconType.ArrowRight} iconPosition=\"right\" filled primary name=\"SignInButton\" htmlType=\"submit\" isLoading={loading}>\n {t(Translation.Navigation.SignIn.SignIn)}\n </BEButton>\n </form>\n {false && ( // TODO: We do not currently support social singin\n <>\n <div className=\"u-align-center\">{t(Translation.Navigation.SignIn.Or)}</div>\n <div className=\"u-flex u-flex-column u-marg-top u-flex-justify-center u-marg-bottom--heavy\">\n <BEButton isText className=\"u-marg-right\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M8.63085 24C5.00185 23.9799 2 16.8743 2 13.2555C2 7.34428 6.62311 6.05016 8.40483 6.05016C9.20777 6.05016 10.0652 6.35261 10.8214 6.62025C11.3502 6.80694 11.8971 6.99967 12.2013 6.99967C12.3834 6.99967 12.8124 6.83572 13.1912 6.69188C13.999 6.3834 15.0043 6 16.1749 6C16.177 6 16.1798 6 16.1819 6C17.0559 6 19.7062 6.184 21.2996 8.47917L21.6728 9.01715L21.1357 9.40593C20.3683 9.96131 18.9682 10.9744 18.9682 12.9812C18.9682 15.358 20.5538 16.2721 21.3156 16.7117C21.6519 16.9057 22 17.1058 22 17.5434C22 17.8292 19.6225 23.9646 16.17 23.9646C15.3252 23.9646 14.728 23.721 14.2013 23.5062C13.6683 23.2887 13.2086 23.1014 12.4489 23.1014C12.0638 23.1014 11.5768 23.276 11.0613 23.4614C10.3568 23.7136 9.55938 24 8.65457 24H8.63085Z\"\n fill=\"#1D1D1D\"\n />\n <path d=\"M15.9978 0C16.0763 3.0263 14.0528 5.12581 12.0317 4.99414C11.6987 2.57904 14.0526 0 15.9978 0Z\" fill=\"#1D1D1D\" />\n </svg>\n </BEButton>\n <BEButton isText className=\"u-marg-right\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M8.59895 4.63149C8.59895 4.48188 8.61961 4.15878 8.66093 3.66426C8.70535 3.16869 8.89128 2.65027 9.22493 2.10588C9.55548 1.56357 10.0916 1.07632 10.8374 0.645167C11.5801 0.216095 12.6534 0 14.0541 0H18V4.32501H15.1108C14.8247 4.32501 14.5581 4.43306 14.3175 4.64603C14.0789 4.85901 13.9559 5.0616 13.9559 5.24964V7.94044H17.999C17.9566 8.46717 17.9101 8.97935 17.8564 9.47388L17.6963 10.7808C17.6323 11.2224 17.5672 11.6317 17.5031 12.0088H13.927V24H8.59895V12.0078H6V7.94044H8.59895V4.63149Z\"\n fill=\"#1877F2\"\n />\n </svg>\n </BEButton>\n <BEButton isText>\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clipPath=\"url(#clip0_13480_12531)\">\n <path\n d=\"M5.31891 14.5034L4.4835 17.6221L1.43011 17.6867C0.517594 15.9942 0 14.0578 0 11.9999C0 10.0101 0.483938 8.13355 1.34175 6.48125H1.34241L4.06078 6.97963L5.25159 9.68169C5.00236 10.4083 4.86652 11.1883 4.86652 11.9999C4.86661 12.8808 5.02617 13.7248 5.31891 14.5034Z\"\n fill=\"#FBBB00\"\n />\n <path\n d=\"M23.7902 9.75822C23.928 10.4841 23.9999 11.2338 23.9999 12C23.9999 12.8591 23.9095 13.6971 23.7375 14.5055C23.1533 17.2563 21.6269 19.6582 19.5124 21.358L19.5118 21.3573L16.0878 21.1826L15.6032 18.1576C17.0063 17.3347 18.1028 16.047 18.6804 14.5055H12.2637V9.75822H18.774H23.7902Z\"\n fill=\"#518EF8\"\n />\n <path\n d=\"M19.5114 21.3574L19.5121 21.3581C17.4556 23.011 14.8433 24.0001 11.9996 24.0001C7.42969 24.0001 3.45652 21.4458 1.42969 17.6869L5.31848 14.5036C6.33187 17.2082 8.94089 19.1335 11.9996 19.1335C13.3143 19.1335 14.546 18.7781 15.6029 18.1577L19.5114 21.3574Z\"\n fill=\"#28B446\"\n />\n <path\n d=\"M19.6596 2.76262L15.7721 5.94525C14.6783 5.26153 13.3853 4.86656 12 4.86656C8.87213 4.86656 6.21431 6.88017 5.25169 9.68175L1.34245 6.48131H1.3418C3.33895 2.63077 7.36223 0 12 0C14.9117 0 17.5814 1.03716 19.6596 2.76262Z\"\n fill=\"#F14336\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_13480_12531\">\n <rect width=\"24\" height=\"24\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n </BEButton>\n </div>\n </>\n )}\n </div>\n );\n};\n"]}
@@ -2,6 +2,11 @@ type SignUpFormProps = {
2
2
  onForgotPassword?: () => void;
3
3
  onSignIn?: () => void;
4
4
  onDone?: () => void;
5
+ defaultValues?: {
6
+ email?: string;
7
+ firstName?: string;
8
+ lastName?: string;
9
+ };
5
10
  };
6
11
  export declare const SignUpForm: (props: SignUpFormProps) => JSX.Element;
7
12
  export {};
@@ -22,6 +22,15 @@ var __importStar = (this && this.__importStar) || function (mod) {
22
22
  __setModuleDefault(result, mod);
23
23
  return result;
24
24
  };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
25
34
  var __importDefault = (this && this.__importDefault) || function (mod) {
26
35
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
36
  };
@@ -47,6 +56,7 @@ const Color_1 = require("../../../util/Color");
47
56
  const Validation_1 = require("../../../util/Validation");
48
57
  const PasswordBox_1 = require("../../generic/PasswordBox/PasswordBox");
49
58
  const SignUpForm = (props) => {
59
+ var _a, _b, _c;
50
60
  const { t } = (0, react_i18next_1.useTranslation)();
51
61
  const { hotel } = (0, hooks_1.useCurrentHotel)();
52
62
  const { loading, error, cognitoLoginState, register: cognitoRegister, reset: cognitoReset, setPendingCredentials } = (0, react_1.useContext)(contexts_1.AuthenticationContext);
@@ -55,6 +65,13 @@ const SignUpForm = (props) => {
55
65
  const [isVerifyingEmail, setIsVerifyingEmail] = (0, react_1.useState)(cognitoLoginState === contexts_1.CognitoLoginState.RequiresConfirmation);
56
66
  const { register, formState, handleSubmit } = (0, react_hook_form_1.useForm)({
57
67
  mode: 'onSubmit',
68
+ defaultValues: {
69
+ email: ((_a = props.defaultValues) === null || _a === void 0 ? void 0 : _a.email) || '',
70
+ forename: ((_b = props.defaultValues) === null || _b === void 0 ? void 0 : _b.firstName) || '',
71
+ surname: ((_c = props.defaultValues) === null || _c === void 0 ? void 0 : _c.lastName) || '',
72
+ password: '',
73
+ termsAndConditions: false,
74
+ },
58
75
  });
59
76
  const signUpStates = [contexts_1.CognitoLoginState.UsernameExists];
60
77
  const errors = formState.errors;
@@ -69,23 +86,23 @@ const SignUpForm = (props) => {
69
86
  }
70
87
  }
71
88
  };
72
- const onSubmit = (values) => {
89
+ const onSubmit = (values) => __awaiter(void 0, void 0, void 0, function* () {
73
90
  setIsLoading(true);
74
91
  setApiErrorMessages('');
75
- cognitoRegister(values.email, values.password, {
76
- ['custom:forename']: values.forename,
77
- ['custom:surname']: values.surname,
78
- }, { hotel })
79
- .then((state) => {
92
+ try {
93
+ const state = yield cognitoRegister(values.email, values.password, {
94
+ ['custom:forename']: values.forename,
95
+ ['custom:surname']: values.surname,
96
+ }, { hotel });
80
97
  if (state === contexts_1.CognitoLoginState.RequiresConfirmation) {
81
98
  setPendingCredentials({ email: values.email, password: values.password });
82
99
  setIsVerifyingEmail(true);
83
100
  }
84
- })
85
- .finally(() => {
101
+ }
102
+ finally {
86
103
  setIsLoading(false);
87
- });
88
- };
104
+ }
105
+ });
89
106
  const onSignInClicked = () => {
90
107
  var _a;
91
108
  cognitoReset();