@roomstay/frontend 2.6.19 → 2.6.21

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 (162) hide show
  1. package/dist/166.bundle.js +1 -1
  2. package/dist/279.bundle.js +1 -1
  3. package/dist/370.bundle.js +1 -1
  4. package/dist/449.bundle.js +1 -1
  5. package/dist/586.bundle.js +1 -0
  6. package/dist/736.bundle.js +1 -1
  7. package/dist/873.bundle.js +1 -1
  8. package/dist/903.bundle.js +1 -1
  9. package/dist/927.bundle.js +1 -0
  10. package/dist/972.bundle.js +1 -1
  11. package/dist/978.bundle.js +1 -0
  12. package/dist/e2e/data/checkoutTestData.d.ts +16 -0
  13. package/dist/e2e/data/checkoutTestData.js +32 -0
  14. package/dist/e2e/data/checkoutTestData.js.map +1 -0
  15. package/dist/e2e/goBackAndCheckoutAgain.spec.d.ts +1 -0
  16. package/dist/e2e/goBackAndCheckoutAgain.spec.js +72 -0
  17. package/dist/e2e/goBackAndCheckoutAgain.spec.js.map +1 -0
  18. package/dist/e2e/helpers/checkoutHelpers.d.ts +7 -0
  19. package/dist/e2e/helpers/checkoutHelpers.js +164 -0
  20. package/dist/e2e/helpers/checkoutHelpers.js.map +1 -0
  21. package/dist/e2e/price.spec.d.ts +1 -0
  22. package/dist/e2e/price.spec.js +154 -0
  23. package/dist/e2e/price.spec.js.map +1 -0
  24. package/dist/main.bundle.js +1 -1
  25. package/dist/src/api/MemberAPI.d.ts +2 -3
  26. package/dist/src/api/MemberAPI.js +2 -6
  27. package/dist/src/api/MemberAPI.js.map +1 -1
  28. package/dist/src/components/User/Forms/ForgotPasswordForm.js +6 -2
  29. package/dist/src/components/User/Forms/ForgotPasswordForm.js.map +1 -1
  30. package/dist/src/components/generic/InputGroup/InputGroup.js +6 -0
  31. package/dist/src/components/generic/InputGroup/InputGroup.js.map +1 -1
  32. package/dist/src/components/generic/InputGroup/InputGroup.types.d.ts +1 -1
  33. package/dist/src/components/generic/InputGroup/InputGroup.types.js.map +1 -1
  34. package/dist/src/components/generic/Select/InputSelect.js +1 -1
  35. package/dist/src/components/generic/Select/InputSelect.js.map +1 -1
  36. package/dist/src/components/members/EditMyProfile.js +3 -3
  37. package/dist/src/components/members/EditMyProfile.js.map +1 -1
  38. package/dist/src/components/steps/addons/AddonList.js +2 -2
  39. package/dist/src/components/steps/addons/AddonList.js.map +1 -1
  40. package/dist/src/components/steps/addons/AddonsNotFoundBlock.d.ts +2 -0
  41. package/dist/src/components/steps/addons/{AddonsNotFound.js → AddonsNotFoundBlock.js} +9 -3
  42. package/dist/src/components/steps/addons/AddonsNotFoundBlock.js.map +1 -0
  43. package/dist/src/components/steps/confirmation/RoomContactDetails.js +74 -34
  44. package/dist/src/components/steps/confirmation/RoomContactDetails.js.map +1 -1
  45. package/dist/src/components/steps/confirmation/StepConfirmationAcknowledgement.js +3 -1
  46. package/dist/src/components/steps/confirmation/StepConfirmationAcknowledgement.js.map +1 -1
  47. package/dist/src/components/steps/confirmation/StepConfirmationForm.js +1 -1
  48. package/dist/src/components/steps/confirmation/StepConfirmationForm.js.map +1 -1
  49. package/dist/src/components/steps/room/MemberSignInModal/EmailAndFullnameMemberModal.d.ts +4 -0
  50. package/dist/src/components/steps/room/MemberSignInModal/EmailAndFullnameMemberModal.js +37 -0
  51. package/dist/src/components/steps/room/MemberSignInModal/EmailAndFullnameMemberModal.js.map +1 -0
  52. package/dist/src/components/steps/room/MemberSignInModal/ExternalMemberModal.d.ts +16 -5
  53. package/dist/src/components/steps/room/MemberSignInModal/ExternalMemberModal.js +51 -54
  54. package/dist/src/components/steps/room/MemberSignInModal/ExternalMemberModal.js.map +1 -1
  55. package/dist/src/components/steps/room/MemberSignInModal/FamilyNameMemberModal.d.ts +8 -0
  56. package/dist/src/components/steps/room/MemberSignInModal/FamilyNameMemberModal.js +27 -0
  57. package/dist/src/components/steps/room/MemberSignInModal/FamilyNameMemberModal.js.map +1 -0
  58. package/dist/src/components/steps/room/MemberSignInModal/InternalMemberSignInModal.d.ts +6 -0
  59. package/dist/src/components/steps/room/MemberSignInModal/InternalMemberSignInModal.js +318 -0
  60. package/dist/src/components/steps/room/MemberSignInModal/InternalMemberSignInModal.js.map +1 -0
  61. package/dist/src/components/steps/room/MemberSignInModal/{MemberSignInModal.types.d.ts → InternalMemberSignInModal.types.d.ts} +1 -1
  62. package/dist/src/components/steps/room/MemberSignInModal/{MemberSignInModal.types.js → InternalMemberSignInModal.types.js} +1 -1
  63. package/dist/src/components/steps/room/MemberSignInModal/InternalMemberSignInModal.types.js.map +1 -0
  64. package/dist/src/components/steps/room/MemberSignInModal/MemberSignInModal.d.ts +1 -6
  65. package/dist/src/components/steps/room/MemberSignInModal/MemberSignInModal.js +28 -284
  66. package/dist/src/components/steps/room/MemberSignInModal/MemberSignInModal.js.map +1 -1
  67. package/dist/src/components/steps/room/StepRoomBestRateAlert.js +22 -3
  68. package/dist/src/components/steps/room/StepRoomBestRateAlert.js.map +1 -1
  69. package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRoomList.js.map +1 -1
  70. package/dist/src/contexts/BasketContext/BasketContextWrapper.js +9 -6
  71. package/dist/src/contexts/BasketContext/BasketContextWrapper.js.map +1 -1
  72. package/dist/src/contexts/CompanyContext/CompanyContextType.type.d.ts +9 -3
  73. package/dist/src/contexts/CompanyContext/CompanyContextType.type.js.map +1 -1
  74. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js +51 -44
  75. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js.map +1 -1
  76. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js +5 -3
  77. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js.map +1 -1
  78. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContext.d.ts +8 -1
  79. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContext.js +2 -0
  80. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContext.js.map +1 -1
  81. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContextProvider.js +16 -4
  82. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContextProvider.js.map +1 -1
  83. package/dist/src/contexts/Members/RoomstayMemberContext/RoomstayMemberContextProvider.js +2 -12
  84. package/dist/src/contexts/Members/RoomstayMemberContext/RoomstayMemberContextProvider.js.map +1 -1
  85. package/dist/src/events/{views → actions}/PlacedBookingEvent.d.ts +3 -1
  86. package/dist/src/events/{views → actions}/PlacedBookingEvent.js +2 -1
  87. package/dist/src/events/actions/PlacedBookingEvent.js.map +1 -0
  88. package/dist/src/events/views/StepThanksViewEvent.d.ts +3 -1
  89. package/dist/src/events/views/StepThanksViewEvent.js +3 -1
  90. package/dist/src/events/views/StepThanksViewEvent.js.map +1 -1
  91. package/dist/src/hooks/useExternalMember.d.ts +1 -1
  92. package/dist/src/hooks/useNextStepAction.js +1 -1
  93. package/dist/src/hooks/useNextStepAction.js.map +1 -1
  94. package/dist/src/index.d.ts +3 -0
  95. package/dist/src/index.js +9 -2
  96. package/dist/src/index.js.map +1 -1
  97. package/dist/src/models/Api/HotelDTO.d.ts +3 -7
  98. package/dist/src/models/Api/HotelDTO.js +1 -7
  99. package/dist/src/models/Api/HotelDTO.js.map +1 -1
  100. package/dist/src/models/BasketRow.d.ts +3 -3
  101. package/dist/src/models/BasketRow.js +0 -3
  102. package/dist/src/models/BasketRow.js.map +1 -1
  103. package/dist/src/models/Client/Hotel/Hotel.d.ts +5 -4
  104. package/dist/src/models/Client/Hotel/Hotel.js.map +1 -1
  105. package/dist/src/models/Confirmation.d.ts +3 -0
  106. package/dist/src/models/Confirmation.js +2 -0
  107. package/dist/src/models/Confirmation.js.map +1 -1
  108. package/dist/src/models/Room/Room.d.ts +2 -2
  109. package/dist/src/models/Room/Room.js.map +1 -1
  110. package/dist/src/models/RoomstaySession.d.ts +5 -0
  111. package/dist/src/models/RoomstaySession.js.map +1 -1
  112. package/dist/src/pages/account/AccountRouter.js +2 -0
  113. package/dist/src/pages/account/AccountRouter.js.map +1 -1
  114. package/dist/src/pages/account/AccountRoutes.d.ts +3 -0
  115. package/dist/src/pages/account/AccountRoutes.js +3 -0
  116. package/dist/src/pages/account/AccountRoutes.js.map +1 -1
  117. package/dist/src/pages/account/ChangePassword/AccountChangePasswordPage.d.ts +1 -0
  118. package/dist/src/pages/account/ChangePassword/AccountChangePasswordPage.js +143 -0
  119. package/dist/src/pages/account/ChangePassword/AccountChangePasswordPage.js.map +1 -0
  120. package/dist/src/pages/account/Details/AccountDetailsProfilePage.js +11 -16
  121. package/dist/src/pages/account/Details/AccountDetailsProfilePage.js.map +1 -1
  122. package/dist/src/pages/steps/StepDate/StepDateComponent.js +7 -0
  123. package/dist/src/pages/steps/StepDate/StepDateComponent.js.map +1 -1
  124. package/dist/src/pages/steps/StepThanks/StepThanksComponent.js +1 -1
  125. package/dist/src/pages/steps/StepThanks/StepThanksComponent.js.map +1 -1
  126. package/dist/src/providers/FeatureProvider.d.ts +1 -1
  127. package/dist/src/providers/FeatureProvider.js +6 -2
  128. package/dist/src/providers/FeatureProvider.js.map +1 -1
  129. package/dist/src/providers/SessionProvider.js +5 -1
  130. package/dist/src/providers/SessionProvider.js.map +1 -1
  131. package/dist/src/providers/feature/DerbysoftClickTrackingFeature.d.ts +7 -0
  132. package/dist/src/providers/feature/DerbysoftClickTrackingFeature.js +32 -0
  133. package/dist/src/providers/feature/DerbysoftClickTrackingFeature.js.map +1 -0
  134. package/dist/src/providers/feature/Feature.d.ts +3 -3
  135. package/dist/src/providers/feature/Feature.js +3 -3
  136. package/dist/src/providers/feature/Feature.js.map +1 -1
  137. package/dist/src/providers/feature/GuestTitleFieldFeature.d.ts +21 -0
  138. package/dist/src/providers/feature/GuestTitleFieldFeature.js +37 -0
  139. package/dist/src/providers/feature/GuestTitleFieldFeature.js.map +1 -0
  140. package/dist/src/providers/storage/LocalStorageProvider.js +1 -1
  141. package/dist/src/providers/storage/LocalStorageProvider.js.map +1 -1
  142. package/dist/src/translations/Translation.d.ts +19 -3
  143. package/dist/src/translations/Translation.js +19 -3
  144. package/dist/src/translations/Translation.js.map +1 -1
  145. package/dist/src/translations/languages/en-gb.js +20 -4
  146. package/dist/src/translations/languages/en-gb.js.map +1 -1
  147. package/dist/src/util/DerbysoftPixel.d.ts +4 -0
  148. package/dist/src/util/DerbysoftPixel.js +56 -0
  149. package/dist/src/util/DerbysoftPixel.js.map +1 -0
  150. package/dist/test.bundle.js +1 -1
  151. package/dist/tests/offline/entry/OfflineEngineDefaults.js +5 -0
  152. package/dist/tests/offline/entry/OfflineEngineDefaults.js.map +1 -1
  153. package/dist/vendors.bundle.js +1 -1
  154. package/dist/vendors.bundle.js.LICENSE.txt +2 -0
  155. package/package.json +2 -2
  156. package/dist/201.bundle.js +0 -1
  157. package/dist/457.bundle.js +0 -1
  158. package/dist/468.bundle.js +0 -1
  159. package/dist/src/components/steps/addons/AddonsNotFound.d.ts +0 -1
  160. package/dist/src/components/steps/addons/AddonsNotFound.js.map +0 -1
  161. package/dist/src/components/steps/room/MemberSignInModal/MemberSignInModal.types.js.map +0 -1
  162. package/dist/src/events/views/PlacedBookingEvent.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Room.js","sourceRoot":"/","sources":["src/models/Room/Room.ts"],"names":[],"mappings":"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","sourcesContent":["import { ConfigHotel, Hotel } from '@/models/Client/Hotel/Hotel';\nimport { HotelPerk } from '@/models/Client/Hotel/HotelPerk';\nimport { IRoomRate, RoomRate, RoomRatePriceInclusion } from '@/models/Room/RoomRate';\nimport RoomRateSortable from '@/models/Room/RoomRateSortable';\nimport { Serializable } from '@/models/Serializable';\n\nexport interface IRoom {\n id: number;\n\n code: string;\n name: string;\n longDescription: string;\n shortDescription: string;\n\n occupancy: number;\n\n images: string[];\n rates: IRoomRate[];\n roomGroupId?: string;\n auxiliaryValues: { [key: string]: any };\n\n prePerkDisclaimer?: string;\n perks?: ConfigHotel['perks'];\n}\n\nexport class Room implements RoomRateSortable, Serializable<Room, IRoom> {\n public id?: number;\n public code?: string;\n public name?: string;\n public longDescription?: string;\n public shortDescription?: string;\n\n public occupancy?: number;\n\n public images: string[];\n public roomGroupId?: string;\n public auxiliaryValues?: { [key: string]: any } = {};\n public filteredRates?: RoomRate[];\n private rates: RoomRate[];\n\n public prePerkDisclaimer?: string;\n public perks?: ConfigHotel['perks'];\n\n public constructor(props?: Partial<IRoom>) {\n this.rates = [];\n this.images = [];\n this.auxiliaryValues = {};\n\n if (props) {\n this.applyData(props);\n }\n }\n\n public static fromData(data: any) {\n const room = new this();\n\n if (!data.images && data.imageUrls) {\n data.images = data.imageUrls;\n }\n\n room.applyData(data);\n\n return room;\n }\n\n public getShortDescription(trim = true) {\n let shortDesc = this.shortDescription;\n\n if (trim) {\n shortDesc = (this.shortDescription?.length as number) > 97 ? this.shortDescription?.substr(0, 97) + '…' : this.shortDescription;\n }\n\n return shortDesc?.replace(/(<br>\\s*)+$/, '');\n }\n\n public getLongDescription() {\n return this.longDescription?.replace(/(<br>\\s*)+$/, '');\n }\n\n public applyData(data: Partial<IRoom>) {\n Object.keys(data).map((key: any) => {\n (this as any)[key] = (data as any)[key];\n }, this);\n\n this.filteredRates = this.rates;\n }\n\n public getLowestPriceType = (raw = false) => {\n return (\n ((raw ? this.rates : this.filteredRates) as RoomRate[])\n .reduce<RoomRate | null>((sum, rate) => {\n return sum && sum.getAveragePrice() < rate.getAveragePrice() ? sum : rate;\n }, null)\n ?.getPriceType() ?? RoomRatePriceInclusion.IncludingFeesAndTaxes\n );\n };\n\n public getLowestPrice(raw = false, rawPrice = false) {\n return (\n (raw ? this.rates : this.filteredRates)?.reduce<number>((sum: number, rate: RoomRate) => {\n const avrg = rate.getAveragePrice(rawPrice);\n return sum < avrg && sum ? sum : avrg;\n }, 0) ?? 0\n );\n }\n\n public getHighestPrice(raw = false) {\n return (\n (raw ? this.rates : this.filteredRates)?.reduce<number>((sum: number, rate: RoomRate) => (sum > rate.getAveragePrice() && sum ? sum : rate.getAveragePrice()), 0) ?? 0\n );\n }\n\n public addRate(rate: RoomRate) {\n rate.setRoom(this);\n this.rates.push(rate);\n }\n\n public getImages(): string[] {\n if (this.images && this.images.length) {\n return this.images;\n }\n\n return [];\n }\n\n public getOriginalRates(): RoomRate[] {\n return this.rates;\n }\n\n public getRates(): RoomRate[] {\n return (this.filteredRates as RoomRate[]).sort((a, b) => {\n return a.isMemberOnly ? -1 : b.isMemberOnly ? 1 : 0;\n });\n }\n\n public getRate(code: string): RoomRate | null {\n for (const rate in this.rates) {\n if (code === this.rates[rate].code) {\n return this.rates[rate];\n }\n }\n\n return null;\n }\n\n public getSortValue() {\n return this.getLowestPrice();\n }\n\n public serialize() {\n const toSerialize: IRoom = {\n id: this.id,\n code: this.code,\n images: this.images,\n longDescription: this.longDescription,\n name: this.name,\n occupancy: this.occupancy,\n rates: this.rates.map((rate) => rate.serialize()),\n shortDescription: this.shortDescription,\n roomGroupId: this.roomGroupId,\n auxiliaryValues: this.auxiliaryValues,\n } as IRoom;\n\n return toSerialize;\n }\n\n public unSerialize(data: IRoom) {\n const newRates: RoomRate[] = data.rates?.map((serializedRate) => {\n const roomRate = new RoomRate();\n roomRate.unSerialize(serializedRate);\n\n return roomRate;\n });\n\n this.code = data.code;\n this.id = data.id;\n this.images = data.images;\n this.longDescription = data.longDescription;\n this.name = data.name;\n this.occupancy = data.occupancy;\n this.shortDescription = data.shortDescription;\n this.filteredRates = newRates;\n this.rates = newRates;\n\n this.roomGroupId = data.roomGroupId;\n this.auxiliaryValues = data.auxiliaryValues;\n\n return this;\n }\n\n public getRoomPerks({ hotel, room, perksLimitNumber }: { hotel?: Hotel; room?: Room; perksLimitNumber?: number }): {\n prePerkDisclaimer?: string;\n roomPerks: HotelPerk[];\n } {\n if (!room || !hotel) {\n return {\n roomPerks: hotel?.perks ?? [],\n };\n }\n const roomOverride = hotel?.overwrites?.[room?.code as string];\n let roomPerks = roomOverride?.perks?.length ? roomOverride?.perks : hotel?.perks;\n if (perksLimitNumber) {\n roomPerks = roomPerks?.slice(0, perksLimitNumber);\n }\n const prePerkDisclaimer = roomOverride?.prePerkDisclaimer ? roomOverride.prePerkDisclaimer : room?.prePerkDisclaimer;\n return {\n prePerkDisclaimer: prePerkDisclaimer,\n roomPerks: roomPerks ?? [],\n };\n }\n}\n"]}
