@nylas/web-elements 2.0.1 → 2.0.3

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 (241) hide show
  1. package/dist/cdn/nylas-scheduler-editor/nylas-scheduler-editor.es.js +191 -95
  2. package/dist/cdn/nylas-scheduling/nylas-scheduling.es.js +10418 -10260
  3. package/dist/cjs/{abstract-provider-ca4f7e4f.js → abstract-provider-f84a6735.js} +2 -2
  4. package/dist/cjs/{abstract-provider-ca4f7e4f.js.map → abstract-provider-f84a6735.js.map} +1 -1
  5. package/dist/cjs/app-globals-ee500b74.js.map +1 -1
  6. package/dist/cjs/calendar-agenda-fill-icon_36.cjs.entry.js +36 -21
  7. package/dist/cjs/calendar-agenda-fill-icon_36.cjs.entry.js.map +1 -1
  8. package/dist/cjs/{calendar-check-icon_2.cjs.entry.js → calendar-check-icon.cjs.entry.js} +3 -19
  9. package/dist/cjs/calendar-check-icon.cjs.entry.js.map +1 -0
  10. package/dist/cjs/checkbox-component_2.cjs.entry.js +1 -1
  11. package/dist/cjs/checkbox-group_4.cjs.entry.js +3 -3
  12. package/dist/cjs/checkmark-circle-icon.cjs.entry.js +24 -0
  13. package/dist/cjs/checkmark-circle-icon.cjs.entry.js.map +1 -0
  14. package/dist/cjs/checkmark-icon_15.cjs.entry.js +11 -7
  15. package/dist/cjs/checkmark-icon_15.cjs.entry.js.map +1 -1
  16. package/dist/cjs/{customParseFormat-bb3a23c5.js → customParseFormat-95790293.js} +2 -2
  17. package/dist/cjs/{customParseFormat-bb3a23c5.js.map → customParseFormat-95790293.js.map} +1 -1
  18. package/dist/cjs/{feedbackSync-1c5ec9aa.js → feedbackSync-4ed99749.js} +2 -2
  19. package/dist/cjs/{feedbackSync-1c5ec9aa.js.map → feedbackSync-4ed99749.js.map} +1 -1
  20. package/dist/cjs/globe-icon_2.cjs.entry.js +2 -2
  21. package/dist/cjs/google-logo-icon_6.cjs.entry.js +8 -8
  22. package/dist/cjs/index-e07e3a7e.js +6 -2
  23. package/dist/cjs/index.cjs.js +2 -2
  24. package/dist/cjs/{index.es-c563f3ba.js → index.es-62161daa.js} +2 -2
  25. package/dist/cjs/{index.es-c563f3ba.js.map → index.es-62161daa.js.map} +1 -1
  26. package/dist/cjs/input-component.cjs.entry.js +1 -1
  27. package/dist/cjs/input-dropdown_2.cjs.entry.js +1 -1
  28. package/dist/cjs/loader.cjs.js +1 -1
  29. package/dist/cjs/multi-select-dropdown.cjs.entry.js +1 -1
  30. package/dist/cjs/{nylas-api-request-4d148ff1.js → nylas-api-request-03d7f604.js} +2 -2
  31. package/dist/cjs/{nylas-api-request-4d148ff1.js.map → nylas-api-request-03d7f604.js.map} +1 -1
  32. package/dist/cjs/nylas-booked-event-card_11.cjs.entry.js +82 -25
  33. package/dist/cjs/nylas-booked-event-card_11.cjs.entry.js.map +1 -1
  34. package/dist/cjs/nylas-form-card.cjs.entry.js +2 -2
  35. package/dist/cjs/nylas-notification_2.cjs.entry.js +1 -1
  36. package/dist/cjs/nylas-scheduler-editor.cjs.entry.js +6 -6
  37. package/dist/cjs/nylas-scheduling.cjs.entry.js +42 -14
  38. package/dist/cjs/nylas-scheduling.cjs.entry.js.map +1 -1
  39. package/dist/cjs/nylas-web-elements.cjs.js +1 -1
  40. package/dist/cjs/{register-component-70744713.js → register-component-f4ad9751.js} +2 -2
  41. package/dist/cjs/{register-component-70744713.js.map → register-component-f4ad9751.js.map} +1 -1
  42. package/dist/cjs/textarea-component.cjs.entry.js +1 -1
  43. package/dist/cjs/{utils-dd3b6f4c.js → utils-03b13826.js} +154 -55
  44. package/dist/cjs/utils-03b13826.js.map +1 -0
  45. package/dist/collection/components/scheduler/nylas-booked-event-card/nylas-booked-event-card.js +11 -3
  46. package/dist/collection/components/scheduler/nylas-booked-event-card/nylas-booked-event-card.js.map +1 -1
  47. package/dist/collection/components/scheduler/nylas-booking-form/nylas-booking-form.js +49 -4
  48. package/dist/collection/components/scheduler/nylas-booking-form/nylas-booking-form.js.map +1 -1
  49. package/dist/collection/components/scheduler/nylas-booking-form/test/nylas-booking-form.spec.js +3 -3
  50. package/dist/collection/components/scheduler/nylas-booking-form/test/nylas-booking-form.spec.js.map +1 -1
  51. package/dist/collection/components/scheduler/nylas-cancel-booking-form/nylas-cancel-booking-form.js +37 -1
  52. package/dist/collection/components/scheduler/nylas-cancel-booking-form/nylas-cancel-booking-form.js.map +1 -1
  53. package/dist/collection/components/scheduler/nylas-cancelled-event-card/nylas-cancelled-event-card.js +34 -2
  54. package/dist/collection/components/scheduler/nylas-cancelled-event-card/nylas-cancelled-event-card.js.map +1 -1
  55. package/dist/collection/components/scheduler/nylas-confirmed-event-card/nylas-confirmed-event-card.css +1 -1
  56. package/dist/collection/components/scheduler/nylas-confirmed-event-card/nylas-confirmed-event-card.js +34 -1
  57. package/dist/collection/components/scheduler/nylas-confirmed-event-card/nylas-confirmed-event-card.js.map +1 -1
  58. package/dist/collection/components/scheduler/nylas-date-picker/nylas-date-picker.js +10 -4
  59. package/dist/collection/components/scheduler/nylas-date-picker/nylas-date-picker.js.map +1 -1
  60. package/dist/collection/components/scheduler/nylas-organizer-confirmation-card/nylas-organizer-confirmation-card.js +10 -2
  61. package/dist/collection/components/scheduler/nylas-organizer-confirmation-card/nylas-organizer-confirmation-card.js.map +1 -1
  62. package/dist/collection/components/scheduler/nylas-scheduling/nylas-scheduling.css +13 -0
  63. package/dist/collection/components/scheduler/nylas-scheduling/nylas-scheduling.js +66 -7
  64. package/dist/collection/components/scheduler/nylas-scheduling/nylas-scheduling.js.map +1 -1
  65. package/dist/collection/components/scheduler/nylas-scheduling/test/nylas-scheduling.spec.js +33 -0
  66. package/dist/collection/components/scheduler/nylas-scheduling/test/nylas-scheduling.spec.js.map +1 -1
  67. package/dist/collection/components/scheduler/nylas-selected-event-card/nylas-selected-event-card.js +20 -5
  68. package/dist/collection/components/scheduler/nylas-selected-event-card/nylas-selected-event-card.js.map +1 -1
  69. package/dist/collection/components/scheduler/nylas-timeslot-picker/nylas-timeslot-picker.js.map +1 -1
  70. package/dist/collection/components/scheduler-editor/nylas-additional-participants/nylas-additional-participants.js +12 -6
  71. package/dist/collection/components/scheduler-editor/nylas-additional-participants/nylas-additional-participants.js.map +1 -1
  72. package/dist/collection/components/scheduler-editor/nylas-availability-picker/nylas-availability-picker.js +1 -1
  73. package/dist/collection/components/scheduler-editor/nylas-booking-confirmation-redirect/nylas-booking-confirmation-redirect.js +12 -6
  74. package/dist/collection/components/scheduler-editor/nylas-booking-confirmation-redirect/nylas-booking-confirmation-redirect.js.map +1 -1
  75. package/dist/collection/components/scheduler-editor/nylas-confirmation-email/nylas-confirmation-email.js +6 -3
  76. package/dist/collection/components/scheduler-editor/nylas-confirmation-email/nylas-confirmation-email.js.map +1 -1
  77. package/dist/collection/components/scheduler-editor/nylas-custom-event-slug/nylas-custom-event-slug.js +14 -8
  78. package/dist/collection/components/scheduler-editor/nylas-custom-event-slug/nylas-custom-event-slug.js.map +1 -1
  79. package/dist/collection/components/scheduler-editor/nylas-editor-tabs/nylas-editor-tabs.js +3 -3
  80. package/dist/collection/components/scheduler-editor/nylas-event-calendar/nylas-event-calendar.js +1 -1
  81. package/dist/collection/components/scheduler-editor/nylas-reminder-emails/nylas-reminder-emails.js +8 -4
  82. package/dist/collection/components/scheduler-editor/nylas-reminder-emails/nylas-reminder-emails.js.map +1 -1
  83. package/dist/components/index.js.map +1 -1
  84. package/dist/components/nylas-additional-participants2.js +12 -6
  85. package/dist/components/nylas-additional-participants2.js.map +1 -1
  86. package/dist/components/nylas-booked-event-card2.js +13 -6
  87. package/dist/components/nylas-booked-event-card2.js.map +1 -1
  88. package/dist/components/nylas-booking-confirmation-redirect2.js +12 -6
  89. package/dist/components/nylas-booking-confirmation-redirect2.js.map +1 -1
  90. package/dist/components/nylas-booking-form2.js +28 -6
  91. package/dist/components/nylas-booking-form2.js.map +1 -1
  92. package/dist/components/nylas-cancel-booking-form2.js +13 -3
  93. package/dist/components/nylas-cancel-booking-form2.js.map +1 -1
  94. package/dist/components/nylas-cancelled-event-card2.js +12 -3
  95. package/dist/components/nylas-cancelled-event-card2.js.map +1 -1
  96. package/dist/components/nylas-confirmation-email2.js +6 -3
  97. package/dist/components/nylas-confirmation-email2.js.map +1 -1
  98. package/dist/components/nylas-confirmed-event-card2.js +18 -8
  99. package/dist/components/nylas-confirmed-event-card2.js.map +1 -1
  100. package/dist/components/nylas-custom-event-slug2.js +15 -9
  101. package/dist/components/nylas-custom-event-slug2.js.map +1 -1
  102. package/dist/components/nylas-date-picker2.js +1 -1
  103. package/dist/components/nylas-date-picker2.js.map +1 -1
  104. package/dist/components/nylas-editor-tabs-group2.js +2 -2
  105. package/dist/components/nylas-editor-tabs2.js +2 -2
  106. package/dist/components/nylas-organizer-confirmation-card2.js +12 -5
  107. package/dist/components/nylas-organizer-confirmation-card2.js.map +1 -1
  108. package/dist/components/nylas-reminder-emails2.js +8 -4
  109. package/dist/components/nylas-reminder-emails2.js.map +1 -1
  110. package/dist/components/nylas-scheduler-editor.js +2 -2
  111. package/dist/components/nylas-scheduling.js +42 -12
  112. package/dist/components/nylas-scheduling.js.map +1 -1
  113. package/dist/components/nylas-selected-event-card2.js +12 -5
  114. package/dist/components/nylas-selected-event-card2.js.map +1 -1
  115. package/dist/components/nylas-timeslot-picker2.js.map +1 -1
  116. package/dist/components/utils.js +153 -54
  117. package/dist/components/utils.js.map +1 -1
  118. package/dist/esm/{abstract-provider-efe136bd.js → abstract-provider-bdb7d9b4.js} +2 -2
  119. package/dist/esm/{abstract-provider-efe136bd.js.map → abstract-provider-bdb7d9b4.js.map} +1 -1
  120. package/dist/esm/app-globals-295a87be.js.map +1 -1
  121. package/dist/esm/calendar-agenda-fill-icon_36.entry.js +36 -21
  122. package/dist/esm/calendar-agenda-fill-icon_36.entry.js.map +1 -1
  123. package/dist/esm/{calendar-check-icon_2.entry.js → calendar-check-icon.entry.js} +4 -19
  124. package/dist/esm/calendar-check-icon.entry.js.map +1 -0
  125. package/dist/esm/checkbox-component_2.entry.js +1 -1
  126. package/dist/esm/checkbox-group_4.entry.js +3 -3
  127. package/dist/esm/checkmark-circle-icon.entry.js +20 -0
  128. package/dist/esm/checkmark-circle-icon.entry.js.map +1 -0
  129. package/dist/esm/checkmark-icon_15.entry.js +11 -7
  130. package/dist/esm/checkmark-icon_15.entry.js.map +1 -1
  131. package/dist/esm/{customParseFormat-edc38d83.js → customParseFormat-f0d21eb3.js} +2 -2
  132. package/dist/esm/{customParseFormat-edc38d83.js.map → customParseFormat-f0d21eb3.js.map} +1 -1
  133. package/dist/esm/{feedbackSync-e4378c0b.js → feedbackSync-b9c9e719.js} +2 -2
  134. package/dist/esm/{feedbackSync-e4378c0b.js.map → feedbackSync-b9c9e719.js.map} +1 -1
  135. package/dist/esm/globe-icon_2.entry.js +2 -2
  136. package/dist/esm/google-logo-icon_6.entry.js +8 -8
  137. package/dist/esm/index-091600eb.js +6 -2
  138. package/dist/esm/{index.es-6a9d55cf.js → index.es-ccb2a286.js} +2 -2
  139. package/dist/esm/{index.es-6a9d55cf.js.map → index.es-ccb2a286.js.map} +1 -1
  140. package/dist/esm/index.js +2 -2
  141. package/dist/esm/input-component.entry.js +1 -1
  142. package/dist/esm/input-dropdown_2.entry.js +1 -1
  143. package/dist/esm/loader.js +1 -1
  144. package/dist/esm/multi-select-dropdown.entry.js +1 -1
  145. package/dist/esm/{nylas-api-request-f2e4e9b6.js → nylas-api-request-7d702661.js} +2 -2
  146. package/dist/esm/{nylas-api-request-f2e4e9b6.js.map → nylas-api-request-7d702661.js.map} +1 -1
  147. package/dist/esm/nylas-booked-event-card_11.entry.js +82 -25
  148. package/dist/esm/nylas-booked-event-card_11.entry.js.map +1 -1
  149. package/dist/esm/nylas-form-card.entry.js +2 -2
  150. package/dist/esm/nylas-notification_2.entry.js +1 -1
  151. package/dist/esm/nylas-scheduler-editor.entry.js +6 -6
  152. package/dist/esm/nylas-scheduling.entry.js +43 -15
  153. package/dist/esm/nylas-scheduling.entry.js.map +1 -1
  154. package/dist/esm/nylas-web-elements.js +1 -1
  155. package/dist/esm/{register-component-a1c3d7b4.js → register-component-9d4ceee5.js} +2 -2
  156. package/dist/esm/{register-component-a1c3d7b4.js.map → register-component-9d4ceee5.js.map} +1 -1
  157. package/dist/esm/textarea-component.entry.js +1 -1
  158. package/dist/esm/{utils-b7f9cbcc.js → utils-fb8a9ce4.js} +154 -55
  159. package/dist/esm/utils-fb8a9ce4.js.map +1 -0
  160. package/dist/nylas-web-elements/index.esm.js +1 -1
  161. package/dist/nylas-web-elements/nylas-web-elements.esm.js +1 -1
  162. package/dist/nylas-web-elements/nylas-web-elements.esm.js.map +1 -1
  163. package/dist/nylas-web-elements/{p-3ce8e281.js → p-094be30f.js} +2 -2
  164. package/dist/nylas-web-elements/p-18c58ea1.entry.js +2 -0
  165. package/dist/nylas-web-elements/p-18c58ea1.entry.js.map +1 -0
  166. package/dist/nylas-web-elements/{p-c12c18b2.entry.js → p-1dbaf879.entry.js} +2 -2
  167. package/dist/nylas-web-elements/p-2830522f.entry.js +2 -0
  168. package/dist/nylas-web-elements/p-2830522f.entry.js.map +1 -0
  169. package/dist/nylas-web-elements/{p-35297f33.entry.js → p-3b56d656.entry.js} +2 -2
  170. package/dist/nylas-web-elements/{p-8e7882a1.js → p-3c8b7ba1.js} +2 -2
  171. package/dist/nylas-web-elements/{p-3204882f.entry.js → p-3f5e1e6b.entry.js} +2 -2
  172. package/dist/nylas-web-elements/{p-5aae729f.js → p-4c1fafb4.js} +2 -2
  173. package/dist/nylas-web-elements/p-522270a2.entry.js +2 -0
  174. package/dist/nylas-web-elements/p-522270a2.entry.js.map +1 -0
  175. package/dist/nylas-web-elements/p-67e936ce.entry.js +2 -0
  176. package/dist/nylas-web-elements/p-67e936ce.entry.js.map +1 -0
  177. package/dist/nylas-web-elements/{p-9e11eb2c.js → p-6d8e2c6b.js} +2 -2
  178. package/dist/nylas-web-elements/{p-3362cf82.entry.js → p-8f82f281.entry.js} +2 -2
  179. package/dist/nylas-web-elements/p-920812bd.entry.js +8 -0
  180. package/dist/nylas-web-elements/p-920812bd.entry.js.map +1 -0
  181. package/dist/nylas-web-elements/{p-b40f7a77.entry.js → p-a42f41f7.entry.js} +2 -2
  182. package/dist/nylas-web-elements/p-a6e2e49c.js.map +1 -1
  183. package/dist/nylas-web-elements/{p-8340d845.entry.js → p-aad611b4.entry.js} +2 -2
  184. package/dist/nylas-web-elements/{p-6e56eb3f.js → p-ab88518b.js} +2 -2
  185. package/dist/nylas-web-elements/{p-5cf6301e.entry.js → p-b3500bf1.entry.js} +2 -2
  186. package/dist/nylas-web-elements/{p-4d8f9740.entry.js → p-b6d863e0.entry.js} +2 -2
  187. package/dist/nylas-web-elements/{p-50c255fa.entry.js → p-b8cf836f.entry.js} +2 -2
  188. package/dist/nylas-web-elements/{p-996c827d.entry.js → p-bf37be06.entry.js} +2 -2
  189. package/dist/nylas-web-elements/p-de4b01ac.entry.js +2 -0
  190. package/dist/nylas-web-elements/p-de4b01ac.entry.js.map +1 -0
  191. package/dist/nylas-web-elements/{p-308e7adb.entry.js → p-f42e87c6.entry.js} +3 -3
  192. package/dist/nylas-web-elements/{p-dea32251.js → p-f4825eb1.js} +2 -2
  193. package/dist/nylas-web-elements/p-faa30369.js +14 -0
  194. package/dist/nylas-web-elements/{p-59e4ab2d.js.map → p-faa30369.js.map} +1 -1
  195. package/dist/types/components/scheduler/nylas-booked-event-card/nylas-booked-event-card.d.ts +2 -0
  196. package/dist/types/components/scheduler/nylas-booking-form/nylas-booking-form.d.ts +7 -0
  197. package/dist/types/components/scheduler/nylas-cancel-booking-form/nylas-cancel-booking-form.d.ts +3 -0
  198. package/dist/types/components/scheduler/nylas-cancelled-event-card/nylas-cancelled-event-card.d.ts +3 -1
  199. package/dist/types/components/scheduler/nylas-confirmed-event-card/nylas-confirmed-event-card.d.ts +3 -1
  200. package/dist/types/components/scheduler/nylas-date-picker/nylas-date-picker.d.ts +2 -1
  201. package/dist/types/components/scheduler/nylas-organizer-confirmation-card/nylas-organizer-confirmation-card.d.ts +2 -0
  202. package/dist/types/components/scheduler/nylas-scheduling/nylas-scheduling.d.ts +6 -0
  203. package/dist/types/components/scheduler/nylas-selected-event-card/nylas-selected-event-card.d.ts +3 -1
  204. package/dist/types/components/scheduler/nylas-timeslot-picker/nylas-timeslot-picker.d.ts +2 -1
  205. package/dist/types/components/scheduler-editor/nylas-additional-participants/nylas-additional-participants.d.ts +2 -0
  206. package/dist/types/components/scheduler-editor/nylas-booking-confirmation-redirect/nylas-booking-confirmation-redirect.d.ts +2 -0
  207. package/dist/types/components/scheduler-editor/nylas-custom-event-slug/nylas-custom-event-slug.d.ts +2 -0
  208. package/dist/types/components.d.ts +46 -6
  209. package/package.json +3 -5
  210. package/dist/cjs/calendar-check-icon_2.cjs.entry.js.map +0 -1
  211. package/dist/cjs/utils-dd3b6f4c.js.map +0 -1
  212. package/dist/esm/calendar-check-icon_2.entry.js.map +0 -1
  213. package/dist/esm/utils-b7f9cbcc.js.map +0 -1
  214. package/dist/nylas-web-elements/p-2b52b854.entry.js +0 -2
  215. package/dist/nylas-web-elements/p-2b52b854.entry.js.map +0 -1
  216. package/dist/nylas-web-elements/p-59e4ab2d.js +0 -14
  217. package/dist/nylas-web-elements/p-8a3965ba.entry.js +0 -2
  218. package/dist/nylas-web-elements/p-8a3965ba.entry.js.map +0 -1
  219. package/dist/nylas-web-elements/p-97128be4.entry.js +0 -8
  220. package/dist/nylas-web-elements/p-97128be4.entry.js.map +0 -1
  221. package/dist/nylas-web-elements/p-d69f9d47.entry.js +0 -2
  222. package/dist/nylas-web-elements/p-d69f9d47.entry.js.map +0 -1
  223. package/dist/nylas-web-elements/p-dcc8ca35.entry.js +0 -2
  224. package/dist/nylas-web-elements/p-dcc8ca35.entry.js.map +0 -1
  225. /package/dist/nylas-web-elements/{p-3ce8e281.js.map → p-094be30f.js.map} +0 -0
  226. /package/dist/nylas-web-elements/{p-c12c18b2.entry.js.map → p-1dbaf879.entry.js.map} +0 -0
  227. /package/dist/nylas-web-elements/{p-35297f33.entry.js.map → p-3b56d656.entry.js.map} +0 -0
  228. /package/dist/nylas-web-elements/{p-8e7882a1.js.map → p-3c8b7ba1.js.map} +0 -0
  229. /package/dist/nylas-web-elements/{p-3204882f.entry.js.map → p-3f5e1e6b.entry.js.map} +0 -0
  230. /package/dist/nylas-web-elements/{p-5aae729f.js.map → p-4c1fafb4.js.map} +0 -0
  231. /package/dist/nylas-web-elements/{p-9e11eb2c.js.map → p-6d8e2c6b.js.map} +0 -0
  232. /package/dist/nylas-web-elements/{p-3362cf82.entry.js.map → p-8f82f281.entry.js.map} +0 -0
  233. /package/dist/nylas-web-elements/{p-b40f7a77.entry.js.map → p-a42f41f7.entry.js.map} +0 -0
  234. /package/dist/nylas-web-elements/{p-8340d845.entry.js.map → p-aad611b4.entry.js.map} +0 -0
  235. /package/dist/nylas-web-elements/{p-6e56eb3f.js.map → p-ab88518b.js.map} +0 -0
  236. /package/dist/nylas-web-elements/{p-5cf6301e.entry.js.map → p-b3500bf1.entry.js.map} +0 -0
  237. /package/dist/nylas-web-elements/{p-4d8f9740.entry.js.map → p-b6d863e0.entry.js.map} +0 -0
  238. /package/dist/nylas-web-elements/{p-50c255fa.entry.js.map → p-b8cf836f.entry.js.map} +0 -0
  239. /package/dist/nylas-web-elements/{p-996c827d.entry.js.map → p-bf37be06.entry.js.map} +0 -0
  240. /package/dist/nylas-web-elements/{p-308e7adb.entry.js.map → p-f42e87c6.entry.js.map} +0 -0
  241. /package/dist/nylas-web-elements/{p-dea32251.js.map → p-f4825eb1.js.map} +0 -0
