@roomstay/frontend 2.6.64 → 2.6.66
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.
- package/dist/279.bundle.js +1 -1
- package/dist/288.bundle.js +1 -1
- package/dist/370.bundle.js +1 -1
- package/dist/449.bundle.js +1 -1
- package/dist/537.bundle.js +1 -1
- package/dist/839.bundle.js +1 -1
- package/dist/873.bundle.js +1 -1
- package/dist/903.bundle.js +1 -1
- package/dist/950.bundle.js +1 -1
- package/dist/972.bundle.js +1 -1
- package/dist/978.bundle.js +1 -1
- package/dist/main.bundle.js +1 -1
- package/dist/src/api/ReservationAPI.js +2 -2
- package/dist/src/api/ReservationAPI.js.map +1 -1
- package/dist/src/components/User/Forms/SignUpForm.d.ts +2 -0
- package/dist/src/components/User/Forms/SignUpForm.js +14 -6
- package/dist/src/components/User/Forms/SignUpForm.js.map +1 -1
- package/dist/src/components/generic/InputGroup/InputGroup.d.ts +1 -0
- package/dist/src/components/generic/InputGroup/InputGroup.js +1 -0
- package/dist/src/components/generic/InputGroup/InputGroup.js.map +1 -1
- package/dist/src/components/generic/modal/SigninModal/FormContent/SignUpFormContent.js.map +1 -1
- package/dist/src/components/members/SignInModal/MemberPortalSignInModal.d.ts +8 -0
- package/dist/src/components/members/SignInModal/MemberPortalSignInModal.js +150 -0
- package/dist/src/components/members/SignInModal/MemberPortalSignInModal.js.map +1 -0
- package/dist/src/components/members/SignInModal/MemberSignInModal.js +2 -2
- package/dist/src/components/members/SignInModal/MemberSignInModal.js.map +1 -1
- package/dist/src/components/summary/BEMapWidget.js +1 -1
- package/dist/src/components/summary/BEMapWidget.js.map +1 -1
- package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContextProvider.js +1 -0
- package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContextProvider.js.map +1 -1
- package/dist/test.bundle.js +1 -1
- package/dist/vendors.bundle.js +1 -1
- package/package.json +2 -2
|
@@ -185,7 +185,7 @@ class ReservationAPI extends BaseAPI_1.default {
|
|
|
185
185
|
this.cancelReservation = (id, email, hotelId) => new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
|
|
186
186
|
var _a, _b;
|
|
187
187
|
try {
|
|
188
|
-
const response = yield this.delete(BaseAPI_1.APIEndpoint.Reservations, {}, hotelId, { email
|
|
188
|
+
const response = yield this.delete(BaseAPI_1.APIEndpoint.Reservations, {}, hotelId, { email }, id);
|
|
189
189
|
(_b = (_a = this.storedReservations[id]) === null || _a === void 0 ? void 0 : _a.reservations) === null || _b === void 0 ? void 0 : _b.forEach((reservation) => {
|
|
190
190
|
if (reservation.reservationNumber === id) {
|
|
191
191
|
reservation.status = 'Cancelled';
|
|
@@ -205,7 +205,7 @@ class ReservationAPI extends BaseAPI_1.default {
|
|
|
205
205
|
return resolve(this.storedReservations[id]);
|
|
206
206
|
}
|
|
207
207
|
try {
|
|
208
|
-
const response = yield this.get(BaseAPI_1.APIEndpoint.Reservations, { email
|
|
208
|
+
const response = yield this.get(BaseAPI_1.APIEndpoint.Reservations, { email }, id, hotelId);
|
|
209
209
|
this.storedReservations[id] = response;
|
|
210
210
|
resolve(response);
|
|
211
211
|
}
|
|
@@ -1 +1 @@
|
|
|
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"]}
|
|
1
|
+
{"version":3,"file":"ReservationAPI.js","sourceRoot":"/","sources":["src/api/ReservationAPI.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,yDAAqD;AAOrD,IAAY,cAGX;AAHD,WAAY,cAAc;IACtB,qCAAmB,CAAA;IACnB,+BAAa,CAAA;AACjB,CAAC,EAHW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAGzB;AAED,MAAqB,cAAe,SAAQ,iBAAO;IAAnD;;QACY,uBAAkB,GAA2B,EAAE,CAAC;QAExD;;WAEG;QACI,sBAAiB,GAAG,CAAC,IAAiB,EAAE,YAAqB,EAAwB,EAAE;YAC1F,OAAO;gBACH,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;;oBACnB,OAAO;wBACH,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE;wBAElB,QAAQ,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,IAAc;wBACtC,QAAQ,EAAE,MAAA,GAAG,CAAC,OAAO,EAAE,0CAAE,IAAc;wBAEvC,SAAS,EAAE,GAAG,CAAC,YAAY,EAAE;wBAE7B,MAAM,EAAE,GAAG,CAAC,SAAS,EAAE;wBACvB,QAAQ,EAAE,GAAG,CAAC,WAAW,EAAE;wBAC3B,OAAO,EAAE,GAAG,CAAC,UAAU,EAAE;wBAEzB,OAAO,EAAE,GAAG,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC;wBAChD,QAAQ,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC;wBAC/C,YAAY;wBACZ,mBAAmB,EAAE,GAAG,CAAC,aAAa,EAAE;qBAC3C,CAAC;gBACN,CAAC,CAAC;aACL,CAAC;QACN,CAAC,CAAC;QAEF;;WAEG;QACI,uBAAkB,GAAG,CAAC,IAAiB,EAAE,YAAqB,EAAE,QAAiB,EAA6B,EAAE;YACnH,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;YAChE,MAAM,aAAa,mCACZ,YAAY,KACf,QAAQ,EAAE,QAAQ,GACrB,CAAC;YAEF,aAAa,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;gBACtD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;gBAElE,uCACO,UAAU,KACb,QAAQ,EAAE,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,QAAQ,IAC/B;YACN,CAAC,CAAC,CAAC;YAEH,OAAO,aAAa,CAAC;QACzB,CAAC,CAAC;QAEF;;WAEG;QACI,kBAAa,GAAG,CAAO,OAAe,EAAE,IAAiB,EAAE,YAAqB,EAAkC,EAAE;YACvH,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;YAC7D,OAAO,IAAI,CAAC,IAAI,CAAC,qBAAW,CAAC,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;QAChF,CAAC,CAAA,CAAC;QAEF;;WAEG;QACI,sBAAiB,GAAG,CAAO,OAAe,EAAE,IAAiB,EAAE,YAAqB,EAAE,QAAiB,EAAuC,EAAE;YACnJ,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;YACxE,OAAO,IAAI,CAAC,IAAI,CAAC,qBAAW,CAAC,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;QACjF,CAAC,CAAA,CAAC;QAEF;;;;;;;;;;;WAWG;QACI,YAAO,GAAG,CACb,UAAuB,EACvB,YAA2B,EAC3B,OAAwB,EACxB,SAA2B,EAC3B,QAAgB,EAChB,OAAe,EACf,SAAiB,EACjB,WAA+B,SAAS,EACxC,aAAiC,SAAS,EAC1C,YAAY,GAAG,KAAK,EACpB,aAAiC,SAAS,EAC1C,eAAmC,SAAS,EACpB,EAAE;YAC1B,MAAM,KAAK,GAAU,EAAE,CAAC;YAExB,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;;gBACvB,MAAM,IAAI,GAAG;oBACT,QAAQ,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,IAAI,IAAI,EAAE;oBAClC,QAAQ,EAAE,CAAA,MAAA,GAAG,CAAC,OAAO,EAAE,0CAAE,IAAI,KAAI,EAAE;oBACnC,SAAS,EAAE,GAAG,CAAC,YAAY,EAAE;oBAC7B,MAAM,EAAE,GAAG,CAAC,SAAS,EAAE;oBACvB,QAAQ,EAAE,GAAG,CAAC,WAAW,EAAE;oBAC3B,OAAO,EAAE,GAAG,CAAC,UAAU,EAAE;oBACzB,WAAW,EAAE,GAAG,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC;oBACpD,YAAY,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC;oBAEnD,OAAO,EAAE,MAAA,GAAG,CAAC,YAAY,0CAAE,OAAO;oBAClC,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE;oBAClB,YAAY;oBACZ,QAAQ,EAAE,GAAG,CAAC,QAAQ;iBACzB,CAAC;gBAEF,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrB,CAAC,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;gBACjC,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;gBAC7B,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC;gBAE5D,MAAM,QAAQ,GAAQ;oBAClB,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,SAAS,EAAE,GAAG,CAAC,eAAe,EAAE;iBACnC,CAAC;gBACF,IAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,YAAY,EAAE;oBACrB,QAAQ,CAAC,YAAY,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,YAAY,CAAC;iBACvD;gBACD,IAAI,GAAG,CAAC,eAAe,EAAE,EAAE;oBACvB,QAAQ,CAAC,SAAS,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC;iBAC9C;gBAED,IAAI,SAAS,CAAC,KAAK,EAAE;oBACjB,QAAQ,CAAC,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;iBACzC;gBACD,IAAI,SAAS,CAAC,UAAU,EAAE;oBACtB,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC,gBAAgB,EAAE,CAAC;iBAC5C;gBACD,IAAI,SAAS,CAAC,UAAU,EAAE;oBACtB,QAAQ,CAAC,QAAQ,GAAG,GAAG,CAAC,gBAAgB,EAAE,CAAC;iBAC9C;gBAED,IAAI,KAAK,CAAC,WAAW,EAAE;oBACnB,QAAQ,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;iBAC5C;gBAED,OAAO,QAAQ,CAAC;YACpB,CAAC,CAAC,CAAC;YAEH,MAAM,SAAS,GAAQ,EAAE,CAAC;YAE1B,IAAI,YAAY,EAAE;gBACd,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC;aACjC;YAED,OAAO,IAAI,CAAC,IAAI,CACZ,qBAAW,CAAC,YAAY,EACxB;gBACI,KAAK,EAAE,KAAK;gBACZ,QAAQ,EAAE,MAAM;gBAChB,cAAc,EAAE,UAAU;gBAC1B,QAAQ,EAAE,QAAQ;gBAClB,QAAQ,EAAE,YAAY;gBACtB,OAAO,EAAE,OAAO;gBAChB,SAAS,EAAE,SAAS;gBACpB,QAAQ,EAAE,QAAQ;gBAClB,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI;gBAC/B,UAAU,EAAE,UAAU;aACzB,EACD,OAAO,EACP,SAAS,CACZ,CAAC;QACN,CAAC,CAAA,CAAC;QAEK,WAAM,GAAG,CAAO,YAAsB,EAAE,WAAmB,EAAE,OAAe,EAAE,iBAA0B,EAA4B,EAAE;YACzI,OAAO,IAAI,CAAC,IAAI,CACZ,qBAAW,CAAC,YAAY,EACxB;gBACI,WAAW,EAAE,WAAW;gBACxB,cAAc,EAAE,YAAY;gBAC5B,iBAAiB;aACpB,EACD,OAAO,EACP,EAAE,EACF,QAAQ,CACX,CAAC;QACN,CAAC,CAAA,CAAC;QAEK,aAAQ,GAAG,CAAO,YAAsB,EAAE,WAAmB,EAAE,OAAe,EAAoB,EAAE;YACvG,MAAM,IAAI,CAAC,IAAI,CACX,qBAAW,CAAC,YAAY,EACxB;gBACI,WAAW,EAAE,WAAW;gBACxB,cAAc,EAAE,YAAY;aAC/B,EACD,OAAO,EACP,EAAE,EACF,UAAU,CACb,CAAC;YAEF,OAAO,IAAI,CAAC;QAChB,CAAC,CAAA,CAAC;QAEK,sBAAiB,GAAG,CAAC,EAAU,EAAE,KAAa,EAAE,OAAe,EAAoB,EAAE,CACxF,IAAI,OAAO,CAAC,CAAO,OAAO,EAAE,MAAM,EAAE,EAAE;;YAClC,IAAI;gBACA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,qBAAW,CAAC,YAAY,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;gBAEzF,MAAA,MAAA,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,0CAAE,YAAY,0CAAE,OAAO,CAAC,CAAC,WAA2B,EAAE,EAAE;oBAC/E,IAAI,WAAW,CAAC,iBAAiB,KAAK,EAAE,EAAE;wBACtC,WAAW,CAAC,MAAM,GAAG,WAAW,CAAC;qBACpC;gBACL,CAAC,CAAC,CAAC;gBAEH,OAAO,CAAC,QAAQ,CAAC,CAAC;aACrB;YAAC,OAAO,EAAE,EAAE;gBACT,MAAM,CAAC,EAAE,CAAC,CAAC;aACd;QACL,CAAC,CAAA,CAAC,CAAC;QAEA,oBAAe,GAAG,CAAC,EAAU,EAAE,KAAa,EAAE,OAAe,EAA4B,EAAE,CAC9F,IAAI,OAAO,CAAC,CAAO,OAAO,EAAE,MAAM,EAAE,EAAE;YAClC;;IAER;YACQ,IAAI,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,EAAE;gBAC7B,OAAO,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC;aAC/C;YAED,IAAI;gBACA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,qBAAW,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;gBAElF,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;gBAEvC,OAAO,CAAC,QAAQ,CAAC,CAAC;aACrB;YAAC,OAAO,EAAE,EAAE;gBACT,MAAM,CAAC,EAAE,CAAC,CAAC;aACd;QACL,CAAC,CAAA,CAAC,CAAC;QAEA,wBAAmB,GAAG,CAAO,OAAe,EAAE,aAAqB,EAAE,gBAAwB,EAAiE,EAAE;YACnK,OAAA,IAAI,OAAO,CAAC,CAAO,OAAO,EAAE,MAAM,EAAE,EAAE;gBAClC,IAAI;oBACA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,qBAAW,CAAC,YAAY,EACxB;wBACI,aAAa;wBACb,gBAAgB;qBACnB,EACD,OAAO,EACP,EAAE,EACF,cAAc,CACjB,CAAC;oBAEF,OAAO,CAAC,QAAQ,CAAC,CAAC;iBACrB;gBAAC,OAAO,EAAE,EAAE;oBACT,MAAM,CAAC,EAAE,CAAC,CAAC;iBACd;YACL,CAAC,CAAA,CAAC,CAAA;UAAA,CAAC;IACX,CAAC;CAAA;AAlQD,iCAkQC","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 }, 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 }, 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"]}
|
|
@@ -55,10 +55,12 @@ const VerifyEmailForm_1 = require("./VerifyEmailForm");
|
|
|
55
55
|
const Color_1 = require("../../../util/Color");
|
|
56
56
|
const Validation_1 = require("../../../util/Validation");
|
|
57
57
|
const PasswordBox_1 = require("../../generic/PasswordBox/PasswordBox");
|
|
58
|
+
const SignUpForm_module_scss_1 = __importDefault(require("./SignUpForm.module.scss"));
|
|
58
59
|
const SignUpForm = (props) => {
|
|
59
60
|
var _a, _b, _c;
|
|
60
61
|
const { t } = (0, react_i18next_1.useTranslation)();
|
|
61
62
|
const { hotel } = (0, hooks_1.useCurrentHotel)();
|
|
63
|
+
const ccx = (0, react_1.useContext)(contexts_1.CompanyContext);
|
|
62
64
|
const { loading, error, cognitoLoginState, register: cognitoRegister, reset: cognitoReset, setPendingCredentials } = (0, react_1.useContext)(contexts_1.AuthenticationContext);
|
|
63
65
|
const [isLoading, setIsLoading] = (0, react_1.useState)(false);
|
|
64
66
|
const [, setApiErrorMessages] = (0, react_1.useState)('');
|
|
@@ -117,9 +119,9 @@ const SignUpForm = (props) => {
|
|
|
117
119
|
}
|
|
118
120
|
}
|
|
119
121
|
};
|
|
120
|
-
return (react_1.default.createElement("div",
|
|
121
|
-
react_1.default.createElement("div", { className: "u-marg-bottom--heavy" },
|
|
122
|
-
react_1.default.createElement(Headline_1.default, { color: Color_1.Color.Navy, bold: true, className: "u-marg-bottom--light" }, t(Translation_1.Translation.Navigation.SignUp.Title))),
|
|
122
|
+
return (react_1.default.createElement("div", { className: `${props.reduceMargins ? SignUpForm_module_scss_1.default['signup-form--reduced-margins'] : ''}` },
|
|
123
|
+
!props.hideTitle && (react_1.default.createElement("div", { className: "u-marg-bottom--heavy" },
|
|
124
|
+
react_1.default.createElement(Headline_1.default, { color: Color_1.Color.Navy, bold: true, className: "u-marg-bottom--light" }, t(Translation_1.Translation.Navigation.SignUp.Title)))),
|
|
123
125
|
react_1.default.createElement(AutoAutoHeight_1.default, { open: !!accountExists },
|
|
124
126
|
react_1.default.createElement("div", { className: "u-flex" },
|
|
125
127
|
react_1.default.createElement(Alert_1.default, { type: Alert_1.AlertType.Danger, icon: Icon_1.IconType.Error }, onErrorContent()))),
|
|
@@ -136,7 +138,7 @@ const SignUpForm = (props) => {
|
|
|
136
138
|
react_1.default.createElement(AutoAutoHeight_1.default, { open: !isVerifyingEmail, startOpen: true },
|
|
137
139
|
react_1.default.createElement("form", { onSubmit: handleSubmit(onSubmit), className: "u-marg-bottom" },
|
|
138
140
|
react_1.default.createElement("div", { className: "u-marg-bottom" },
|
|
139
|
-
react_1.default.createElement(InputGroup_1.default, { dimensions: "2/2" },
|
|
141
|
+
react_1.default.createElement(InputGroup_1.default, { dimensions: "2/2", noMargin: props.reduceMargins },
|
|
140
142
|
react_1.default.createElement(react_1.default.Fragment, null,
|
|
141
143
|
react_1.default.createElement("div", { className: "u-marg-bottom--light" },
|
|
142
144
|
react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Label, color: Color_1.Color.Navy, bold: true }, t(Translation_1.Translation.Navigation.SignUp.Inputs.FirstName))),
|
|
@@ -167,7 +169,7 @@ const SignUpForm = (props) => {
|
|
|
167
169
|
required: (0, Validation_1.makeRequiredRule)(t)(true, t(Translation_1.Translation.Navigation.SignUp.Inputs.Password.Label)),
|
|
168
170
|
pattern: (0, Validation_1.makePasswordPatternRule)(t),
|
|
169
171
|
})))),
|
|
170
|
-
react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Label, color: Color_1.Color.Navy, className: "u-marg-bottom" }, t(Translation_1.Translation.Navigation.SignUp.Inputs.Password.Hint)),
|
|
172
|
+
react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Label, color: Color_1.Color.Navy, className: "u-marg-bottom password-hint" }, t(Translation_1.Translation.Navigation.SignUp.Inputs.Password.Hint)),
|
|
171
173
|
react_1.default.createElement(Checkbox_1.default, Object.assign({ label: react_1.default.createElement("div", null,
|
|
172
174
|
t(Translation_1.Translation.Navigation.SignUp.Inputs.Terms.BaseText),
|
|
173
175
|
' ',
|
|
@@ -179,7 +181,13 @@ const SignUpForm = (props) => {
|
|
|
179
181
|
})))),
|
|
180
182
|
react_1.default.createElement(BEButton_1.default, { wide: true, icon: Icon_1.IconType.ArrowRight, iconPosition: "right", filled: true, primary: true, name: "SignUpButton", htmlType: "submit", isLoading: loading || isLoading, disabled: isLoading || loading }, t(Translation_1.Translation.Navigation.SignUp.Inputs.SignUpButton)))),
|
|
181
183
|
react_1.default.createElement(AutoAutoHeight_1.default, { open: isVerifyingEmail },
|
|
182
|
-
react_1.default.createElement(VerifyEmailForm_1.VerifyEmailForm, { onDone: props.onDone, onSignIn: props.onSignIn }))
|
|
184
|
+
react_1.default.createElement(VerifyEmailForm_1.VerifyEmailForm, { onDone: props.onDone, onSignIn: props.onSignIn })),
|
|
185
|
+
react_1.default.createElement("div", { className: "u-marg-top--light" },
|
|
186
|
+
react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Label, color: Color_1.Color.DarkGrey },
|
|
187
|
+
react_1.default.createElement("span", { dangerouslySetInnerHTML: { __html: t(Translation_1.Translation.MemberOnlyPopup.AgreeToReceiveDeals, { companyShort: ccx === null || ccx === void 0 ? void 0 : ccx.companyShort }) } })),
|
|
188
|
+
' ',
|
|
189
|
+
react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Label, color: Color_1.Color.DarkGrey },
|
|
190
|
+
react_1.default.createElement("span", { dangerouslySetInnerHTML: { __html: t(Translation_1.Translation.MemberOnlyPopup.UnsubscribeAnytime) } })))));
|
|
183
191
|
};
|
|
184
192
|
exports.SignUpForm = SignUpForm;
|
|
185
193
|
//# sourceMappingURL=SignUpForm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SignUpForm.js","sourceRoot":"/","sources":["src/components/User/Forms/SignUpForm.tsx"],"names":[],"mappings":"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","sourcesContent":["import { AuthenticationContext, CognitoLoginState } from '@frontend/contexts';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport React, { useContext, useState } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { Trans, 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 Checkbox from '@/components/generic/Checkbox/Checkbox';\nimport Headline from '@/components/generic/Headline';\nimport { IconType } from '@/components/generic/Icon/Icon';\nimport InputGroup from '@/components/generic/InputGroup/InputGroup';\nimport Text, { TextType } from '@/components/generic/Text';\nimport TextBox from '@/components/generic/TextBox';\nimport { VerifyEmailForm } from '@/components/User/Forms/VerifyEmailForm';\nimport { Color } from '@/util/Color';\nimport { makePasswordPatternRule, makeRequiredRule } from '@/util/Validation';\n\nimport { PasswordBox } from '../../generic/PasswordBox/PasswordBox';\n\ntype SignUpFormProps = {\n onForgotPassword?: () => void;\n onSignIn?: () => void;\n onDone?: () => void;\n defaultValues?: {\n email?: string;\n firstName?: string;\n lastName?: string;\n };\n};\n\nexport const SignUpForm = (props: SignUpFormProps) => {\n const { t } = useTranslation();\n const { hotel } = useCurrentHotel();\n\n const { loading, error, cognitoLoginState, register: cognitoRegister, reset: cognitoReset, setPendingCredentials } = useContext(AuthenticationContext);\n\n const [isLoading, setIsLoading] = useState(false);\n const [, setApiErrorMessages] = useState('');\n const [isVerifyingEmail, setIsVerifyingEmail] = useState(cognitoLoginState === CognitoLoginState.RequiresConfirmation);\n\n const { register, formState, handleSubmit } = useForm({\n mode: 'onSubmit',\n defaultValues: {\n email: props.defaultValues?.email || '',\n forename: props.defaultValues?.firstName || '',\n surname: props.defaultValues?.lastName || '',\n password: '',\n termsAndConditions: false,\n },\n });\n\n const signUpStates: CognitoLoginState[] = [CognitoLoginState.UsernameExists];\n\n const errors = formState.errors;\n const accountExists = signUpStates.includes(cognitoLoginState as CognitoLoginState);\n\n const getValidationClass = (name: string) => {\n if (errors && formState.touchedFields[name as keyof typeof formState.touchedFields]) {\n if (errors[name as keyof typeof errors]) {\n return 'error';\n } else {\n return 'success';\n }\n }\n };\n\n const onSubmit = async (values: any) => {\n setIsLoading(true);\n setApiErrorMessages('');\n\n try {\n const state = await cognitoRegister(\n values.email,\n values.password,\n {\n ['custom:forename']: values.forename,\n ['custom:surname']: values.surname,\n },\n { hotel }\n );\n\n if (state === CognitoLoginState.RequiresConfirmation) {\n setPendingCredentials({ email: values.email, password: values.password });\n setIsVerifyingEmail(true);\n }\n } finally {\n setIsLoading(false);\n }\n };\n\n const onSignInClicked = (): void => {\n cognitoReset();\n props.onSignIn?.();\n };\n\n const onErrorContent = () => {\n switch (cognitoLoginState) {\n case CognitoLoginState.UsernameExists: {\n return (\n <>\n <Text type={TextType.Small}>\n <Trans i18nKey={Translation.Navigation.SignUp.EmailIsInUse} components={[<BEButton key={0} isText size=\"small\" primary onClick={onSignInClicked} />]} />\n </Text>\n </>\n );\n }\n }\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.SignUp.Title)}\n </Headline>\n </div>\n <AutoAutoHeight open={!!accountExists}>\n <div className=\"u-flex\">\n <Alert type={AlertType.Danger} icon={IconType.Error}>\n {onErrorContent()}\n </Alert>\n </div>\n </AutoAutoHeight>\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 as keyof typeof formState.errors]?.message}</Text>\n </Alert>\n );\n })}\n </div>\n </AutoAutoHeight>\n <AutoAutoHeight open={!isVerifyingEmail} startOpen>\n <form onSubmit={handleSubmit(onSubmit)} className=\"u-marg-bottom\">\n <div className=\"u-marg-bottom\">\n <InputGroup dimensions=\"2/2\">\n <>\n <div className=\"u-marg-bottom--light\">\n <Text type={TextType.Label} color={Color.Navy} bold>\n {t(Translation.Navigation.SignUp.Inputs.FirstName)}\n </Text>\n </div>\n <TextBox\n inputProps={{ disabled: loading || isLoading }}\n placeholder=\"Sam\"\n validationStatus={getValidationClass('forename')}\n {...register('forename', {\n required: makeRequiredRule(t)(true, t(Translation.Navigation.SignUp.Inputs.FirstName)),\n })}\n />\n </>\n <>\n <div className=\"u-marg-bottom--light\">\n <Text type={TextType.Label} color={Color.Navy} bold>\n {t(Translation.Navigation.SignUp.Inputs.LastName)}\n </Text>\n </div>\n <TextBox\n inputProps={{ disabled: loading || isLoading }}\n placeholder=\"Smith\"\n validationStatus={getValidationClass('surname')}\n {...register('surname', {\n required: makeRequiredRule(t)(true, t(Translation.Navigation.SignUp.Inputs.LastName)),\n })}\n />\n </>\n </InputGroup>\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.EmailAddress)}\n </Text>\n </div>\n <TextBox\n inputProps={{ disabled: loading || isLoading }}\n placeholder=\"example@mail.com\"\n validationStatus={getValidationClass('email')}\n {...register('email', {\n required: makeRequiredRule(t)(true, t(Translation.Navigation.SignIn.EmailAddress)),\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.SignUp.Inputs.Password.Label)}\n </Text>\n </div>\n <div className=\"u-marg-bottom--light\">\n <PasswordBox\n inputProps={{ disabled: loading || isLoading }}\n placeholder={t(Translation.Navigation.SignUp.Inputs.Password.Label)}\n validationStatus={getValidationClass('password')}\n {...register('password', {\n required: makeRequiredRule(t)(true, t(Translation.Navigation.SignUp.Inputs.Password.Label)),\n pattern: makePasswordPatternRule(t),\n })}\n />\n </div>\n <Text type={TextType.Label} color={Color.Navy} className=\"u-marg-bottom\">\n {t(Translation.Navigation.SignUp.Inputs.Password.Hint)}\n </Text>\n\n <Checkbox\n label={\n <div>\n {t(Translation.Navigation.SignUp.Inputs.Terms.BaseText)}{' '}\n <a href={hotel?.privacyPolicyUrl} target=\"_blank\" style={{ color: Color.Accent }} rel=\"noreferrer\">\n {t(Translation.Navigation.SignUp.Inputs.Terms.LinkText)}\n </a>\n </div>\n }\n {...register('termsAndConditions', {\n required: {\n value: true,\n message: t(Translation.Navigation.SignUp.Inputs.Terms.Error),\n },\n })}\n />\n </div>\n <BEButton\n wide\n icon={IconType.ArrowRight}\n iconPosition=\"right\"\n filled\n primary\n name=\"SignUpButton\"\n htmlType=\"submit\"\n isLoading={loading || isLoading}\n disabled={isLoading || loading}\n >\n {t(Translation.Navigation.SignUp.Inputs.SignUpButton)}\n </BEButton>\n </form>\n </AutoAutoHeight>\n <AutoAutoHeight open={isVerifyingEmail}>\n <VerifyEmailForm onDone={props.onDone} onSignIn={props.onSignIn}></VerifyEmailForm>\n </AutoAutoHeight>\n </div>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"file":"SignUpForm.js","sourceRoot":"/","sources":["src/components/User/Forms/SignUpForm.tsx"],"names":[],"mappings":"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","sourcesContent":["import { AuthenticationContext, CognitoLoginState, CompanyContext } from '@frontend/contexts';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport React, { useContext, useState } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { Trans, 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 Checkbox from '@/components/generic/Checkbox/Checkbox';\nimport Headline from '@/components/generic/Headline';\nimport { IconType } from '@/components/generic/Icon/Icon';\nimport InputGroup from '@/components/generic/InputGroup/InputGroup';\nimport Text, { TextType } from '@/components/generic/Text';\nimport TextBox from '@/components/generic/TextBox';\nimport { VerifyEmailForm } from '@/components/User/Forms/VerifyEmailForm';\nimport { Color } from '@/util/Color';\nimport { makePasswordPatternRule, makeRequiredRule } from '@/util/Validation';\n\nimport { PasswordBox } from '../../generic/PasswordBox/PasswordBox';\nimport styles from './SignUpForm.module.scss';\n\ntype SignUpFormProps = {\n onForgotPassword?: () => void;\n onSignIn?: () => void;\n onDone?: () => void;\n defaultValues?: {\n email?: string;\n firstName?: string;\n lastName?: string;\n };\n hideTitle?: boolean;\n reduceMargins?: boolean;\n};\n\nexport const SignUpForm = (props: SignUpFormProps) => {\n const { t } = useTranslation();\n const { hotel } = useCurrentHotel();\n const ccx = useContext(CompanyContext);\n\n const { loading, error, cognitoLoginState, register: cognitoRegister, reset: cognitoReset, setPendingCredentials } = useContext(AuthenticationContext);\n\n const [isLoading, setIsLoading] = useState(false);\n const [, setApiErrorMessages] = useState('');\n const [isVerifyingEmail, setIsVerifyingEmail] = useState(cognitoLoginState === CognitoLoginState.RequiresConfirmation);\n\n const { register, formState, handleSubmit } = useForm({\n mode: 'onSubmit',\n defaultValues: {\n email: props.defaultValues?.email || '',\n forename: props.defaultValues?.firstName || '',\n surname: props.defaultValues?.lastName || '',\n password: '',\n termsAndConditions: false,\n },\n });\n\n const signUpStates: CognitoLoginState[] = [CognitoLoginState.UsernameExists];\n\n const errors = formState.errors;\n const accountExists = signUpStates.includes(cognitoLoginState as CognitoLoginState);\n\n const getValidationClass = (name: string) => {\n if (errors && formState.touchedFields[name as keyof typeof formState.touchedFields]) {\n if (errors[name as keyof typeof errors]) {\n return 'error';\n } else {\n return 'success';\n }\n }\n };\n\n const onSubmit = async (values: any) => {\n setIsLoading(true);\n setApiErrorMessages('');\n\n try {\n const state = await cognitoRegister(\n values.email,\n values.password,\n {\n ['custom:forename']: values.forename,\n ['custom:surname']: values.surname,\n },\n { hotel }\n );\n\n if (state === CognitoLoginState.RequiresConfirmation) {\n setPendingCredentials({ email: values.email, password: values.password });\n setIsVerifyingEmail(true);\n }\n } finally {\n setIsLoading(false);\n }\n };\n\n const onSignInClicked = (): void => {\n cognitoReset();\n props.onSignIn?.();\n };\n\n const onErrorContent = () => {\n switch (cognitoLoginState) {\n case CognitoLoginState.UsernameExists: {\n return (\n <>\n <Text type={TextType.Small}>\n <Trans i18nKey={Translation.Navigation.SignUp.EmailIsInUse} components={[<BEButton key={0} isText size=\"small\" primary onClick={onSignInClicked} />]} />\n </Text>\n </>\n );\n }\n }\n };\n\n return (\n <div className={`${props.reduceMargins ? styles['signup-form--reduced-margins'] : ''}`}>\n {!props.hideTitle && (\n <div className=\"u-marg-bottom--heavy\">\n <Headline color={Color.Navy} bold className=\"u-marg-bottom--light\">\n {t(Translation.Navigation.SignUp.Title)}\n </Headline>\n </div>\n )}\n <AutoAutoHeight open={!!accountExists}>\n <div className=\"u-flex\">\n <Alert type={AlertType.Danger} icon={IconType.Error}>\n {onErrorContent()}\n </Alert>\n </div>\n </AutoAutoHeight>\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 as keyof typeof formState.errors]?.message}</Text>\n </Alert>\n );\n })}\n </div>\n </AutoAutoHeight>\n <AutoAutoHeight open={!isVerifyingEmail} startOpen>\n <form onSubmit={handleSubmit(onSubmit)} className=\"u-marg-bottom\">\n <div className=\"u-marg-bottom\">\n <InputGroup dimensions=\"2/2\" noMargin={props.reduceMargins}>\n <>\n <div className=\"u-marg-bottom--light\">\n <Text type={TextType.Label} color={Color.Navy} bold>\n {t(Translation.Navigation.SignUp.Inputs.FirstName)}\n </Text>\n </div>\n <TextBox\n inputProps={{ disabled: loading || isLoading }}\n placeholder=\"Sam\"\n validationStatus={getValidationClass('forename')}\n {...register('forename', {\n required: makeRequiredRule(t)(true, t(Translation.Navigation.SignUp.Inputs.FirstName)),\n })}\n />\n </>\n <>\n <div className=\"u-marg-bottom--light\">\n <Text type={TextType.Label} color={Color.Navy} bold>\n {t(Translation.Navigation.SignUp.Inputs.LastName)}\n </Text>\n </div>\n <TextBox\n inputProps={{ disabled: loading || isLoading }}\n placeholder=\"Smith\"\n validationStatus={getValidationClass('surname')}\n {...register('surname', {\n required: makeRequiredRule(t)(true, t(Translation.Navigation.SignUp.Inputs.LastName)),\n })}\n />\n </>\n </InputGroup>\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.EmailAddress)}\n </Text>\n </div>\n <TextBox\n inputProps={{ disabled: loading || isLoading }}\n placeholder=\"example@mail.com\"\n validationStatus={getValidationClass('email')}\n {...register('email', {\n required: makeRequiredRule(t)(true, t(Translation.Navigation.SignIn.EmailAddress)),\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.SignUp.Inputs.Password.Label)}\n </Text>\n </div>\n <div className=\"u-marg-bottom--light\">\n <PasswordBox\n inputProps={{ disabled: loading || isLoading }}\n placeholder={t(Translation.Navigation.SignUp.Inputs.Password.Label)}\n validationStatus={getValidationClass('password')}\n {...register('password', {\n required: makeRequiredRule(t)(true, t(Translation.Navigation.SignUp.Inputs.Password.Label)),\n pattern: makePasswordPatternRule(t),\n })}\n />\n </div>\n <Text type={TextType.Label} color={Color.Navy} className=\"u-marg-bottom password-hint\">\n {t(Translation.Navigation.SignUp.Inputs.Password.Hint)}\n </Text>\n\n <Checkbox\n label={\n <div>\n {t(Translation.Navigation.SignUp.Inputs.Terms.BaseText)}{' '}\n <a href={hotel?.privacyPolicyUrl} target=\"_blank\" style={{ color: Color.Accent }} rel=\"noreferrer\">\n {t(Translation.Navigation.SignUp.Inputs.Terms.LinkText)}\n </a>\n </div>\n }\n {...register('termsAndConditions', {\n required: {\n value: true,\n message: t(Translation.Navigation.SignUp.Inputs.Terms.Error),\n },\n })}\n />\n </div>\n <BEButton\n wide\n icon={IconType.ArrowRight}\n iconPosition=\"right\"\n filled\n primary\n name=\"SignUpButton\"\n htmlType=\"submit\"\n isLoading={loading || isLoading}\n disabled={isLoading || loading}\n >\n {t(Translation.Navigation.SignUp.Inputs.SignUpButton)}\n </BEButton>\n </form>\n </AutoAutoHeight>\n <AutoAutoHeight open={isVerifyingEmail}>\n <VerifyEmailForm onDone={props.onDone} onSignIn={props.onSignIn}></VerifyEmailForm>\n </AutoAutoHeight>\n\n <div className=\"u-marg-top--light\">\n <Text type={TextType.Label} color={Color.DarkGrey}>\n <span dangerouslySetInnerHTML={{ __html: t(Translation.MemberOnlyPopup.AgreeToReceiveDeals, { companyShort: ccx?.companyShort }) }}></span>\n </Text>{' '}\n <Text type={TextType.Label} color={Color.DarkGrey}>\n <span dangerouslySetInnerHTML={{ __html: t(Translation.MemberOnlyPopup.UnsubscribeAnytime) }}></span>\n </Text>\n </div>\n </div>\n );\n};\n"]}
|
|
@@ -9,6 +9,7 @@ function InputGroup(props) {
|
|
|
9
9
|
var _a, _b;
|
|
10
10
|
const classes = (0, classnames_1.default)('be-form-group', {
|
|
11
11
|
[`s-${props.dimensions}`]: !!props.dimensions,
|
|
12
|
+
'be-form-group--no-marg': props.noMargin,
|
|
12
13
|
});
|
|
13
14
|
let innerLayout;
|
|
14
15
|
const childrenArray = react_1.default.Children.toArray(props.children);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InputGroup.js","sourceRoot":"/","sources":["src/components/generic/InputGroup/InputGroup.tsx"],"names":[],"mappings":";;;;;AAAA,4DAAoC;AACpC,kDAAyC;
|
|
1
|
+
{"version":3,"file":"InputGroup.js","sourceRoot":"/","sources":["src/components/generic/InputGroup/InputGroup.tsx"],"names":[],"mappings":";;;;;AAAA,4DAAoC;AACpC,kDAAyC;AAWzC,SAAwB,UAAU,CAAC,KAAsB;;IACrD,MAAM,OAAO,GAAG,IAAA,oBAAU,EAAC,eAAe,EAAE;QACxC,CAAC,KAAK,KAAK,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU;QAC7C,wBAAwB,EAAE,KAAK,CAAC,QAAQ;KAC3C,CAAC,CAAC;IAEH,IAAI,WAAW,CAAC;IAEhB,MAAM,aAAa,GAAU,eAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACpE,QAAQ,KAAK,CAAC,UAAU,EAAE;QACtB,KAAK,KAAK,CAAC;QACX,KAAK,KAAK,CAAC;QACX,KAAK,KAAK;YACN,WAAW,GAAG,CACV;gBACK,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAG,CAAC,CAAC,KAAI,2CAAM,aAAa,CAAC,CAAC,CAAC,CAAO;gBACnD,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAG,CAAC,CAAC,KAAI,uCAAK,SAAS,EAAE,CAAA,MAAA,MAAA,aAAa,CAAC,CAAC,CAAC,0CAAE,IAAI,0CAAE,IAAI,MAAK,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAG,aAAa,CAAC,CAAC,CAAC,CAAO,CACnI,CACN,CAAC;YAEF,MAAM;QAEV,KAAK,OAAO,CAAC;QACb,KAAK,OAAO;YACR,WAAW,GAAG,CACV;gBACK,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAG,CAAC,CAAC,KAAI,2CAAM,aAAa,CAAC,CAAC,CAAC,CAAO;gBACnD,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAG,CAAC,CAAC,KAAI,2CAAM,aAAa,CAAC,CAAC,CAAC,CAAO;gBACnD,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAG,CAAC,CAAC,KAAI,2CAAM,aAAa,CAAC,CAAC,CAAC,CAAO,CACrD,CACN,CAAC;YAEF,MAAM;QACV,KAAK,GAAG,CAAC;QACT;YACI,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC;YAC7B,MAAM;KACb;IAED,OAAO,uCAAK,SAAS,EAAE,OAAO,IAAG,WAAW,CAAO,CAAC;AACxD,CAAC;AAxCD,6BAwCC","sourcesContent":["import classNames from 'classnames';\nimport React, { ReactNode } from 'react';\n\nimport { InputGroupDimensions } from '@/components/generic/InputGroup/InputGroup.types';\n\nexport interface InputGroupProps {\n children: ReactNode | ReactNode[];\n\n dimensions?: InputGroupDimensions;\n noMargin?: boolean;\n}\n\nexport default function InputGroup(props: InputGroupProps) {\n const classes = classNames('be-form-group', {\n [`s-${props.dimensions}`]: !!props.dimensions,\n 'be-form-group--no-marg': props.noMargin,\n });\n\n let innerLayout;\n\n const childrenArray: any[] = React.Children.toArray(props.children);\n switch (props.dimensions) {\n case '1/3':\n case '3/1':\n case '2/2':\n innerLayout = (\n <>\n {childrenArray?.[0] && <div>{childrenArray[0]}</div>}\n {childrenArray?.[1] && <div className={childrenArray[1]?.type?.name === InputGroup.name ? 'no-marg' : ''}>{childrenArray[1]}</div>}\n </>\n );\n\n break;\n\n case '1/2/2':\n case '1/1/1':\n innerLayout = (\n <>\n {childrenArray?.[0] && <div>{childrenArray[0]}</div>}\n {childrenArray?.[1] && <div>{childrenArray[1]}</div>}\n {childrenArray?.[2] && <div>{childrenArray[2]}</div>}\n </>\n );\n\n break;\n case '1':\n default:\n innerLayout = props.children;\n break;\n }\n\n return <div className={classes}>{innerLayout}</div>;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SignUpFormContent.js","sourceRoot":"/","sources":["src/components/generic/modal/SigninModal/FormContent/SignUpFormContent.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAAkC;AAClC,iDAAsD;AAEtD,6EAAqD;AACrD,+EAAuD;AACvD,kEAA2D;AAC3D,mEAAgE;AAChE,4DAAyD;AAOlD,MAAM,iBAAiB,GAA+B,CAAC,KAAK,EAAE,EAAE;IACnE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACxC,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAE/B,OAAO,CACH;QACI,8BAAC,uBAAU,IAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAI;QACvD,8BAAC,mBAAS,OAAG;
|
|
1
|
+
{"version":3,"file":"SignUpFormContent.js","sourceRoot":"/","sources":["src/components/generic/modal/SigninModal/FormContent/SignUpFormContent.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAAkC;AAClC,iDAAsD;AAEtD,6EAAqD;AACrD,+EAAuD;AACvD,kEAA2D;AAC3D,mEAAgE;AAChE,4DAAyD;AAOlD,MAAM,iBAAiB,GAA+B,CAAC,KAAK,EAAE,EAAE;IACnE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACxC,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAE/B,OAAO,CACH;QACI,8BAAC,uBAAU,IAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAI;QACvD,8BAAC,mBAAS,OAAG;QAEb,uCAAK,SAAS,EAAC,sBAAsB;YACjC,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,IAAI,UAC3B,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,CACjD,CACL;QACN,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK;YACtB,8BAAC,qBAAK,IAAC,OAAO,EAAE,yBAAW,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,8BAAC,kBAAQ,IAAC,GAAG,EAAE,CAAC,EAAE,MAAM,QAAC,IAAI,EAAC,OAAO,EAAC,OAAO,QAAC,OAAO,EAAE,aAAa,GAAI,CAAC,GAAI,CAC7I,CACR,CACN,CAAC;AACN,CAAC,CAAC;AAnBW,QAAA,iBAAiB,qBAmB5B","sourcesContent":["import React, { FC } from 'react';\nimport { Trans, useTranslation } from 'react-i18next';\n\nimport BEButton from '@/components/generic/BEButton';\nimport LineBreak from '@/components/generic/LineBreak';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { SignUpForm } from '@/components/User/Forms/SignUpForm';\nimport { Translation } from '@/translations/Translation';\n\ninterface SignUpFormContentProps {\n onSignInClick?: () => void;\n onDone?: () => void;\n}\n\nexport const SignUpFormContent: FC<SignUpFormContentProps> = (props) => {\n const { onSignInClick, onDone } = props;\n const { t } = useTranslation();\n\n return (\n <>\n <SignUpForm onSignIn={onSignInClick} onDone={onDone} />\n <LineBreak />\n\n <div className=\"u-marg-bottom--light\">\n <Text type={TextType.Label} bold>\n {t(Translation.Step.Confirmation.AlreadyHaveAccount)}\n </Text>\n </div>\n <Text type={TextType.Small}>\n <Trans i18nKey={Translation.Navigation.SignUp.SignIn} components={[<BEButton key={0} isText size=\"small\" primary onClick={onSignInClick} />]} />\n </Text>\n </>\n );\n};\n"]}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
const contexts_1 = require("../../../contexts/index.js");
|
|
30
|
+
const events_1 = require("../../../events/index.js");
|
|
31
|
+
const hooks_1 = require("../../../hooks/index.js");
|
|
32
|
+
const react_1 = __importStar(require("react"));
|
|
33
|
+
const react_i18next_1 = require("react-i18next");
|
|
34
|
+
const Translation_1 = require("translations/Translation");
|
|
35
|
+
const BEButton_1 = __importDefault(require("../../generic/BEButton"));
|
|
36
|
+
const Headline_1 = __importDefault(require("../../generic/Headline"));
|
|
37
|
+
const Icon_1 = __importStar(require("../../generic/Icon/Icon"));
|
|
38
|
+
const SimpleModal_1 = __importStar(require("../../generic/modal/SimpleModal"));
|
|
39
|
+
const Text_1 = __importStar(require("../../generic/Text"));
|
|
40
|
+
const ForgotPasswordForm_1 = require("../../User/Forms/ForgotPasswordForm");
|
|
41
|
+
const SignInForm_1 = require("../../User/Forms/SignInForm");
|
|
42
|
+
const SignUpForm_1 = require("../../User/Forms/SignUpForm");
|
|
43
|
+
const ImageProvider_1 = __importStar(require("../../../providers/ImageProvider"));
|
|
44
|
+
const Color_1 = require("../../../util/Color");
|
|
45
|
+
var EViewingScreen;
|
|
46
|
+
(function (EViewingScreen) {
|
|
47
|
+
EViewingScreen["SignUp"] = "SignUp";
|
|
48
|
+
EViewingScreen["SignIn"] = "SignIn";
|
|
49
|
+
EViewingScreen["ForgotPassword"] = "ForgotPassword";
|
|
50
|
+
})(EViewingScreen || (EViewingScreen = {}));
|
|
51
|
+
function MemberPortalSignInModal(props) {
|
|
52
|
+
var _a, _b, _c, _d;
|
|
53
|
+
const { t } = (0, react_i18next_1.useTranslation)();
|
|
54
|
+
const ccx = (0, react_1.useContext)(contexts_1.CompanyContext);
|
|
55
|
+
const { hotel } = (0, hooks_1.useCurrentHotel)();
|
|
56
|
+
const { cognitoLoginState, reset: cognitoReset } = (0, react_1.useContext)(contexts_1.AuthenticationContext);
|
|
57
|
+
const [viewingScreen, setViewingScreen] = (0, react_1.useState)(EViewingScreen.SignUp);
|
|
58
|
+
const memberImage = (0, react_1.useMemo)(() => {
|
|
59
|
+
if (props.image) {
|
|
60
|
+
return props.image;
|
|
61
|
+
}
|
|
62
|
+
if (hotel === null || hotel === void 0 ? void 0 : hotel.heroImage) {
|
|
63
|
+
return hotel === null || hotel === void 0 ? void 0 : hotel.heroImage;
|
|
64
|
+
}
|
|
65
|
+
}, [props.image, hotel === null || hotel === void 0 ? void 0 : hotel.heroImage]);
|
|
66
|
+
const { raise } = (0, hooks_1.useEvent)();
|
|
67
|
+
(0, react_1.useEffect)(() => {
|
|
68
|
+
if (props.isOpen) {
|
|
69
|
+
const event = new events_1.MemberOnlyModalViewEvent();
|
|
70
|
+
raise(event);
|
|
71
|
+
}
|
|
72
|
+
}, [props.isOpen, raise]);
|
|
73
|
+
(0, react_1.useEffect)(() => {
|
|
74
|
+
if (!props.isOpen)
|
|
75
|
+
return;
|
|
76
|
+
if (cognitoLoginState === contexts_1.CognitoLoginState.RequiresConfirmation) {
|
|
77
|
+
setViewingScreen(EViewingScreen.SignUp);
|
|
78
|
+
}
|
|
79
|
+
}, [props.isOpen, cognitoLoginState]);
|
|
80
|
+
const handleSignInClick = () => {
|
|
81
|
+
cognitoReset();
|
|
82
|
+
setViewingScreen(EViewingScreen.SignIn);
|
|
83
|
+
};
|
|
84
|
+
const handleBackToSignUp = () => {
|
|
85
|
+
cognitoReset();
|
|
86
|
+
setViewingScreen(EViewingScreen.SignUp);
|
|
87
|
+
};
|
|
88
|
+
const handleSignInSuccess = () => {
|
|
89
|
+
var _a;
|
|
90
|
+
(_a = props.onClose) === null || _a === void 0 ? void 0 : _a.call(props);
|
|
91
|
+
};
|
|
92
|
+
const handleSignUpSuccess = () => {
|
|
93
|
+
var _a;
|
|
94
|
+
(_a = props.onClose) === null || _a === void 0 ? void 0 : _a.call(props);
|
|
95
|
+
};
|
|
96
|
+
const handleForgotPasswordClick = () => {
|
|
97
|
+
cognitoReset();
|
|
98
|
+
setViewingScreen(EViewingScreen.ForgotPassword);
|
|
99
|
+
};
|
|
100
|
+
const handleBackToSignIn = () => {
|
|
101
|
+
cognitoReset();
|
|
102
|
+
setViewingScreen(EViewingScreen.SignIn);
|
|
103
|
+
};
|
|
104
|
+
const handlePasswordResetSuccess = () => {
|
|
105
|
+
var _a;
|
|
106
|
+
(_a = props.onClose) === null || _a === void 0 ? void 0 : _a.call(props);
|
|
107
|
+
};
|
|
108
|
+
const modalTitle = (_b = (_a = ccx === null || ccx === void 0 ? void 0 : ccx.memberOnlyModalPromotion) === null || _a === void 0 ? void 0 : _a.memberOnlyModalTitle) !== null && _b !== void 0 ? _b : t(Translation_1.Translation.MemberOnlyPopup.Headline, {
|
|
109
|
+
companyShort: ccx === null || ccx === void 0 ? void 0 : ccx.companyShort,
|
|
110
|
+
});
|
|
111
|
+
const modalSubtitle = (_d = (_c = ccx === null || ccx === void 0 ? void 0 : ccx.memberOnlyModalPromotion) === null || _c === void 0 ? void 0 : _c.memberOnlyModalSubtitle) !== null && _d !== void 0 ? _d : t(Translation_1.Translation.MemberOnlyPopup.Subtitle);
|
|
112
|
+
const modalPrimaryColor = (hotel === null || hotel === void 0 ? void 0 : hotel.memberOnlyModalUsePrimaryColor) ? Color_1.Color.Accent : Color_1.Color.Success;
|
|
113
|
+
return (react_1.default.createElement(SimpleModal_1.default, { open: props.isOpen, onClose: props.onClose, size: SimpleModal_1.SimpleModalSize.Large, alignCenter: true },
|
|
114
|
+
react_1.default.createElement("div", { className: "row" },
|
|
115
|
+
react_1.default.createElement("div", { className: "col-md-6 u-mh-none", style: {
|
|
116
|
+
background: 'url("' + (memberImage && ImageProvider_1.default.resizeImage(memberImage, ImageProvider_1.ImageSize.Original)) + '")',
|
|
117
|
+
backgroundRepeat: 'no-repeat',
|
|
118
|
+
backgroundPosition: 'center',
|
|
119
|
+
backgroundSize: 'cover',
|
|
120
|
+
} }),
|
|
121
|
+
react_1.default.createElement("div", { className: "col-md-6" },
|
|
122
|
+
react_1.default.createElement("div", { className: "u-pad u-pad-heavy" },
|
|
123
|
+
viewingScreen === EViewingScreen.SignUp && (react_1.default.createElement(react_1.default.Fragment, null,
|
|
124
|
+
react_1.default.createElement("div", { className: "u-marg-bottom-half" },
|
|
125
|
+
react_1.default.createElement(Icon_1.default, { icon: Icon_1.IconType.Money, size: "24px", color: modalPrimaryColor, useColorAsBackground: hotel === null || hotel === void 0 ? void 0 : hotel.memberOnlyModalUsePrimaryColor })),
|
|
126
|
+
react_1.default.createElement("div", { className: "u-marg-bottom-half" },
|
|
127
|
+
react_1.default.createElement(Headline_1.default, { bold: true, color: modalPrimaryColor },
|
|
128
|
+
react_1.default.createElement("div", { style: { color: modalPrimaryColor }, dangerouslySetInnerHTML: {
|
|
129
|
+
__html: modalTitle,
|
|
130
|
+
} }))),
|
|
131
|
+
react_1.default.createElement("div", { className: "u-marg-bottom" },
|
|
132
|
+
react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, color: Color_1.Color.DarkGrey },
|
|
133
|
+
react_1.default.createElement("span", { dangerouslySetInnerHTML: { __html: modalSubtitle } }))),
|
|
134
|
+
react_1.default.createElement(SignUpForm_1.SignUpForm, { onSignIn: handleSignInClick, onDone: handleSignUpSuccess, hideTitle: true, reduceMargins: true }),
|
|
135
|
+
react_1.default.createElement("div", { className: "u-marg-top--light" },
|
|
136
|
+
react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Label, color: Color_1.Color.DarkGrey }, t(Translation_1.Translation.Step.Confirmation.AlreadyHaveAccount)),
|
|
137
|
+
' ',
|
|
138
|
+
react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Label, color: Color_1.Color.DarkGrey },
|
|
139
|
+
react_1.default.createElement(BEButton_1.default, { isText: true, size: "tiny", textColor: modalPrimaryColor, onClick: handleSignInClick }, t(Translation_1.Translation.Navigation.SignIn.SignIn)))))),
|
|
140
|
+
viewingScreen === EViewingScreen.SignIn && (react_1.default.createElement(react_1.default.Fragment, null,
|
|
141
|
+
react_1.default.createElement("div", { className: "u-marg-bottom" },
|
|
142
|
+
react_1.default.createElement(BEButton_1.default, { isText: true, size: "small", icon: Icon_1.IconType.ArrowLeft, iconPosition: "left", onClick: handleBackToSignUp }, "Back to sign up")),
|
|
143
|
+
react_1.default.createElement(SignInForm_1.SignInForm, { onSignedIn: handleSignInSuccess, onForgotPassword: handleForgotPasswordClick, onNotVerified: handleBackToSignUp }))),
|
|
144
|
+
viewingScreen === EViewingScreen.ForgotPassword && (react_1.default.createElement(react_1.default.Fragment, null,
|
|
145
|
+
react_1.default.createElement("div", { className: "u-marg-bottom" },
|
|
146
|
+
react_1.default.createElement(BEButton_1.default, { isText: true, size: "small", icon: Icon_1.IconType.ArrowLeft, iconPosition: "left", onClick: handleBackToSignIn }, "Back to sign in")),
|
|
147
|
+
react_1.default.createElement(ForgotPasswordForm_1.ForgotPasswordForm, { onPasswordReset: handlePasswordResetSuccess, onCancelled: handleBackToSignIn, onDone: handlePasswordResetSuccess }))))))));
|
|
148
|
+
}
|
|
149
|
+
exports.default = MemberPortalSignInModal;
|
|
150
|
+
//# sourceMappingURL=MemberPortalSignInModal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MemberPortalSignInModal.js","sourceRoot":"/","sources":["src/components/members/SignInModal/MemberPortalSignInModal.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAA8F;AAC9F,6CAA4D;AAC5D,2CAA4D;AAC5D,+CAAwE;AACxE,iDAA+C;AAC/C,0DAAuD;AAEvD,6EAAqD;AACrD,6EAAqD;AACrD,uEAAgE;AAChE,sFAAsF;AACtF,kEAA2D;AAC3D,mFAAgF;AAChF,mEAAgE;AAChE,mEAAgE;AAChE,2EAAqE;AACrE,wCAAqC;AASrC,IAAK,cAIJ;AAJD,WAAK,cAAc;IACf,mCAAiB,CAAA;IACjB,mCAAiB,CAAA;IACjB,mDAAiC,CAAA;AACrC,CAAC,EAJI,cAAc,KAAd,cAAc,QAIlB;AAED,SAAwB,uBAAuB,CAAC,KAAmC;;IAC/E,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAC/B,MAAM,GAAG,GAAG,IAAA,kBAAU,EAAC,yBAAc,CAAC,CAAC;IACvC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,uBAAe,GAAE,CAAC;IACpC,MAAM,EAAE,iBAAiB,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,IAAA,kBAAU,EAAC,gCAAqB,CAAC,CAAC;IACrF,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,IAAA,gBAAQ,EAAiB,cAAc,CAAC,MAAM,CAAC,CAAC;IAE1F,MAAM,WAAW,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE;QAC7B,IAAI,KAAK,CAAC,KAAK,EAAE;YACb,OAAO,KAAK,CAAC,KAAK,CAAC;SACtB;QAED,IAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,SAAS,EAAE;YAClB,OAAO,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,SAAS,CAAC;SAC3B;IACL,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,SAAS,CAAC,CAAC,CAAC;IAEpC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,gBAAQ,GAAE,CAAC;IAE7B,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,IAAI,KAAK,CAAC,MAAM,EAAE;YACd,MAAM,KAAK,GAAG,IAAI,iCAAwB,EAAE,CAAC;YAC7C,KAAK,CAAC,KAAK,CAAC,CAAC;SAChB;IACL,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IAE1B,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,OAAO;QAE1B,IAAI,iBAAiB,KAAK,4BAAiB,CAAC,oBAAoB,EAAE;YAC9D,gBAAgB,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;SAC3C;IACL,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAEtC,MAAM,iBAAiB,GAAG,GAAG,EAAE;QAC3B,YAAY,EAAE,CAAC;QACf,gBAAgB,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC,CAAC;IAEF,MAAM,kBAAkB,GAAG,GAAG,EAAE;QAC5B,YAAY,EAAE,CAAC;QACf,gBAAgB,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC,CAAC;IAEF,MAAM,mBAAmB,GAAG,GAAG,EAAE;;QAC7B,MAAA,KAAK,CAAC,OAAO,qDAAI,CAAC;IACtB,CAAC,CAAC;IAEF,MAAM,mBAAmB,GAAG,GAAG,EAAE;;QAC7B,MAAA,KAAK,CAAC,OAAO,qDAAI,CAAC;IACtB,CAAC,CAAC;IAEF,MAAM,yBAAyB,GAAG,GAAG,EAAE;QACnC,YAAY,EAAE,CAAC;QACf,gBAAgB,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;IACpD,CAAC,CAAC;IAEF,MAAM,kBAAkB,GAAG,GAAG,EAAE;QAC5B,YAAY,EAAE,CAAC;QACf,gBAAgB,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC,CAAC;IAEF,MAAM,0BAA0B,GAAG,GAAG,EAAE;;QACpC,MAAA,KAAK,CAAC,OAAO,qDAAI,CAAC;IACtB,CAAC,CAAC;IAEF,MAAM,UAAU,GACZ,MAAA,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,wBAAwB,0CAAE,oBAAoB,mCACnD,CAAC,CAAC,yBAAW,CAAC,eAAe,CAAC,QAAQ,EAAE;QACpC,YAAY,EAAE,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,YAAY;KAClC,CAAC,CAAC;IAEP,MAAM,aAAa,GAAG,MAAA,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,wBAAwB,0CAAE,uBAAuB,mCAAI,CAAC,CAAC,yBAAW,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;IACxH,MAAM,iBAAiB,GAAG,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,8BAA8B,EAAC,CAAC,CAAC,aAAK,CAAC,MAAM,CAAC,CAAC,CAAC,aAAK,CAAC,OAAO,CAAC;IAE/F,OAAO,CACH,8BAAC,qBAAW,IAAC,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,6BAAe,CAAC,KAAK,EAAE,WAAW;QAC7F,uCAAK,SAAS,EAAC,KAAK;YAChB,uCACI,SAAS,EAAC,oBAAoB,EAC9B,KAAK,EAAE;oBACH,UAAU,EAAE,OAAO,GAAG,CAAC,WAAW,IAAI,uBAAa,CAAC,WAAW,CAAC,WAAW,EAAE,yBAAS,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI;oBACxG,gBAAgB,EAAE,WAAW;oBAC7B,kBAAkB,EAAE,QAAQ;oBAC5B,cAAc,EAAE,OAAO;iBAC1B,GACH;YACF,uCAAK,SAAS,EAAC,UAAU;gBACrB,uCAAK,SAAS,EAAC,mBAAmB;oBAC7B,aAAa,KAAK,cAAc,CAAC,MAAM,IAAI,CACxC;wBACI,uCAAK,SAAS,EAAC,oBAAoB;4BAC/B,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,IAAI,EAAC,MAAM,EAAC,KAAK,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,8BAA8B,GAAI,CAC/H;wBAEN,uCAAK,SAAS,EAAC,oBAAoB;4BAC/B,8BAAC,kBAAQ,IAAC,IAAI,QAAC,KAAK,EAAE,iBAAiB;gCACnC,uCACI,KAAK,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,EACnC,uBAAuB,EAAE;wCACrB,MAAM,EAAE,UAAoB;qCAC/B,GACE,CACA,CACT;wBAEN,uCAAK,SAAS,EAAC,eAAe;4BAC1B,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,aAAK,CAAC,QAAQ;gCAC7C,wCAAM,uBAAuB,EAAE,EAAE,MAAM,EAAE,aAAuB,EAAE,GAAS,CACxE,CACL;wBAEN,8BAAC,uBAAU,IAAC,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,mBAAmB,EAAE,SAAS,QAAC,aAAa,SAAG;wBAEhG,uCAAK,SAAS,EAAC,mBAAmB;4BAC9B,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,aAAK,CAAC,QAAQ,IAC5C,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,CACjD;4BAAC,GAAG;4BACX,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,aAAK,CAAC,QAAQ;gCAC7C,8BAAC,kBAAQ,IAAC,MAAM,QAAC,IAAI,EAAC,MAAM,EAAC,SAAS,EAAE,iBAAiB,EAAE,OAAO,EAAE,iBAAiB,IAChF,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CACjC,CACR,CACL,CACP,CACN;oBAEA,aAAa,KAAK,cAAc,CAAC,MAAM,IAAI,CACxC;wBACI,uCAAK,SAAS,EAAC,eAAe;4BAC1B,8BAAC,kBAAQ,IAAC,MAAM,QAAC,IAAI,EAAC,OAAO,EAAC,IAAI,EAAE,eAAQ,CAAC,SAAS,EAAE,YAAY,EAAC,MAAM,EAAC,OAAO,EAAE,kBAAkB,sBAE5F,CACT;wBACN,8BAAC,uBAAU,IAAC,UAAU,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,aAAa,EAAE,kBAAkB,GAAI,CAChI,CACN;oBAEA,aAAa,KAAK,cAAc,CAAC,cAAc,IAAI,CAChD;wBACI,uCAAK,SAAS,EAAC,eAAe;4BAC1B,8BAAC,kBAAQ,IAAC,MAAM,QAAC,IAAI,EAAC,OAAO,EAAC,IAAI,EAAE,eAAQ,CAAC,SAAS,EAAE,YAAY,EAAC,MAAM,EAAC,OAAO,EAAE,kBAAkB,sBAE5F,CACT;wBACN,8BAAC,uCAAkB,IAAC,eAAe,EAAE,0BAA0B,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,EAAE,0BAA0B,GAAI,CACzI,CACN,CACC,CACJ,CACJ,CACI,CACjB,CAAC;AACN,CAAC;AAzJD,0CAyJC","sourcesContent":["import { AuthenticationContext, CognitoLoginState, CompanyContext } from '@frontend/contexts';\nimport { MemberOnlyModalViewEvent } from '@frontend/events';\nimport { useCurrentHotel, useEvent } from '@frontend/hooks';\nimport React, { useContext, useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport BEButton from '@/components/generic/BEButton';\nimport Headline from '@/components/generic/Headline';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport SimpleModal, { SimpleModalSize } from '@/components/generic/modal/SimpleModal';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { ForgotPasswordForm } from '@/components/User/Forms/ForgotPasswordForm';\nimport { SignInForm } from '@/components/User/Forms/SignInForm';\nimport { SignUpForm } from '@/components/User/Forms/SignUpForm';\nimport ImageProvider, { ImageSize } from '@/providers/ImageProvider';\nimport { Color } from '@/util/Color';\n\ninterface MemberPortalSignInModalProps {\n onClose?: () => void;\n isOpen?: boolean;\n image?: string;\n imageSize?: string;\n}\n\nenum EViewingScreen {\n SignUp = 'SignUp',\n SignIn = 'SignIn',\n ForgotPassword = 'ForgotPassword',\n}\n\nexport default function MemberPortalSignInModal(props: MemberPortalSignInModalProps) {\n const { t } = useTranslation();\n const ccx = useContext(CompanyContext);\n const { hotel } = useCurrentHotel();\n const { cognitoLoginState, reset: cognitoReset } = useContext(AuthenticationContext);\n const [viewingScreen, setViewingScreen] = useState<EViewingScreen>(EViewingScreen.SignUp);\n\n const memberImage = useMemo(() => {\n if (props.image) {\n return props.image;\n }\n\n if (hotel?.heroImage) {\n return hotel?.heroImage;\n }\n }, [props.image, hotel?.heroImage]);\n\n const { raise } = useEvent();\n\n useEffect(() => {\n if (props.isOpen) {\n const event = new MemberOnlyModalViewEvent();\n raise(event);\n }\n }, [props.isOpen, raise]);\n\n useEffect(() => {\n if (!props.isOpen) return;\n\n if (cognitoLoginState === CognitoLoginState.RequiresConfirmation) {\n setViewingScreen(EViewingScreen.SignUp);\n }\n }, [props.isOpen, cognitoLoginState]);\n\n const handleSignInClick = () => {\n cognitoReset();\n setViewingScreen(EViewingScreen.SignIn);\n };\n\n const handleBackToSignUp = () => {\n cognitoReset();\n setViewingScreen(EViewingScreen.SignUp);\n };\n\n const handleSignInSuccess = () => {\n props.onClose?.();\n };\n\n const handleSignUpSuccess = () => {\n props.onClose?.();\n };\n\n const handleForgotPasswordClick = () => {\n cognitoReset();\n setViewingScreen(EViewingScreen.ForgotPassword);\n };\n\n const handleBackToSignIn = () => {\n cognitoReset();\n setViewingScreen(EViewingScreen.SignIn);\n };\n\n const handlePasswordResetSuccess = () => {\n props.onClose?.();\n };\n\n const modalTitle =\n ccx?.memberOnlyModalPromotion?.memberOnlyModalTitle ??\n t(Translation.MemberOnlyPopup.Headline, {\n companyShort: ccx?.companyShort,\n });\n\n const modalSubtitle = ccx?.memberOnlyModalPromotion?.memberOnlyModalSubtitle ?? t(Translation.MemberOnlyPopup.Subtitle);\n const modalPrimaryColor = hotel?.memberOnlyModalUsePrimaryColor ? Color.Accent : Color.Success;\n\n return (\n <SimpleModal open={props.isOpen} onClose={props.onClose} size={SimpleModalSize.Large} alignCenter>\n <div className=\"row\">\n <div\n className=\"col-md-6 u-mh-none\"\n style={{\n background: 'url(\"' + (memberImage && ImageProvider.resizeImage(memberImage, ImageSize.Original)) + '\")',\n backgroundRepeat: 'no-repeat',\n backgroundPosition: 'center',\n backgroundSize: 'cover',\n }}\n />\n <div className=\"col-md-6\">\n <div className=\"u-pad u-pad-heavy\">\n {viewingScreen === EViewingScreen.SignUp && (\n <>\n <div className=\"u-marg-bottom-half\">\n <Icon icon={IconType.Money} size=\"24px\" color={modalPrimaryColor} useColorAsBackground={hotel?.memberOnlyModalUsePrimaryColor} />\n </div>\n\n <div className=\"u-marg-bottom-half\">\n <Headline bold color={modalPrimaryColor}>\n <div\n style={{ color: modalPrimaryColor }}\n dangerouslySetInnerHTML={{\n __html: modalTitle as string,\n }}\n ></div>\n </Headline>\n </div>\n\n <div className=\"u-marg-bottom\">\n <Text type={TextType.Small} color={Color.DarkGrey}>\n <span dangerouslySetInnerHTML={{ __html: modalSubtitle as string }}></span>\n </Text>\n </div>\n\n <SignUpForm onSignIn={handleSignInClick} onDone={handleSignUpSuccess} hideTitle reduceMargins />\n\n <div className=\"u-marg-top--light\">\n <Text type={TextType.Label} color={Color.DarkGrey}>\n {t(Translation.Step.Confirmation.AlreadyHaveAccount)}\n </Text>{' '}\n <Text type={TextType.Label} color={Color.DarkGrey}>\n <BEButton isText size=\"tiny\" textColor={modalPrimaryColor} onClick={handleSignInClick}>\n {t(Translation.Navigation.SignIn.SignIn)}\n </BEButton>\n </Text>\n </div>\n </>\n )}\n\n {viewingScreen === EViewingScreen.SignIn && (\n <>\n <div className=\"u-marg-bottom\">\n <BEButton isText size=\"small\" icon={IconType.ArrowLeft} iconPosition=\"left\" onClick={handleBackToSignUp}>\n Back to sign up\n </BEButton>\n </div>\n <SignInForm onSignedIn={handleSignInSuccess} onForgotPassword={handleForgotPasswordClick} onNotVerified={handleBackToSignUp} />\n </>\n )}\n\n {viewingScreen === EViewingScreen.ForgotPassword && (\n <>\n <div className=\"u-marg-bottom\">\n <BEButton isText size=\"small\" icon={IconType.ArrowLeft} iconPosition=\"left\" onClick={handleBackToSignIn}>\n Back to sign in\n </BEButton>\n </div>\n <ForgotPasswordForm onPasswordReset={handlePasswordResetSuccess} onCancelled={handleBackToSignIn} onDone={handlePasswordResetSuccess} />\n </>\n )}\n </div>\n </div>\n </div>\n </SimpleModal>\n );\n}\n"]}
|
|
@@ -32,7 +32,6 @@ const hooks_1 = require("../../../hooks/index.js");
|
|
|
32
32
|
const core_1 = require("@roomstay/core");
|
|
33
33
|
const react_1 = __importStar(require("react"));
|
|
34
34
|
const react_i18next_1 = require("react-i18next");
|
|
35
|
-
const UnauthenticatedUserModal_1 = require("../../generic/modal/SigninModal/UnauthenticatedUserModal");
|
|
36
35
|
const useSignedInMember_1 = require("../../../hooks/useSignedInMember");
|
|
37
36
|
const MemberPortalFeature_1 = __importDefault(require("../../../providers/feature/MemberPortalFeature"));
|
|
38
37
|
const RoomstayThemeEngine_1 = __importDefault(require("../../../providers/RoomstayThemeEngine"));
|
|
@@ -41,6 +40,7 @@ const EmailAndFullnameMemberModal_1 = __importDefault(require("./EmailAndFullnam
|
|
|
41
40
|
const EmailPasswordMemberModal_1 = __importDefault(require("./EmailPasswordMemberModal"));
|
|
42
41
|
const FamilyNameMemberModal_1 = __importDefault(require("./FamilyNameMemberModal"));
|
|
43
42
|
const InternalMemberSignInModal_1 = __importDefault(require("./InternalMemberSignInModal"));
|
|
43
|
+
const MemberPortalSignInModal_1 = __importDefault(require("./MemberPortalSignInModal"));
|
|
44
44
|
const MemberSignInModal = () => {
|
|
45
45
|
const { externalMemberType, isExternalMemberHotel } = (0, useSignedInMember_1.useSignedInMember)();
|
|
46
46
|
const { isSigningIn, closeMemberSignupModal, memberOnlyModalPromotion } = (0, react_1.useContext)(contexts_1.CompanyContext);
|
|
@@ -85,7 +85,7 @@ const MemberSignInModal = () => {
|
|
|
85
85
|
if (MemberPortalFeature_1.default.shouldUseMemberPortalForMemberPricing()) {
|
|
86
86
|
// Users will need to create a full member portal account (with password and email verification) to
|
|
87
87
|
// access member pricing.
|
|
88
|
-
return react_1.default.createElement(
|
|
88
|
+
return react_1.default.createElement(MemberPortalSignInModal_1.default, { image: memberLogo, imageSize: imageSize !== null && imageSize !== void 0 ? imageSize : 'none', isOpen: isSigningIn, onClose: closeMemberSignupModal });
|
|
89
89
|
}
|
|
90
90
|
else {
|
|
91
91
|
// Because Member Portal is enabled, the internal member signin modal will show the option to sign
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemberSignInModal.js","sourceRoot":"/","sources":["src/components/members/SignInModal/MemberSignInModal.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAoD;AACpD,2CAAkD;AAClD,yCAA8C;AAC9C,+CAAmD;AACnD,iDAA+C;AAE/C,
|
|
1
|
+
{"version":3,"file":"MemberSignInModal.js","sourceRoot":"/","sources":["src/components/members/SignInModal/MemberSignInModal.tsx"],"names":[],"mappings":"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","sourcesContent":["import { CompanyContext } from '@frontend/contexts';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport { EIntegration } from '@roomstay/core';\nimport React, { useContext, useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport { useSignedInMember } from '@/hooks/useSignedInMember';\nimport MemberPortalFeature from '@/providers/feature/MemberPortalFeature';\nimport RoomstayThemeEngine from '@/providers/RoomstayThemeEngine';\nimport { Translation } from '@/translations/Translation';\n\nimport EmailAndFullnameMemberModal from './EmailAndFullnameMemberModal';\nimport EmailPasswordMemberModal from './EmailPasswordMemberModal';\nimport FamilyNameMemberModal from './FamilyNameMemberModal';\nimport InternalMemberSignInModal from './InternalMemberSignInModal';\nimport MemberPortalSignInModal from './MemberPortalSignInModal';\n\nexport const MemberSignInModal = () => {\n const { externalMemberType, isExternalMemberHotel } = useSignedInMember();\n const { isSigningIn, closeMemberSignupModal, memberOnlyModalPromotion } = useContext(CompanyContext);\n const { t } = useTranslation();\n const { hotel } = useCurrentHotel();\n\n const memberLogo = useMemo(() => {\n // Preference promotion first\n if (memberOnlyModalPromotion?.memberOnlyModalImage) {\n return memberOnlyModalPromotion.memberOnlyModalImage;\n }\n\n if (hotel?.memberOnlyModalImage) {\n return hotel.memberOnlyModalImage;\n }\n }, [hotel?.memberOnlyModalImage, memberOnlyModalPromotion?.memberOnlyModalImage]);\n\n const imageSize = useMemo(() => {\n // Preference promotion first\n if (memberOnlyModalPromotion?.memberOnlyModalImageSize) {\n return memberOnlyModalPromotion.memberOnlyModalImageSize;\n }\n\n if (hotel?.memberOnlyModalImageSize) {\n return hotel.memberOnlyModalImageSize;\n }\n }, [hotel?.memberOnlyModalImageSize, memberOnlyModalPromotion?.memberOnlyModalImageSize]);\n\n if (isExternalMemberHotel) {\n switch (externalMemberType) {\n case EIntegration.Big4:\n return (\n <FamilyNameMemberModal\n title={t(Translation.ExternalMemberPopup.Big4Title)}\n image={memberLogo ?? RoomstayThemeEngine.getImageAssetUrl('big4-login.svg')}\n isOpen={isSigningIn}\n imageSize={imageSize ?? 'none'}\n />\n );\n case EIntegration.RmsTop10:\n return (\n <FamilyNameMemberModal\n title={t(Translation.ExternalMemberPopup.Top10Title)}\n image={memberLogo ?? RoomstayThemeEngine.getImageAssetUrl('top10-login.svg')}\n isOpen={isSigningIn}\n imageSize={imageSize ?? 'none'}\n />\n );\n case EIntegration.Top10:\n return (\n <EmailPasswordMemberModal\n title={t(Translation.ExternalMemberPopup.Top10Title)}\n image={memberLogo ?? RoomstayThemeEngine.getImageAssetUrl('top10-login.svg')}\n isOpen={isSigningIn}\n imageSize={imageSize ?? 'none'}\n />\n );\n case EIntegration.Gday:\n return (\n <FamilyNameMemberModal\n title={t(Translation.ExternalMemberPopup.GDayTitle)}\n image={memberLogo ?? RoomstayThemeEngine.getImageAssetUrl('gday-login.svg')}\n isOpen={isSigningIn}\n imageSize={imageSize ?? 'none'}\n />\n );\n case EIntegration.Salesforce:\n return (\n <EmailAndFullnameMemberModal\n title={t(Translation.ExternalMemberPopup.SalesforceTitle)}\n image={memberLogo ?? RoomstayThemeEngine.getImageAssetUrl('salesforce-login.png')}\n isOpen={isSigningIn}\n imageSize={imageSize ?? 'cover'}\n />\n );\n default:\n return null;\n }\n } else {\n if (MemberPortalFeature.isActive()) {\n if (MemberPortalFeature.shouldUseMemberPortalForMemberPricing()) {\n // Users will need to create a full member portal account (with password and email verification) to\n // access member pricing.\n return <MemberPortalSignInModal image={memberLogo} imageSize={imageSize ?? 'none'} isOpen={isSigningIn} onClose={closeMemberSignupModal} />;\n } else {\n // Because Member Portal is enabled, the internal member signin modal will show the option to sign\n // in with an exististing account. But they won't be forced to set a password and verify their email\n // to access the member prices.\n return <InternalMemberSignInModal image={memberLogo} isOpen={isSigningIn} onClose={closeMemberSignupModal} />;\n }\n } else {\n return <InternalMemberSignInModal image={memberLogo} isOpen={isSigningIn} onClose={closeMemberSignupModal} />;\n }\n }\n};\n"]}
|