1
+ {"version":3,"file":"Room.js","sourceRoot":"/","sources":["src/models/Room/Room.ts"],"names":[],"mappings":"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","sourcesContent":["import { ConfigHotel, Hotel } from '@/models/Client/Hotel/Hotel';\nimport { HotelPerk } from '@/models/Client/Hotel/HotelPerk';\nimport { IRoomRate, RoomRate, RoomRatePriceInclusion } from '@/models/Room/RoomRate';\nimport RoomRateSortable from '@/models/Room/RoomRateSortable';\nimport { Serializable } from '@/models/Serializable';\n\nexport interface IRoom {\n id: number;\n\n code: string;\n name: string;\n longDescription: string;\n shortDescription: string;\n\n occupancy: number;\n\n images: string[];\n rates: IRoomRate[];\n roomGroupId?: string;\n auxiliaryValues: { [key: string]: (string | number)[] };\n\n prePerkDisclaimer?: string;\n perks?: ConfigHotel['perks'];\n}\n\nexport class Room implements RoomRateSortable, Serializable<Room, IRoom> {\n public id?: number;\n public code?: string;\n public name?: string;\n public longDescription?: string;\n public shortDescription?: string;\n\n public occupancy?: number;\n\n public images: string[];\n public roomGroupId?: string;\n public auxiliaryValues?: { [key: string]: (string | number)[] } = {};\n public filteredRates?: RoomRate[];\n private rates: RoomRate[];\n\n public prePerkDisclaimer?: string;\n public perks?: ConfigHotel['perks'];\n\n public constructor(props?: Partial<IRoom>) {\n this.rates = [];\n this.images = [];\n this.auxiliaryValues = {};\n\n if (props) {\n this.applyData(props);\n }\n }\n\n public static fromData(data: any) {\n const room = new this();\n\n if (!data.images && data.imageUrls) {\n data.images = data.imageUrls;\n }\n\n room.applyData(data);\n\n return room;\n }\n\n public getShortDescription(trim = true) {\n let shortDesc = this.shortDescription;\n\n if (trim) {\n shortDesc = (this.shortDescription?.length as number) > 97 ? this.shortDescription?.substr(0, 97) + '…' : this.shortDescription;\n }\n\n return shortDesc?.replace(/(<br>\\s*)+$/, '');\n }\n\n public getLongDescription() {\n return this.longDescription?.replace(/(<br>\\s*)+$/, '');\n }\n\n public applyData(data: Partial<IRoom>) {\n Object.keys(data).map((key: any) => {\n (this as any)[key] = (data as any)[key];\n }, this);\n\n this.filteredRates = this.rates;\n }\n\n public getLowestPriceType = (raw = false) => {\n return (\n ((raw ? this.rates : this.filteredRates) as RoomRate[])\n .reduce<RoomRate | null>((sum, rate) => {\n return sum && sum.getAveragePrice() < rate.getAveragePrice() ? sum : rate;\n }, null)\n ?.getPriceType() ?? RoomRatePriceInclusion.IncludingFeesAndTaxes\n );\n };\n\n public getLowestPrice(raw = false, rawPrice = false) {\n return (\n (raw ? this.rates : this.filteredRates)?.reduce<number>((sum: number, rate: RoomRate) => {\n const avrg = rate.getAveragePrice(rawPrice);\n return sum < avrg && sum ? sum : avrg;\n }, 0) ?? 0\n );\n }\n\n public getHighestPrice(raw = false) {\n return (\n (raw ? this.rates : this.filteredRates)?.reduce<number>((sum: number, rate: RoomRate) => (sum > rate.getAveragePrice() && sum ? sum : rate.getAveragePrice()), 0) ?? 0\n );\n }\n\n public addRate(rate: RoomRate) {\n rate.setRoom(this);\n this.rates.push(rate);\n }\n\n public getImages(): string[] {\n if (this.images && this.images.length) {\n return this.images;\n }\n\n return [];\n }\n\n public getOriginalRates(): RoomRate[] {\n return this.rates;\n }\n\n public getRates(): RoomRate[] {\n return (this.filteredRates as RoomRate[]).sort((a, b) => {\n return a.isMemberOnly ? -1 : b.isMemberOnly ? 1 : 0;\n });\n }\n\n public getRate(code: string): RoomRate | null {\n for (const rate in this.rates) {\n if (code === this.rates[rate].code) {\n return this.rates[rate];\n }\n }\n\n return null;\n }\n\n public getSortValue() {\n return this.getLowestPrice();\n }\n\n public serialize() {\n const toSerialize: IRoom = {\n id: this.id,\n code: this.code,\n images: this.images,\n longDescription: this.longDescription,\n name: this.name,\n occupancy: this.occupancy,\n rates: this.rates.map((rate) => rate.serialize()),\n shortDescription: this.shortDescription,\n roomGroupId: this.roomGroupId,\n auxiliaryValues: this.auxiliaryValues,\n } as IRoom;\n\n return toSerialize;\n }\n\n public unSerialize(data: IRoom) {\n const newRates: RoomRate[] = data.rates?.map((serializedRate) => {\n const roomRate = new RoomRate();\n roomRate.unSerialize(serializedRate);\n\n return roomRate;\n });\n\n this.code = data.code;\n this.id = data.id;\n this.images = data.images;\n this.longDescription = data.longDescription;\n this.name = data.name;\n this.occupancy = data.occupancy;\n this.shortDescription = data.shortDescription;\n this.filteredRates = newRates;\n this.rates = newRates;\n\n this.roomGroupId = data.roomGroupId;\n this.auxiliaryValues = data.auxiliaryValues;\n\n return this;\n }\n\n public getRoomPerks({ hotel, room, perksLimitNumber }: { hotel?: Hotel; room?: Room; perksLimitNumber?: number }): {\n prePerkDisclaimer?: string;\n roomPerks: HotelPerk[];\n } {\n if (!room || !hotel) {\n return {\n roomPerks: hotel?.perks ?? [],\n };\n }\n const roomOverride = hotel?.overwrites?.[room?.code as string];\n let roomPerks = roomOverride?.perks?.length ? roomOverride?.perks : hotel?.perks;\n if (perksLimitNumber) {\n roomPerks = roomPerks?.slice(0, perksLimitNumber);\n }\n const prePerkDisclaimer = roomOverride?.prePerkDisclaimer ? roomOverride.prePerkDisclaimer : room?.prePerkDisclaimer;\n return {\n prePerkDisclaimer: prePerkDisclaimer,\n roomPerks: roomPerks ?? [],\n };\n }\n}\n"]}
@@ -1,3 +1,4 @@
1
+ import { SignInUser } from '../contexts/index.js';
1
2
  import { IBookingPayment } from '@roomstay/core';