@@ -1,6 +1,6 @@
1
1
  import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
2
2
  import { R as RegisterComponent } from './register-component.js';
3
- import { a as debug, b as instance, n as capitalizeFirstLetter, o as formatBookedEventDate } from './utils.js';
3
+ import { b as instance, a as debug, n as capitalizeFirstLetter, o as formatBookedEventDate } from './utils.js';
4
4
  import { T as TIMEZONE_MAP, a as LANGUAGE_CODE_TO_LOCALE_MAP } from './constants.js';
5
5
  import { d as defineCustomElement$5 } from './button-component2.js';
6
6
  import { d as defineCustomElement$4 } from './calendar-check.js';
@@ -86,6 +86,11 @@ const NylasBookedEventCard = proxyCustomElement(class NylasBookedEventCard exten
86
86
  themeConfigChanged(newThemeConfig) {
87
87
  this.applyThemeConfig(newThemeConfig);
88
88
  }
89
+ selectedLanguageChangedHandler(newVal, oldVal) {
90
+ if (newVal === oldVal)
91
+ return;
92
+ instance.changeLanguage(newVal);
93
+ }
89
94
  connectedCallback() { }
90
95
  disconnectedCallback() { }
91
96
  async componentWillLoad() {
@@ -120,13 +125,13 @@ const NylasBookedEventCard = proxyCustomElement(class NylasBookedEventCard exten
120
125
  render() {
121
126
  const bookingType = this.configSettings?.booking_type;
122
127
  const isManualConfirmation = bookingType && bookingType !== 'booking';
123
- return (h(Host, { key: '746e23e82adf30da44ac6a160400705251a5cf98', part: "nbec" }, h("div", { key: 'aa3e79d294ff41b4a43775763f9e5f1922f955c7', class: "nylas-booked-event-card" }, h("div", { key: 'cbb343663633b5ba80875f42af0bb0d091ee1ac8', class: "booked-event-timezone" }, h("globe-icon", { key: '8c94142bd486144efaa251770c87f4ec15481b41' }), TIMEZONE_MAP[this.selectedTimezone]), h("div", { key: 'e06ef2c5b7a1977ff1953027d6109cb8a1acf493', class: "event-card-wrapper", part: "nbec__card" }, h("div", { key: '5a99626d44f6ef819af2606bf24208e1833e3a54', class: "calendar-icon" }, h("calendar-check-icon", { key: '06c5ec0241535ee0ea82c743653f93442bc9a5fa' })), h("div", { key: 'b38fa39209c64394902a0e7607248d0d0c73adf2', class: "booked-event-header" }, h("h2", { key: '1706d065e1f427efcccef18f382702e95da33080', slot: "card-title", part: "nbec__title" }, !!this.rescheduleBookingId && !this.isLoading
128
+ return (h(Host, { key: '0762e32091a5674187788413717366b6213a28fd', part: "nbec" }, h("div", { key: '9cb934481989459e30f9fc718e20855f0f186027', class: "nylas-booked-event-card" }, h("div", { key: 'e7b810785f800f82f0c73eaa665cd56bb9406c85', class: "booked-event-timezone" }, h("globe-icon", { key: '3c29fd04b4fc90e0a6583285cbf872ec840ec0d6' }), TIMEZONE_MAP[this.selectedTimezone]), h("div", { key: 'e7f4406d8c3b110d84cb1d99e5ab8db89954e2f4', class: "event-card-wrapper", part: "nbec__card" }, h("div", { key: 'c656687daf9b51190341d35db6c338a9a61df3a2', class: "calendar-icon" }, h("calendar-check-icon", { key: 'e1f5cdfa288db54a537f4250d65e2ab0279fb84e' })), h("div", { key: '50e125630023b8dd19d537d20374f9a5464a1547', class: "booked-event-header" }, h("h2", { key: '24e6e52952321065ee1e63c34d55cd1891edeafc', slot: "card-title", part: "nbec__title" }, !!this.rescheduleBookingId && !this.isLoading
124
129
  ? `${instance.t('bookingRescheduled')}`
125
130
  : isManualConfirmation && !this.isLoading
126
131
  ? `${instance.t('bookingSent')}`
127
- : `${instance.t('bookingConfirmed')}`, "!"), h("div", { key: 'c7bfce355ce08d858862bc7672f20e8a2bb3dce9', class: "card-description", part: "nbec__description" }, isManualConfirmation ? instance.t('bookingSentDescription') : h("span", null, instance.t('bookingConfirmedDescription')))), h("div", { key: '2074c51dfdfd0753fcd3d598b7633520bf70ab63', class: "booking-date-time" }, h("checkmark-circle-icon", { key: 'dbfe39fadeeb08186a5214cfb9ca5d3c8da55cb1' }), h("h3", { key: 'edb9ed53cb25e9e06ec7b27f8141fa6f422c1511' }, instance.t('bookingDateAndTimeHeader')), h("p", { key: '24d8d606ab3e217256152e249ee435d070df0c5b' }, this.selectedTimeslot?.start_time
132
+ : `${instance.t('bookingConfirmed')}`, "!"), h("div", { key: 'cb07bf7f3685624f2b50bcba569399ba084ab00d', class: "card-description", part: "nbec__description" }, isManualConfirmation ? instance.t('bookingSentDescription') : h("span", null, instance.t('bookingConfirmedDescription')))), h("div", { key: 'bceb86109e1a9ae6f2c1d98e0267e7f73d763aae', class: "booking-date-time" }, h("checkmark-circle-icon", { key: '0e6fdd3cb183e4d00c6c31fe368eefb01d0465d8' }), h("h3", { key: 'c7561d2be55109d69650aa41bb6d356018e1973b' }, instance.t('bookingDateAndTimeHeader')), h("p", { key: '31818a7c4a89014438b7af5e722f49728918cc27' }, this.selectedTimeslot?.start_time
128
133
  ? capitalizeFirstLetter(formatBookedEventDate(this.selectedTimeslot?.start_time, this.selectedTimezone, LANGUAGE_CODE_TO_LOCALE_MAP[this.selectedLanguage]))
129
- : '-', ' ', h("br", { key: '5949a97ff7e7b256e410f591b810332a72e0696c' }), this.startTime, " - ", this.endTime)), h("div", { key: '3450618726c762232151511fd28570834cf07cc4', class: "booking-participants" }), !isManualConfirmation && (h("div", { class: "button-container" }, h("div", { class: {
134
+ : '-', ' ', h("br", { key: '7fcd531af1cea5464ab08f9043aabb4cde0a91db' }), this.startTime, " - ", this.endTime)), h("div", { key: '8d2d827677bf300ad2b0f4dc2c28ac3777971af1', class: "booking-participants" }), !isManualConfirmation && (h("div", { class: "button-container" }, h("div", { class: {
130
135
  'footer': true,
131
136
  'no-footer': (this.configSettings?.scheduler?.hide_cancellation_options && this.configSettings?.scheduler?.hide_rescheduling_options) ||
132
137
  this.configSettings?.booking_type === 'organizer-confirmation',
@@ -135,7 +140,8 @@ const NylasBookedEventCard = proxyCustomElement(class NylasBookedEventCard exten
135
140
  }
136
141
  get host() { return this; }
137
142
  static get watchers() { return {
138
- "themeConfig": ["themeConfigChanged"]
143
+ "themeConfig": ["themeConfigChanged"],
144
+ "selectedLanguage": ["selectedLanguageChangedHandler"]
139
145
  }; }
140
146
  static get style() { return NylasBookedEventCardStyle0; }
141
147
  }, [1, "nylas-booked-event-card", {
@@ -152,7 +158,8 @@ const NylasBookedEventCard = proxyCustomElement(class NylasBookedEventCard exten
152
158
  "startTime": [32],
153
159
  "endTime": [32]
154
160
  }, undefined, {
155
- "themeConfig": ["themeConfigChanged"]
161
+ "themeConfig": ["themeConfigChanged"],
162
+ "selectedLanguage": ["selectedLanguageChangedHandler"]
156
163
  }]);
157
164
  __decorate([
158
165
  RegisterComponent({
@@ -1 +1 @@
1
- {"file":"nylas-booked-event-card2.js","mappings":";;;;;;;;;;AAAA,MAAM,uBAAuB,GAAG,msJAAmsJ,CAAC;AACpuJ,mCAAe,uBAAuB;;;;;;;;;;;;;;;;MC4BzB,oBAAoB;;;;;;;;;QAoIvB,qCAAgC,GAAG;YACzC,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;YAC7D,MAAM,qBAAqB,GAAG,IAAI,CAAC,cAAc,EAAE,SAAS,EAAE,uBAAuB,CAAC;YACtF,IAAI,CAAC,qBAAqB,EAAE;gBAC1B,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC;gBAC/E,OAAO;aACR;YACD,MAAM,oBAAoB,GAAG,SAAS,CAAC,OAAO,EAAE,GAAG,qBAAqB,GAAG,EAAE,GAAG,IAAI,CAAC;YACrF,IAAI,oBAAoB,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE;gBAC/C,IAAI,CAAC,gCAAgC,CAAC,IAAI,CAAC;oBACzC,KAAK,EAAE;wBACL,KAAK,EAAE,oBAAoB;wBAC3B,OAAO,EAAE,wCAAwC,qBAAqB,wBAAwB;qBAC/F;iBACF,CAAC,CAAC;aACJ;iBAAM;gBACL,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC;aAChF;SACF,CAAC;QAEM,kCAA6B,GAAG;YACtC,MAAM,YAAY,GAAG,CAAC,KAAkC;gBACtD,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC7C,CAAC;YACF,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,YAAY,EAAE,CAAC,CAAC;SAC3F,CAAC;QAEF,sBAAiB,GAAG,CAAC,IAAY;YAC/B,QAAQ,IAAI;gBACV,KAAK,MAAM;oBACT,OAAO,MAAM,CAAC;gBAChB,KAAK,KAAK;oBACR,OAAO,KAAK,CAAC;gBACf;oBACE,OAAO,EAAE,CAAC;aACb;SACF,CAAC;;;;;;;gCA1H0C,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ;;gCAUd,SAAS,CAAC,QAAQ;;yBAMnE,EAAE;uBACJ,EAAE;;IA4B7B,kBAAkB,CAAC,cAA2B;QAC5C,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;KACvC;IAED,iBAAiB,MAAK;IAEtB,oBAAoB,MAAK;IAEzB,MAAM,iBAAiB;QACrB,KAAK,CAAC,+CAA+C,CAAC,CAAC;KACxD;IAED,MAAM,gBAAgB;QACpB,KAAK,CAAC,8CAA8C,CAAC,CAAC;QACtD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,OAAO,CAAC,IAAI,CAAC,oJAAoJ,CAAC,CAAC;SACpK;QACD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,OAAO,CAAC,IAAI,CAAC,wJAAwJ,CAAC,CAAC;SACxK;QACD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,2BAA2B,CAAC,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,CAAC;QAE1E,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;YACjD,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,SAAS;YACjB,QAAQ,EAAE,IAAI,CAAC,gBAAgB;YAC/B,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,UAAkB,CAAC,CAAC;QAC9E,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,QAAgB,CAAC,CAAC;KAC3E;IAED,gBAAgB,CAAC,WAAyB;QACxC,IAAI,WAAW,EAAE;YACf,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;gBACtD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;aAC9C;SACF;KACF;IA4ED,MAAM;QACJ,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC;QACtD,MAAM,oBAAoB,GAAG,WAAW,IAAI,WAAW,KAAK,SAAS,CAAC;QAEtE,QACE,EAAC,IAAI,qDAAC,IAAI,EAAC,MAAM,IACf,4DAAK,KAAK,EAAC,yBAAyB,IAClC,4DAAK,KAAK,EAAC,uBAAuB,IAChC,oEAAyB,EACxB,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAChC,EACN,4DAAK,KAAK,EAAC,oBAAoB,EAAC,IAAI,EAAC,YAAY,IAC/C,4DAAK,KAAK,EAAC,eAAe,IACxB,6EAAuB,CACnB,EACN,4DAAK,KAAK,EAAC,qBAAqB,IAC9B,2DAAI,IAAI,EAAC,YAAY,EAAC,IAAI,EAAC,aAAa,IACrC,CAAC,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,IAAI,CAAC,SAAS;cAC1C,GAAGA,QAAO,CAAC,CAAC,CAAC,oBAAoB,CAAC,EAAE;cACpC,oBAAoB,IAAI,CAAC,IAAI,CAAC,SAAS;kBACrC,GAAGA,QAAO,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE;kBAC7B,GAAGA,QAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,EAAE,MAErC,EACL,4DAAK,KAAK,EAAC,kBAAkB,EAAC,IAAI,EAAC,mBAAmB,IACnD,oBAAoB,GAAGA,QAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC,GAAG,gBAAOA,QAAO,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAQ,CACjH,CACF,EACN,4DAAK,KAAK,EAAC,mBAAmB,IAC5B,+EAA+C,EAC/C,6DAAKA,QAAO,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAM,EAChD,4DACG,IAAI,CAAC,gBAAgB,EAAE,UAAU;cAC9B,qBAAqB,CACnB,qBAAqB,CAAC,IAAI,CAAC,gBAAgB,EAAE,UAAkB,EAAE,IAAI,CAAC,gBAAgB,EAAE,2BAA2B,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAC5I;cACD,GAAG,EAAE,GAAG,EACZ,4DAAM,EACL,IAAI,CAAC,SAAS,SAAK,IAAI,CAAC,OAAO,CAC9B,CACA,EACN,4DAAK,KAAK,EAAC,sBAAsB,GAc3B,EAEL,CAAC,oBAAoB,KACpB,WAAK,KAAK,EAAC,kBAAkB,IAC3B,WACE,KAAK,EAAE;gBACL,QAAQ,EAAE,IAAI;gBACd,WAAW,EACT,CAAC,IAAI,CAAC,cAAc,EAAE,SAAS,EAAE,yBAAyB,IAAI,IAAI,CAAC,cAAc,EAAE,SAAS,EAAE,yBAAyB;oBACvH,IAAI,CAAC,cAAc,EAAE,YAAY,KAAK,wBAAwB;gBAChE,kBAAkB,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,SAAS,EAAE,yBAAyB,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,SAAS,EAAE,yBAAyB;aAC/I,IAEA,CAAC,IAAI,CAAC,cAAc,EAAE,SAAS,EAAE,yBAAyB,KACzD,wBAAkB,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC,gCAAgC,EAAE,IAAI,EAAC,uCAAuC,IACnI,GAAGA,QAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,EAAE,CACrB,CACpB,EACA,CAAC,IAAI,CAAC,cAAc,EAAE,SAAS,EAAE,yBAAyB,KACzD,wBAAkB,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,6BAA6B,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,EAAC,2CAA2C,IACxJ,GAAGA,QAAO,CAAC,CAAC,CAAC,yBAAyB,CAAC,EAAE,CACzB,CACpB,CACG,CACF,CACP,CACG,CACF,CACD,EACP;KACH;;;;;;;;;;;;;;;;;;;;;;AArFD;IApCC,iBAAiB,CAA+F;QAC/G,IAAI,EAAE,yBAAyB;QAC/B,YAAY,EAAE,IAAI,GAAG,CAAC;YACpB,CAAC,uBAAuB,EAAE,aAAa,CAAC;YACxC,CAAC,+BAA+B,EAAE,qBAAqB,CAAC;YACxD,CAAC,4BAA4B,EAAE,kBAAkB,CAAC;YAClD,CAAC,4BAA4B,EAAE,kBAAkB,CAAC;YAClD,CAAC,qBAAqB,EAAE,WAAW,CAAC;YACpC,CAAC,4BAA4B,EAAE,kBAAkB,CAAC;YAClD,CAAC,0BAA0B,EAAE,gBAAgB,CAAC;YAC9C,CAAC,uBAAuB,EAAE,aAAa,CAAC;YACxC,CAAC,kBAAkB,EAAE,QAAQ,CAAC;SAC/B,CAAC;QACF,YAAY,EAAE;YACZ,0BAA0B,EAAE,OAAO,KAAyC,EAAE,uBAAgD;gBAC5H,uBAAuB,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;aACrE;YACD,uBAAuB,EAAE,OACvB,KAAsG,EACtG,uBAAgD;gBAEhD,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBAC7F,MAAM,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC;gBACtC,IAAI,YAAY,KAAK,CAAC,MAAM,IAAI,OAAO,IAAI,MAAM,CAAC,EAAE;oBAClD,YAAY,CAAC,MAAM,CAAC,CAAC;iBACtB;aACF;YACD,0BAA0B,EAAE,OAAO,KAA+C,EAAE,wBAAiD;gBACnI,KAAK,CAAC,yBAAyB,EAAE,4BAA4B,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;aAC9E;YACD,gCAAgC,EAAE,OAAO,KAAiE,EAAE,wBAAiD;gBAC3J,KAAK,CAAC,yBAAyB,EAAE,kCAAkC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;aACpF;SACF;QACD,iBAAiB,EAAE,IAAI;KACxB,CAAC;;;;kDAsFD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["i18next"],"sources":["src/components/scheduler/nylas-booked-event-card/nylas-booked-event-card.scss?tag=nylas-booked-event-card&encapsulation=shadow","src/components/scheduler/nylas-booked-event-card/nylas-booked-event-card.tsx"],"sourcesContent":["@import '../../../common/styles/variables.scss';\n\n:host {\n display: block;\n @include default-css-variables;\n}\n\n.nylas-booked-event-card {\n height: inherit;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n align-items: center;\n font-family: var(--nylas-font-family);\n}\n\n.event-card-wrapper {\n display: flex;\n align-items: center;\n flex-direction: column;\n background-color: var(--nylas-base-0);\n color: var(--nylas-base-900);\n border-radius: var(--nylas-border-radius-3x);\n position: relative;\n margin-top: 1rem;\n margin-bottom: 2rem;\n width: 424px;\n\n @media #{$mobile} {\n width: 100%;\n border-radius: 0px;\n }\n\n box-shadow:\n 0px 1px 4px rgba(0, 0, 0, 0.1),\n 0px 3px 6px rgba(0, 0, 0, 0.06);\n}\n\n.calendar-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 3rem;\n height: 3rem;\n border-radius: 50%;\n position: absolute;\n top: -1.25rem;\n left: 50%;\n transform: translateX(-50%);\n background-color: var(--nylas-base-0);\n border: 1px solid var(--nylas-base-200);\n color: var(--nylas-base-700);\n}\n\n.booked-event-header {\n margin: 1.5rem 0;\n overflow-wrap: anywhere;\n display: flex;\n align-items: center;\n flex-direction: column;\n font-size: 16px;\n font-weight: 400;\n border-bottom: 1px solid var(--nylas-base-200);\n width: inherit;\n padding: 0 0 1.5rem;\n\n h2 {\n color: var(--nylas-base-600);\n margin-top: 1.5rem;\n margin-bottom: 0.25rem;\n font-size: 1.125rem;\n font-weight: 600;\n }\n\n .card-description {\n text-align: center;\n }\n}\n\n.booking-date-time,\n.booking-participants {\n padding: 0 1rem;\n margin-top: 1.5rem;\n margin-left: 3rem;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n align-self: flex-start;\n position: relative;\n\n svg {\n color: var(--nylas-base-700);\n position: absolute;\n left: -10px;\n }\n\n .block {\n display: block;\n }\n\n h3 {\n color: var(--nylas-base-600);\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n line-height: 1.25rem;\n text-align: justify;\n margin-bottom: 4px;\n }\n\n p {\n font-size: 16px;\n margin: 0;\n font-weight: 400;\n text-align: justify;\n color: var(--nylas-base-800);\n }\n}\n\n.booking-participants {\n margin-bottom: 1.5rem;\n}\n\n.booked-event-timezone {\n display: flex;\n color: var(--nylas-base-600);\n margin-bottom: 1.5rem;\n gap: 4px;\n margin: 2rem;\n align-items: center;\n align-self: flex-end;\n}\n\n.button-container {\n width: inherit;\n}\n\n.footer {\n padding: 0.5rem;\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 0.5rem;\n box-sizing: border-box;\n background-color: var(--nylas-base-25);\n border-top: 1px solid var(--nylas-base-200);\n width: 100%;\n border-radius: 0 0 var(--nylas-border-radius-2x) var(--nylas-border-radius-2x);\n\n &.no-template-cols {\n grid-template-columns: 1fr;\n }\n\n &.no-footer {\n display: none;\n }\n}\n\nsp-divider {\n background-color: var(--nylas-base-200);\n height: 1px;\n}\n\ncalendar-check-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n}\n","import { RegisterComponent } from '@/common/register-component';\nimport { Component, Element, EventEmitter, h, Host, Prop, State, Watch } from '@stencil/core';\nimport { NylasSchedulerConnector } from '../../..';\nimport type { NylasSchedulerBookingData } from '@/common/types';\nimport { ConfigSettings } from '@/stores/scheduler-store';\nimport { NylasScheduling } from '../nylas-scheduling/nylas-scheduling';\nimport { capitalizeFirstLetter, debug, formatBookedEventDate } from '@/utils/utils';\nimport { LANGUAGE_CODE_TO_LOCALE_MAP, TIMEZONE_MAP } from '@/common/constants';\nimport { NylasEvent } from '@/common/types';\nimport { Event } from '@stencil/core';\nimport { NylasSchedulerErrorResponse, ThemeConfig, Timeslot } from '@nylas/core';\nimport i18next from '@/utils/i18n';\n\n/**\n * The `nylas-booked-event-card` component is a UI component that displays the booked event card.\n *\n * @part nbec - The booked event card host.\n * @part nbec__card - The booked event card.\n * @part nbec__title - The title of the booked event card.\n * @part nbec__description - The description of the booked event card.\n * @part nbec__button-outline - The cancel & reschedule button CTA.\n * @part nbec__cancel-cta - The cancel button CTA.\n * @part nbec__reschedule-cta - The reschedule button CTA.\n */\n@Component({\n tag: 'nylas-booked-event-card',\n styleUrl: 'nylas-booked-event-card.scss',\n shadow: true,\n})\nexport class NylasBookedEventCard {\n /**\n * The host element.\n * Used to manage the host element of the provider.\n */\n @Element() private host!: HTMLNylasBookedEventCardElement;\n\n /**\n * @standalone\n * The booked event.\n */\n @Prop() readonly eventInfo!: NylasEvent;\n\n /**\n * @standalone\n * Booking flow type.\n */\n @Prop() readonly rescheduleBookingId?: string;\n\n /**\n * @standalone\n * The booking info used to book / reschedule the event.\n */\n @Prop() readonly bookingInfo?: NylasSchedulerBookingData;\n\n /**\n * @standalone\n * The config settings for the scheduler.\n */\n @Prop() readonly configSettings?: ConfigSettings;\n\n /**\n * @standalone\n * The loading state prop. Used to display loading state when fetching availability.\n */\n @Prop() readonly isLoading?: boolean;\n\n /**\n * @standalone\n * The theme configuration.\n */\n @Prop({ attribute: 'theme-config' }) readonly themeConfig?: any;\n\n /**\n * The selected timezone.\n */\n @Prop() readonly selectedTimezone: string = Intl.DateTimeFormat().resolvedOptions().timeZone;\n\n /**\n * The selected timeslot.\n */\n @Prop() readonly selectedTimeslot!: Timeslot;\n\n /**\n * The selected language.\n */\n @Prop({ attribute: 'selected-language' }) readonly selectedLanguage: string = navigator.language;\n /**\n * The 12-hour time format.\n */\n @Prop() hour12?: boolean;\n\n @State() startTime: string = '';\n @State() endTime: string = '';\n\n /**\n * Cancel booking button clicked event.\n */\n @Event() readonly cancelBookingButtonClicked!: EventEmitter<{ bookingId: string }>;\n\n /**\n * Reschedule button clicked event.\n * */\n @Event() readonly rescheduleButtonClicked!: EventEmitter<{ bookingId: string; errorHandler?: (error: NylasSchedulerErrorResponse) => void }>;\n\n /**\n * This event is fired when an error occurs while rescheduling the booking.\n */\n @Event() readonly rescheduleBookedEventError!: EventEmitter<NylasSchedulerErrorResponse>;\n\n /**\n * This event is fired when an error occurs while cancelling the booking.\n */\n @Event() readonly cancelBookedEventValidationError!: EventEmitter<{\n error: {\n title: string;\n message: string;\n };\n }>;\n\n @Watch('themeConfig')\n themeConfigChanged(newThemeConfig: ThemeConfig) {\n this.applyThemeConfig(newThemeConfig);\n }\n\n connectedCallback() {}\n\n disconnectedCallback() {}\n\n async componentWillLoad() {\n debug(`[nylas-booked-event-card] Component will load`);\n }\n\n async componentDidLoad() {\n debug(`[nylas-booked-event-card] Component did load`);\n if (!this.eventInfo) {\n console.warn('[nylas-booked-event-card] \"eventInfo\" prop missing. Please provide the event info to display the event details in the booked event card component.');\n }\n if (!this.bookingInfo) {\n console.warn('[nylas-booked-event-card] \"bookingInfo\" prop missing. Please provide the booking info to display the guest details in the booked event card component.');\n }\n this.applyThemeConfig(this.themeConfig);\n const locale = LANGUAGE_CODE_TO_LOCALE_MAP[this.selectedLanguage || 'en'];\n\n const timeFormat = new Intl.DateTimeFormat(locale, {\n hour: '2-digit',\n minute: '2-digit',\n timeZone: this.selectedTimezone,\n hour12: this.hour12,\n });\n this.startTime = timeFormat.format(this.selectedTimeslot?.start_time as Date);\n this.endTime = timeFormat.format(this.selectedTimeslot?.end_time as Date);\n }\n\n applyThemeConfig(themeConfig?: ThemeConfig) {\n if (themeConfig) {\n for (const [key, value] of Object.entries(themeConfig)) {\n this.host.style.setProperty(`${key}`, value);\n }\n }\n }\n\n private handleCancelBookingButtonClicked = () => {\n const startTime = new Date(this.selectedTimeslot.start_time);\n const minCancellationNotice = this.configSettings?.scheduler?.min_cancellation_notice;\n if (!minCancellationNotice) {\n this.cancelBookingButtonClicked.emit({ bookingId: this.eventInfo.booking_id });\n return;\n }\n const dateTillCancellation = startTime.getTime() - minCancellationNotice * 60 * 1000;\n if (dateTillCancellation < new Date().getTime()) {\n this.cancelBookedEventValidationError.emit({\n error: {\n title: 'Cancellation Error',\n message: `You cannot cancel the booking within ${minCancellationNotice} minutes of the event.`,\n },\n });\n } else {\n this.cancelBookingButtonClicked.emit({ bookingId: this.eventInfo.booking_id });\n }\n };\n\n private handleRescheduleButtonClicked = () => {\n const errorHandler = (error: NylasSchedulerErrorResponse) => {\n this.rescheduleBookedEventError.emit(error);\n };\n this.rescheduleButtonClicked.emit({ bookingId: this.eventInfo.booking_id, errorHandler });\n };\n\n getPaticipantType = (type: string) => {\n switch (type) {\n case 'host':\n return 'Host';\n case 'you':\n return 'You';\n default:\n return '';\n }\n };\n\n @RegisterComponent<NylasBookedEventCard, NylasSchedulerConnector, Exclude<NylasScheduling['stores'], undefined>>({\n name: 'nylas-booked-event-card',\n stateToProps: new Map([\n ['scheduler.bookingInfo', 'bookingInfo'],\n ['scheduler.rescheduleBookingId', 'rescheduleBookingId'],\n ['scheduler.selectedTimezone', 'selectedTimezone'],\n ['scheduler.selectedTimeslot', 'selectedTimeslot'],\n ['scheduler.isLoading', 'isLoading'],\n ['scheduler.selectedLanguage', 'selectedLanguage'],\n ['scheduler.configSettings', 'configSettings'],\n ['scheduler.themeConfig', 'themeConfig'],\n ['scheduler.hour12', 'hour12'],\n ]),\n eventToProps: {\n cancelBookingButtonClicked: async (event: CustomEvent<{ bookingId: string }>, nylasSchedulerConnector: NylasSchedulerConnector) => {\n nylasSchedulerConnector.scheduler.setCancel(event.detail.bookingId);\n },\n rescheduleButtonClicked: async (\n event: CustomEvent<{ bookingId: string; errorHandler?: (error: NylasSchedulerErrorResponse) => void }>,\n nylasSchedulerConnector: NylasSchedulerConnector,\n ) => {\n const result = await nylasSchedulerConnector.scheduler.setReschedule(event.detail.bookingId);\n const { errorHandler } = event.detail;\n if (errorHandler && (!result || 'error' in result)) {\n errorHandler(result);\n }\n },\n rescheduleBookedEventError: async (event: CustomEvent<NylasSchedulerErrorResponse>, _nylasSchedulerConnector: NylasSchedulerConnector) => {\n debug('nylas-booked-event-card', 'rescheduleBookedEventError', event.detail);\n },\n cancelBookedEventValidationError: async (event: CustomEvent<{ error: { title: string; message: string } }>, _nylasSchedulerConnector: NylasSchedulerConnector) => {\n debug('nylas-booked-event-card', 'cancelBookedEventValidationError', event.detail);\n },\n },\n fireRegisterEvent: true,\n })\n render() {\n const bookingType = this.configSettings?.booking_type;\n const isManualConfirmation = bookingType && bookingType !== 'booking';\n\n return (\n <Host part=\"nbec\">\n <div class=\"nylas-booked-event-card\">\n <div class=\"booked-event-timezone\">\n <globe-icon></globe-icon>\n {TIMEZONE_MAP[this.selectedTimezone]}\n </div>\n <div class=\"event-card-wrapper\" part=\"nbec__card\">\n <div class=\"calendar-icon\">\n <calendar-check-icon />\n </div>\n <div class=\"booked-event-header\">\n <h2 slot=\"card-title\" part=\"nbec__title\">\n {!!this.rescheduleBookingId && !this.isLoading\n ? `${i18next.t('bookingRescheduled')}`\n : isManualConfirmation && !this.isLoading\n ? `${i18next.t('bookingSent')}`\n : `${i18next.t('bookingConfirmed')}`}\n !\n </h2>\n <div class=\"card-description\" part=\"nbec__description\">\n {isManualConfirmation ? i18next.t('bookingSentDescription') : <span>{i18next.t('bookingConfirmedDescription')}</span>}\n </div>\n </div>\n <div class=\"booking-date-time\">\n <checkmark-circle-icon></checkmark-circle-icon>\n <h3>{i18next.t('bookingDateAndTimeHeader')}</h3>\n <p>\n {this.selectedTimeslot?.start_time\n ? capitalizeFirstLetter(\n formatBookedEventDate(this.selectedTimeslot?.start_time as Date, this.selectedTimezone, LANGUAGE_CODE_TO_LOCALE_MAP[this.selectedLanguage]),\n )\n : '-'}{' '}\n <br />\n {this.startTime} - {this.endTime}\n </p>\n </div>\n <div class=\"booking-participants\">\n {/* <people-icon></people-icon>\n <h3>All participants</h3>\n {this.eventInfo?.participants && (\n <p>\n {this.eventInfo?.participants?.map((participant: NylasEvent['participants'][0]) => {\n return (\n <span class=\"block\">\n {participant.email} {this.getPaticipantType(participant.type) && `(${this.getPaticipantType(participant.type)})`}\n </span>\n );\n })}\n </p>\n )} */}\n </div>\n\n {!isManualConfirmation && (\n <div class=\"button-container\">\n <div\n class={{\n 'footer': true,\n 'no-footer':\n (this.configSettings?.scheduler?.hide_cancellation_options && this.configSettings?.scheduler?.hide_rescheduling_options) ||\n this.configSettings?.booking_type === 'organizer-confirmation',\n 'no-template-cols': !!this.configSettings?.scheduler?.hide_cancellation_options || !!this.configSettings?.scheduler?.hide_rescheduling_options,\n }}\n >\n {!this.configSettings?.scheduler?.hide_cancellation_options && (\n <button-component variant={'destructive'} onClick={this.handleCancelBookingButtonClicked} part=\"nbec__button-outline nbec__cancel-cta\">\n {`${i18next.t('cancelBookingButton')}`}\n </button-component>\n )}\n {!this.configSettings?.scheduler?.hide_rescheduling_options && (\n <button-component variant={'basic'} onClick={this.handleRescheduleButtonClicked} disabled={this.isLoading} part=\"nbec__button-outline nbec__reschedule-cta\">\n {`${i18next.t('rescheduleBookingButton')}`}\n </button-component>\n )}\n </div>\n </div>\n )}\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
1
+ {"file":"nylas-booked-event-card2.js","mappings":";;;;;;;;;;AAAA,MAAM,uBAAuB,GAAG,msJAAmsJ,CAAC;AACpuJ,mCAAe,uBAAuB;;;;;;;;;;;;;;;;MC4BzB,oBAAoB;;;;;;;;;QA0IvB,qCAAgC,GAAG;YACzC,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;YAC7D,MAAM,qBAAqB,GAAG,IAAI,CAAC,cAAc,EAAE,SAAS,EAAE,uBAAuB,CAAC;YACtF,IAAI,CAAC,qBAAqB,EAAE;gBAC1B,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC;gBAC/E,OAAO;aACR;YACD,MAAM,oBAAoB,GAAG,SAAS,CAAC,OAAO,EAAE,GAAG,qBAAqB,GAAG,EAAE,GAAG,IAAI,CAAC;YACrF,IAAI,oBAAoB,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE;gBAC/C,IAAI,CAAC,gCAAgC,CAAC,IAAI,CAAC;oBACzC,KAAK,EAAE;wBACL,KAAK,EAAE,oBAAoB;wBAC3B,OAAO,EAAE,wCAAwC,qBAAqB,wBAAwB;qBAC/F;iBACF,CAAC,CAAC;aACJ;iBAAM;gBACL,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC;aAChF;SACF,CAAC;QAEM,kCAA6B,GAAG;YACtC,MAAM,YAAY,GAAG,CAAC,KAAkC;gBACtD,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC7C,CAAC;YACF,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,YAAY,EAAE,CAAC,CAAC;SAC3F,CAAC;QAEF,sBAAiB,GAAG,CAAC,IAAY;YAC/B,QAAQ,IAAI;gBACV,KAAK,MAAM;oBACT,OAAO,MAAM,CAAC;gBAChB,KAAK,KAAK;oBACR,OAAO,KAAK,CAAC;gBACf;oBACE,OAAO,EAAE,CAAC;aACb;SACF,CAAC;;;;;;;gCAhI0C,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ;;gCAUd,SAAS,CAAC,QAAQ;;yBAMnE,EAAE;uBACJ,EAAE;;IA4B7B,kBAAkB,CAAC,cAA2B;QAC5C,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;KACvC;IAGD,8BAA8B,CAAC,MAAqB,EAAE,MAAqB;QACzE,IAAI,MAAM,KAAK,MAAM;YAAE,OAAO;QAC9BA,QAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;KAChC;IAED,iBAAiB,MAAK;IAEtB,oBAAoB,MAAK;IAEzB,MAAM,iBAAiB;QACrB,KAAK,CAAC,+CAA+C,CAAC,CAAC;KACxD;IAED,MAAM,gBAAgB;QACpB,KAAK,CAAC,8CAA8C,CAAC,CAAC;QACtD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,OAAO,CAAC,IAAI,CAAC,oJAAoJ,CAAC,CAAC;SACpK;QACD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,OAAO,CAAC,IAAI,CAAC,wJAAwJ,CAAC,CAAC;SACxK;QACD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,2BAA2B,CAAC,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,CAAC;QAE1E,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;YACjD,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,SAAS;YACjB,QAAQ,EAAE,IAAI,CAAC,gBAAgB;YAC/B,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,UAAkB,CAAC,CAAC;QAC9E,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,QAAgB,CAAC,CAAC;KAC3E;IAED,gBAAgB,CAAC,WAAyB;QACxC,IAAI,WAAW,EAAE;YACf,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;gBACtD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;aAC9C;SACF;KACF;IA4ED,MAAM;QACJ,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC;QACtD,MAAM,oBAAoB,GAAG,WAAW,IAAI,WAAW,KAAK,SAAS,CAAC;QAEtE,QACE,EAAC,IAAI,qDAAC,IAAI,EAAC,MAAM,IACf,4DAAK,KAAK,EAAC,yBAAyB,IAClC,4DAAK,KAAK,EAAC,uBAAuB,IAChC,oEAAyB,EACxB,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAChC,EACN,4DAAK,KAAK,EAAC,oBAAoB,EAAC,IAAI,EAAC,YAAY,IAC/C,4DAAK,KAAK,EAAC,eAAe,IACxB,6EAAuB,CACnB,EACN,4DAAK,KAAK,EAAC,qBAAqB,IAC9B,2DAAI,IAAI,EAAC,YAAY,EAAC,IAAI,EAAC,aAAa,IACrC,CAAC,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,IAAI,CAAC,SAAS;cAC1C,GAAGA,QAAO,CAAC,CAAC,CAAC,oBAAoB,CAAC,EAAE;cACpC,oBAAoB,IAAI,CAAC,IAAI,CAAC,SAAS;kBACrC,GAAGA,QAAO,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE;kBAC7B,GAAGA,QAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,EAAE,MAErC,EACL,4DAAK,KAAK,EAAC,kBAAkB,EAAC,IAAI,EAAC,mBAAmB,IACnD,oBAAoB,GAAGA,QAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC,GAAG,gBAAOA,QAAO,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAQ,CACjH,CACF,EACN,4DAAK,KAAK,EAAC,mBAAmB,IAC5B,+EAA+C,EAC/C,6DAAKA,QAAO,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAM,EAChD,4DACG,IAAI,CAAC,gBAAgB,EAAE,UAAU;cAC9B,qBAAqB,CACnB,qBAAqB,CAAC,IAAI,CAAC,gBAAgB,EAAE,UAAkB,EAAE,IAAI,CAAC,gBAAgB,EAAE,2BAA2B,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAC5I;cACD,GAAG,EAAE,GAAG,EACZ,4DAAM,EACL,IAAI,CAAC,SAAS,SAAK,IAAI,CAAC,OAAO,CAC9B,CACA,EACN,4DAAK,KAAK,EAAC,sBAAsB,GAc3B,EAEL,CAAC,oBAAoB,KACpB,WAAK,KAAK,EAAC,kBAAkB,IAC3B,WACE,KAAK,EAAE;gBACL,QAAQ,EAAE,IAAI;gBACd,WAAW,EACT,CAAC,IAAI,CAAC,cAAc,EAAE,SAAS,EAAE,yBAAyB,IAAI,IAAI,CAAC,cAAc,EAAE,SAAS,EAAE,yBAAyB;oBACvH,IAAI,CAAC,cAAc,EAAE,YAAY,KAAK,wBAAwB;gBAChE,kBAAkB,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,SAAS,EAAE,yBAAyB,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,SAAS,EAAE,yBAAyB;aAC/I,IAEA,CAAC,IAAI,CAAC,cAAc,EAAE,SAAS,EAAE,yBAAyB,KACzD,wBAAkB,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC,gCAAgC,EAAE,IAAI,EAAC,uCAAuC,IACnI,GAAGA,QAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,EAAE,CACrB,CACpB,EACA,CAAC,IAAI,CAAC,cAAc,EAAE,SAAS,EAAE,yBAAyB,KACzD,wBAAkB,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,6BAA6B,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,EAAC,2CAA2C,IACxJ,GAAGA,QAAO,CAAC,CAAC,CAAC,yBAAyB,CAAC,EAAE,CACzB,CACpB,CACG,CACF,CACP,CACG,CACF,CACD,EACP;KACH;;;;;;;;;;;;;;;;;;;;;;;;AArFD;IApCC,iBAAiB,CAA+F;QAC/G,IAAI,EAAE,yBAAyB;QAC/B,YAAY,EAAE,IAAI,GAAG,CAAC;YACpB,CAAC,uBAAuB,EAAE,aAAa,CAAC;YACxC,CAAC,+BAA+B,EAAE,qBAAqB,CAAC;YACxD,CAAC,4BAA4B,EAAE,kBAAkB,CAAC;YAClD,CAAC,4BAA4B,EAAE,kBAAkB,CAAC;YAClD,CAAC,qBAAqB,EAAE,WAAW,CAAC;YACpC,CAAC,4BAA4B,EAAE,kBAAkB,CAAC;YAClD,CAAC,0BAA0B,EAAE,gBAAgB,CAAC;YAC9C,CAAC,uBAAuB,EAAE,aAAa,CAAC;YACxC,CAAC,kBAAkB,EAAE,QAAQ,CAAC;SAC/B,CAAC;QACF,YAAY,EAAE;YACZ,0BAA0B,EAAE,OAAO,KAAyC,EAAE,uBAAgD;gBAC5H,uBAAuB,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;aACrE;YACD,uBAAuB,EAAE,OACvB,KAAsG,EACtG,uBAAgD;gBAEhD,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBAC7F,MAAM,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC;gBACtC,IAAI,YAAY,KAAK,CAAC,MAAM,IAAI,OAAO,IAAI,MAAM,CAAC,EAAE;oBAClD,YAAY,CAAC,MAAM,CAAC,CAAC;iBACtB;aACF;YACD,0BAA0B,EAAE,OAAO,KAA+C,EAAE,wBAAiD;gBACnI,KAAK,CAAC,yBAAyB,EAAE,4BAA4B,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;aAC9E;YACD,gCAAgC,EAAE,OAAO,KAAiE,EAAE,wBAAiD;gBAC3J,KAAK,CAAC,yBAAyB,EAAE,kCAAkC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;aACpF;SACF;QACD,iBAAiB,EAAE,IAAI;KACxB,CAAC;;;;kDAsFD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["i18next"],"sources":["src/components/scheduler/nylas-booked-event-card/nylas-booked-event-card.scss?tag=nylas-booked-event-card&encapsulation=shadow","src/components/scheduler/nylas-booked-event-card/nylas-booked-event-card.tsx"],"sourcesContent":["@import '../../../common/styles/variables.scss';\n\n:host {\n display: block;\n @include default-css-variables;\n}\n\n.nylas-booked-event-card {\n height: inherit;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n align-items: center;\n font-family: var(--nylas-font-family);\n}\n\n.event-card-wrapper {\n display: flex;\n align-items: center;\n flex-direction: column;\n background-color: var(--nylas-base-0);\n color: var(--nylas-base-900);\n border-radius: var(--nylas-border-radius-3x);\n position: relative;\n margin-top: 1rem;\n margin-bottom: 2rem;\n width: 424px;\n\n @media #{$mobile} {\n width: 100%;\n border-radius: 0px;\n }\n\n box-shadow:\n 0px 1px 4px rgba(0, 0, 0, 0.1),\n 0px 3px 6px rgba(0, 0, 0, 0.06);\n}\n\n.calendar-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 3rem;\n height: 3rem;\n border-radius: 50%;\n position: absolute;\n top: -1.25rem;\n left: 50%;\n transform: translateX(-50%);\n background-color: var(--nylas-base-0);\n border: 1px solid var(--nylas-base-200);\n color: var(--nylas-base-700);\n}\n\n.booked-event-header {\n margin: 1.5rem 0;\n overflow-wrap: anywhere;\n display: flex;\n align-items: center;\n flex-direction: column;\n font-size: 16px;\n font-weight: 400;\n border-bottom: 1px solid var(--nylas-base-200);\n width: inherit;\n padding: 0 0 1.5rem;\n\n h2 {\n color: var(--nylas-base-600);\n margin-top: 1.5rem;\n margin-bottom: 0.25rem;\n font-size: 1.125rem;\n font-weight: 600;\n }\n\n .card-description {\n text-align: center;\n }\n}\n\n.booking-date-time,\n.booking-participants {\n padding: 0 1rem;\n margin-top: 1.5rem;\n margin-left: 3rem;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n align-self: flex-start;\n position: relative;\n\n svg {\n color: var(--nylas-base-700);\n position: absolute;\n left: -10px;\n }\n\n .block {\n display: block;\n }\n\n h3 {\n color: var(--nylas-base-600);\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n line-height: 1.25rem;\n text-align: justify;\n margin-bottom: 4px;\n }\n\n p {\n font-size: 16px;\n margin: 0;\n font-weight: 400;\n text-align: justify;\n color: var(--nylas-base-800);\n }\n}\n\n.booking-participants {\n margin-bottom: 1.5rem;\n}\n\n.booked-event-timezone {\n display: flex;\n color: var(--nylas-base-600);\n margin-bottom: 1.5rem;\n gap: 4px;\n margin: 2rem;\n align-items: center;\n align-self: flex-end;\n}\n\n.button-container {\n width: inherit;\n}\n\n.footer {\n padding: 0.5rem;\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 0.5rem;\n box-sizing: border-box;\n background-color: var(--nylas-base-25);\n border-top: 1px solid var(--nylas-base-200);\n width: 100%;\n border-radius: 0 0 var(--nylas-border-radius-2x) var(--nylas-border-radius-2x);\n\n &.no-template-cols {\n grid-template-columns: 1fr;\n }\n\n &.no-footer {\n display: none;\n }\n}\n\nsp-divider {\n background-color: var(--nylas-base-200);\n height: 1px;\n}\n\ncalendar-check-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n}\n","import { RegisterComponent } from '@/common/register-component';\nimport { Component, Element, EventEmitter, h, Host, Prop, State, Watch } from '@stencil/core';\nimport { NylasSchedulerConnector } from '../../..';\nimport type { NylasSchedulerBookingData } from '@/common/types';\nimport { ConfigSettings } from '@/stores/scheduler-store';\nimport { NylasScheduling } from '../nylas-scheduling/nylas-scheduling';\nimport { capitalizeFirstLetter, debug, formatBookedEventDate } from '@/utils/utils';\nimport { LANGUAGE_CODE, LANGUAGE_CODE_TO_LOCALE_MAP, TIMEZONE_MAP } from '@/common/constants';\nimport { NylasEvent } from '@/common/types';\nimport { Event } from '@stencil/core';\nimport { NylasSchedulerErrorResponse, ThemeConfig, Timeslot } from '@nylas/core';\nimport i18next from '@/utils/i18n';\n\n/**\n * The `nylas-booked-event-card` component is a UI component that displays the booked event card.\n *\n * @part nbec - The booked event card host.\n * @part nbec__card - The booked event card.\n * @part nbec__title - The title of the booked event card.\n * @part nbec__description - The description of the booked event card.\n * @part nbec__button-outline - The cancel & reschedule button CTA.\n * @part nbec__cancel-cta - The cancel button CTA.\n * @part nbec__reschedule-cta - The reschedule button CTA.\n */\n@Component({\n tag: 'nylas-booked-event-card',\n styleUrl: 'nylas-booked-event-card.scss',\n shadow: true,\n})\nexport class NylasBookedEventCard {\n /**\n * The host element.\n * Used to manage the host element of the provider.\n */\n @Element() private host!: HTMLNylasBookedEventCardElement;\n\n /**\n * @standalone\n * The booked event.\n */\n @Prop() readonly eventInfo!: NylasEvent;\n\n /**\n * @standalone\n * Booking flow type.\n */\n @Prop() readonly rescheduleBookingId?: string;\n\n /**\n * @standalone\n * The booking info used to book / reschedule the event.\n */\n @Prop() readonly bookingInfo?: NylasSchedulerBookingData;\n\n /**\n * @standalone\n * The config settings for the scheduler.\n */\n @Prop() readonly configSettings?: ConfigSettings;\n\n /**\n * @standalone\n * The loading state prop. Used to display loading state when fetching availability.\n */\n @Prop() readonly isLoading?: boolean;\n\n /**\n * @standalone\n * The theme configuration.\n */\n @Prop({ attribute: 'theme-config' }) readonly themeConfig?: any;\n\n /**\n * The selected timezone.\n */\n @Prop() readonly selectedTimezone: string = Intl.DateTimeFormat().resolvedOptions().timeZone;\n\n /**\n * The selected timeslot.\n */\n @Prop() readonly selectedTimeslot!: Timeslot;\n\n /**\n * The selected language.\n */\n @Prop({ attribute: 'selected-language' }) readonly selectedLanguage: string = navigator.language;\n /**\n * The 12-hour time format.\n */\n @Prop() hour12?: boolean;\n\n @State() startTime: string = '';\n @State() endTime: string = '';\n\n /**\n * Cancel booking button clicked event.\n */\n @Event() readonly cancelBookingButtonClicked!: EventEmitter<{ bookingId: string }>;\n\n /**\n * Reschedule button clicked event.\n * */\n @Event() readonly rescheduleButtonClicked!: EventEmitter<{ bookingId: string; errorHandler?: (error: NylasSchedulerErrorResponse) => void }>;\n\n /**\n * This event is fired when an error occurs while rescheduling the booking.\n */\n @Event() readonly rescheduleBookedEventError!: EventEmitter<NylasSchedulerErrorResponse>;\n\n /**\n * This event is fired when an error occurs while cancelling the booking.\n */\n @Event() readonly cancelBookedEventValidationError!: EventEmitter<{\n error: {\n title: string;\n message: string;\n };\n }>;\n\n @Watch('themeConfig')\n themeConfigChanged(newThemeConfig: ThemeConfig) {\n this.applyThemeConfig(newThemeConfig);\n }\n\n @Watch('selectedLanguage')\n selectedLanguageChangedHandler(newVal: LANGUAGE_CODE, oldVal: LANGUAGE_CODE) {\n if (newVal === oldVal) return;\n i18next.changeLanguage(newVal);\n }\n\n connectedCallback() {}\n\n disconnectedCallback() {}\n\n async componentWillLoad() {\n debug(`[nylas-booked-event-card] Component will load`);\n }\n\n async componentDidLoad() {\n debug(`[nylas-booked-event-card] Component did load`);\n if (!this.eventInfo) {\n console.warn('[nylas-booked-event-card] \"eventInfo\" prop missing. Please provide the event info to display the event details in the booked event card component.');\n }\n if (!this.bookingInfo) {\n console.warn('[nylas-booked-event-card] \"bookingInfo\" prop missing. Please provide the booking info to display the guest details in the booked event card component.');\n }\n this.applyThemeConfig(this.themeConfig);\n const locale = LANGUAGE_CODE_TO_LOCALE_MAP[this.selectedLanguage || 'en'];\n\n const timeFormat = new Intl.DateTimeFormat(locale, {\n hour: '2-digit',\n minute: '2-digit',\n timeZone: this.selectedTimezone,\n hour12: this.hour12,\n });\n this.startTime = timeFormat.format(this.selectedTimeslot?.start_time as Date);\n this.endTime = timeFormat.format(this.selectedTimeslot?.end_time as Date);\n }\n\n applyThemeConfig(themeConfig?: ThemeConfig) {\n if (themeConfig) {\n for (const [key, value] of Object.entries(themeConfig)) {\n this.host.style.setProperty(`${key}`, value);\n }\n }\n }\n\n private handleCancelBookingButtonClicked = () => {\n const startTime = new Date(this.selectedTimeslot.start_time);\n const minCancellationNotice = this.configSettings?.scheduler?.min_cancellation_notice;\n if (!minCancellationNotice) {\n this.cancelBookingButtonClicked.emit({ bookingId: this.eventInfo.booking_id });\n return;\n }\n const dateTillCancellation = startTime.getTime() - minCancellationNotice * 60 * 1000;\n if (dateTillCancellation < new Date().getTime()) {\n this.cancelBookedEventValidationError.emit({\n error: {\n title: 'Cancellation Error',\n message: `You cannot cancel the booking within ${minCancellationNotice} minutes of the event.`,\n },\n });\n } else {\n this.cancelBookingButtonClicked.emit({ bookingId: this.eventInfo.booking_id });\n }\n };\n\n private handleRescheduleButtonClicked = () => {\n const errorHandler = (error: NylasSchedulerErrorResponse) => {\n this.rescheduleBookedEventError.emit(error);\n };\n this.rescheduleButtonClicked.emit({ bookingId: this.eventInfo.booking_id, errorHandler });\n };\n\n getPaticipantType = (type: string) => {\n switch (type) {\n case 'host':\n return 'Host';\n case 'you':\n return 'You';\n default:\n return '';\n }\n };\n\n @RegisterComponent<NylasBookedEventCard, NylasSchedulerConnector, Exclude<NylasScheduling['stores'], undefined>>({\n name: 'nylas-booked-event-card',\n stateToProps: new Map([\n ['scheduler.bookingInfo', 'bookingInfo'],\n ['scheduler.rescheduleBookingId', 'rescheduleBookingId'],\n ['scheduler.selectedTimezone', 'selectedTimezone'],\n ['scheduler.selectedTimeslot', 'selectedTimeslot'],\n ['scheduler.isLoading', 'isLoading'],\n ['scheduler.selectedLanguage', 'selectedLanguage'],\n ['scheduler.configSettings', 'configSettings'],\n ['scheduler.themeConfig', 'themeConfig'],\n ['scheduler.hour12', 'hour12'],\n ]),\n eventToProps: {\n cancelBookingButtonClicked: async (event: CustomEvent<{ bookingId: string }>, nylasSchedulerConnector: NylasSchedulerConnector) => {\n nylasSchedulerConnector.scheduler.setCancel(event.detail.bookingId);\n },\n rescheduleButtonClicked: async (\n event: CustomEvent<{ bookingId: string; errorHandler?: (error: NylasSchedulerErrorResponse) => void }>,\n nylasSchedulerConnector: NylasSchedulerConnector,\n ) => {\n const result = await nylasSchedulerConnector.scheduler.setReschedule(event.detail.bookingId);\n const { errorHandler } = event.detail;\n if (errorHandler && (!result || 'error' in result)) {\n errorHandler(result);\n }\n },\n rescheduleBookedEventError: async (event: CustomEvent<NylasSchedulerErrorResponse>, _nylasSchedulerConnector: NylasSchedulerConnector) => {\n debug('nylas-booked-event-card', 'rescheduleBookedEventError', event.detail);\n },\n cancelBookedEventValidationError: async (event: CustomEvent<{ error: { title: string; message: string } }>, _nylasSchedulerConnector: NylasSchedulerConnector) => {\n debug('nylas-booked-event-card', 'cancelBookedEventValidationError', event.detail);\n },\n },\n fireRegisterEvent: true,\n })\n render() {\n const bookingType = this.configSettings?.booking_type;\n const isManualConfirmation = bookingType && bookingType !== 'booking';\n\n return (\n <Host part=\"nbec\">\n <div class=\"nylas-booked-event-card\">\n <div class=\"booked-event-timezone\">\n <globe-icon></globe-icon>\n {TIMEZONE_MAP[this.selectedTimezone]}\n </div>\n <div class=\"event-card-wrapper\" part=\"nbec__card\">\n <div class=\"calendar-icon\">\n <calendar-check-icon />\n </div>\n <div class=\"booked-event-header\">\n <h2 slot=\"card-title\" part=\"nbec__title\">\n {!!this.rescheduleBookingId && !this.isLoading\n ? `${i18next.t('bookingRescheduled')}`\n : isManualConfirmation && !this.isLoading\n ? `${i18next.t('bookingSent')}`\n : `${i18next.t('bookingConfirmed')}`}\n !\n </h2>\n <div class=\"card-description\" part=\"nbec__description\">\n {isManualConfirmation ? i18next.t('bookingSentDescription') : <span>{i18next.t('bookingConfirmedDescription')}</span>}\n </div>\n </div>\n <div class=\"booking-date-time\">\n <checkmark-circle-icon></checkmark-circle-icon>\n <h3>{i18next.t('bookingDateAndTimeHeader')}</h3>\n <p>\n {this.selectedTimeslot?.start_time\n ? capitalizeFirstLetter(\n formatBookedEventDate(this.selectedTimeslot?.start_time as Date, this.selectedTimezone, LANGUAGE_CODE_TO_LOCALE_MAP[this.selectedLanguage]),\n )\n : '-'}{' '}\n <br />\n {this.startTime} - {this.endTime}\n </p>\n </div>\n <div class=\"booking-participants\">\n {/* <people-icon></people-icon>\n <h3>All participants</h3>\n {this.eventInfo?.participants && (\n <p>\n {this.eventInfo?.participants?.map((participant: NylasEvent['participants'][0]) => {\n return (\n <span class=\"block\">\n {participant.email} {this.getPaticipantType(participant.type) && `(${this.getPaticipantType(participant.type)})`}\n </span>\n );\n })}\n </p>\n )} */}\n </div>\n\n {!isManualConfirmation && (\n <div class=\"button-container\">\n <div\n class={{\n 'footer': true,\n 'no-footer':\n (this.configSettings?.scheduler?.hide_cancellation_options && this.configSettings?.scheduler?.hide_rescheduling_options) ||\n this.configSettings?.booking_type === 'organizer-confirmation',\n 'no-template-cols': !!this.configSettings?.scheduler?.hide_cancellation_options || !!this.configSettings?.scheduler?.hide_rescheduling_options,\n }}\n >\n {!this.configSettings?.scheduler?.hide_cancellation_options && (\n <button-component variant={'destructive'} onClick={this.handleCancelBookingButtonClicked} part=\"nbec__button-outline nbec__cancel-cta\">\n {`${i18next.t('cancelBookingButton')}`}\n </button-component>\n )}\n {!this.configSettings?.scheduler?.hide_rescheduling_options && (\n <button-component variant={'basic'} onClick={this.handleRescheduleButtonClicked} disabled={this.isLoading} part=\"nbec__button-outline nbec__reschedule-cta\">\n {`${i18next.t('rescheduleBookingButton')}`}\n </button-component>\n )}\n </div>\n </div>\n )}\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
@@ -40,6 +40,8 @@ const NylasBookingConfirmationRedirect = proxyCustomElement(class NylasBookingCo
40
40
  this.currentRedirectUrl = '';
41
41
  this.acceptUrl = undefined;
42
42
  this.componentLoaded = false;
43
+ this.requiredError = '';
44
+ this.patternError = '';
43
45
  }
44
46
  elementNameChangedHandler(newValue) {
45
47
  debug('nylas-booking-confirmation-redirect', 'elementNameChangedHandler', newValue);
@@ -56,6 +58,8 @@ const NylasBookingConfirmationRedirect = proxyCustomElement(class NylasBookingCo
56
58
  if (newVal === oldVal)
57
59
  return;
58
60
  instance.changeLanguage(newVal);
61
+ this.requiredError = instance.t('fieldRequired', { field: instance.t('redirectUrl') });
62
+ this.patternError = instance.t('invalidInputFormat', { field: instance.t('redirectUrl') });
59
63
  }
60
64
  connectedCallback() {
61
65
  debug('nylas-booking-confirmation-redirect', 'connectedCallback');
@@ -113,8 +117,8 @@ const NylasBookingConfirmationRedirect = proxyCustomElement(class NylasBookingCo
113
117
  if (this.acceptUrl && name === 'confirmation-redirect') {
114
118
  this.redirectUrlErrorMessage = '';
115
119
  if (!isValidUrl(this.currentRedirectUrl)) {
116
- this.internals.setValidity({ customError: true }, 'Please enter a valid URL.');
117
- this.redirectUrlErrorMessage = 'Please enter a valid URL.';
120
+ this.internals.setValidity({ customError: true }, instance.t('nylasBookingConfirmationRedirect.customRedirectUrlErrorMessage'));
121
+ this.redirectUrlErrorMessage = instance.t('nylasBookingConfirmationRedirect.customRedirectUrlErrorMessage');
118
122
  return;
119
123
  }
120
124
  this.internals.setValidity({});
@@ -127,8 +131,8 @@ const NylasBookingConfirmationRedirect = proxyCustomElement(class NylasBookingCo
127
131
  }
128
132
  formSubmittedHandler(_event) {
129
133
  if (this.acceptUrl && !isValidUrl(this.currentRedirectUrl)) {
130
- this.internals.setValidity({ customError: true }, 'Please enter a valid URL.');
131
- this.redirectUrlErrorMessage = 'Please enter a valid URL.';
134
+ this.internals.setValidity({ customError: true }, instance.t('nylasBookingConfirmationRedirect.customRedirectUrlErrorMessage'));
135
+ this.redirectUrlErrorMessage = instance.t('nylasBookingConfirmationRedirect.customRedirectUrlErrorMessage');
132
136
  }
133
137
  else {
134
138
  this.internals.setValidity({});
@@ -145,7 +149,7 @@ const NylasBookingConfirmationRedirect = proxyCustomElement(class NylasBookingCo
145
149
  value: 'custom',
146
150
  },
147
151
  ];
148
- return (h(Host, { key: 'cdeb8b02f983324f32eab10e0562d104e6502aaf' }, h("div", { key: '5e3acf615cebba5d2d78fbfd2c3cf6e4fe4dcd2a', class: "nylas-booking-confirmation-redirect", part: "nbcr" }, redirectOptions.length > 0 && (h("div", { class: "nylas-booking-confirmation-redirect__dropdown" }, h("span", { class: "label" }, instance.t('nylasBookingConfirmationRedirect.dropdownLabel'), h("tooltip-component", null, h("info-icon", { slot: "tooltip-icon" }), h("span", { slot: "tooltip-content" }, instance.t('nylasBookingConfirmationRedirect.tooltip.desc')))), this.componentLoaded && (h("select-dropdown", { name: "confirmation-redirect-dropdown", options: redirectOptions, withSearch: false, defaultSelectedOption: redirectOptions.find(option => option.value === (this.acceptUrl ? 'custom' : 'default')), exportparts: "sd_dropdown: nbcr__dropdown, sd_dropdown-button: nbcr__dropdown-button, sd_dropdown-content: nbcr__dropdown-content" })), this.acceptUrl && (h("div", null, h("input-component", { name: "confirmation-redirect", id: "confirmation-redirect", type: "text", placeholder: "Enter custom redirect URL", required: false, part: "ic__input_wrapper: nbcr__input-textfield", defaultValue: this.currentRedirectUrl }), this.redirectUrlErrorMessage && h("span", { class: "error-message" }, this.redirectUrlErrorMessage))))))));
152
+ return (h(Host, { key: '3f0b860be075b40c1c4c128b3300de4ecccd8057' }, h("div", { key: '75bd98cf98b22ede61543e1c6d4cb3e1a2fab868', class: "nylas-booking-confirmation-redirect", part: "nbcr" }, redirectOptions.length > 0 && (h("div", { class: "nylas-booking-confirmation-redirect__dropdown" }, h("span", { class: "label" }, instance.t('nylasBookingConfirmationRedirect.dropdownLabel'), h("tooltip-component", null, h("info-icon", { slot: "tooltip-icon" }), h("span", { slot: "tooltip-content" }, instance.t('nylasBookingConfirmationRedirect.tooltip.desc')))), this.componentLoaded && (h("select-dropdown", { name: "confirmation-redirect-dropdown", options: redirectOptions, withSearch: false, defaultSelectedOption: redirectOptions.find(option => option.value === (this.acceptUrl ? 'custom' : 'default')), exportparts: "sd_dropdown: nbcr__dropdown, sd_dropdown-button: nbcr__dropdown-button, sd_dropdown-content: nbcr__dropdown-content" })), this.acceptUrl && (h("div", null, h("input-component", { name: "confirmation-redirect", id: "confirmation-redirect", type: "text", placeholder: instance.t('nylasBookingConfirmationRedirect.customRedirectUrlPlaceholder'), required: false, part: "ic__input_wrapper: nbcr__input-textfield", requiredError: this.requiredError, patternError: this.patternError, defaultValue: this.currentRedirectUrl }), this.redirectUrlErrorMessage && h("span", { class: "error-message" }, this.redirectUrlErrorMessage))))))));
149
153
  }
150
154
  static get formAssociated() { return true; }
151
155
  get host() { return this; }
@@ -163,7 +167,9 @@ const NylasBookingConfirmationRedirect = proxyCustomElement(class NylasBookingCo
163
167
  "selectedLanguage": [1, "selected-language"],
164
168
  "currentRedirectUrl": [32],
165
169
  "acceptUrl": [32],
166
- "componentLoaded": [32]
170
+ "componentLoaded": [32],
171
+ "requiredError": [32],
172
+ "patternError": [32]
167
173
  }, [[0, "nylasFormDropdownChanged", "nylasFormDropdownChangedHandler"], [0, "nylasFormInputBlurred", "nylasFormInputBlurHandler"], [4, "formSubmitted", "formSubmittedHandler"]], {
168
174
  "name": ["elementNameChangedHandler"],
169
175
  "selectedConfiguration": ["selectedConfigurationChangedHandler"],
@@ -1 +1 @@
1
- {"file":"nylas-booking-confirmation-redirect2.js","mappings":"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","names":["i18next"],"sources":["src/components/scheduler-editor/nylas-booking-confirmation-redirect/nylas-booking-confirmation-redirect.scss?tag=nylas-booking-confirmation-redirect&encapsulation=shadow","src/components/scheduler-editor/nylas-booking-confirmation-redirect/nylas-booking-confirmation-redirect.tsx"],"sourcesContent":["@import '../../../common/styles/variables.scss';\n\n:host {\n display: block;\n @include default-css-variables;\n width: inherit;\n}\n\n.nylas-booking-confirmation-redirect {\n width: inherit;\n display: flex;\n flex-direction: column;\n\n .nylas-booking-confirmation-redirect__dropdown {\n span.label {\n display: flex;\n align-items: center;\n gap: 4px;\n margin-bottom: 4px;\n color: var(--nylas-base-800);\n\n tooltip-component {\n display: flex;\n }\n }\n\n select-dropdown::part(sd_dropdown) {\n width: 100%;\n }\n\n select-dropdown::part(sd_dropdown-button) {\n width: 100%;\n display: flex;\n justify-content: space-between;\n align-items: center;\n border: 1px solid var(--nylas-base-200);\n border-radius: var(--nylas-border-radius-2x);\n padding: 1rem;\n }\n\n select-dropdown::part(sd_dropdown-content) {\n width: 100%;\n max-width: unset;\n }\n\n select-dropdown::part(sd_dropdown-button-selected-label) {\n max-width: calc(100% - 2rem);\n font-family: var(--nylas-font-family);\n font-size: 16px;\n line-height: 24px;\n }\n\n input-component::part(ic__input_wrapper) {\n margin-top: 1rem;\n }\n\n span.error-message {\n color: var(--nylas-error);\n }\n }\n}\n","import { RegisterComponent } from '@/common/register-component';\nimport { NylasSchedulerConfigConnector } from '@/connector/nylas-scheduler-config-connector';\nimport { debug } from '@/utils/utils';\nimport { AttachInternals, Component, Element, Event, EventEmitter, Host, Listen, Prop, State, Watch, h } from '@stencil/core';\nimport { NylasSchedulerEditor } from '../nylas-scheduler-editor/nylas-scheduler-editor';\nimport { isValidUrl } from '@/utils/utils';\nimport { Configuration } from '@nylas/core';\nimport i18next from '@/utils/i18n';\nimport { LANGUAGE_CODE } from '@/common/constants';\n\n/**\n * The `nylas-booking-confirmation-redirect` component is a UI component that allows the user to choose a custom redirect URL after a booking is confirmed.\n * @part nbcr - The booking redirect container\n * @part nbcr__header - The header of the booking redirect\n * @part nbcr__dropdown - The dropdown container\n * @part nbcr__dropdown-button - The dropdown button\n * @part nbcr__dropdown-content - The dropdown content\n * @part nbcr__input-textfield - The input field content\n */\n@Component({\n tag: 'nylas-booking-confirmation-redirect',\n styleUrl: 'nylas-booking-confirmation-redirect.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class NylasBookingConfirmationRedirect {\n @Element() host!: HTMLNylasBookingConfirmationRedirectElement;\n /**\n * @standalone\n * The selected config\n */\n @Prop() selectedConfiguration?: Configuration;\n /**\n * @standalone\n * The name of the confirmation redirect link.\n */\n @Prop() name: string = 'confirmation-redirect';\n /**\n * @standalone\n * The custom redirect URL.\n */\n @Prop() redirectUrl: string = '';\n /**\n * @standalone\n * The custom redirect URL error message\n */\n @Prop() redirectUrlErrorMessage: string = '';\n /**\n * The selected language.\n */\n @Prop() selectedLanguage?: LANGUAGE_CODE;\n /**\n * The element internals.\n */\n @AttachInternals() internals!: ElementInternals;\n\n /**\n * The current redirect URL.\n */\n @State() currentRedirectUrl: string = '';\n /**\n * The state for whether a custom URL can be added.\n */\n @State() acceptUrl!: boolean;\n\n @State() componentLoaded: boolean = false;\n\n /**\n * This event is fired when the current redirect URL changes and is valid.\n */\n @Event() valueChanged!: EventEmitter<{\n value: string;\n name: string;\n valueChanged?: (event: CustomEvent<{ value: string; name: string }>) => void;\n }>;\n\n /**\n * When a name prop is passed, stencil does not automatically set the name attribute on the host element.\n * Since this component is form-associated, the name attribute is required for form submission.\n * This is a workaround to ensure that the name attribute is set on the host element.\n */\n @Watch('name')\n elementNameChangedHandler(newValue: string) {\n debug('nylas-booking-confirmation-redirect', 'elementNameChangedHandler', newValue);\n this.host.setAttribute('name', newValue);\n }\n\n @Watch('selectedConfiguration')\n selectedConfigurationChangedHandler(newValue: Configuration) {\n debug('nylas-booking-confirmation-redirect', 'selectedConfigurationChangedHandler', newValue);\n if (newValue?.scheduler?.confirmation_redirect_url) {\n this.currentRedirectUrl = newValue?.scheduler?.confirmation_redirect_url;\n this.acceptUrl = newValue?.scheduler?.confirmation_redirect_url !== '';\n }\n }\n\n @Watch('selectedLanguage')\n selectedLanguageChangedHandler(newVal: LANGUAGE_CODE, oldVal: LANGUAGE_CODE) {\n if (newVal === oldVal) return;\n i18next.changeLanguage(newVal);\n }\n\n // Lifecycle methods\n connectedCallback() {\n debug('nylas-booking-confirmation-redirect', 'connectedCallback');\n }\n\n disconnectedCallback() {\n debug('nylas-booking-confirmation-redirect', 'disconnectedCallback');\n }\n\n componentWillLoad() {\n debug('nylas-booking-confirmation-redirect', 'componentWillLoad');\n // See comment in the @Watch('name') decorator for more information.\n this.host.setAttribute('name', this.name);\n }\n\n componentDidLoad() {\n debug('nylas-booking-confirmation-redirect', 'componentDidLoad');\n if (this.selectedConfiguration) {\n this.selectedConfigurationChangedHandler(this.selectedConfiguration);\n } else {\n this.currentRedirectUrl = this.redirectUrl;\n this.acceptUrl = this.redirectUrl !== '';\n }\n this.componentLoaded = true;\n if (typeof this.internals.setFormValue === 'function') {\n this.internals.setFormValue(this.currentRedirectUrl.toString(), this.name);\n }\n }\n\n componentWillUpdate() {\n debug('nylas-booking-confirmation-redirect', 'componentWillUpdate');\n }\n\n componentDidUpdate() {\n debug('nylas-booking-confirmation-redirect', 'componentDidUpdate');\n }\n\n componentWillRender() {\n debug('nylas-booking-confirmation-redirect', 'componentWillRender');\n }\n\n componentDidRender() {\n debug('nylas-booking-confirmation-redirect', 'componentDidRender');\n }\n\n @Listen('nylasFormDropdownChanged')\n nylasFormDropdownChangedHandler(event: CustomEvent<{ value: string; name: string }>) {\n debug('nylas-booking-confirmation-redirect', 'nylasFormDropdownChangedHandler', event.detail);\n\n const { name, value } = event.detail;\n\n if (name === 'confirmation-redirect-dropdown') {\n if (value === 'custom') {\n this.acceptUrl = true;\n } else {\n this.acceptUrl = false;\n\n // Submit empty string to clear redirect URL\n this.internals.setFormValue('', this.name);\n this.valueChanged.emit({ name: this.name, value: '' });\n }\n }\n }\n\n @Listen('nylasFormInputBlurred')\n nylasFormInputBlurHandler(event: CustomEvent<{ value: string; name: string }>) {\n const { name, value } = event.detail;\n this.currentRedirectUrl = value;\n\n if (this.acceptUrl && name === 'confirmation-redirect') {\n this.redirectUrlErrorMessage = '';\n\n if (!isValidUrl(this.currentRedirectUrl)) {\n this.internals.setValidity({ customError: true }, 'Please enter a valid URL.');\n this.redirectUrlErrorMessage = 'Please enter a valid URL.';\n return;\n }\n this.internals.setValidity({});\n\n // Pass as handler so that if event.defaultPrevented by parent app, this will be skipped.\n const valueChanged = (event: CustomEvent<{ value: string; name: string }>) => {\n const { value } = event.detail;\n this.internals.setFormValue(value.toString(), this.name);\n };\n this.valueChanged.emit({ ...event.detail, valueChanged });\n }\n }\n\n @Listen('formSubmitted', { target: 'document' })\n formSubmittedHandler(_event: CustomEvent) {\n if (this.acceptUrl && !isValidUrl(this.currentRedirectUrl)) {\n this.internals.setValidity({ customError: true }, 'Please enter a valid URL.');\n this.redirectUrlErrorMessage = 'Please enter a valid URL.';\n } else {\n this.internals.setValidity({});\n }\n }\n\n @RegisterComponent<NylasBookingConfirmationRedirect, NylasSchedulerConfigConnector, Exclude<NylasSchedulerEditor['stores'], undefined>>({\n name: 'nylas-booking-confirmation-redirect',\n stateToProps: new Map([\n ['schedulerConfig.selectedConfiguration', 'selectedConfiguration'],\n ['schedulerConfig.selectedLanguage', 'selectedLanguage'],\n ]),\n eventToProps: {\n valueChanged: async (\n event: CustomEvent<{ value: string; name: string; valueChanged?: (event: CustomEvent<{ value: string; name: string }>) => void }>,\n _nylasSchedulerConfigConnector: NylasSchedulerConfigConnector,\n ) => {\n const { valueChanged } = event.detail;\n // If a handler is passed, call it.\n if (valueChanged) {\n valueChanged(event);\n }\n },\n },\n fireRegisterEvent: true,\n })\n render() {\n const redirectOptions = [\n {\n label: i18next.t('nylasBookingConfirmationRedirect.redirectOption', { context: 'default' }),\n value: 'default',\n },\n {\n label: i18next.t('nylasBookingConfirmationRedirect.redirectOption', { context: 'custom' }),\n value: 'custom',\n },\n ];\n\n return (\n <Host>\n <div class=\"nylas-booking-confirmation-redirect\" part=\"nbcr\">\n {redirectOptions.length > 0 && (\n <div class=\"nylas-booking-confirmation-redirect__dropdown\">\n <span class=\"label\">\n {i18next.t('nylasBookingConfirmationRedirect.dropdownLabel')}\n <tooltip-component>\n <info-icon slot=\"tooltip-icon\" />\n <span slot=\"tooltip-content\">{i18next.t('nylasBookingConfirmationRedirect.tooltip.desc')}</span>\n </tooltip-component>\n </span>\n {this.componentLoaded && (\n <select-dropdown\n name=\"confirmation-redirect-dropdown\"\n options={redirectOptions}\n withSearch={false}\n defaultSelectedOption={redirectOptions.find(option => option.value === (this.acceptUrl ? 'custom' : 'default'))}\n exportparts=\"sd_dropdown: nbcr__dropdown, sd_dropdown-button: nbcr__dropdown-button, sd_dropdown-content: nbcr__dropdown-content\"\n />\n )}\n {this.acceptUrl && (\n <div>\n <input-component\n name=\"confirmation-redirect\"\n id=\"confirmation-redirect\"\n type=\"text\"\n placeholder=\"Enter custom redirect URL\"\n required={false}\n part=\"ic__input_wrapper: nbcr__input-textfield\"\n defaultValue={this.currentRedirectUrl}\n />\n {this.redirectUrlErrorMessage && <span class=\"error-message\">{this.redirectUrlErrorMessage}</span>}\n </div>\n )}\n </div>\n )}\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
1
+ {"file":"nylas-booking-confirmation-redirect2.js","mappings":"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","names":["i18next"],"sources":["src/components/scheduler-editor/nylas-booking-confirmation-redirect/nylas-booking-confirmation-redirect.scss?tag=nylas-booking-confirmation-redirect&encapsulation=shadow","src/components/scheduler-editor/nylas-booking-confirmation-redirect/nylas-booking-confirmation-redirect.tsx"],"sourcesContent":["@import '../../../common/styles/variables.scss';\n\n:host {\n display: block;\n @include default-css-variables;\n width: inherit;\n}\n\n.nylas-booking-confirmation-redirect {\n width: inherit;\n display: flex;\n flex-direction: column;\n\n .nylas-booking-confirmation-redirect__dropdown {\n span.label {\n display: flex;\n align-items: center;\n gap: 4px;\n margin-bottom: 4px;\n color: var(--nylas-base-800);\n\n tooltip-component {\n display: flex;\n }\n }\n\n select-dropdown::part(sd_dropdown) {\n width: 100%;\n }\n\n select-dropdown::part(sd_dropdown-button) {\n width: 100%;\n display: flex;\n justify-content: space-between;\n align-items: center;\n border: 1px solid var(--nylas-base-200);\n border-radius: var(--nylas-border-radius-2x);\n padding: 1rem;\n }\n\n select-dropdown::part(sd_dropdown-content) {\n width: 100%;\n max-width: unset;\n }\n\n select-dropdown::part(sd_dropdown-button-selected-label) {\n max-width: calc(100% - 2rem);\n font-family: var(--nylas-font-family);\n font-size: 16px;\n line-height: 24px;\n }\n\n input-component::part(ic__input_wrapper) {\n margin-top: 1rem;\n }\n\n span.error-message {\n color: var(--nylas-error);\n }\n }\n}\n","import { RegisterComponent } from '@/common/register-component';\nimport { NylasSchedulerConfigConnector } from '@/connector/nylas-scheduler-config-connector';\nimport { debug } from '@/utils/utils';\nimport { AttachInternals, Component, Element, Event, EventEmitter, Host, Listen, Prop, State, Watch, h } from '@stencil/core';\nimport { NylasSchedulerEditor } from '../nylas-scheduler-editor/nylas-scheduler-editor';\nimport { isValidUrl } from '@/utils/utils';\nimport { Configuration } from '@nylas/core';\nimport i18next from '@/utils/i18n';\nimport { LANGUAGE_CODE } from '@/common/constants';\n\n/**\n * The `nylas-booking-confirmation-redirect` component is a UI component that allows the user to choose a custom redirect URL after a booking is confirmed.\n * @part nbcr - The booking redirect container\n * @part nbcr__header - The header of the booking redirect\n * @part nbcr__dropdown - The dropdown container\n * @part nbcr__dropdown-button - The dropdown button\n * @part nbcr__dropdown-content - The dropdown content\n * @part nbcr__input-textfield - The input field content\n */\n@Component({\n tag: 'nylas-booking-confirmation-redirect',\n styleUrl: 'nylas-booking-confirmation-redirect.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class NylasBookingConfirmationRedirect {\n @Element() host!: HTMLNylasBookingConfirmationRedirectElement;\n /**\n * @standalone\n * The selected config\n */\n @Prop() selectedConfiguration?: Configuration;\n /**\n * @standalone\n * The name of the confirmation redirect link.\n */\n @Prop() name: string = 'confirmation-redirect';\n /**\n * @standalone\n * The custom redirect URL.\n */\n @Prop() redirectUrl: string = '';\n /**\n * @standalone\n * The custom redirect URL error message\n */\n @Prop() redirectUrlErrorMessage: string = '';\n /**\n * The selected language.\n */\n @Prop() selectedLanguage?: LANGUAGE_CODE;\n /**\n * The element internals.\n */\n @AttachInternals() internals!: ElementInternals;\n\n /**\n * The current redirect URL.\n */\n @State() currentRedirectUrl: string = '';\n /**\n * The state for whether a custom URL can be added.\n */\n @State() acceptUrl!: boolean;\n\n @State() componentLoaded: boolean = false;\n\n @State() requiredError: string = '';\n @State() patternError: string = '';\n\n /**\n * This event is fired when the current redirect URL changes and is valid.\n */\n @Event() valueChanged!: EventEmitter<{\n value: string;\n name: string;\n valueChanged?: (event: CustomEvent<{ value: string; name: string }>) => void;\n }>;\n\n /**\n * When a name prop is passed, stencil does not automatically set the name attribute on the host element.\n * Since this component is form-associated, the name attribute is required for form submission.\n * This is a workaround to ensure that the name attribute is set on the host element.\n */\n @Watch('name')\n elementNameChangedHandler(newValue: string) {\n debug('nylas-booking-confirmation-redirect', 'elementNameChangedHandler', newValue);\n this.host.setAttribute('name', newValue);\n }\n\n @Watch('selectedConfiguration')\n selectedConfigurationChangedHandler(newValue: Configuration) {\n debug('nylas-booking-confirmation-redirect', 'selectedConfigurationChangedHandler', newValue);\n if (newValue?.scheduler?.confirmation_redirect_url) {\n this.currentRedirectUrl = newValue?.scheduler?.confirmation_redirect_url;\n this.acceptUrl = newValue?.scheduler?.confirmation_redirect_url !== '';\n }\n }\n\n @Watch('selectedLanguage')\n selectedLanguageChangedHandler(newVal: LANGUAGE_CODE, oldVal: LANGUAGE_CODE) {\n if (newVal === oldVal) return;\n i18next.changeLanguage(newVal);\n this.requiredError = i18next.t('fieldRequired', { field: i18next.t('redirectUrl') });\n this.patternError = i18next.t('invalidInputFormat', { field: i18next.t('redirectUrl') });\n }\n\n // Lifecycle methods\n connectedCallback() {\n debug('nylas-booking-confirmation-redirect', 'connectedCallback');\n }\n\n disconnectedCallback() {\n debug('nylas-booking-confirmation-redirect', 'disconnectedCallback');\n }\n\n componentWillLoad() {\n debug('nylas-booking-confirmation-redirect', 'componentWillLoad');\n // See comment in the @Watch('name') decorator for more information.\n this.host.setAttribute('name', this.name);\n }\n\n componentDidLoad() {\n debug('nylas-booking-confirmation-redirect', 'componentDidLoad');\n if (this.selectedConfiguration) {\n this.selectedConfigurationChangedHandler(this.selectedConfiguration);\n } else {\n this.currentRedirectUrl = this.redirectUrl;\n this.acceptUrl = this.redirectUrl !== '';\n }\n this.componentLoaded = true;\n if (typeof this.internals.setFormValue === 'function') {\n this.internals.setFormValue(this.currentRedirectUrl.toString(), this.name);\n }\n }\n\n componentWillUpdate() {\n debug('nylas-booking-confirmation-redirect', 'componentWillUpdate');\n }\n\n componentDidUpdate() {\n debug('nylas-booking-confirmation-redirect', 'componentDidUpdate');\n }\n\n componentWillRender() {\n debug('nylas-booking-confirmation-redirect', 'componentWillRender');\n }\n\n componentDidRender() {\n debug('nylas-booking-confirmation-redirect', 'componentDidRender');\n }\n\n @Listen('nylasFormDropdownChanged')\n nylasFormDropdownChangedHandler(event: CustomEvent<{ value: string; name: string }>) {\n debug('nylas-booking-confirmation-redirect', 'nylasFormDropdownChangedHandler', event.detail);\n\n const { name, value } = event.detail;\n\n if (name === 'confirmation-redirect-dropdown') {\n if (value === 'custom') {\n this.acceptUrl = true;\n } else {\n this.acceptUrl = false;\n\n // Submit empty string to clear redirect URL\n this.internals.setFormValue('', this.name);\n this.valueChanged.emit({ name: this.name, value: '' });\n }\n }\n }\n\n @Listen('nylasFormInputBlurred')\n nylasFormInputBlurHandler(event: CustomEvent<{ value: string; name: string }>) {\n const { name, value } = event.detail;\n this.currentRedirectUrl = value;\n\n if (this.acceptUrl && name === 'confirmation-redirect') {\n this.redirectUrlErrorMessage = '';\n\n if (!isValidUrl(this.currentRedirectUrl)) {\n this.internals.setValidity({ customError: true }, i18next.t('nylasBookingConfirmationRedirect.customRedirectUrlErrorMessage'));\n this.redirectUrlErrorMessage = i18next.t('nylasBookingConfirmationRedirect.customRedirectUrlErrorMessage');\n return;\n }\n this.internals.setValidity({});\n\n // Pass as handler so that if event.defaultPrevented by parent app, this will be skipped.\n const valueChanged = (event: CustomEvent<{ value: string; name: string }>) => {\n const { value } = event.detail;\n this.internals.setFormValue(value.toString(), this.name);\n };\n this.valueChanged.emit({ ...event.detail, valueChanged });\n }\n }\n\n @Listen('formSubmitted', { target: 'document' })\n formSubmittedHandler(_event: CustomEvent) {\n if (this.acceptUrl && !isValidUrl(this.currentRedirectUrl)) {\n this.internals.setValidity({ customError: true }, i18next.t('nylasBookingConfirmationRedirect.customRedirectUrlErrorMessage'));\n this.redirectUrlErrorMessage = i18next.t('nylasBookingConfirmationRedirect.customRedirectUrlErrorMessage');\n } else {\n this.internals.setValidity({});\n }\n }\n\n @RegisterComponent<NylasBookingConfirmationRedirect, NylasSchedulerConfigConnector, Exclude<NylasSchedulerEditor['stores'], undefined>>({\n name: 'nylas-booking-confirmation-redirect',\n stateToProps: new Map([\n ['schedulerConfig.selectedConfiguration', 'selectedConfiguration'],\n ['schedulerConfig.selectedLanguage', 'selectedLanguage'],\n ]),\n eventToProps: {\n valueChanged: async (\n event: CustomEvent<{ value: string; name: string; valueChanged?: (event: CustomEvent<{ value: string; name: string }>) => void }>,\n _nylasSchedulerConfigConnector: NylasSchedulerConfigConnector,\n ) => {\n const { valueChanged } = event.detail;\n // If a handler is passed, call it.\n if (valueChanged) {\n valueChanged(event);\n }\n },\n },\n fireRegisterEvent: true,\n })\n render() {\n const redirectOptions = [\n {\n label: i18next.t('nylasBookingConfirmationRedirect.redirectOption', { context: 'default' }),\n value: 'default',\n },\n {\n label: i18next.t('nylasBookingConfirmationRedirect.redirectOption', { context: 'custom' }),\n value: 'custom',\n },\n ];\n\n return (\n <Host>\n <div class=\"nylas-booking-confirmation-redirect\" part=\"nbcr\">\n {redirectOptions.length > 0 && (\n <div class=\"nylas-booking-confirmation-redirect__dropdown\">\n <span class=\"label\">\n {i18next.t('nylasBookingConfirmationRedirect.dropdownLabel')}\n <tooltip-component>\n <info-icon slot=\"tooltip-icon\" />\n <span slot=\"tooltip-content\">{i18next.t('nylasBookingConfirmationRedirect.tooltip.desc')}</span>\n </tooltip-component>\n </span>\n {this.componentLoaded && (\n <select-dropdown\n name=\"confirmation-redirect-dropdown\"\n options={redirectOptions}\n withSearch={false}\n defaultSelectedOption={redirectOptions.find(option => option.value === (this.acceptUrl ? 'custom' : 'default'))}\n exportparts=\"sd_dropdown: nbcr__dropdown, sd_dropdown-button: nbcr__dropdown-button, sd_dropdown-content: nbcr__dropdown-content\"\n />\n )}\n {this.acceptUrl && (\n <div>\n <input-component\n name=\"confirmation-redirect\"\n id=\"confirmation-redirect\"\n type=\"text\"\n placeholder={i18next.t('nylasBookingConfirmationRedirect.customRedirectUrlPlaceholder')}\n required={false}\n part=\"ic__input_wrapper: nbcr__input-textfield\"\n requiredError={this.requiredError}\n patternError={this.patternError}\n defaultValue={this.currentRedirectUrl}\n />\n {this.redirectUrlErrorMessage && <span class=\"error-message\">{this.redirectUrlErrorMessage}</span>}\n </div>\n )}\n </div>\n )}\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
@@ -174,6 +174,7 @@ const NylasBookingForm = proxyCustomElement(class NylasBookingForm extends HTMLE
174
174
  this.configSettings = undefined;
175
175
  this.themeConfig = undefined;
176
176
  this.selectedTimeslot = undefined;
177
+ this.selectedLanguage = undefined;
177
178
  this.name = '';
178
179
  this.email = '';
179
180
  this.guestEmails = [];
@@ -181,6 +182,10 @@ const NylasBookingForm = proxyCustomElement(class NylasBookingForm extends HTMLE
181
182
  this.isNameValid = true;
182
183
  this.isEmailValid = true;
183
184
  this.additionalFields = {};
185
+ this.namePatternError = '';
186
+ this.nameRequiredError = '';
187
+ this.emailPatternError = '';
188
+ this.emailRequiredError = '';
184
189
  this.validationError = { name: '', email: '' };
185
190
  this.backButtonLoading = false;
186
191
  this.firstRender = true;
@@ -228,6 +233,15 @@ const NylasBookingForm = proxyCustomElement(class NylasBookingForm extends HTMLE
228
233
  themeConfigChanged(newThemeConfig) {
229
234
  this.applyThemeConfig(newThemeConfig);
230
235
  }
236
+ selectedLanguageChangedHandler(newVal, oldVal) {
237
+ if (newVal === oldVal)
238
+ return;
239
+ instance.changeLanguage(newVal);
240
+ this.namePatternError = instance.t('invalidInputFormat', { field: instance.t('name') });
241
+ this.nameRequiredError = instance.t('fieldRequired', { field: instance.t('name') });
242
+ this.emailPatternError = instance.t('invalidInputFormat', { field: instance.t('email') });
243
+ this.emailRequiredError = instance.t('fieldRequired', { field: instance.t('email') });
244
+ }
231
245
  iterateFormComponents() {
232
246
  const form = this.formRef;
233
247
  const customComponentsList = [
@@ -339,7 +353,7 @@ const NylasBookingForm = proxyCustomElement(class NylasBookingForm extends HTMLE
339
353
  }
340
354
  render() {
341
355
  const isGroupEvent = !!this.selectedTimeslot?.event_id && !!this.selectedTimeslot?.capacity;
342
- return (h(Host, { key: 'a61445ec4453e619fb5525d2089675923b7b6c95' }, h("form", { key: 'c227ed38d49928a5707b85992d37473afe424a51', onSubmit: e => this.bookButtonClickedHandler(e), ref: el => (this.formRef = el), noValidate: true }, h("div", { key: '425cbdafd7573f7c010df1a892db9d38ee54bc8a', class: "nylas-booking-form", part: "nbf" }, h("div", { key: '93506a3e9155ae24e4908265b35653701f3faf6f', class: "input-wrapper", part: "nbf__input-wrapper" }, h("input-component", { key: '7b54bbb3b3065785058dbdebc1f271b6b712e718', label: instance.t('name'), name: "name", id: "name", defaultValue: this.bookingInfo?.primaryParticipant?.name || this.configSettings?.booking?.guest?.name || this.name, placeholder: instance.t('namePlaceholder'), type: "text", readOnly: this.bookingInfo?.primaryParticipant?.nameReadOnly || false, required: true, requiredError: instance.t('fieldRequired', { field: instance.t('name') }), patternError: instance.t('invalidInputFormat', { field: instance.t('name') }), part: "nbf__input-textfield" })), h("div", { key: '2d0b8ccc0390faae5a7e29c1c2c568418bb9bad5', class: "input-wrapper", part: "nbf__input-wrapper" }, h("input-component", { key: '61c6bed06d612ce4f0bb366cbe675048ad6fa49e', label: instance.t('email'), name: "email", id: "email", pattern: emailRegex, defaultValue: this.bookingInfo?.primaryParticipant?.email || this.configSettings?.booking?.guest?.email || this.email, placeholder: instance.t('emailPlaceholder'), type: "email", readOnly: this.bookingInfo?.primaryParticipant?.emailReadOnly || false, required: true, requiredError: instance.t('fieldRequired', { field: instance.t('email') }), patternError: instance.t('invalidInputFormat', { field: instance.t('email') }), part: "nbf__input-textfield" })), this.configSettings?.scheduler?.hide_additional_guests !== true && (h("div", { class: "input-wrapper", part: "nbf__input-wrapper" }, this.guestEmails.map((email, index) => (h("div", { class: "input-wrapper button-wrapper" }, h("label", { class: {
356
+ return (h(Host, { key: '6659bdd250a39e69ecd8a4468b4f5bf5f3ced414' }, h("form", { key: 'ee7e0b97a449cdb18fa474bb5950ebc34922265d', onSubmit: e => this.bookButtonClickedHandler(e), ref: el => (this.formRef = el), noValidate: true }, h("div", { key: 'b59b81ef1c13449b1e49608ef6faeebbce3fef4d', class: "nylas-booking-form", part: "nbf" }, h("div", { key: 'cf75db4476ff5f8b013cbd349038a5945b9aecb0', class: "input-wrapper", part: "nbf__input-wrapper" }, h("input-component", { key: '9d5e5e2a2b3a64542bf7df48c0d4dc04bab2a468', label: instance.t('name'), name: "name", id: "name", defaultValue: this.bookingInfo?.primaryParticipant?.name || this.configSettings?.booking?.guest?.name || this.name, placeholder: instance.t('namePlaceholder'), type: "text", readOnly: this.bookingInfo?.primaryParticipant?.nameReadOnly || false, required: true, requiredError: this.nameRequiredError, patternError: this.namePatternError, part: "nbf__input-textfield" })), h("div", { key: 'd51c1ba6f352aaf611c04efd567d12df03adda6c', class: "input-wrapper", part: "nbf__input-wrapper" }, h("input-component", { key: '4fd09b511fd35c732fce53dba8d85d9f1f3e7dfd', label: instance.t('email'), name: "email", id: "email", pattern: emailRegex, defaultValue: this.bookingInfo?.primaryParticipant?.email || this.configSettings?.booking?.guest?.email || this.email, placeholder: instance.t('emailPlaceholder'), type: "email", readOnly: this.bookingInfo?.primaryParticipant?.emailReadOnly || false, required: true, requiredError: this.emailRequiredError, patternError: this.emailPatternError, part: "nbf__input-textfield" })), this.configSettings?.scheduler?.hide_additional_guests !== true && (h("div", { class: "input-wrapper", part: "nbf__input-wrapper" }, this.guestEmails.map((email, index) => (h("div", { class: "input-wrapper button-wrapper" }, h("label", { class: {
343
357
  error: !!this.guestEmailErrors[index],
344
358
  } }, instance.t('guestEmail')), h("div", { class: "guest-email-input" }, h("input", { type: "email", id: `guest-email-${index}`, maxLength: 100, class: {
345
359
  'guest-email': true,
@@ -360,7 +374,7 @@ const NylasBookingForm = proxyCustomElement(class NylasBookingForm extends HTMLE
360
374
  return (h("div", { class: "input-wrapper", part: "nbf__input-wrapper" }, h("select-dropdown", { label: label, name: key, id: key, readOnly: fieldReadOnly, withSearch: false, emptyValue: instance.t('nylasBookingCalendarPicker.selectOptionLabel'), defaultSelectedOption: defaultValue ? { value: defaultValue, label: defaultValue } : undefined, options: [
361
375
  { value: '', label: instance.t('nylasBookingCalendarPicker.selectOptionLabel') },
362
376
  ...(field.options?.map(option => ({ value: option, label: option })) || []),
363
- ], required: field.required, exportparts: "sd_dropdown: nbf__dropdown, sd_dropdown-button: nbf__dropdown-button, sd_dropdown-content: nbf__dropdown-content" })));
377
+ ], required: field.required, errorMessage: instance.t('fieldRequired', { field: label }), exportparts: "sd_dropdown: nbf__dropdown, sd_dropdown-button: nbf__dropdown-button, sd_dropdown-content: nbf__dropdown-content" })));
364
378
  case 'checkbox':
365
379
  return (h("div", { class: "input-wrapper", part: "nbf__input-wrapper" }, h("checkbox-component", { readOnly: fieldReadOnly, label: label, name: key, id: key, checked: defaultValue === 'true', required: field.required, part: "nbf__checkbox-component" })));
366
380
  case 'radio_button':
@@ -376,15 +390,16 @@ const NylasBookingForm = proxyCustomElement(class NylasBookingForm extends HTMLE
376
390
  case 'metadata':
377
391
  return null;
378
392
  default:
379
- return (h("div", { class: "input-wrapper", part: "nbf__input-wrapper" }, h("input-component", { label: label, name: key, id: key, type: field.type, readOnly: fieldReadOnly, defaultValue: defaultValue || '', requiredError: instance.t('fieldRequired', { field: label }), required: field.required, part: "nbf__input-textfield" })));
393
+ return (h("div", { class: "input-wrapper", part: "nbf__input-wrapper" }, h("input-component", { label: label, name: key, id: key, type: field.type, readOnly: fieldReadOnly, defaultValue: defaultValue || '', requiredError: instance.t('fieldRequired', { field: label }), patternError: instance.t('invalidInputFormat', { field: label }), required: field.required, part: "nbf__input-textfield" })));
380
394
  }
381
- })), h("div", { key: '808fd99c41558ea710610e70fbaac8e8c731eba6', class: "cta" }, h("button-component", { key: 'd72719799742224c3d4ab7596a287e2e3f38187e', variant: 'basic', class: "back", part: "nbf__button-outline", isLoading: this.backButtonLoading && this.isLoading, onClick: this.handleBackButtonClicked }, h("slot", { key: '280c1674e4aa7fca3f13ec1e680cccf140f6d600', name: "booking-form-back-label" }, `${instance.t('backButton')}`)), h("button-component", { key: 'a6d1131de56b24415c5665b4d82a9af714843bb7', variant: 'primary', isLoading: !this.backButtonLoading && this.isLoading, disabled: this.isLoading, part: "nbf__button-primary", type: "submit" }, h("slot", { key: 'bc0f92e27c465efdfa67f5bda1d3b59cd4c4f389', name: "booking-form-book-label" }, `${instance.t('bookNowButton')}`))))));
395
+ })), h("div", { key: '903b248bb07920e75736ff3b38c142cfd9748c3e', class: "cta" }, h("button-component", { key: '967df15c0a3ce75d07f5b78a3511f0412f8e8d1d', variant: 'basic', class: "back", part: "nbf__button-outline", isLoading: this.backButtonLoading && this.isLoading, onClick: this.handleBackButtonClicked }, h("slot", { key: 'c552facf14ba5ddecbf85f32b6976d2a19c74364', name: "booking-form-back-label" }, `${instance.t('backButton')}`)), h("button-component", { key: 'a07f122b3f9b4b89c049e868e71c993be0eb2da4', variant: 'primary', isLoading: !this.backButtonLoading && this.isLoading, disabled: this.isLoading, part: "nbf__button-primary", type: "submit" }, h("slot", { key: '91884303152748e6cdf080e32d1b78eab1fdd975', name: "booking-form-book-label" }, `${instance.t('bookNowButton')}`))))));
382
396
  }
383
397
  get host() { return this; }
384
398
  static get watchers() { return {
385
399
  "bookingInfo": ["bookingInfoChangedHandler"],
386
400
  "configSettings": ["configSettingsChangedHandler"],
387
- "themeConfig": ["themeConfigChanged"]
401
+ "themeConfig": ["themeConfigChanged"],
402
+ "selectedLanguage": ["selectedLanguageChangedHandler"]
388
403
  }; }
389
404
  static get style() { return NylasBookingFormStyle0; }
390
405
  }, [1, "nylas-booking-form", {
@@ -394,6 +409,7 @@ const NylasBookingForm = proxyCustomElement(class NylasBookingForm extends HTMLE
394
409
  "configSettings": [16],
395
410
  "themeConfig": [8, "theme-config"],
396
411
  "selectedTimeslot": [16],
412
+ "selectedLanguage": [1, "selected-language"],
397
413
  "name": [32],
398
414
  "email": [32],
399
415
  "guestEmails": [32],
@@ -401,13 +417,18 @@ const NylasBookingForm = proxyCustomElement(class NylasBookingForm extends HTMLE
401
417
  "isNameValid": [32],
402
418
  "isEmailValid": [32],
403
419
  "additionalFields": [32],
420
+ "namePatternError": [32],
421
+ "nameRequiredError": [32],
422
+ "emailPatternError": [32],
423
+ "emailRequiredError": [32],
404
424
  "validationError": [32],
405
425
  "backButtonLoading": [32],
406
426
  "firstRender": [32]
407
427
  }, [[0, "nylasFormInputChanged", "nylasFormInputChangedHandler"], [0, "nylasFormDropdownChanged", "selectOptionChangedHandler"], [0, "selectedOptionsChanged", "selecedOptionsChangedHandler"], [0, "nylasFormSwitchToggled", "switchToggledHandler"], [0, "nylasFormCheckboxToggled", "checkboxToggledHandler"], [0, "nylasFormRadioChanged", "radioChangedHandler"], [0, "nylasFormDropdownDefaultSelected", "dropdownDefaultSelectedHandler"]], {
408
428
  "bookingInfo": ["bookingInfoChangedHandler"],
409
429
  "configSettings": ["configSettingsChangedHandler"],
410
- "themeConfig": ["themeConfigChanged"]
430
+ "themeConfig": ["themeConfigChanged"],
431
+ "selectedLanguage": ["selectedLanguageChangedHandler"]
411
432
  }]);
412
433
  __decorate([
413
434
  RegisterComponent({
@@ -419,6 +440,7 @@ __decorate([
419
440
  ['scheduler.configSettings', 'configSettings'],
420
441
  ['scheduler.themeConfig', 'themeConfig'],
421
442
  ['scheduler.selectedTimeslot', 'selectedTimeslot'],
443
+ ['scheduler.selectedLanguage', 'selectedLanguage'],
422
444
  ]),
423
445
  eventToProps: {
424
446
  backButtonClicked: async (_event, nylasSchedulerConnector) => {