2
3
  import dayjs from 'dayjs';
3
4
  import type BasketRow from './BasketRow';
@@ -15,6 +16,8 @@ export type RoomstaySession = {
15
16
  endDate: dayjs.Dayjs | null;
16
17
  hotelID: number | string;
17
18
  source: string;
19
+ user?: SignInUser;
20
+ memberId?: string;
18
21
  basketRows: BasketRow[];
19
22
  reservationRequest?: {
20
23
  userProfiles: UserProfile[];
@@ -30,6 +33,8 @@ export type SerializedRoomstaySession = {
30
33
  endDate: string;
31
34
  hotelID: number | string;
32
35
  source: string;
36
+ user?: string;
37
+ memberId?: string;
33
38
  basketRows: SerializedRoomstaySessionBasketRow[];
34
39
  reservation?: ReservationsDTO;
35
40
  reservationRequest?: RoomstaySession['reservationRequest'];
@@ -1 +1 @@
1
- {"version":3,"file":"RoomstaySession.js","sourceRoot":"/","sources":["src/models/RoomstaySession.ts"],"names":[],"mappings":";;;AA6Da,QAAA,sBAAsB,GAAG,YAAY,CAAC","sourcesContent":["import { IBookingPayment } from '@roomstay/core';\nimport dayjs from 'dayjs';\n\nimport type BasketRow from '@/models/BasketRow';\nimport type { IRoom } from '@/models/Room/Room';\nimport type { IRoomRate } from '@/models/Room/RoomRate';\nimport UserProfile from '@/models/UserProfile';\n\nimport ReservationsDTO from './Api/ReservationsDTO';\n\n/**\n * Booking engine state object, that is stored, can be loaded and unloaded\n */\nexport type RoomstaySession = {\n id: number;\n step: string;\n startDate: dayjs.Dayjs | null;\n endDate: dayjs.Dayjs | null;\n hotelID: number | string;\n source: string;\n\n basketRows: BasketRow[];\n\n reservationRequest?: {\n userProfiles: UserProfile[];\n payment: IBookingPayment;\n comments: string;\n };\n reservation?: ReservationsDTO;\n};\n\nexport type SerializedRoomstaySession = {\n id: number;\n step: string;\n startDate: string;\n endDate: string;\n hotelID: number | string;\n source: string;\n\n basketRows: SerializedRoomstaySessionBasketRow[];\n reservation?: ReservationsDTO;\n\n reservationRequest?: RoomstaySession['reservationRequest'];\n};\n\nexport type SerializedRoomstaySessionBasketRow = {\n uniqId: string;\n startDate: string;\n endDate: string;\n\n adults: number;\n children: number;\n infants: number;\n\n promoCode: string;\n promoCodeStatus: string;\n\n room: IRoom;\n rate: IRoomRate;\n};\n\nexport const SERIALIZED_DATE_FORMAT = 'YYYY/MM/DD';\n"]}
1
+ {"version":3,"file":"RoomstaySession.js","sourceRoot":"/","sources":["src/models/RoomstaySession.ts"],"names":[],"mappings":";;;AAkEa,QAAA,sBAAsB,GAAG,YAAY,CAAC","sourcesContent":["import { SignInUser } from '@frontend/contexts';\nimport { IBookingPayment } from '@roomstay/core';\nimport dayjs from 'dayjs';\n\nimport type BasketRow from '@/models/BasketRow';\nimport type { IRoom } from '@/models/Room/Room';\nimport type { IRoomRate } from '@/models/Room/RoomRate';\nimport UserProfile from '@/models/UserProfile';\n\nimport ReservationsDTO from './Api/ReservationsDTO';\n\n/**\n * Booking engine state object, that is stored, can be loaded and unloaded\n */\nexport type RoomstaySession = {\n id: number;\n step: string;\n startDate: dayjs.Dayjs | null;\n endDate: dayjs.Dayjs | null;\n hotelID: number | string;\n source: string;\n user?: SignInUser;\n memberId?: string;\n\n basketRows: BasketRow[];\n\n reservationRequest?: {\n userProfiles: UserProfile[];\n payment: IBookingPayment;\n comments: string;\n };\n reservation?: ReservationsDTO;\n};\n\nexport type SerializedRoomstaySession = {\n id: number;\n step: string;\n startDate: string;\n endDate: string;\n hotelID: number | string;\n source: string;\n user?: string;\n memberId?: string;\n\n basketRows: SerializedRoomstaySessionBasketRow[];\n\n reservation?: ReservationsDTO;\n reservationRequest?: RoomstaySession['reservationRequest'];\n};\n\nexport type SerializedRoomstaySessionBasketRow = {\n uniqId: string;\n startDate: string;\n endDate: string;\n\n adults: number;\n children: number;\n infants: number;\n\n promoCode: string;\n promoCodeStatus: string;\n\n room: IRoom;\n rate: IRoomRate;\n};\n\nexport const SERIALIZED_DATE_FORMAT = 'YYYY/MM/DD';\n"]}
@@ -14,6 +14,7 @@ const AccountHelpPage_1 = require("./Help/AccountHelpPage");
14
14
  const AccountReservationSinglePage_1 = require("./Reservations/AccountReservationSinglePage");
15
15
  const AccountReservationsPage_1 = require("./Reservations/AccountReservationsPage");
16
16
  const AccountRoutes_1 = require("./AccountRoutes");
17
+ const AccountChangePasswordPage_1 = require("./ChangePassword/AccountChangePasswordPage");
17
18
  const AccountRouter = () => {
18
19
  return (react_1.default.createElement(react_1.default.Fragment, null,
19
20
  react_1.default.createElement(AccountOutlet_1.AccountOutlet, null,
@@ -21,6 +22,7 @@ const AccountRouter = () => {
21
22
  react_1.default.createElement(react_router_dom_1.Route, { path: AccountRoutes_1.AccountRoutes.Reservations.matchPath, component: AccountReservationsPage_1.AccountReservationPage, exact: true }),
22
23
  react_1.default.createElement(react_router_dom_1.Route, { path: AccountRoutes_1.AccountRoutes.SingleReservation.matchPath, component: AccountReservationSinglePage_1.AccountReservationSinglePage }),
23
24
  react_1.default.createElement(react_router_dom_1.Route, { path: AccountRoutes_1.AccountRoutes.ProfileDetails.path, component: AccountDetailsProfilePage_1.AccountDetailsProfilePage }),
25
+ react_1.default.createElement(react_router_dom_1.Route, { path: AccountRoutes_1.AccountRoutes.ChangePassword.path, component: AccountChangePasswordPage_1.AccountChangePasswordPage }),
24
26
  react_1.default.createElement(react_router_dom_1.Route, { path: AccountRoutes_1.AccountRoutes.CardDetails.path, component: AccountDetailsCardsPage_1.AccountDetailsCardsPage }),
25
27
  react_1.default.createElement(react_router_dom_1.Route, { path: AccountRoutes_1.AccountRoutes.Help.path, component: AccountHelpPage_1.AccountHelpPage }))));
26
28
  };
@@ -1 +1 @@
1
- {"version":3,"file":"AccountRouter.js","sourceRoot":"/","sources":["src/pages/account/AccountRouter.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,uDAAyC;AAEzC,iFAA8E;AAC9E,iEAA8D;AAC9D,6FAA0F;AAC1F,iGAA8F;AAC9F,0EAAuE;AACvE,4GAAyG;AACzG,kGAA8F;AAE9F,mDAAgD;AAEzC,MAAM,aAAa,GAAG,GAAG,EAAE;IAC9B,OAAO,CACH;QACI,8BAAC,6BAAa;YACV,8BAAC,wBAAK,IAAC,IAAI,EAAE,6BAAa,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,iCAAe,GAAI;YACpE,8BAAC,wBAAK,IAAC,IAAI,EAAE,6BAAa,CAAC,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,gDAAsB,EAAE,KAAK,SAAG;YAE9F,8BAAC,wBAAK,IAAC,IAAI,EAAE,6BAAa,CAAC,iBAAiB,CAAC,SAAS,EAAE,SAAS,EAAE,2DAA4B,GAAI;YAEnG,8BAAC,wBAAK,IAAC,IAAI,EAAE,6BAAa,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,qDAAyB,GAAI;YACxF,8BAAC,wBAAK,IAAC,IAAI,EAAE,6BAAa,CAAC,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,iDAAuB,GAAI;YAEnF,8BAAC,wBAAK,IAAC,IAAI,EAAE,6BAAa,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,iCAAe,GAAI,CACxD,CACjB,CACN,CAAC;AACN,CAAC,CAAC;AAhBW,QAAA,aAAa,iBAgBxB","sourcesContent":["import React from 'react';\nimport { Route } from 'react-router-dom';\n\nimport { AccountHomePage } from '@/pages/account/AccountHome/AccountHomePage';\nimport { AccountOutlet } from '@/pages/account/AccountOutlet';\nimport { AccountDetailsCardsPage } from '@/pages/account/Details/AccountDetailsCardsPage';\nimport { AccountDetailsProfilePage } from '@/pages/account/Details/AccountDetailsProfilePage';\nimport { AccountHelpPage } from '@/pages/account/Help/AccountHelpPage';\nimport { AccountReservationSinglePage } from '@/pages/account/Reservations/AccountReservationSinglePage';\nimport { AccountReservationPage } from '@/pages/account/Reservations/AccountReservationsPage';\n\nimport { AccountRoutes } from './AccountRoutes';\n\nexport const AccountRouter = () => {\n return (\n <>\n <AccountOutlet>\n <Route path={AccountRoutes.Home.path} component={AccountHomePage} />\n <Route path={AccountRoutes.Reservations.matchPath} component={AccountReservationPage} exact />\n\n <Route path={AccountRoutes.SingleReservation.matchPath} component={AccountReservationSinglePage} />\n\n <Route path={AccountRoutes.ProfileDetails.path} component={AccountDetailsProfilePage} />\n <Route path={AccountRoutes.CardDetails.path} component={AccountDetailsCardsPage} />\n\n <Route path={AccountRoutes.Help.path} component={AccountHelpPage} />\n </AccountOutlet>\n </>\n );\n};\n"]}
1
+ {"version":3,"file":"AccountRouter.js","sourceRoot":"/","sources":["src/pages/account/AccountRouter.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,uDAAyC;AAEzC,iFAA8E;AAC9E,iEAA8D;AAC9D,6FAA0F;AAC1F,iGAA8F;AAC9F,0EAAuE;AACvE,4GAAyG;AACzG,kGAA8F;AAE9F,mDAAgD;AAChD,0FAAuF;AAEhF,MAAM,aAAa,GAAG,GAAG,EAAE;IAC9B,OAAO,CACH;QACI,8BAAC,6BAAa;YACV,8BAAC,wBAAK,IAAC,IAAI,EAAE,6BAAa,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,iCAAe,GAAI;YACpE,8BAAC,wBAAK,IAAC,IAAI,EAAE,6BAAa,CAAC,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,gDAAsB,EAAE,KAAK,SAAG;YAE9F,8BAAC,wBAAK,IAAC,IAAI,EAAE,6BAAa,CAAC,iBAAiB,CAAC,SAAS,EAAE,SAAS,EAAE,2DAA4B,GAAI;YAEnG,8BAAC,wBAAK,IAAC,IAAI,EAAE,6BAAa,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,qDAAyB,GAAI;YACxF,8BAAC,wBAAK,IAAC,IAAI,EAAE,6BAAa,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,qDAAyB,GAAI;YACxF,8BAAC,wBAAK,IAAC,IAAI,EAAE,6BAAa,CAAC,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,iDAAuB,GAAI;YAEnF,8BAAC,wBAAK,IAAC,IAAI,EAAE,6BAAa,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,iCAAe,GAAI,CACxD,CACjB,CACN,CAAC;AACN,CAAC,CAAC;AAjBW,QAAA,aAAa,iBAiBxB","sourcesContent":["import React from 'react';\nimport { Route } from 'react-router-dom';\n\nimport { AccountHomePage } from '@/pages/account/AccountHome/AccountHomePage';\nimport { AccountOutlet } from '@/pages/account/AccountOutlet';\nimport { AccountDetailsCardsPage } from '@/pages/account/Details/AccountDetailsCardsPage';\nimport { AccountDetailsProfilePage } from '@/pages/account/Details/AccountDetailsProfilePage';\nimport { AccountHelpPage } from '@/pages/account/Help/AccountHelpPage';\nimport { AccountReservationSinglePage } from '@/pages/account/Reservations/AccountReservationSinglePage';\nimport { AccountReservationPage } from '@/pages/account/Reservations/AccountReservationsPage';\n\nimport { AccountRoutes } from './AccountRoutes';\nimport { AccountChangePasswordPage } from './ChangePassword/AccountChangePasswordPage';\n\nexport const AccountRouter = () => {\n return (\n <>\n <AccountOutlet>\n <Route path={AccountRoutes.Home.path} component={AccountHomePage} />\n <Route path={AccountRoutes.Reservations.matchPath} component={AccountReservationPage} exact />\n\n <Route path={AccountRoutes.SingleReservation.matchPath} component={AccountReservationSinglePage} />\n\n <Route path={AccountRoutes.ProfileDetails.path} component={AccountDetailsProfilePage} />\n <Route path={AccountRoutes.ChangePassword.path} component={AccountChangePasswordPage} />\n <Route path={AccountRoutes.CardDetails.path} component={AccountDetailsCardsPage} />\n\n <Route path={AccountRoutes.Help.path} component={AccountHelpPage} />\n </AccountOutlet>\n </>\n );\n};\n"]}
@@ -19,4 +19,7 @@ export declare const AccountRoutes: {
19
19
  Help: {
20
20
  path: string;
21
21
  };
22
+ ChangePassword: {
23
+ path: string;
24
+ };
22
25
  };
@@ -22,5 +22,8 @@ exports.AccountRoutes = {
22
22
  Help: {
23
23
  path: '/account/help',
24
24
  },
25
+ ChangePassword: {
26
+ path: '/account/details/change-password',
27
+ },
25
28
  };
26
29
  //# sourceMappingURL=AccountRoutes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AccountRoutes.js","sourceRoot":"/","sources":["src/pages/account/AccountRoutes.ts"],"names":[],"mappings":";;;AAAa,QAAA,aAAa,GAAG;IACzB,IAAI,EAAE;QACF,IAAI,EAAE,eAAe;KACxB;IACD,YAAY,EAAE;QACV,SAAS,EAAE,iCAAiC;QAC5C,IAAI,EAAE,uBAAuB;KAChC;IACD,iBAAiB,EAAE;QACf,SAAS,EAAE,mCAAmC;QAC9C,IAAI,EAAE,wBAAwB;KACjC;IACD,cAAc,EAAE;QACZ,IAAI,EAAE,0BAA0B;KACnC;IACD,WAAW,EAAE;QACT,IAAI,EAAE,wBAAwB;KACjC;IACD,IAAI,EAAE;QACF,IAAI,EAAE,eAAe;KACxB;CACJ,CAAC","sourcesContent":["export const AccountRoutes = {\n Home: {\n path: '/account/home',\n },\n Reservations: {\n matchPath: '/account/reservations/:tabPath?',\n path: '/account/reservations',\n },\n SingleReservation: {\n matchPath: '/account/reservations/:resId/item',\n path: '/account/reservations/',\n },\n ProfileDetails: {\n path: '/account/details/profile',\n },\n CardDetails: {\n path: '/account/details/cards',\n },\n Help: {\n path: '/account/help',\n },\n};\n"]}
1
+ {"version":3,"file":"AccountRoutes.js","sourceRoot":"/","sources":["src/pages/account/AccountRoutes.ts"],"names":[],"mappings":";;;AAAa,QAAA,aAAa,GAAG;IACzB,IAAI,EAAE;QACF,IAAI,EAAE,eAAe;KACxB;IACD,YAAY,EAAE;QACV,SAAS,EAAE,iCAAiC;QAC5C,IAAI,EAAE,uBAAuB;KAChC;IACD,iBAAiB,EAAE;QACf,SAAS,EAAE,mCAAmC;QAC9C,IAAI,EAAE,wBAAwB;KACjC;IACD,cAAc,EAAE;QACZ,IAAI,EAAE,0BAA0B;KACnC;IACD,WAAW,EAAE;QACT,IAAI,EAAE,wBAAwB;KACjC;IACD,IAAI,EAAE;QACF,IAAI,EAAE,eAAe;KACxB;IACD,cAAc,EAAE;QACZ,IAAI,EAAE,kCAAkC;KAC3C;CACJ,CAAC","sourcesContent":["export const AccountRoutes = {\n Home: {\n path: '/account/home',\n },\n Reservations: {\n matchPath: '/account/reservations/:tabPath?',\n path: '/account/reservations',\n },\n SingleReservation: {\n matchPath: '/account/reservations/:resId/item',\n path: '/account/reservations/',\n },\n ProfileDetails: {\n path: '/account/details/profile',\n },\n CardDetails: {\n path: '/account/details/cards',\n },\n Help: {\n path: '/account/help',\n },\n ChangePassword: {\n path: '/account/details/change-password',\n },\n};\n"]}
@@ -0,0 +1 @@
1
+ export declare const AccountChangePasswordPage: () => JSX.Element;
@@ -0,0 +1,143 @@
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
+ exports.AccountChangePasswordPage = void 0;
30
+ const contexts_1 = require("../../../contexts/index.js");
31
+ const hooks_1 = require("../../../hooks/index.js");
32
+ const react_1 = __importStar(require("react"));
33
+ const react_hook_form_1 = require("react-hook-form");
34
+ const react_i18next_1 = require("react-i18next");
35
+ const react_router_dom_1 = require("react-router-dom");
36
+ const Translation_1 = require("translations/Translation");
37
+ const BEButton_1 = __importDefault(require("../../../components/generic/BEButton"));
38
+ const Headline_1 = __importDefault(require("../../../components/generic/Headline"));
39
+ const Icon_1 = require("../../../components/generic/Icon/Icon");
40
+ const PasswordBox_1 = require("../../../components/generic/PasswordBox/PasswordBox");
41
+ const Text_1 = __importStar(require("../../../components/generic/Text"));
42
+ const Color_1 = require("../../../util/Color");
43
+ const Validation_1 = require("../../../util/Validation");
44
+ const AutoAutoHeight_1 = __importDefault(require("../../../animations/AutoAutoHeight"));
45
+ const Alert_1 = __importStar(require("../../../components/generic/Alert"));
46
+ const AccountRoutes_1 = require("../AccountRoutes");
47
+ const LabelAndInputGroup = (props) => {
48
+ const { label, component, hint, error } = props;
49
+ return (react_1.default.createElement("div", { className: "row u-marg-bottom--heavy" },
50
+ react_1.default.createElement("div", { className: "col-md-4" },
51
+ react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, bold: true }, label)),
52
+ react_1.default.createElement("div", { className: "col-md-8" },
53
+ component,
54
+ !!error && (react_1.default.createElement("p", { className: "text-small", style: { color: '#ED4362' } }, error.message)),
55
+ !!hint && (react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Label, color: Color_1.Color.Grey }, hint)))));
56
+ };
57
+ const AccountChangePasswordPage = () => {
58
+ const { loading: isLoadingMember, changePassword } = (0, react_1.useContext)(contexts_1.AuthenticationContext);
59
+ const { hotel } = (0, hooks_1.useCurrentHotel)();
60
+ const { t } = (0, react_i18next_1.useTranslation)();
61
+ const { trigger, watch, register, formState: { errors, isDirty }, handleSubmit, } = (0, react_hook_form_1.useForm)({
62
+ mode: 'onChange',
63
+ reValidateMode: 'onChange',
64
+ defaultValues: {
65
+ currentPassword: '',
66
+ newPassword: '',
67
+ confirmPassword: '',
68
+ },
69
+ });
70
+ const newPasswordWatch = watch('newPassword');
71
+ (0, react_1.useEffect)(() => {
72
+ trigger('confirmPassword');
73
+ }, [newPasswordWatch, trigger]);
74
+ const getErrorValidationClass = (name) => (errors[name] ? 'error' : undefined);
75
+ const [alert, setAlert] = (0, react_1.useState)(null);
76
+ const notificationMap = {
77
+ [contexts_1.CognitoLoginState.Success]: {
78
+ type: Alert_1.AlertType.Success,
79
+ icon: Icon_1.IconType.Check,
80
+ message: t(Translation_1.Translation.UserPortal.ChangePassword.ChangePasswordSuccessfully),
81
+ },
82
+ [contexts_1.CognitoLoginState.NotAuthorizedException]: {
83
+ type: Alert_1.AlertType.Danger,
84
+ icon: Icon_1.IconType.Error,
85
+ message: t(Translation_1.Translation.UserPortal.ChangePassword.NotAuthorizedException),
86
+ },
87
+ [contexts_1.CognitoLoginState.LimitExceededException]: {
88
+ type: Alert_1.AlertType.Danger,
89
+ icon: Icon_1.IconType.Error,
90
+ message: t(Translation_1.Translation.UserPortal.ChangePassword.LimitExceededException),
91
+ },
92
+ };
93
+ const onChangePassword = ({ currentPassword, newPassword }) => {
94
+ setAlert(null);
95
+ changePassword === null || changePassword === void 0 ? void 0 : changePassword(currentPassword, newPassword, { hotel }).then((state) => {
96
+ if (state) {
97
+ const notification = notificationMap[state];
98
+ if (notification) {
99
+ setAlert(notification);
100
+ }
101
+ }
102
+ });
103
+ };
104
+ const saveButtonDisabled = !isDirty || isLoadingMember || !!Object.keys(errors).length;
105
+ return (react_1.default.createElement(react_1.default.Fragment, null,
106
+ react_1.default.createElement("div", { className: "u-marg-top--heavy@m u-marg-top@- u-marg-bottom--heavy" },
107
+ react_1.default.createElement(react_router_dom_1.Link, { to: AccountRoutes_1.AccountRoutes.ProfileDetails.path },
108
+ react_1.default.createElement(BEButton_1.default, { isText: true, icon: Icon_1.IconType.ArrowLeft, size: "small" }, t(Translation_1.Translation.UserPortal.ChangePassword.BackToProfile)))),
109
+ react_1.default.createElement("div", { className: "u-marg-bottom--heavy@m" },
110
+ react_1.default.createElement(Headline_1.default, { size: "extra-large", bold: true }, t(Translation_1.Translation.Navigation.Menu.ChangePassword))),
111
+ react_1.default.createElement("div", { className: "u-marg-bottom--heavy@m" },
112
+ react_1.default.createElement(AutoAutoHeight_1.default, { open: !!alert },
113
+ react_1.default.createElement("div", { className: "row" },
114
+ react_1.default.createElement("div", { className: "col-md-8" },
115
+ react_1.default.createElement(Alert_1.default, { type: alert === null || alert === void 0 ? void 0 : alert.type, icon: alert === null || alert === void 0 ? void 0 : alert.icon },
116
+ react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small }, alert === null || alert === void 0 ? void 0 : alert.message)))))),
117
+ react_1.default.createElement("form", { onSubmit: handleSubmit(onChangePassword) },
118
+ react_1.default.createElement("div", { className: "row" },
119
+ react_1.default.createElement("div", { className: "col-md-8" },
120
+ react_1.default.createElement("div", null,
121
+ react_1.default.createElement(LabelAndInputGroup, { label: t(Translation_1.Translation.UserPortal.ChangePassword.Field.CurrentPassword), component: react_1.default.createElement(PasswordBox_1.PasswordBox, Object.assign({ placeholder: "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022" }, register('currentPassword', {
122
+ pattern: (0, Validation_1.makePasswordPatternRule)(t),
123
+ required: (0, Validation_1.makeRequiredRule)(t)(true, t(Translation_1.Translation.UserPortal.ChangePassword.Field.CurrentPassword)),
124
+ }), { validationStatus: getErrorValidationClass('currentPassword') })), error: errors.currentPassword }),
125
+ react_1.default.createElement(LabelAndInputGroup, { label: t(Translation_1.Translation.UserPortal.ChangePassword.Field.NewPassword), component: react_1.default.createElement(PasswordBox_1.PasswordBox, Object.assign({ placeholder: "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022" }, register('newPassword', {
126
+ pattern: (0, Validation_1.makePasswordPatternRule)(t),
127
+ required: (0, Validation_1.makeRequiredRule)(t)(true, t(Translation_1.Translation.UserPortal.ChangePassword.Field.NewPassword)),
128
+ }), { validationStatus: getErrorValidationClass('newPassword') })), error: errors.newPassword }),
129
+ react_1.default.createElement(LabelAndInputGroup, { label: t(Translation_1.Translation.UserPortal.ChangePassword.Field.ConfirmPassword), component: react_1.default.createElement(PasswordBox_1.PasswordBox, Object.assign({ placeholder: "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022" }, register('confirmPassword', {
130
+ required: (0, Validation_1.makeRequiredRule)(t)(!!newPasswordWatch, t(Translation_1.Translation.Step.Confirmation.Inputs.ConfirmPassword)),
131
+ validate: {
132
+ isSame: (0, Validation_1.isPasswordMatch)(t)(newPasswordWatch),
133
+ },
134
+ }), { validationStatus: getErrorValidationClass('confirmPassword') })), error: errors.confirmPassword })))),
135
+ react_1.default.createElement("div", { className: "row" },
136
+ react_1.default.createElement("div", { className: "col-md-8" },
137
+ react_1.default.createElement("div", { className: "u-flex justify-content-start u-marg-top--heavy" },
138
+ react_1.default.createElement(react_router_dom_1.Link, { to: "/account/home", className: "u-marg-right" },
139
+ react_1.default.createElement(BEButton_1.default, null, t(Translation_1.Translation.Misc.Cancel))),
140
+ react_1.default.createElement(BEButton_1.default, { disabled: saveButtonDisabled, isLoading: isLoadingMember, primary: true, filled: true, htmlType: "submit" }, t(Translation_1.Translation.Misc.Save))))))));
141
+ };
142
+ exports.AccountChangePasswordPage = AccountChangePasswordPage;
143
+ //# sourceMappingURL=AccountChangePasswordPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccountChangePasswordPage.js","sourceRoot":"/","sources":["src/pages/account/ChangePassword/AccountChangePasswordPage.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAqG;AACrG,2CAAkD;AAClD,+CAA+D;AAC/D,qDAAsD;AACtD,iDAA+C;AAC/C,uDAAwC;AACxC,0DAAuD;AAEvD,6EAAqD;AACrD,6EAAqD;AACrD,yDAA0D;AAC1D,8EAA2E;AAC3E,kEAA2D;AAC3D,wCAAqC;AACrC,kDAA+F;AAE/F,wFAAgE;AAChE,2EAAqE;AACrE,oDAAiD;AASjD,MAAM,kBAAkB,GAAG,CAAC,KAA8B,EAAE,EAAE;IAC1D,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IAChD,OAAO,CACH,uCAAK,SAAS,EAAC,0BAA0B;QACrC,uCAAK,SAAS,EAAC,UAAU;YACrB,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,IAAI,UAC3B,KAAK,CACH,CACL;QACN,uCAAK,SAAS,EAAC,UAAU;YACpB,SAAS;YACT,CAAC,CAAC,KAAK,IAAI,CACR,qCAAG,SAAS,EAAC,YAAY,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAChD,KAAK,CAAC,OAAO,CACd,CACP;YAEA,CAAC,CAAC,IAAI,IAAI,CACP,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,aAAK,CAAC,IAAI,IACxC,IAAI,CACF,CACV,CACC,CACJ,CACT,CAAC;AACN,CAAC,CAAC;AAIK,MAAM,yBAAyB,GAAG,GAAG,EAAE;IAC1C,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,GAAG,IAAA,kBAAU,EAAC,gCAAqB,CAAC,CAAC;IACvF,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,uBAAe,GAAE,CAAC;IACpC,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAE/B,MAAM,EACF,OAAO,EACP,KAAK,EACL,QAAQ,EACR,SAAS,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAC9B,YAAY,GACf,GAAG,IAAA,yBAAO,EAAa;QACpB,IAAI,EAAE,UAAU;QAChB,cAAc,EAAE,UAAU;QAC1B,aAAa,EAAE;YACX,eAAe,EAAE,EAAE;YACnB,WAAW,EAAE,EAAE;YACf,eAAe,EAAE,EAAE;SACR;KAClB,CAAC,CAAC;IAEH,MAAM,gBAAgB,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC;IAE9C,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC/B,CAAC,EAAE,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC,CAAC;IAEhC,MAAM,uBAAuB,GAAG,CAAC,IAAsB,EAAuB,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAEtH,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,EAA8D,IAAI,CAAC,CAAC;IACtG,MAAM,eAAe,GAA6F;QAC9G,CAAC,4BAAiB,CAAC,OAAO,CAAC,EAAE;YACzB,IAAI,EAAE,iBAAS,CAAC,OAAO;YACvB,IAAI,EAAE,eAAQ,CAAC,KAAK;YACpB,OAAO,EAAE,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,cAAc,CAAC,0BAA0B,CAAC;SAC/E;QACD,CAAC,4BAAiB,CAAC,sBAAsB,CAAC,EAAE;YACxC,IAAI,EAAE,iBAAS,CAAC,MAAM;YACtB,IAAI,EAAE,eAAQ,CAAC,KAAK;YACpB,OAAO,EAAE,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,cAAc,CAAC,sBAAsB,CAAC;SAC3E;QACD,CAAC,4BAAiB,CAAC,sBAAsB,CAAC,EAAE;YACxC,IAAI,EAAE,iBAAS,CAAC,MAAM;YACtB,IAAI,EAAE,eAAQ,CAAC,KAAK;YACpB,OAAO,EAAE,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,cAAc,CAAC,sBAAsB,CAAC;SAC3E;KACJ,CAAC;IAEF,MAAM,gBAAgB,GAAG,CAAC,EAAE,eAAe,EAAE,WAAW,EAAc,EAAE,EAAE;QACtE,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAG,eAAe,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC,KAAoC,EAAE,EAAE;YACpG,IAAI,KAAK,EAAE;gBACP,MAAM,YAAY,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;gBAC5C,IAAI,YAAY,EAAE;oBACd,QAAQ,CAAC,YAAY,CAAC,CAAC;iBAC1B;aACJ;QACL,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,MAAM,kBAAkB,GAAG,CAAC,OAAO,IAAI,eAAe,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;IAEvF,OAAO,CACH;QACI,uCAAK,SAAS,EAAC,uDAAuD;YAClE,8BAAC,uBAAI,IAAC,EAAE,EAAE,6BAAa,CAAC,cAAc,CAAC,IAAI;gBACvC,8BAAC,kBAAQ,IAAC,MAAM,QAAC,IAAI,EAAE,eAAQ,CAAC,SAAS,EAAE,IAAI,EAAC,OAAO,IAClD,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,cAAc,CAAC,aAAa,CAAC,CAChD,CACR,CACL;QACN,uCAAK,SAAS,EAAC,wBAAwB;YACnC,8BAAC,kBAAQ,IAAC,IAAI,EAAC,aAAa,EAAC,IAAI,UAC5B,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CACvC,CACT;QACN,uCAAK,SAAS,EAAC,wBAAwB;YACnC,8BAAC,wBAAc,IAAC,IAAI,EAAE,CAAC,CAAC,KAAK;gBACzB,uCAAK,SAAS,EAAC,KAAK;oBAChB,uCAAK,SAAS,EAAC,UAAU;wBACrB,8BAAC,eAAK,IAAC,IAAI,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,EAAE,IAAI,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI;4BACvC,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,IAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,CAAQ,CAC/C,CACN,CACJ,CACO,CACf;QACN,wCAAM,QAAQ,EAAE,YAAY,CAAC,gBAAgB,CAAC;YAC1C,uCAAK,SAAS,EAAC,KAAK;gBAChB,uCAAK,SAAS,EAAC,UAAU;oBACrB;wBACI,8BAAC,kBAAkB,IACf,KAAK,EAAE,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC,eAAe,CAAC,EACrE,SAAS,EACL,8BAAC,yBAAW,kBACR,WAAW,EAAC,4FAAiB,IACzB,QAAQ,CAAC,iBAAiB,EAAE;gCAC5B,OAAO,EAAE,IAAA,oCAAuB,EAAC,CAAC,CAAC;gCACnC,QAAQ,EAAE,IAAA,6BAAgB,EAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;6BACtG,CAAC,IACF,gBAAgB,EAAE,uBAAuB,CAAC,iBAAiB,CAAC,IAC9D,EAEN,KAAK,EAAE,MAAM,CAAC,eAAe,GAC/B;wBACF,8BAAC,kBAAkB,IACf,KAAK,EAAE,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC,WAAW,CAAC,EACjE,SAAS,EACL,8BAAC,yBAAW,kBACR,WAAW,EAAC,4FAAiB,IACzB,QAAQ,CAAC,aAAa,EAAE;gCACxB,OAAO,EAAE,IAAA,oCAAuB,EAAC,CAAC,CAAC;gCACnC,QAAQ,EAAE,IAAA,6BAAgB,EAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;6BAClG,CAAC,IACF,gBAAgB,EAAE,uBAAuB,CAAC,aAAa,CAAC,IAC1D,EAEN,KAAK,EAAE,MAAM,CAAC,WAAW,GAC3B;wBACF,8BAAC,kBAAkB,IACf,KAAK,EAAE,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC,eAAe,CAAC,EACrE,SAAS,EACL,8BAAC,yBAAW,kBACR,WAAW,EAAC,4FAAiB,IACzB,QAAQ,CAAC,iBAAiB,EAAE;gCAC5B,QAAQ,EAAE,IAAA,6BAAgB,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;gCAC1G,QAAQ,EAAE;oCACN,MAAM,EAAE,IAAA,4BAAe,EAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC;iCAC/C;6BACJ,CAAC,IACF,gBAAgB,EAAE,uBAAuB,CAAC,iBAAiB,CAAC,IAC9D,EAEN,KAAK,EAAE,MAAM,CAAC,eAAe,GAC/B,CACA,CACJ,CACJ;YACN,uCAAK,SAAS,EAAC,KAAK;gBAChB,uCAAK,SAAS,EAAC,UAAU;oBACrB,uCAAK,SAAS,EAAC,gDAAgD;wBAC3D,8BAAC,uBAAI,IAAC,EAAE,EAAC,eAAe,EAAC,SAAS,EAAC,cAAc;4BAC7C,8BAAC,kBAAQ,QAAE,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAY,CAC9C;wBACP,8BAAC,kBAAQ,IAAC,QAAQ,EAAE,kBAAkB,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,QAAC,MAAM,QAAC,QAAQ,EAAC,QAAQ,IAC/F,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAClB,CACT,CACJ,CACJ,CACH,CACR,CACN,CAAC;AACN,CAAC,CAAC;AAzJW,QAAA,yBAAyB,6BAyJpC","sourcesContent":["import { AuthenticationContext, CognitoLoginState, IMemberChangePassword } 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 { Link } from 'react-router-dom';\nimport { Translation } from 'translations/Translation';\n\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 { Color } from '@/util/Color';\nimport { isPasswordMatch, makePasswordPatternRule, makeRequiredRule } from '@/util/Validation';\n\nimport AutoAutoHeight from '../../../animations/AutoAutoHeight';\nimport Alert, { AlertType } from '../../../components/generic/Alert';\nimport { AccountRoutes } from '../AccountRoutes';\n\ntype LabelAndInputGroupProps = {\n component: React.ReactNode;\n label: string;\n hint?: string;\n error?: FieldError;\n};\n\nconst LabelAndInputGroup = (props: LabelAndInputGroupProps) => {\n const { label, component, hint, error } = props;\n return (\n <div className=\"row u-marg-bottom--heavy\">\n <div className=\"col-md-4\">\n <Text type={TextType.Small} bold>\n {label}\n </Text>\n </div>\n <div className=\"col-md-8\">\n {component}\n {!!error && (\n <p className=\"text-small\" style={{ color: '#ED4362' }}>\n {error.message}\n </p>\n )}\n\n {!!hint && (\n <Text type={TextType.Label} color={Color.Grey}>\n {hint}\n </Text>\n )}\n </div>\n </div>\n );\n};\n\ntype FormValues = IMemberChangePassword;\n\nexport const AccountChangePasswordPage = () => {\n const { loading: isLoadingMember, changePassword } = useContext(AuthenticationContext);\n const { hotel } = useCurrentHotel();\n const { t } = useTranslation();\n\n const {\n trigger,\n watch,\n register,\n formState: { errors, isDirty },\n handleSubmit,\n } = useForm<FormValues>({\n mode: 'onChange',\n reValidateMode: 'onChange',\n defaultValues: {\n currentPassword: '',\n newPassword: '',\n confirmPassword: '',\n } as FormValues,\n });\n\n const newPasswordWatch = watch('newPassword');\n\n useEffect(() => {\n trigger('confirmPassword');\n }, [newPasswordWatch, trigger]);\n\n const getErrorValidationClass = (name: keyof FormValues): 'error' | undefined => (errors[name] ? 'error' : undefined);\n\n const [alert, setAlert] = useState<{ type: AlertType; icon: IconType; message: string } | null>(null);\n const notificationMap: Partial<Record<CognitoLoginState, { type: AlertType; icon: IconType; message: string }>> = {\n [CognitoLoginState.Success]: {\n type: AlertType.Success,\n icon: IconType.Check,\n message: t(Translation.UserPortal.ChangePassword.ChangePasswordSuccessfully),\n },\n [CognitoLoginState.NotAuthorizedException]: {\n type: AlertType.Danger,\n icon: IconType.Error,\n message: t(Translation.UserPortal.ChangePassword.NotAuthorizedException),\n },\n [CognitoLoginState.LimitExceededException]: {\n type: AlertType.Danger,\n icon: IconType.Error,\n message: t(Translation.UserPortal.ChangePassword.LimitExceededException),\n },\n };\n\n const onChangePassword = ({ currentPassword, newPassword }: FormValues) => {\n setAlert(null);\n changePassword?.(currentPassword, newPassword, { hotel }).then((state: CognitoLoginState | undefined) => {\n if (state) {\n const notification = notificationMap[state];\n if (notification) {\n setAlert(notification);\n }\n }\n });\n };\n\n const saveButtonDisabled = !isDirty || isLoadingMember || !!Object.keys(errors).length;\n\n return (\n <>\n <div className=\"u-marg-top--heavy@m u-marg-top@- u-marg-bottom--heavy\">\n <Link to={AccountRoutes.ProfileDetails.path}>\n <BEButton isText icon={IconType.ArrowLeft} size=\"small\">\n {t(Translation.UserPortal.ChangePassword.BackToProfile)}\n </BEButton>\n </Link>\n </div>\n <div className=\"u-marg-bottom--heavy@m\">\n <Headline size=\"extra-large\" bold>\n {t(Translation.Navigation.Menu.ChangePassword)}\n </Headline>\n </div>\n <div className=\"u-marg-bottom--heavy@m\">\n <AutoAutoHeight open={!!alert}>\n <div className=\"row\">\n <div className=\"col-md-8\">\n <Alert type={alert?.type} icon={alert?.icon}>\n <Text type={TextType.Small}>{alert?.message}</Text>\n </Alert>\n </div>\n </div>\n </AutoAutoHeight>\n </div>\n <form onSubmit={handleSubmit(onChangePassword)}>\n <div className=\"row\">\n <div className=\"col-md-8\">\n <div>\n <LabelAndInputGroup\n label={t(Translation.UserPortal.ChangePassword.Field.CurrentPassword)}\n component={\n <PasswordBox\n placeholder=\"•••••••••••••••\"\n {...register('currentPassword', {\n pattern: makePasswordPatternRule(t),\n required: makeRequiredRule(t)(true, t(Translation.UserPortal.ChangePassword.Field.CurrentPassword)),\n })}\n validationStatus={getErrorValidationClass('currentPassword')}\n />\n }\n error={errors.currentPassword}\n />\n <LabelAndInputGroup\n label={t(Translation.UserPortal.ChangePassword.Field.NewPassword)}\n component={\n <PasswordBox\n placeholder=\"•••••••••••••••\"\n {...register('newPassword', {\n pattern: makePasswordPatternRule(t),\n required: makeRequiredRule(t)(true, t(Translation.UserPortal.ChangePassword.Field.NewPassword)),\n })}\n validationStatus={getErrorValidationClass('newPassword')}\n />\n }\n error={errors.newPassword}\n />\n <LabelAndInputGroup\n label={t(Translation.UserPortal.ChangePassword.Field.ConfirmPassword)}\n component={\n <PasswordBox\n placeholder=\"•••••••••••••••\"\n {...register('confirmPassword', {\n required: makeRequiredRule(t)(!!newPasswordWatch, t(Translation.Step.Confirmation.Inputs.ConfirmPassword)),\n validate: {\n isSame: isPasswordMatch(t)(newPasswordWatch),\n },\n })}\n validationStatus={getErrorValidationClass('confirmPassword')}\n />\n }\n error={errors.confirmPassword}\n />\n </div>\n </div>\n </div>\n <div className=\"row\">\n <div className=\"col-md-8\">\n <div className=\"u-flex justify-content-start u-marg-top--heavy\">\n <Link to=\"/account/home\" className=\"u-marg-right\">\n <BEButton>{t(Translation.Misc.Cancel)}</BEButton>\n </Link>\n <BEButton disabled={saveButtonDisabled} isLoading={isLoadingMember} primary filled htmlType=\"submit\">\n {t(Translation.Misc.Save)}\n </BEButton>\n </div>\n </div>\n </div>\n </form>\n </>\n );\n};\n"]}
@@ -49,7 +49,6 @@ const EnhancedPhoneNumberField_1 = __importDefault(require("../../../components/
49
49
  const Headline_1 = __importDefault(require("../../../components/generic/Headline"));
50
50
  const Icon_1 = require("../../../components/generic/Icon/Icon");
51
51
  const LineBreak_1 = __importDefault(require("../../../components/generic/LineBreak"));
52
- const PasswordBox_1 = require("../../../components/generic/PasswordBox/PasswordBox");
53
52
  const Text_1 = __importStar(require("../../../components/generic/Text"));
54
53
  const TextBox_1 = __importDefault(require("../../../components/generic/TextBox"));
55
54
  const StepConfirmationCountrySelector_1 = __importDefault(require("../../../components/steps/confirmation/StepConfirmationCountrySelector"));
@@ -70,7 +69,7 @@ const AccountDetailsProfilePage = () => {
70
69
  const { roomstayMember, loading: isLoadingMember, updateMemberDetails } = (0, react_1.useContext)(contexts_1.RoomstayMemberContext);
71
70
  const notifications = (0, react_1.useContext)(contexts_1.NotificationContext);
72
71
  const { t } = (0, react_i18next_1.useTranslation)();
73
- const { watch, register, formState: { errors, isDirty }, handleSubmit, reset: resetFormValues, control, } = (0, react_hook_form_1.useForm)({
72
+ const { register, formState: { errors, isDirty }, handleSubmit, reset: resetFormValues, control, } = (0, react_hook_form_1.useForm)({
74
73
  mode: 'onChange',
75
74
  });
76
75
  const getErrorValidationClass = (name) => (errors[name] ? 'error' : undefined);
@@ -113,16 +112,6 @@ const AccountDetailsProfilePage = () => {
113
112
  }, validationStatus: getErrorValidationClass('phoneNumber') })));
114
113
  } }), error: errors.phoneNumber }),
115
114
  react_1.default.createElement(LineBreak_1.default, null),
116
- react_1.default.createElement(LabelAndInputGroup, { label: t(Translation_1.Translation.Step.Confirmation.Inputs.Password), component: react_1.default.createElement(PasswordBox_1.PasswordBox, Object.assign({ placeholder: "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022" }, register('password', {
117
- pattern: (0, Validation_1.makePasswordPatternRule)(t),
118
- }), { validationStatus: getErrorValidationClass('password') })), hint: "At least 8 characters long, case sensitive, can contain all symbols., no spaces.", error: errors.password }),
119
- react_1.default.createElement(LabelAndInputGroup, { label: t(Translation_1.Translation.Step.Confirmation.Inputs.ConfirmPassword), component: react_1.default.createElement(PasswordBox_1.PasswordBox, Object.assign({ placeholder: "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022" }, register('passwordRepeat', {
120
- required: (0, Validation_1.makeRequiredRule)(t)(!!watch('password'), t(Translation_1.Translation.Step.Confirmation.Inputs.ConfirmPassword)),
121
- validate: {
122
- isSame: (0, Validation_1.isPasswordMatch)(t)(watch('password')),
123
- },
124
- }), { validationStatus: getErrorValidationClass('passwordRepeat') })), error: errors.passwordRepeat }),
125
- react_1.default.createElement(LineBreak_1.default, null),
126
115
  react_1.default.createElement(LabelAndInputGroup, { label: t(Translation_1.Translation.Step.Confirmation.Inputs.Address), component: react_1.default.createElement(TextBox_1.default, Object.assign({}, register('address.address'))) }),
127
116
  react_1.default.createElement(LabelAndInputGroup, { label: t(Translation_1.Translation.Step.Confirmation.Inputs.City), component: react_1.default.createElement(TextBox_1.default, Object.assign({}, register('address.city'))) }),
128
117
  react_1.default.createElement(LabelAndInputGroup, { label: t(Translation_1.Translation.Step.Confirmation.Inputs.PostCode), component: react_1.default.createElement(TextBox_1.default, Object.assign({}, register('address.zip'))) }),
@@ -130,10 +119,16 @@ const AccountDetailsProfilePage = () => {
130
119
  const { ref } = field, rest = __rest(field, ["ref"]);
131
120
  return react_1.default.createElement(StepConfirmationCountrySelector_1.default, Object.assign({}, rest));
132
121
  } }) })))),
133
- react_1.default.createElement("div", { className: "u-flex justify-content-start u-marg-top--heavy" },
134
- react_1.default.createElement(react_router_dom_1.Link, { to: "/account/home", className: "u-marg-right" },
135
- react_1.default.createElement(BEButton_1.default, null, t(Translation_1.Translation.Misc.Cancel))),
136
- react_1.default.createElement(BEButton_1.default, { disabled: saveButtonDisabled, isLoading: isLoadingMember, primary: true, filled: true, htmlType: "submit" }, t(Translation_1.Translation.Misc.SaveAllChanges))))));
122
+ react_1.default.createElement("div", { className: "row" },
123
+ react_1.default.createElement("div", { className: "col-md-8" },
124
+ react_1.default.createElement("div", { className: "u-flex u-marg-top--heavy" },
125
+ react_1.default.createElement("div", { className: "u-flex" },
126
+ react_1.default.createElement(react_router_dom_1.Link, { to: "/account/home", className: "u-marg-right" },
127
+ react_1.default.createElement(BEButton_1.default, null, t(Translation_1.Translation.Misc.Cancel))),
128
+ react_1.default.createElement(BEButton_1.default, { disabled: saveButtonDisabled, isLoading: isLoadingMember, primary: true, filled: true, htmlType: "submit", className: "u-marg-right" }, t(Translation_1.Translation.Misc.SaveAllChanges))),
129
+ react_1.default.createElement("div", { className: "u-flex-grow" },
130
+ react_1.default.createElement(react_router_dom_1.Link, { to: AccountRoutes_1.AccountRoutes.ChangePassword.path },
131
+ react_1.default.createElement(BEButton_1.default, null, t(Translation_1.Translation.Navigation.Menu.ChangePassword))))))))));
137
132
  };
138
133
  exports.AccountDetailsProfilePage = AccountDetailsProfilePage;
139
134
  //# sourceMappingURL=AccountDetailsProfilePage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AccountDetailsProfilePage.js","sourceRoot":"/","sources":["src/pages/account/Details/AccountDetailsProfilePage.tsx"],"names":[],"mappings":"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","sourcesContent":["import { NotificationContext, RoomstayMemberContext } from '@frontend/contexts';\nimport type { IRoomstayMember } from '@roomstay/core';\nimport React, { useContext, useEffect } from 'react';\nimport { Controller, FieldError, useForm } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport { Link } from 'react-router-dom';\nimport { Translation } from 'translations/Translation';\n\nimport BEButton from '@/components/generic/BEButton';\nimport EnhancedPhoneNumberField from '@/components/generic/custom/EnhancedPhoneNumberField/EnhancedPhoneNumberField';\nimport Headline from '@/components/generic/Headline';\nimport { IconType } from '@/components/generic/Icon/Icon';\nimport LineBreak from '@/components/generic/LineBreak';\nimport { PasswordBox } from '@/components/generic/PasswordBox/PasswordBox';\nimport Text, { TextType } from '@/components/generic/Text';\nimport TextBox from '@/components/generic/TextBox';\nimport StepConfirmationCountrySelector from '@/components/steps/confirmation/StepConfirmationCountrySelector';\nimport { Color } from '@/util/Color';\nimport { isPasswordMatch, makePasswordPatternRule, makePhonePatternRule, makeRequiredRule } from '@/util/Validation';\n\nimport { AccountRoutes } from '../AccountRoutes';\n\ntype LabelAndInputGroupProps = {\n component: React.ReactNode;\n label: string;\n hint?: string;\n error?: FieldError;\n};\n\nconst LabelAndInputGroup = (props: LabelAndInputGroupProps) => {\n const { label, component, hint, error } = props;\n return (\n <div className=\"row u-marg-bottom--heavy\">\n <div className=\"col-md-4\">\n <Text type={TextType.Small} bold>\n {label}\n </Text>\n </div>\n <div className=\"col-md-8\">\n {component}\n {!!error && (\n <p className=\"text-small\" style={{ color: '#ED4362' }}>\n {error.message}\n </p>\n )}\n\n {!!hint && (\n <Text type={TextType.Label} color={Color.Grey}>\n {hint}\n </Text>\n )}\n </div>\n </div>\n );\n};\n\ntype FormValues = IRoomstayMember & {\n password: string;\n passwordRepeat: string;\n};\n\nexport const AccountDetailsProfilePage = () => {\n const { roomstayMember, loading: isLoadingMember, updateMemberDetails } = useContext(RoomstayMemberContext);\n const notifications = useContext(NotificationContext);\n\n const { t } = useTranslation();\n\n const {\n watch,\n register,\n formState: { errors, isDirty },\n handleSubmit,\n reset: resetFormValues,\n control,\n } = useForm<FormValues>({\n mode: 'onChange',\n });\n\n const getErrorValidationClass = (name: keyof FormValues): 'error' | undefined => (errors[name] ? 'error' : undefined);\n\n useEffect(() => {\n if (roomstayMember) {\n resetFormValues(roomstayMember);\n }\n }, [roomstayMember]);\n\n const onSaveDetails = (values: FormValues) => {\n updateMemberDetails?.(values).then(() => {\n notifications.addNotification({\n icon: IconType.Check,\n children: <Text>{t(Translation.UserPortal.ProfileScreen.DetailsSavedSuccessfully)}</Text>,\n });\n });\n };\n\n const saveButtonDisabled = !isDirty || isLoadingMember || !!Object.keys(errors).length;\n\n return (\n <>\n <div className=\"u-marg-top--heavy@m u-marg-top@- u-marg-bottom--heavy\">\n <Link to={AccountRoutes.Home.path}>\n <BEButton isText icon={IconType.ArrowLeft} size=\"small\">\n {t(Translation.Reservation.BackToYourAccount)}\n </BEButton>\n </Link>\n </div>\n <div className=\"u-marg-bottom--heavy@m\">\n <Headline size=\"extra-large\" bold>\n {t(Translation.Navigation.Menu.ProfileInformation)}\n </Headline>\n </div>\n <form onSubmit={handleSubmit(onSaveDetails)}>\n <div className=\"row\">\n <div className=\"col-md-8\">\n <div>\n <LabelAndInputGroup\n label={t(Translation.Step.Confirmation.Inputs.Forename)}\n component={\n <TextBox\n validationStatus={getErrorValidationClass('forename')}\n {...register('forename', {\n required: makeRequiredRule(t)(true, t(Translation.Step.Confirmation.Inputs.Forename)),\n })}\n />\n }\n error={errors.forename}\n />\n <LabelAndInputGroup\n label={t(Translation.Step.Confirmation.Inputs.Surname)}\n component={\n <TextBox\n validationStatus={getErrorValidationClass('surname')}\n {...register('surname', {\n required: makeRequiredRule(t)(true, t(Translation.Step.Confirmation.Inputs.Surname)),\n })}\n />\n }\n error={errors.surname}\n />\n <LabelAndInputGroup\n label={t(Translation.Step.Confirmation.Inputs.Email)}\n component={<TextBox validationStatus={getErrorValidationClass('email')} inputProps={{ disabled: true }} value={roomstayMember?.email} />}\n error={errors.email}\n />\n <LabelAndInputGroup\n label={t(Translation.Step.Confirmation.Inputs.Phone)}\n component={\n <Controller\n rules={{\n pattern: makePhonePatternRule(t),\n }}\n control={control}\n name=\"phoneNumber\"\n render={({ field }) => {\n return (\n <EnhancedPhoneNumberField\n {...field}\n onChange={(e: any) => {\n field.onChange(e);\n }}\n validationStatus={getErrorValidationClass('phoneNumber')}\n />\n );\n }}\n />\n }\n error={errors.phoneNumber}\n />\n\n <LineBreak />\n\n <LabelAndInputGroup\n label={t(Translation.Step.Confirmation.Inputs.Password)}\n component={\n <PasswordBox\n placeholder=\"•••••••••••••••\"\n {...register('password', {\n pattern: makePasswordPatternRule(t),\n })}\n validationStatus={getErrorValidationClass('password')}\n />\n }\n hint=\"At least 8 characters long, case sensitive, can contain all symbols., no spaces.\"\n error={errors.password}\n />\n <LabelAndInputGroup\n label={t(Translation.Step.Confirmation.Inputs.ConfirmPassword)}\n component={\n <PasswordBox\n placeholder=\"•••••••••••••••\"\n {...register('passwordRepeat', {\n required: makeRequiredRule(t)(!!watch('password'), t(Translation.Step.Confirmation.Inputs.ConfirmPassword)),\n validate: {\n isSame: isPasswordMatch(t)(watch('password')),\n },\n })}\n validationStatus={getErrorValidationClass('passwordRepeat')}\n />\n }\n error={errors.passwordRepeat}\n />\n\n <LineBreak />\n\n <LabelAndInputGroup label={t(Translation.Step.Confirmation.Inputs.Address)} component={<TextBox {...register('address.address')} />} />\n <LabelAndInputGroup label={t(Translation.Step.Confirmation.Inputs.City)} component={<TextBox {...register('address.city')} />} />\n <LabelAndInputGroup label={t(Translation.Step.Confirmation.Inputs.PostCode)} component={<TextBox {...register('address.zip')} />} />\n <LabelAndInputGroup\n label={t(Translation.Step.Confirmation.Inputs.Country)}\n component={\n <Controller\n control={control}\n name=\"address.country\"\n render={({ field }) => {\n const { ref, ...rest } = field;\n return <StepConfirmationCountrySelector {...rest} />;\n }}\n />\n }\n />\n </div>\n </div>\n </div>\n\n <div className=\"u-flex justify-content-start u-marg-top--heavy\">\n <Link to=\"/account/home\" className=\"u-marg-right\">\n <BEButton>{t(Translation.Misc.Cancel)}</BEButton>\n </Link>\n <BEButton disabled={saveButtonDisabled} isLoading={isLoadingMember} primary filled htmlType=\"submit\">\n {t(Translation.Misc.SaveAllChanges)}\n </BEButton>\n </div>\n </form>\n </>\n );\n};\n"]}
1
+ {"version":3,"file":"AccountDetailsProfilePage.js","sourceRoot":"/","sources":["src/pages/account/Details/AccountDetailsProfilePage.tsx"],"names":[],"mappings":"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","sourcesContent":["import { NotificationContext, RoomstayMemberContext } from '@frontend/contexts';\nimport type { IRoomstayMember } from '@roomstay/core';\nimport React, { useContext, useEffect } from 'react';\nimport { Controller, FieldError, useForm } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport { Link } from 'react-router-dom';\nimport { Translation } from 'translations/Translation';\n\nimport BEButton from '@/components/generic/BEButton';\nimport EnhancedPhoneNumberField from '@/components/generic/custom/EnhancedPhoneNumberField/EnhancedPhoneNumberField';\nimport Headline from '@/components/generic/Headline';\nimport { IconType } from '@/components/generic/Icon/Icon';\nimport LineBreak from '@/components/generic/LineBreak';\nimport Text, { TextType } from '@/components/generic/Text';\nimport TextBox from '@/components/generic/TextBox';\nimport StepConfirmationCountrySelector from '@/components/steps/confirmation/StepConfirmationCountrySelector';\nimport { Color } from '@/util/Color';\nimport { makePhonePatternRule, makeRequiredRule } from '@/util/Validation';\n\nimport { AccountRoutes } from '../AccountRoutes';\n\ntype LabelAndInputGroupProps = {\n component: React.ReactNode;\n label: string;\n hint?: string;\n error?: FieldError;\n};\n\nconst LabelAndInputGroup = (props: LabelAndInputGroupProps) => {\n const { label, component, hint, error } = props;\n return (\n <div className=\"row u-marg-bottom--heavy\">\n <div className=\"col-md-4\">\n <Text type={TextType.Small} bold>\n {label}\n </Text>\n </div>\n <div className=\"col-md-8\">\n {component}\n {!!error && (\n <p className=\"text-small\" style={{ color: '#ED4362' }}>\n {error.message}\n </p>\n )}\n\n {!!hint && (\n <Text type={TextType.Label} color={Color.Grey}>\n {hint}\n </Text>\n )}\n </div>\n </div>\n );\n};\n\ntype FormValues = IRoomstayMember;\n\nexport const AccountDetailsProfilePage = () => {\n const { roomstayMember, loading: isLoadingMember, updateMemberDetails } = useContext(RoomstayMemberContext);\n const notifications = useContext(NotificationContext);\n\n const { t } = useTranslation();\n\n const {\n register,\n formState: { errors, isDirty },\n handleSubmit,\n reset: resetFormValues,\n control,\n } = useForm<FormValues>({\n mode: 'onChange',\n });\n\n const getErrorValidationClass = (name: keyof FormValues): 'error' | undefined => (errors[name] ? 'error' : undefined);\n\n useEffect(() => {\n if (roomstayMember) {\n resetFormValues(roomstayMember);\n }\n }, [roomstayMember]);\n\n const onSaveDetails = (values: FormValues) => {\n updateMemberDetails?.(values).then(() => {\n notifications.addNotification({\n icon: IconType.Check,\n children: <Text>{t(Translation.UserPortal.ProfileScreen.DetailsSavedSuccessfully)}</Text>,\n });\n });\n };\n\n const saveButtonDisabled = !isDirty || isLoadingMember || !!Object.keys(errors).length;\n\n return (\n <>\n <div className=\"u-marg-top--heavy@m u-marg-top@- u-marg-bottom--heavy\">\n <Link to={AccountRoutes.Home.path}>\n <BEButton isText icon={IconType.ArrowLeft} size=\"small\">\n {t(Translation.Reservation.BackToYourAccount)}\n </BEButton>\n </Link>\n </div>\n <div className=\"u-marg-bottom--heavy@m\">\n <Headline size=\"extra-large\" bold>\n {t(Translation.Navigation.Menu.ProfileInformation)}\n </Headline>\n </div>\n <form onSubmit={handleSubmit(onSaveDetails)}>\n <div className=\"row\">\n <div className=\"col-md-8\">\n <div>\n <LabelAndInputGroup\n label={t(Translation.Step.Confirmation.Inputs.Forename)}\n component={\n <TextBox\n validationStatus={getErrorValidationClass('forename')}\n {...register('forename', {\n required: makeRequiredRule(t)(true, t(Translation.Step.Confirmation.Inputs.Forename)),\n })}\n />\n }\n error={errors.forename}\n />\n <LabelAndInputGroup\n label={t(Translation.Step.Confirmation.Inputs.Surname)}\n component={\n <TextBox\n validationStatus={getErrorValidationClass('surname')}\n {...register('surname', {\n required: makeRequiredRule(t)(true, t(Translation.Step.Confirmation.Inputs.Surname)),\n })}\n />\n }\n error={errors.surname}\n />\n <LabelAndInputGroup\n label={t(Translation.Step.Confirmation.Inputs.Email)}\n component={<TextBox validationStatus={getErrorValidationClass('email')} inputProps={{ disabled: true }} value={roomstayMember?.email} />}\n error={errors.email}\n />\n <LabelAndInputGroup\n label={t(Translation.Step.Confirmation.Inputs.Phone)}\n component={\n <Controller\n rules={{\n pattern: makePhonePatternRule(t),\n }}\n control={control}\n name=\"phoneNumber\"\n render={({ field }) => {\n return (\n <EnhancedPhoneNumberField\n {...field}\n onChange={(e: any) => {\n field.onChange(e);\n }}\n validationStatus={getErrorValidationClass('phoneNumber')}\n />\n );\n }}\n />\n }\n error={errors.phoneNumber}\n />\n\n <LineBreak />\n\n <LabelAndInputGroup label={t(Translation.Step.Confirmation.Inputs.Address)} component={<TextBox {...register('address.address')} />} />\n <LabelAndInputGroup label={t(Translation.Step.Confirmation.Inputs.City)} component={<TextBox {...register('address.city')} />} />\n <LabelAndInputGroup label={t(Translation.Step.Confirmation.Inputs.PostCode)} component={<TextBox {...register('address.zip')} />} />\n <LabelAndInputGroup\n label={t(Translation.Step.Confirmation.Inputs.Country)}\n component={\n <Controller\n control={control}\n name=\"address.country\"\n render={({ field }) => {\n const { ref, ...rest } = field;\n return <StepConfirmationCountrySelector {...rest} />;\n }}\n />\n }\n />\n </div>\n </div>\n </div>\n <div className=\"row\">\n <div className=\"col-md-8\">\n <div className=\"u-flex u-marg-top--heavy\">\n <div className=\"u-flex\">\n <Link to=\"/account/home\" className=\"u-marg-right\">\n <BEButton>{t(Translation.Misc.Cancel)}</BEButton>\n </Link>\n <BEButton disabled={saveButtonDisabled} isLoading={isLoadingMember} primary filled htmlType=\"submit\" className=\"u-marg-right\">\n {t(Translation.Misc.SaveAllChanges)}\n </BEButton>\n </div>\n <div className=\"u-flex-grow\">\n <Link to={AccountRoutes.ChangePassword.path}>\n <BEButton>{t(Translation.Navigation.Menu.ChangePassword)}</BEButton>\n </Link>\n </div>\n </div>\n </div>\n </div>\n </form>\n </>\n );\n};\n"]}
@@ -43,6 +43,7 @@ const StepOneDateRangePicker_1 = __importDefault(require("../../../components/st
43
43
  const StepOneDateRangePickerLegend_1 = __importDefault(require("../../../components/steps/date/StepOneDateRangePickerLegend"));
44
44
  const StepOneNextStepButton_1 = __importDefault(require("../../../components/steps/date/StepOneNextStepButton"));
45
45
  const StepOneStatusPeople_1 = __importDefault(require("../../../components/steps/date/StepOneStatusPeople"));
46
+ const BasketRow_1 = __importDefault(require("../../../models/BasketRow"));
46
47
  const Color_1 = require("../../../util/Color");
47
48
  const ScreenSize_1 = __importDefault(require("../../../util/ScreenSize"));
48
49
  const BEMobileSummary = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('../../../components/summary/BEMobileSummary'))));
@@ -54,6 +55,7 @@ const StepDate = () => {
54
55
  const { hotel } = (0, hooks_1.useCurrentHotel)();
55
56
  const { t } = (0, react_i18next_1.useTranslation)();
56
57
  const peopleRef = (0, react_1.useRef)(null);
58
+ const { selectedBasketRow, addBasketRow } = basketContext;
57
59
  (0, react_1.useEffect)(() => {
58
60
  if (context.screenSize <= ScreenSize_1.default.Medium && basketContext.endDate) {
59
61
  if (peopleRef) {
@@ -69,6 +71,11 @@ const StepDate = () => {
69
71
  const event = new events_1.StepDateViewEvent();
70
72
  raise(event);
71
73
  }, []);
74
+ (0, react_1.useEffect)(() => {
75
+ if (!selectedBasketRow) {
76
+ addBasketRow(new BasketRow_1.default());
77
+ }
78
+ }, [selectedBasketRow]);
72
79
  return (react_1.default.createElement("div", { className: "container" },
73
80
  context.screenSize <= ScreenSize_1.default.Medium && react_1.default.createElement(BEMobileSummary, null),
74
81
  context.screenSize >= ScreenSize_1.default.Large && (react_1.default.createElement(react_1.default.Fragment, null,
@@ -1 +1 @@
1
- {"version":3,"file":"StepDateComponent.js","sourceRoot":"/","sources":["src/pages/steps/StepDate/StepDateComponent.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext, BookingEngineContext, CompanyContext } from '@frontend/contexts';\nimport { StepDateViewEvent } from '@frontend/events';\nimport { useCurrentHotel, useEvent } from '@frontend/hooks';\nimport { HotelOverridesContext } from 'contexts/HotelOverridesContext';\nimport React, { lazy, Suspense, useContext, useEffect, useRef } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport Headline from '@/components/generic/Headline';\nimport LineBreak from '@/components/generic/LineBreak';\nimport Text from '@/components/generic/Text';\nimport PeoplePicker from '@/components/steps/date/PeoplePicker';\nimport StepDatePricePerRoom from '@/components/steps/date/StepDatePricePerRoom';\nimport StepOneDateRange from '@/components/steps/date/StepOneDateRange';\nimport StepOneDateRangePicker from '@/components/steps/date/StepOneDateRangePicker';\nimport StepOneDateRangePickerLegend from '@/components/steps/date/StepOneDateRangePickerLegend';\nimport StepOneNextStepButton from '@/components/steps/date/StepOneNextStepButton';\nimport StepOneStatusPeople from '@/components/steps/date/StepOneStatusPeople';\nimport { Color } from '@/util/Color';\nimport ScreenSize from '@/util/ScreenSize';\nconst BEMobileSummary = lazy(() => import('@/components/summary/BEMobileSummary'));\n\nconst StepDate = () => {\n const context = useContext(BookingEngineContext);\n const basketContext = useContext(BasketContext);\n const ccx = useContext(CompanyContext);\n const { hideByLine } = useContext(HotelOverridesContext);\n\n const { hotel } = useCurrentHotel();\n\n const { t } = useTranslation();\n const peopleRef = useRef<HTMLDivElement | null>(null);\n\n useEffect(() => {\n if (context.screenSize <= ScreenSize.Medium && basketContext.endDate) {\n if (peopleRef) {\n setTimeout(() => {\n peopleRef.current?.scrollIntoView?.({ behavior: 'smooth', block: 'center', inline: 'nearest' });\n }, 50);\n }\n }\n }, [basketContext.endDate]);\n\n const { raise } = useEvent();\n\n useEffect(() => {\n const event = new StepDateViewEvent();\n raise(event);\n }, []);\n\n return (\n <div className=\"container\">\n {context.screenSize <= ScreenSize.Medium && <BEMobileSummary />}\n {context.screenSize >= ScreenSize.Large && (\n <>\n <div className=\"row step-date-hotel-info\">\n <div className=\"col-md-4 col-lg-3\">\n <div className=\"u-marg-bottom--heavy\">\n <Headline bold>{t(Translation.Step.Date.Reservation)}</Headline>\n </div>\n <Headline className=\"hotel-name\" color={Color.Navy}>\n {hotel?.name}\n </Headline>\n {!hideByLine && (\n <Text className=\"company-name\" color={Color.DarkGrey}>\n {t(Translation.Misc.By)} {ccx.name}\n </Text>\n )}\n </div>\n <div className=\"col-md-8 col-lg-9\">\n <div className=\"row justify-content-between\">\n <div className=\"col-md-6\">\n <div className=\"u-marg-bottom--heavy\">\n <Headline bold>{t(Translation.Step.Date.SelectYourDate)}</Headline>\n </div>\n <div className=\"step-one-status\">\n <StepOneDateRange />\n <StepOneStatusPeople />\n </div>\n </div>\n <div className=\"col-md-4\">\n <StepDatePricePerRoom isMobile={false} />\n </div>\n </div>\n </div>\n </div>\n <LineBreak />\n </>\n )}\n\n <div className=\"row flex-column-reverse flex-md-row align-items-center align-items-md-start\">\n <div ref={peopleRef} className=\"col-md-4 col-xl-3\">\n <PeoplePicker />\n </div>\n <div className=\"col-md-8 col-xl-9\">\n <div className=\"w-100 u-flex justify-content-center flex-column align-items-center\">\n <Suspense fallback=\"loading....\">\n <StepOneDateRangePicker />\n </Suspense>\n </div>\n {context.screenSize >= ScreenSize.Large ? <StepOneDateRangePickerLegend /> : <LineBreak />}\n </div>\n </div>\n <div className=\"u-flex justify-content-end\">\n <StepOneNextStepButton />\n </div>\n </div>\n );\n};\nexport default StepDate;\n"]}
1
+ {"version":3,"file":"StepDateComponent.js","sourceRoot":"/","sources":["src/pages/steps/StepDate/StepDateComponent.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext, BookingEngineContext, CompanyContext } from '@frontend/contexts';\nimport { StepDateViewEvent } from '@frontend/events';\nimport { useCurrentHotel, useEvent } from '@frontend/hooks';\nimport { HotelOverridesContext } from 'contexts/HotelOverridesContext';\nimport React, { lazy, Suspense, useContext, useEffect, useRef } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport Headline from '@/components/generic/Headline';\nimport LineBreak from '@/components/generic/LineBreak';\nimport Text from '@/components/generic/Text';\nimport PeoplePicker from '@/components/steps/date/PeoplePicker';\nimport StepDatePricePerRoom from '@/components/steps/date/StepDatePricePerRoom';\nimport StepOneDateRange from '@/components/steps/date/StepOneDateRange';\nimport StepOneDateRangePicker from '@/components/steps/date/StepOneDateRangePicker';\nimport StepOneDateRangePickerLegend from '@/components/steps/date/StepOneDateRangePickerLegend';\nimport StepOneNextStepButton from '@/components/steps/date/StepOneNextStepButton';\nimport StepOneStatusPeople from '@/components/steps/date/StepOneStatusPeople';\nimport BasketRow from '@/models/BasketRow';\nimport { Color } from '@/util/Color';\nimport ScreenSize from '@/util/ScreenSize';\nconst BEMobileSummary = lazy(() => import('@/components/summary/BEMobileSummary'));\n\nconst StepDate = () => {\n const context = useContext(BookingEngineContext);\n const basketContext = useContext(BasketContext);\n const ccx = useContext(CompanyContext);\n const { hideByLine } = useContext(HotelOverridesContext);\n const { hotel } = useCurrentHotel();\n const { t } = useTranslation();\n\n const peopleRef = useRef<HTMLDivElement | null>(null);\n const { selectedBasketRow, addBasketRow } = basketContext;\n\n useEffect(() => {\n if (context.screenSize <= ScreenSize.Medium && basketContext.endDate) {\n if (peopleRef) {\n setTimeout(() => {\n peopleRef.current?.scrollIntoView?.({ behavior: 'smooth', block: 'center', inline: 'nearest' });\n }, 50);\n }\n }\n }, [basketContext.endDate]);\n\n const { raise } = useEvent();\n\n useEffect(() => {\n const event = new StepDateViewEvent();\n raise(event);\n }, []);\n\n useEffect(() => {\n if (!selectedBasketRow) {\n addBasketRow(new BasketRow());\n }\n }, [selectedBasketRow]);\n\n return (\n <div className=\"container\">\n {context.screenSize <= ScreenSize.Medium && <BEMobileSummary />}\n {context.screenSize >= ScreenSize.Large && (\n <>\n <div className=\"row step-date-hotel-info\">\n <div className=\"col-md-4 col-lg-3\">\n <div className=\"u-marg-bottom--heavy\">\n <Headline bold>{t(Translation.Step.Date.Reservation)}</Headline>\n </div>\n <Headline className=\"hotel-name\" color={Color.Navy}>\n {hotel?.name}\n </Headline>\n {!hideByLine && (\n <Text className=\"company-name\" color={Color.DarkGrey}>\n {t(Translation.Misc.By)} {ccx.name}\n </Text>\n )}\n </div>\n <div className=\"col-md-8 col-lg-9\">\n <div className=\"row justify-content-between\">\n <div className=\"col-md-6\">\n <div className=\"u-marg-bottom--heavy\">\n <Headline bold>{t(Translation.Step.Date.SelectYourDate)}</Headline>\n </div>\n <div className=\"step-one-status\">\n <StepOneDateRange />\n <StepOneStatusPeople />\n </div>\n </div>\n <div className=\"col-md-4\">\n <StepDatePricePerRoom isMobile={false} />\n </div>\n </div>\n </div>\n </div>\n <LineBreak />\n </>\n )}\n\n <div className=\"row flex-column-reverse flex-md-row align-items-center align-items-md-start\">\n <div ref={peopleRef} className=\"col-md-4 col-xl-3\">\n <PeoplePicker />\n </div>\n <div className=\"col-md-8 col-xl-9\">\n <div className=\"w-100 u-flex justify-content-center flex-column align-items-center\">\n <Suspense fallback=\"loading....\">\n <StepOneDateRangePicker />\n </Suspense>\n </div>\n {context.screenSize >= ScreenSize.Large ? <StepOneDateRangePickerLegend /> : <LineBreak />}\n </div>\n </div>\n <div className=\"u-flex justify-content-end\">\n <StepOneNextStepButton />\n </div>\n </div>\n );\n};\nexport default StepDate;\n"]}
@@ -70,7 +70,7 @@ function StepThanksComponent() {
70
70
  priceCurrency: ccx.currentCurrency,
71
71
  };
72
72
  });
73
- const event = new events_1.StepThanksViewEvent(reservations, basketContext.currentBasketRows);
73
+ const event = new events_1.StepThanksViewEvent(reservations, basketContext.currentBasketRows, hotel);
74
74
  raise(event);
75
75
  return (0, TotalCalculator_1.calculateTotalForReservation)(checkoutData, !isFromRoomstay);
76
76
  }