@nylas/web-elements 1.1.0-canary.5 → 1.1.0-canary.8

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 (807) hide show
  1. package/dist/cjs/add-circle-icon.cjs.entry.js +1 -1
  2. package/dist/cjs/add-circle-icon_22.cjs.entry.js +242 -101
  3. package/dist/cjs/add-circle-icon_22.cjs.entry.js.map +1 -1
  4. package/dist/cjs/archive-icon.cjs.entry.js +1 -1
  5. package/dist/cjs/archive-icon_7.cjs.entry.js +7 -7
  6. package/dist/cjs/arrow-icon.cjs.entry.js +1 -1
  7. package/dist/cjs/bold-icon.cjs.entry.js +1 -1
  8. package/dist/cjs/bold-icon_3.cjs.entry.js +3 -3
  9. package/dist/cjs/button-component.cjs.entry.js +2 -2
  10. package/dist/cjs/button-component.cjs.entry.js.map +1 -1
  11. package/dist/cjs/calendar-cancel-icon.cjs.entry.js +1 -1
  12. package/dist/cjs/calendar-check-icon.cjs.entry.js +1 -1
  13. package/dist/cjs/calendar-check-icon_2.cjs.entry.js +2 -2
  14. package/dist/cjs/calendar-icon.cjs.entry.js +1 -1
  15. package/dist/cjs/calendar-info-icon.cjs.entry.js +1 -1
  16. package/dist/cjs/calendar-patterns-icon.cjs.entry.js +1 -1
  17. package/dist/cjs/checkmark-circle-icon.cjs.entry.js +1 -1
  18. package/dist/cjs/chevron-icon.cjs.entry.js +1 -1
  19. package/dist/cjs/chevron-icon_3.cjs.entry.js +4 -4
  20. package/dist/cjs/close-icon.cjs.entry.js +1 -1
  21. package/dist/cjs/{constants-6baf1f1d.js → constants-3e962931.js} +11 -1
  22. package/dist/cjs/{constants-6baf1f1d.js.map → constants-3e962931.js.map} +1 -1
  23. package/dist/cjs/{constants-0fba94a4.js → constants-d590922e.js} +11 -1
  24. package/dist/cjs/{constants-0fba94a4.js.map → constants-d590922e.js.map} +1 -1
  25. package/dist/cjs/document-refresh-icon.cjs.entry.js +1 -1
  26. package/dist/cjs/flow-icon.cjs.entry.js +1 -1
  27. package/dist/cjs/folder-icon.cjs.entry.js +1 -1
  28. package/dist/cjs/forward-icon.cjs.entry.js +1 -1
  29. package/dist/cjs/forward-icon_6.cjs.entry.js +9 -9
  30. package/dist/cjs/globe-icon.cjs.entry.js +1 -1
  31. package/dist/cjs/google-logo-icon.cjs.entry.js +1 -1
  32. package/dist/cjs/google-logo-icon_4.cjs.entry.js +95 -51
  33. package/dist/cjs/google-logo-icon_4.cjs.entry.js.map +1 -1
  34. package/dist/cjs/inbox-icon.cjs.entry.js +1 -1
  35. package/dist/cjs/index.cjs.js +2 -2
  36. package/dist/cjs/{index.es-b12b7df1.js → index.es-4a7d8d3f.js} +2 -2
  37. package/dist/cjs/{index.es-b12b7df1.js.map → index.es-4a7d8d3f.js.map} +1 -1
  38. package/dist/cjs/{index.es-0a0f2d87.js → index.es-b2cce060.js} +2 -2
  39. package/dist/cjs/{index.es-0a0f2d87.js.map → index.es-b2cce060.js.map} +1 -1
  40. package/dist/cjs/info-icon.cjs.entry.js +1 -1
  41. package/dist/cjs/info-icon_2.cjs.entry.js +2 -2
  42. package/dist/cjs/italic-icon.cjs.entry.js +1 -1
  43. package/dist/cjs/loader.cjs.js +1 -1
  44. package/dist/cjs/loading-icon.cjs.entry.js +1 -1
  45. package/dist/cjs/location-icon.cjs.entry.js +1 -1
  46. package/dist/cjs/location-off-icon.cjs.entry.js +1 -1
  47. package/dist/cjs/{mailbox-store-05fa3bec.js → mailbox-store-a2f858b7.js} +3 -3
  48. package/dist/cjs/{mailbox-store-05fa3bec.js.map → mailbox-store-a2f858b7.js.map} +1 -1
  49. package/dist/cjs/{mailbox-store-14531fd4.js → mailbox-store-ecceb918.js} +3 -3
  50. package/dist/cjs/{mailbox-store-14531fd4.js.map → mailbox-store-ecceb918.js.map} +1 -1
  51. package/dist/cjs/microsoft-logo-icon.cjs.entry.js +1 -1
  52. package/dist/cjs/multi-select-dropdown.cjs.entry.js +3 -3
  53. package/dist/cjs/nylas-additional-participants.cjs.entry.js +3 -3
  54. package/dist/cjs/{nylas-api-request-2a0e7022.js → nylas-api-request-28b4576a.js} +14 -3
  55. package/dist/cjs/nylas-api-request-28b4576a.js.map +1 -0
  56. package/dist/cjs/{nylas-api-request-55923233.js → nylas-api-request-c9e0e347.js} +14 -3
  57. package/dist/cjs/nylas-api-request-c9e0e347.js.map +1 -0
  58. package/dist/cjs/nylas-availability-picker.cjs.entry.js +33 -16
  59. package/dist/cjs/nylas-availability-picker.cjs.entry.js.map +1 -1
  60. package/dist/cjs/nylas-booked-event-card.cjs.entry.js +3 -3
  61. package/dist/cjs/nylas-booked-event-card_10.cjs.entry.js +7 -7
  62. package/dist/cjs/nylas-booking-calendar-picker.cjs.entry.js +12 -6
  63. package/dist/cjs/nylas-booking-calendar-picker.cjs.entry.js.map +1 -1
  64. package/dist/cjs/nylas-booking-form.cjs.entry.js +2 -2
  65. package/dist/cjs/nylas-buffer-time.cjs.entry.js +2 -2
  66. package/dist/cjs/nylas-calendar-picker.cjs.entry.js +13 -8
  67. package/dist/cjs/nylas-calendar-picker.cjs.entry.js.map +1 -1
  68. package/dist/cjs/nylas-cancel-booking-form.cjs.entry.js +3 -3
  69. package/dist/cjs/nylas-cancelled-event-card.cjs.entry.js +3 -3
  70. package/dist/cjs/nylas-composer.cjs.entry.js +2 -2
  71. package/dist/cjs/nylas-custom-booking-flow.cjs.entry.js +21 -12
  72. package/dist/cjs/nylas-custom-booking-flow.cjs.entry.js.map +1 -1
  73. package/dist/cjs/nylas-date-picker.cjs.entry.js +2 -2
  74. package/dist/cjs/nylas-editor-tabs.cjs.entry.js +69 -40
  75. package/dist/cjs/nylas-editor-tabs.cjs.entry.js.map +1 -1
  76. package/dist/cjs/nylas-event-description.cjs.entry.js +15 -6
  77. package/dist/cjs/nylas-event-description.cjs.entry.js.map +1 -1
  78. package/dist/cjs/nylas-event-duration.cjs.entry.js +15 -10
  79. package/dist/cjs/nylas-event-duration.cjs.entry.js.map +1 -1
  80. package/dist/cjs/nylas-event-info.cjs.entry.js +3 -3
  81. package/dist/cjs/nylas-event-limits.cjs.entry.js +3 -3
  82. package/dist/cjs/nylas-event-title.cjs.entry.js +70 -19
  83. package/dist/cjs/nylas-event-title.cjs.entry.js.map +1 -1
  84. package/dist/cjs/nylas-form-card.cjs.entry.js +3 -3
  85. package/dist/cjs/nylas-if-state.cjs.entry.js +2 -2
  86. package/dist/cjs/nylas-limit-future-bookings.cjs.entry.js +24 -11
  87. package/dist/cjs/nylas-limit-future-bookings.cjs.entry.js.map +1 -1
  88. package/dist/cjs/nylas-list-configurations.cjs.entry.js +26 -11
  89. package/dist/cjs/nylas-list-configurations.cjs.entry.js.map +1 -1
  90. package/dist/cjs/nylas-list-folders.cjs.entry.js +3 -3
  91. package/dist/cjs/nylas-list-threads.cjs.entry.js +3 -3
  92. package/dist/cjs/nylas-locale-switch.cjs.entry.js +3 -3
  93. package/dist/cjs/nylas-location-component.cjs.entry.js +17 -6
  94. package/dist/cjs/nylas-location-component.cjs.entry.js.map +1 -1
  95. package/dist/cjs/nylas-login.cjs.entry.js +3 -3
  96. package/dist/cjs/nylas-logo.cjs.entry.js +1 -1
  97. package/dist/cjs/nylas-mailbox-pagination.cjs.entry.js +2 -2
  98. package/dist/cjs/nylas-mailbox-toolbar-button.cjs.entry.js +3 -3
  99. package/dist/cjs/nylas-mailbox.cjs.entry.js +4 -4
  100. package/dist/cjs/nylas-min-cancellation-notice.cjs.entry.js +28 -13
  101. package/dist/cjs/nylas-min-cancellation-notice.cjs.entry.js.map +1 -1
  102. package/dist/cjs/nylas-notification.cjs.entry.js +2 -2
  103. package/dist/cjs/nylas-provider.cjs.entry.js +6 -6
  104. package/dist/cjs/nylas-scheduler-editor.cjs.entry.js +18 -18
  105. package/dist/cjs/nylas-scheduler-editor.cjs.entry.js.map +1 -1
  106. package/dist/cjs/nylas-scheduling.cjs.entry.js +3 -3
  107. package/dist/cjs/nylas-selected-event-card.cjs.entry.js +3 -3
  108. package/dist/cjs/nylas-summarize-message-button.cjs.entry.js +4 -4
  109. package/dist/cjs/nylas-threads-refresh.cjs.entry.js +4 -4
  110. package/dist/cjs/nylas-threads-search.cjs.entry.js +3 -3
  111. package/dist/cjs/nylas-time-window-picker.cjs.entry.js +2 -2
  112. package/dist/cjs/nylas-timeslot-picker.cjs.entry.js +2 -2
  113. package/dist/cjs/nylas-view-email.cjs.entry.js +2 -2
  114. package/dist/cjs/nylas-view-thread.cjs.entry.js +3 -3
  115. package/dist/cjs/nylas-web-elements.cjs.js +1 -1
  116. package/dist/cjs/people-icon.cjs.entry.js +1 -1
  117. package/dist/cjs/play-icon.cjs.entry.js +1 -1
  118. package/dist/cjs/play-icon_2.cjs.entry.js +2 -2
  119. package/dist/cjs/refresh-icon.cjs.entry.js +1 -1
  120. package/dist/cjs/{register-component-c8b6e907.js → register-component-7ecacf90.js} +2 -2
  121. package/dist/cjs/{register-component-09ebdf31.js.map → register-component-7ecacf90.js.map} +1 -1
  122. package/dist/cjs/{register-component-09ebdf31.js → register-component-98ab6f54.js} +2 -2
  123. package/dist/cjs/{register-component-c8b6e907.js.map → register-component-98ab6f54.js.map} +1 -1
  124. package/dist/cjs/reply-all-icon.cjs.entry.js +1 -1
  125. package/dist/cjs/reply-icon.cjs.entry.js +1 -1
  126. package/dist/cjs/{scheduler-config-store-4d93a9b7.js → scheduler-config-store-37690bf0.js} +10 -4
  127. package/dist/cjs/scheduler-config-store-37690bf0.js.map +1 -0
  128. package/dist/cjs/{scheduler-config-store-a0e08cab.js → scheduler-config-store-529c8d7e.js} +10 -4
  129. package/dist/cjs/scheduler-config-store-529c8d7e.js.map +1 -0
  130. package/dist/cjs/{scheduler-store-e148a4cc.js → scheduler-store-22103c86.js} +16 -3
  131. package/dist/cjs/scheduler-store-22103c86.js.map +1 -0
  132. package/dist/cjs/{scheduler-store-a492526c.js → scheduler-store-fad9ed7a.js} +16 -3
  133. package/dist/cjs/scheduler-store-fad9ed7a.js.map +1 -0
  134. package/dist/cjs/search-icon.cjs.entry.js +1 -1
  135. package/dist/cjs/select-dropdown.cjs.entry.js +2 -2
  136. package/dist/cjs/sent-icon.cjs.entry.js +1 -1
  137. package/dist/cjs/spam-icon.cjs.entry.js +1 -1
  138. package/dist/cjs/star-icon.cjs.entry.js +1 -1
  139. package/dist/cjs/stop-icon.cjs.entry.js +1 -1
  140. package/dist/cjs/time-period-selector.cjs.entry.js +2 -2
  141. package/dist/cjs/tooltip-component.cjs.entry.js +1 -1
  142. package/dist/cjs/translate-icon.cjs.entry.js +1 -1
  143. package/dist/cjs/trash-icon.cjs.entry.js +1 -1
  144. package/dist/cjs/underline-icon.cjs.entry.js +1 -1
  145. package/dist/cjs/{utils-20663d54.js → utils-9fc33c77.js} +46 -1
  146. package/dist/cjs/utils-9fc33c77.js.map +1 -0
  147. package/dist/cjs/{utils-2c7f0895.js → utils-d8cfc3be.js} +46 -1
  148. package/dist/cjs/{utils-2c7f0895.js.map → utils-d8cfc3be.js.map} +1 -1
  149. package/dist/cjs/warning-icon.cjs.entry.js +1 -1
  150. package/dist/collection/common/constants.js +9 -0
  151. package/dist/collection/common/constants.js.map +1 -1
  152. package/dist/collection/common/icons/add-circle.js +1 -1
  153. package/dist/collection/common/icons/archive.js +1 -1
  154. package/dist/collection/common/icons/arrow.js +1 -1
  155. package/dist/collection/common/icons/bold.js +1 -1
  156. package/dist/collection/common/icons/calendar-cancel.js +1 -1
  157. package/dist/collection/common/icons/calendar-check.js +1 -1
  158. package/dist/collection/common/icons/calendar-info.js +1 -1
  159. package/dist/collection/common/icons/calendar-patterns.js +1 -1
  160. package/dist/collection/common/icons/calendar.js +1 -1
  161. package/dist/collection/common/icons/checkmark-circle.js +1 -1
  162. package/dist/collection/common/icons/chevron.js +1 -1
  163. package/dist/collection/common/icons/close.js +1 -1
  164. package/dist/collection/common/icons/document-refresh.js +1 -1
  165. package/dist/collection/common/icons/flow.js +1 -1
  166. package/dist/collection/common/icons/folder.js +1 -1
  167. package/dist/collection/common/icons/forward.js +1 -1
  168. package/dist/collection/common/icons/globe.js +1 -1
  169. package/dist/collection/common/icons/google-logo.js +1 -1
  170. package/dist/collection/common/icons/inbox.js +1 -1
  171. package/dist/collection/common/icons/info.js +1 -1
  172. package/dist/collection/common/icons/italic.js +1 -1
  173. package/dist/collection/common/icons/loading.js +1 -1
  174. package/dist/collection/common/icons/location-off.js +1 -1
  175. package/dist/collection/common/icons/location.js +1 -1
  176. package/dist/collection/common/icons/microsoft-logo.js +1 -1
  177. package/dist/collection/common/icons/nylas-logo.js +1 -1
  178. package/dist/collection/common/icons/people.js +1 -1
  179. package/dist/collection/common/icons/play.js +1 -1
  180. package/dist/collection/common/icons/refresh.js +1 -1
  181. package/dist/collection/common/icons/reply-all.js +1 -1
  182. package/dist/collection/common/icons/reply.js +1 -1
  183. package/dist/collection/common/icons/search.js +1 -1
  184. package/dist/collection/common/icons/sent.js +1 -1
  185. package/dist/collection/common/icons/spam.js +1 -1
  186. package/dist/collection/common/icons/star.js +1 -1
  187. package/dist/collection/common/icons/stop.js +1 -1
  188. package/dist/collection/common/icons/translate.js +1 -1
  189. package/dist/collection/common/icons/trash.js +1 -1
  190. package/dist/collection/common/icons/underline.js +1 -1
  191. package/dist/collection/common/icons/warning.js +1 -1
  192. package/dist/collection/common/nylas-api-request.js +12 -1
  193. package/dist/collection/common/nylas-api-request.js.map +1 -1
  194. package/dist/collection/components/design-system/button-component/button-component.css +5 -0
  195. package/dist/collection/components/design-system/button-component/button-component.js +1 -1
  196. package/dist/collection/components/design-system/multi-select-dropdown/multi-select-dropdown.js +2 -2
  197. package/dist/collection/components/design-system/select-dropdown/select-dropdown.js +2 -2
  198. package/dist/collection/components/design-system/time-period-selector/time-period-selector.js +1 -1
  199. package/dist/collection/components/design-system/tooltip-component/toolitp-component.js +1 -1
  200. package/dist/collection/components/mailbox/nylas-composer/nylas-composer.js +1 -1
  201. package/dist/collection/components/mailbox/nylas-list-folders/nylas-list-folders.js +1 -1
  202. package/dist/collection/components/mailbox/nylas-list-threads/nylas-list-threads.js +1 -1
  203. package/dist/collection/components/mailbox/nylas-mailbox/nylas-mailbox.js +1 -1
  204. package/dist/collection/components/mailbox/nylas-mailbox-toolbar-button/nylas-mailbox-toolbar-button.js +1 -1
  205. package/dist/collection/components/mailbox/nylas-summarize-message-button/nylas-summarize-message-button.js +2 -2
  206. package/dist/collection/components/mailbox/nylas-threads-refresh/nylas-threads-refresh.js +2 -2
  207. package/dist/collection/components/mailbox/nylas-threads-search/nylas-threads-search.js +1 -1
  208. package/dist/collection/components/mailbox/nylas-view-email/nylas-view-email.js +1 -1
  209. package/dist/collection/components/mailbox/nylas-view-thread/nylas-view-thread.js +1 -1
  210. package/dist/collection/components/nylas-login/nylas-login.js +1 -1
  211. package/dist/collection/components/nylas-provider/nylas-provider.js +2 -2
  212. package/dist/collection/components/scheduler/nylas-booked-event-card/nylas-booked-event-card.js.map +1 -1
  213. package/dist/collection/components/scheduler/nylas-cancel-booking-form/nylas-cancel-booking-form.js +1 -1
  214. package/dist/collection/components/scheduler/nylas-cancelled-event-card/nylas-cancelled-event-card.js +1 -1
  215. package/dist/collection/components/scheduler/nylas-notification/nylas-notification.js +1 -1
  216. package/dist/collection/components/scheduler-editor/nylas-additional-participants/nylas-additional-participants.js +1 -1
  217. package/dist/collection/components/scheduler-editor/nylas-availability-picker/nylas-availability-picker.js +55 -15
  218. package/dist/collection/components/scheduler-editor/nylas-availability-picker/nylas-availability-picker.js.map +1 -1
  219. package/dist/collection/components/scheduler-editor/nylas-booking-calendar-picker/nylas-booking-calendar-picker.js +32 -5
  220. package/dist/collection/components/scheduler-editor/nylas-booking-calendar-picker/nylas-booking-calendar-picker.js.map +1 -1
  221. package/dist/collection/components/scheduler-editor/nylas-calendar-picker/nylas-calendar-picker.js +23 -14
  222. package/dist/collection/components/scheduler-editor/nylas-calendar-picker/nylas-calendar-picker.js.map +1 -1
  223. package/dist/collection/components/scheduler-editor/nylas-custom-booking-flow/nylas-custom-booking-flow.js +41 -9
  224. package/dist/collection/components/scheduler-editor/nylas-custom-booking-flow/nylas-custom-booking-flow.js.map +1 -1
  225. package/dist/collection/components/scheduler-editor/nylas-editor-tabs/nylas-editor-tabs.css +35 -3
  226. package/dist/collection/components/scheduler-editor/nylas-editor-tabs/nylas-editor-tabs.js +99 -36
  227. package/dist/collection/components/scheduler-editor/nylas-editor-tabs/nylas-editor-tabs.js.map +1 -1
  228. package/dist/collection/components/scheduler-editor/nylas-editor-tabs/tab-contents.js +4 -4
  229. package/dist/collection/components/scheduler-editor/nylas-editor-tabs/tab-contents.js.map +1 -1
  230. package/dist/collection/components/scheduler-editor/nylas-event-description/nylas-event-description.css +1 -1
  231. package/dist/collection/components/scheduler-editor/nylas-event-description/nylas-event-description.js +34 -2
  232. package/dist/collection/components/scheduler-editor/nylas-event-description/nylas-event-description.js.map +1 -1
  233. package/dist/collection/components/scheduler-editor/nylas-event-duration/nylas-event-duration.css +1 -1
  234. package/dist/collection/components/scheduler-editor/nylas-event-duration/nylas-event-duration.js +35 -7
  235. package/dist/collection/components/scheduler-editor/nylas-event-duration/nylas-event-duration.js.map +1 -1
  236. package/dist/collection/components/scheduler-editor/nylas-event-info/nylas-event-info.js +1 -1
  237. package/dist/collection/components/scheduler-editor/nylas-event-limits/nylas-event-limits.js +1 -1
  238. package/dist/collection/components/scheduler-editor/nylas-event-title/nylas-event-title.css +8 -1
  239. package/dist/collection/components/scheduler-editor/nylas-event-title/nylas-event-title.js +102 -17
  240. package/dist/collection/components/scheduler-editor/nylas-event-title/nylas-event-title.js.map +1 -1
  241. package/dist/collection/components/scheduler-editor/nylas-form-card/nylas-form-card.js +1 -1
  242. package/dist/collection/components/scheduler-editor/nylas-limit-future-bookings/nylas-limit-future-bookings.js +45 -9
  243. package/dist/collection/components/scheduler-editor/nylas-limit-future-bookings/nylas-limit-future-bookings.js.map +1 -1
  244. package/dist/collection/components/scheduler-editor/nylas-list-configurations/nylas-list-configurations.css +39 -2
  245. package/dist/collection/components/scheduler-editor/nylas-list-configurations/nylas-list-configurations.js +46 -9
  246. package/dist/collection/components/scheduler-editor/nylas-list-configurations/nylas-list-configurations.js.map +1 -1
  247. package/dist/collection/components/scheduler-editor/nylas-location-component/nylas-location-component.css +2 -2
  248. package/dist/collection/components/scheduler-editor/nylas-location-component/nylas-location-component.js +37 -3
  249. package/dist/collection/components/scheduler-editor/nylas-location-component/nylas-location-component.js.map +1 -1
  250. package/dist/collection/components/scheduler-editor/nylas-min-cancellation-notice/nylas-min-cancellation-notice.js +49 -11
  251. package/dist/collection/components/scheduler-editor/nylas-min-cancellation-notice/nylas-min-cancellation-notice.js.map +1 -1
  252. package/dist/collection/components/scheduler-editor/nylas-scheduler-editor/nylas-scheduler-editor.css +6 -0
  253. package/dist/collection/components/scheduler-editor/nylas-scheduler-editor/nylas-scheduler-editor.js +36 -16
  254. package/dist/collection/components/scheduler-editor/nylas-scheduler-editor/nylas-scheduler-editor.js.map +1 -1
  255. package/dist/collection/components/scheduler-editor/nylas-time-window-picker/nylas-time-window-picker.js +1 -1
  256. package/dist/collection/connector/nylas-scheduler-connector/errors/index.js +8 -0
  257. package/dist/collection/connector/nylas-scheduler-connector/errors/index.js.map +1 -1
  258. package/dist/collection/connector/shared/api/scheduler-config.js +6 -6
  259. package/dist/collection/connector/shared/api/scheduler-config.js.map +1 -1
  260. package/dist/collection/connector/shared/api/scheduler.js +6 -1
  261. package/dist/collection/connector/shared/api/scheduler.js.map +1 -1
  262. package/dist/collection/index.js +0 -1
  263. package/dist/collection/index.js.map +1 -1
  264. package/dist/collection/stores/scheduler-config-store.js +9 -3
  265. package/dist/collection/stores/scheduler-config-store.js.map +1 -1
  266. package/dist/collection/utils/utils.js +44 -0
  267. package/dist/collection/utils/utils.js.map +1 -1
  268. package/dist/components/add-circle.js +1 -1
  269. package/dist/components/archive.js +1 -1
  270. package/dist/components/arrow.js +1 -1
  271. package/dist/components/bold.js +1 -1
  272. package/dist/components/button-component2.js +2 -2
  273. package/dist/components/button-component2.js.map +1 -1
  274. package/dist/components/calendar-cancel.js +1 -1
  275. package/dist/components/calendar-check.js +1 -1
  276. package/dist/components/calendar-info.js +1 -1
  277. package/dist/components/calendar-patterns.js +1 -1
  278. package/dist/components/calendar.js +1 -1
  279. package/dist/components/checkmark-circle.js +1 -1
  280. package/dist/components/chevron.js +1 -1
  281. package/dist/components/close.js +1 -1
  282. package/dist/components/constants.js +11 -2
  283. package/dist/components/constants.js.map +1 -1
  284. package/dist/components/document-refresh-icon.js +1 -1
  285. package/dist/components/flow.js +1 -1
  286. package/dist/components/focus-visible.js +1 -1
  287. package/dist/components/folder.js +1 -1
  288. package/dist/components/forward.js +1 -1
  289. package/dist/components/globe.js +1 -1
  290. package/dist/components/google-logo.js +1 -1
  291. package/dist/components/inbox.js +1 -1
  292. package/dist/components/index.d.ts +0 -179
  293. package/dist/components/index.es.js +2 -194
  294. package/dist/components/index.es.js.map +1 -1
  295. package/dist/components/index.js +2 -89
  296. package/dist/components/index.js.map +1 -1
  297. package/dist/components/index2.js +196 -0
  298. package/dist/components/index2.js.map +1 -0
  299. package/dist/components/info.js +1 -1
  300. package/dist/components/italic.js +1 -1
  301. package/dist/components/loading.js +1 -1
  302. package/dist/components/location-off.js +1 -1
  303. package/dist/components/location.js +1 -1
  304. package/dist/components/mailbox-store.js +3 -2
  305. package/dist/components/mailbox-store.js.map +1 -1
  306. package/dist/components/microsoft-logo.js +1 -1
  307. package/dist/components/multi-select-dropdown2.js +3 -3
  308. package/dist/components/nylas-additional-participants.js +2 -2
  309. package/dist/{nylas-web-elements/nylas-api-request-4f3dbb72.js → components/nylas-api-request.js} +14 -3
  310. package/dist/components/nylas-api-request.js.map +1 -0
  311. package/dist/components/nylas-availability-picker2.js +33 -14
  312. package/dist/components/nylas-availability-picker2.js.map +1 -1
  313. package/dist/components/nylas-booked-event-card2.js +1 -1
  314. package/dist/components/nylas-booking-calendar-picker2.js +12 -5
  315. package/dist/components/nylas-booking-calendar-picker2.js.map +1 -1
  316. package/dist/components/nylas-booking-form2.js +1 -1
  317. package/dist/components/nylas-buffer-time2.js +1 -1
  318. package/dist/components/nylas-calendar-picker2.js +13 -8
  319. package/dist/components/nylas-calendar-picker2.js.map +1 -1
  320. package/dist/components/nylas-cancel-booking-form2.js +2 -2
  321. package/dist/components/nylas-cancelled-event-card2.js +2 -2
  322. package/dist/components/nylas-composer2.js +2 -2
  323. package/dist/components/nylas-custom-booking-flow2.js +23 -12
  324. package/dist/components/nylas-custom-booking-flow2.js.map +1 -1
  325. package/dist/components/nylas-date-picker2.js +1 -1
  326. package/dist/components/nylas-editor-tabs2.js +74 -43
  327. package/dist/components/nylas-editor-tabs2.js.map +1 -1
  328. package/dist/components/nylas-event-description2.js +17 -6
  329. package/dist/components/nylas-event-description2.js.map +1 -1
  330. package/dist/components/nylas-event-duration2.js +16 -9
  331. package/dist/components/nylas-event-duration2.js.map +1 -1
  332. package/dist/components/nylas-event-info2.js +2 -2
  333. package/dist/components/nylas-event-limits2.js +2 -2
  334. package/dist/components/nylas-event-title2.js +74 -20
  335. package/dist/components/nylas-event-title2.js.map +1 -1
  336. package/dist/components/nylas-form-card2.js +2 -2
  337. package/dist/components/nylas-if-state.js +1 -1
  338. package/dist/components/nylas-limit-future-bookings2.js +25 -10
  339. package/dist/components/nylas-limit-future-bookings2.js.map +1 -1
  340. package/dist/components/nylas-list-configurations2.js +28 -11
  341. package/dist/components/nylas-list-configurations2.js.map +1 -1
  342. package/dist/components/nylas-list-folders.js +2 -2
  343. package/dist/components/nylas-list-threads.js +2 -2
  344. package/dist/components/nylas-location-component2.js +18 -5
  345. package/dist/components/nylas-location-component2.js.map +1 -1
  346. package/dist/components/nylas-login.js +1 -1
  347. package/dist/components/nylas-logo2.js +1 -1
  348. package/dist/components/nylas-mailbox-pagination.js +1 -1
  349. package/dist/components/nylas-mailbox-toolbar-button.js +2 -2
  350. package/dist/components/nylas-mailbox.js +2 -2
  351. package/dist/components/nylas-min-cancellation-notice2.js +29 -12
  352. package/dist/components/nylas-min-cancellation-notice2.js.map +1 -1
  353. package/dist/components/nylas-notification2.js +2 -2
  354. package/dist/components/nylas-provider.js +2 -2
  355. package/dist/components/nylas-scheduler-editor.js +18 -58
  356. package/dist/components/nylas-scheduler-editor.js.map +1 -1
  357. package/dist/components/nylas-scheduling.js +1 -1
  358. package/dist/components/nylas-selected-event-card2.js +1 -1
  359. package/dist/components/nylas-summarize-message-button2.js +3 -3
  360. package/dist/components/nylas-threads-refresh.js +3 -3
  361. package/dist/components/nylas-threads-search.js +2 -2
  362. package/dist/components/nylas-time-window-picker2.js +2 -2
  363. package/dist/components/nylas-timeslot-picker2.js +1 -1
  364. package/dist/components/nylas-view-email2.js +2 -2
  365. package/dist/components/nylas-view-thread.js +2 -2
  366. package/dist/components/people-icon.js +1 -1
  367. package/dist/components/play.js +1 -1
  368. package/dist/components/refresh.js +1 -1
  369. package/dist/components/register-component.js +1 -1
  370. package/dist/components/reply-all.js +1 -1
  371. package/dist/components/reply.js +1 -1
  372. package/dist/components/scheduler-config-store.js +10 -4
  373. package/dist/components/scheduler-config-store.js.map +1 -1
  374. package/dist/components/scheduler-store.js +16 -3
  375. package/dist/components/scheduler-store.js.map +1 -1
  376. package/dist/components/search.js +1 -1
  377. package/dist/components/select-dropdown2.js +2 -2
  378. package/dist/components/sent.js +1 -1
  379. package/dist/components/spam.js +1 -1
  380. package/dist/components/star.js +1 -1
  381. package/dist/components/stop.js +1 -1
  382. package/dist/components/time-period-selector2.js +2 -2
  383. package/dist/components/toolitp-component.js +1 -1
  384. package/dist/components/translate.js +1 -1
  385. package/dist/components/trash.js +1 -1
  386. package/dist/components/underline.js +1 -1
  387. package/dist/components/utils.js +45 -1
  388. package/dist/components/utils.js.map +1 -1
  389. package/dist/components/warning.js +1 -1
  390. package/dist/esm/add-circle-icon.entry.js +1 -1
  391. package/dist/esm/add-circle-icon_22.entry.js +242 -101
  392. package/dist/esm/add-circle-icon_22.entry.js.map +1 -1
  393. package/dist/esm/archive-icon.entry.js +1 -1
  394. package/dist/esm/archive-icon_7.entry.js +7 -7
  395. package/dist/esm/arrow-icon.entry.js +1 -1
  396. package/dist/esm/bold-icon.entry.js +1 -1
  397. package/dist/esm/bold-icon_3.entry.js +3 -3
  398. package/dist/esm/button-component.entry.js +2 -2
  399. package/dist/esm/button-component.entry.js.map +1 -1
  400. package/dist/esm/calendar-cancel-icon.entry.js +1 -1
  401. package/dist/esm/calendar-check-icon.entry.js +1 -1
  402. package/dist/esm/calendar-check-icon_2.entry.js +2 -2
  403. package/dist/esm/calendar-icon.entry.js +1 -1
  404. package/dist/esm/calendar-info-icon.entry.js +1 -1
  405. package/dist/esm/calendar-patterns-icon.entry.js +1 -1
  406. package/dist/esm/checkmark-circle-icon.entry.js +1 -1
  407. package/dist/esm/chevron-icon.entry.js +1 -1
  408. package/dist/esm/chevron-icon_3.entry.js +4 -4
  409. package/dist/esm/close-icon.entry.js +1 -1
  410. package/dist/esm/{constants-335dffcf.js → constants-bf39e913.js} +11 -2
  411. package/dist/{nylas-web-elements/constants-335dffcf.js.map → esm/constants-bf39e913.js.map} +1 -1
  412. package/dist/esm/{constants-6ee60d6d.js → constants-f34b9c6e.js} +11 -2
  413. package/dist/esm/{constants-6ee60d6d.js.map → constants-f34b9c6e.js.map} +1 -1
  414. package/dist/esm/document-refresh-icon.entry.js +1 -1
  415. package/dist/esm/flow-icon.entry.js +1 -1
  416. package/dist/esm/folder-icon.entry.js +1 -1
  417. package/dist/esm/forward-icon.entry.js +1 -1
  418. package/dist/esm/forward-icon_6.entry.js +9 -9
  419. package/dist/esm/globe-icon.entry.js +1 -1
  420. package/dist/esm/google-logo-icon.entry.js +1 -1
  421. package/dist/esm/google-logo-icon_4.entry.js +95 -51
  422. package/dist/esm/google-logo-icon_4.entry.js.map +1 -1
  423. package/dist/esm/inbox-icon.entry.js +1 -1
  424. package/dist/esm/{index.es-f57e612a.js → index.es-df564f87.js} +2 -2
  425. package/dist/esm/{index.es-f57e612a.js.map → index.es-df564f87.js.map} +1 -1
  426. package/dist/{nylas-web-elements/index.es-2842f8c8.js → esm/index.es-e4f027a2.js} +2 -2
  427. package/dist/esm/{index.es-2842f8c8.js.map → index.es-e4f027a2.js.map} +1 -1
  428. package/dist/esm/index.js +2 -2
  429. package/dist/esm/info-icon.entry.js +1 -1
  430. package/dist/esm/info-icon_2.entry.js +2 -2
  431. package/dist/esm/italic-icon.entry.js +1 -1
  432. package/dist/esm/loader.js +1 -1
  433. package/dist/esm/loading-icon.entry.js +1 -1
  434. package/dist/esm/location-icon.entry.js +1 -1
  435. package/dist/esm/location-off-icon.entry.js +1 -1
  436. package/dist/{nylas-web-elements/mailbox-store-d48269de.js → esm/mailbox-store-5075f820.js} +3 -3
  437. package/dist/{nylas-web-elements/mailbox-store-d48269de.js.map → esm/mailbox-store-5075f820.js.map} +1 -1
  438. package/dist/esm/{mailbox-store-47fc8a1a.js → mailbox-store-69c5c5f6.js} +3 -3
  439. package/dist/esm/{mailbox-store-47fc8a1a.js.map → mailbox-store-69c5c5f6.js.map} +1 -1
  440. package/dist/esm/microsoft-logo-icon.entry.js +1 -1
  441. package/dist/esm/multi-select-dropdown.entry.js +3 -3
  442. package/dist/esm/nylas-additional-participants.entry.js +3 -3
  443. package/dist/esm/{nylas-api-request-4f3dbb72.js → nylas-api-request-6a19db25.js} +14 -3
  444. package/dist/esm/nylas-api-request-6a19db25.js.map +1 -0
  445. package/dist/esm/{nylas-api-request-3120d9ac.js → nylas-api-request-b49b1da6.js} +14 -3
  446. package/dist/esm/nylas-api-request-b49b1da6.js.map +1 -0
  447. package/dist/esm/nylas-availability-picker.entry.js +33 -16
  448. package/dist/esm/nylas-availability-picker.entry.js.map +1 -1
  449. package/dist/esm/nylas-booked-event-card.entry.js +3 -3
  450. package/dist/esm/nylas-booked-event-card_10.entry.js +7 -7
  451. package/dist/esm/nylas-booking-calendar-picker.entry.js +12 -6
  452. package/dist/esm/nylas-booking-calendar-picker.entry.js.map +1 -1
  453. package/dist/esm/nylas-booking-form.entry.js +2 -2
  454. package/dist/esm/nylas-buffer-time.entry.js +2 -2
  455. package/dist/esm/nylas-calendar-picker.entry.js +13 -8
  456. package/dist/esm/nylas-calendar-picker.entry.js.map +1 -1
  457. package/dist/esm/nylas-cancel-booking-form.entry.js +3 -3
  458. package/dist/esm/nylas-cancelled-event-card.entry.js +3 -3
  459. package/dist/esm/nylas-composer.entry.js +2 -2
  460. package/dist/esm/nylas-custom-booking-flow.entry.js +21 -12
  461. package/dist/esm/nylas-custom-booking-flow.entry.js.map +1 -1
  462. package/dist/esm/nylas-date-picker.entry.js +2 -2
  463. package/dist/esm/nylas-editor-tabs.entry.js +69 -40
  464. package/dist/esm/nylas-editor-tabs.entry.js.map +1 -1
  465. package/dist/esm/nylas-event-description.entry.js +15 -6
  466. package/dist/esm/nylas-event-description.entry.js.map +1 -1
  467. package/dist/esm/nylas-event-duration.entry.js +15 -10
  468. package/dist/esm/nylas-event-duration.entry.js.map +1 -1
  469. package/dist/esm/nylas-event-info.entry.js +3 -3
  470. package/dist/esm/nylas-event-limits.entry.js +3 -3
  471. package/dist/esm/nylas-event-title.entry.js +70 -19
  472. package/dist/esm/nylas-event-title.entry.js.map +1 -1
  473. package/dist/esm/nylas-form-card.entry.js +3 -3
  474. package/dist/esm/nylas-if-state.entry.js +2 -2
  475. package/dist/esm/nylas-limit-future-bookings.entry.js +24 -11
  476. package/dist/esm/nylas-limit-future-bookings.entry.js.map +1 -1
  477. package/dist/esm/nylas-list-configurations.entry.js +26 -11
  478. package/dist/esm/nylas-list-configurations.entry.js.map +1 -1
  479. package/dist/esm/nylas-list-folders.entry.js +3 -3
  480. package/dist/esm/nylas-list-threads.entry.js +3 -3
  481. package/dist/esm/nylas-locale-switch.entry.js +3 -3
  482. package/dist/esm/nylas-location-component.entry.js +17 -6
  483. package/dist/esm/nylas-location-component.entry.js.map +1 -1
  484. package/dist/esm/nylas-login.entry.js +3 -3
  485. package/dist/esm/nylas-logo.entry.js +1 -1
  486. package/dist/esm/nylas-mailbox-pagination.entry.js +2 -2
  487. package/dist/esm/nylas-mailbox-toolbar-button.entry.js +3 -3
  488. package/dist/esm/nylas-mailbox.entry.js +4 -4
  489. package/dist/esm/nylas-min-cancellation-notice.entry.js +28 -13
  490. package/dist/esm/nylas-min-cancellation-notice.entry.js.map +1 -1
  491. package/dist/esm/nylas-notification.entry.js +2 -2
  492. package/dist/esm/nylas-provider.entry.js +6 -6
  493. package/dist/esm/nylas-scheduler-editor.entry.js +18 -18
  494. package/dist/esm/nylas-scheduler-editor.entry.js.map +1 -1
  495. package/dist/esm/nylas-scheduling.entry.js +3 -3
  496. package/dist/esm/nylas-selected-event-card.entry.js +3 -3
  497. package/dist/esm/nylas-summarize-message-button.entry.js +4 -4
  498. package/dist/esm/nylas-threads-refresh.entry.js +4 -4
  499. package/dist/esm/nylas-threads-search.entry.js +3 -3
  500. package/dist/esm/nylas-time-window-picker.entry.js +2 -2
  501. package/dist/esm/nylas-timeslot-picker.entry.js +2 -2
  502. package/dist/esm/nylas-view-email.entry.js +2 -2
  503. package/dist/esm/nylas-view-thread.entry.js +3 -3
  504. package/dist/esm/nylas-web-elements.js +1 -1
  505. package/dist/esm/people-icon.entry.js +1 -1
  506. package/dist/esm/play-icon.entry.js +1 -1
  507. package/dist/esm/play-icon_2.entry.js +2 -2
  508. package/dist/esm/refresh-icon.entry.js +1 -1
  509. package/dist/esm/{register-component-cf5c8420.js → register-component-b9cfcbaf.js} +2 -2
  510. package/dist/esm/{register-component-cf5c8420.js.map → register-component-b9cfcbaf.js.map} +1 -1
  511. package/dist/esm/{register-component-e5afe237.js → register-component-ff6f5df4.js} +2 -2
  512. package/dist/esm/{register-component-e5afe237.js.map → register-component-ff6f5df4.js.map} +1 -1
  513. package/dist/esm/reply-all-icon.entry.js +1 -1
  514. package/dist/esm/reply-icon.entry.js +1 -1
  515. package/dist/esm/{scheduler-config-store-6222c0ed.js → scheduler-config-store-07d98279.js} +10 -4
  516. package/dist/esm/scheduler-config-store-07d98279.js.map +1 -0
  517. package/dist/esm/{scheduler-config-store-0efc3519.js → scheduler-config-store-8f2e658e.js} +10 -4
  518. package/dist/esm/scheduler-config-store-8f2e658e.js.map +1 -0
  519. package/dist/esm/{scheduler-store-39d37291.js → scheduler-store-24fd0e91.js} +16 -3
  520. package/dist/esm/scheduler-store-24fd0e91.js.map +1 -0
  521. package/dist/esm/{scheduler-store-8ddcc496.js → scheduler-store-e62b2146.js} +16 -3
  522. package/dist/esm/scheduler-store-e62b2146.js.map +1 -0
  523. package/dist/esm/search-icon.entry.js +1 -1
  524. package/dist/esm/select-dropdown.entry.js +2 -2
  525. package/dist/esm/sent-icon.entry.js +1 -1
  526. package/dist/esm/spam-icon.entry.js +1 -1
  527. package/dist/esm/star-icon.entry.js +1 -1
  528. package/dist/esm/stop-icon.entry.js +1 -1
  529. package/dist/esm/time-period-selector.entry.js +2 -2
  530. package/dist/esm/tooltip-component.entry.js +1 -1
  531. package/dist/esm/translate-icon.entry.js +1 -1
  532. package/dist/esm/trash-icon.entry.js +1 -1
  533. package/dist/esm/underline-icon.entry.js +1 -1
  534. package/dist/{nylas-web-elements/utils-73d8a928.js → esm/utils-3e18e0b2.js} +46 -2
  535. package/dist/esm/{utils-73d8a928.js.map → utils-3e18e0b2.js.map} +1 -1
  536. package/dist/esm/{utils-d6204242.js → utils-db11d29c.js} +46 -2
  537. package/dist/esm/utils-db11d29c.js.map +1 -0
  538. package/dist/esm/warning-icon.entry.js +1 -1
  539. package/dist/nylas-web-elements/add-circle-icon.entry.js +1 -1
  540. package/dist/nylas-web-elements/archive-icon.entry.js +1 -1
  541. package/dist/nylas-web-elements/arrow-icon.entry.js +1 -1
  542. package/dist/nylas-web-elements/bold-icon.entry.js +1 -1
  543. package/dist/nylas-web-elements/button-component.entry.js +2 -2
  544. package/dist/nylas-web-elements/button-component.entry.js.map +1 -1
  545. package/dist/nylas-web-elements/calendar-cancel-icon.entry.js +1 -1
  546. package/dist/nylas-web-elements/calendar-check-icon.entry.js +1 -1
  547. package/dist/nylas-web-elements/calendar-icon.entry.js +1 -1
  548. package/dist/nylas-web-elements/calendar-info-icon.entry.js +1 -1
  549. package/dist/nylas-web-elements/calendar-patterns-icon.entry.js +1 -1
  550. package/dist/nylas-web-elements/checkmark-circle-icon.entry.js +1 -1
  551. package/dist/nylas-web-elements/chevron-icon.entry.js +1 -1
  552. package/dist/nylas-web-elements/close-icon.entry.js +1 -1
  553. package/dist/nylas-web-elements/{constants-335dffcf.js → constants-bf39e913.js} +11 -2
  554. package/dist/{esm/constants-335dffcf.js.map → nylas-web-elements/constants-bf39e913.js.map} +1 -1
  555. package/dist/nylas-web-elements/document-refresh-icon.entry.js +1 -1
  556. package/dist/nylas-web-elements/flow-icon.entry.js +1 -1
  557. package/dist/nylas-web-elements/folder-icon.entry.js +1 -1
  558. package/dist/nylas-web-elements/forward-icon.entry.js +1 -1
  559. package/dist/nylas-web-elements/globe-icon.entry.js +1 -1
  560. package/dist/nylas-web-elements/google-logo-icon.entry.js +1 -1
  561. package/dist/nylas-web-elements/inbox-icon.entry.js +1 -1
  562. package/dist/{esm/index.es-2842f8c8.js → nylas-web-elements/index.es-e4f027a2.js} +2 -2
  563. package/dist/nylas-web-elements/{index.es-2842f8c8.js.map → index.es-e4f027a2.js.map} +1 -1
  564. package/dist/nylas-web-elements/index.esm.js +2 -2
  565. package/dist/nylas-web-elements/info-icon.entry.js +1 -1
  566. package/dist/nylas-web-elements/italic-icon.entry.js +1 -1
  567. package/dist/nylas-web-elements/loading-icon.entry.js +1 -1
  568. package/dist/nylas-web-elements/location-icon.entry.js +1 -1
  569. package/dist/nylas-web-elements/location-off-icon.entry.js +1 -1
  570. package/dist/{esm/mailbox-store-d48269de.js → nylas-web-elements/mailbox-store-5075f820.js} +3 -3
  571. package/dist/{esm/mailbox-store-d48269de.js.map → nylas-web-elements/mailbox-store-5075f820.js.map} +1 -1
  572. package/dist/nylas-web-elements/microsoft-logo-icon.entry.js +1 -1
  573. package/dist/nylas-web-elements/multi-select-dropdown.entry.js +3 -3
  574. package/dist/nylas-web-elements/nylas-additional-participants.entry.js +3 -3
  575. package/dist/nylas-web-elements/nylas-api-request-6a19db25.js +58 -0
  576. package/dist/nylas-web-elements/nylas-api-request-6a19db25.js.map +1 -0
  577. package/dist/nylas-web-elements/nylas-availability-picker.entry.js +33 -16
  578. package/dist/nylas-web-elements/nylas-availability-picker.entry.js.map +1 -1
  579. package/dist/nylas-web-elements/nylas-booked-event-card.entry.js +3 -3
  580. package/dist/nylas-web-elements/nylas-booking-calendar-picker.entry.js +12 -6
  581. package/dist/nylas-web-elements/nylas-booking-calendar-picker.entry.js.map +1 -1
  582. package/dist/nylas-web-elements/nylas-booking-form.entry.js +2 -2
  583. package/dist/nylas-web-elements/nylas-buffer-time.entry.js +2 -2
  584. package/dist/nylas-web-elements/nylas-calendar-picker.entry.js +13 -8
  585. package/dist/nylas-web-elements/nylas-calendar-picker.entry.js.map +1 -1
  586. package/dist/nylas-web-elements/nylas-cancel-booking-form.entry.js +3 -3
  587. package/dist/nylas-web-elements/nylas-cancelled-event-card.entry.js +3 -3
  588. package/dist/nylas-web-elements/nylas-composer.entry.js +2 -2
  589. package/dist/nylas-web-elements/nylas-custom-booking-flow.entry.js +21 -12
  590. package/dist/nylas-web-elements/nylas-custom-booking-flow.entry.js.map +1 -1
  591. package/dist/nylas-web-elements/nylas-date-picker.entry.js +2 -2
  592. package/dist/nylas-web-elements/nylas-editor-tabs.entry.js +69 -40
  593. package/dist/nylas-web-elements/nylas-editor-tabs.entry.js.map +1 -1
  594. package/dist/nylas-web-elements/nylas-event-description.entry.js +15 -6
  595. package/dist/nylas-web-elements/nylas-event-description.entry.js.map +1 -1
  596. package/dist/nylas-web-elements/nylas-event-duration.entry.js +15 -10
  597. package/dist/nylas-web-elements/nylas-event-duration.entry.js.map +1 -1
  598. package/dist/nylas-web-elements/nylas-event-info.entry.js +3 -3
  599. package/dist/nylas-web-elements/nylas-event-limits.entry.js +3 -3
  600. package/dist/nylas-web-elements/nylas-event-title.entry.js +70 -19
  601. package/dist/nylas-web-elements/nylas-event-title.entry.js.map +1 -1
  602. package/dist/nylas-web-elements/nylas-form-card.entry.js +3 -3
  603. package/dist/nylas-web-elements/nylas-if-state.entry.js +2 -2
  604. package/dist/nylas-web-elements/nylas-limit-future-bookings.entry.js +24 -11
  605. package/dist/nylas-web-elements/nylas-limit-future-bookings.entry.js.map +1 -1
  606. package/dist/nylas-web-elements/nylas-list-configurations.entry.js +26 -11
  607. package/dist/nylas-web-elements/nylas-list-configurations.entry.js.map +1 -1
  608. package/dist/nylas-web-elements/nylas-list-folders.entry.js +3 -3
  609. package/dist/nylas-web-elements/nylas-list-threads.entry.js +3 -3
  610. package/dist/nylas-web-elements/nylas-locale-switch.entry.js +3 -3
  611. package/dist/nylas-web-elements/nylas-location-component.entry.js +17 -6
  612. package/dist/nylas-web-elements/nylas-location-component.entry.js.map +1 -1
  613. package/dist/nylas-web-elements/nylas-login.entry.js +3 -3
  614. package/dist/nylas-web-elements/nylas-logo.entry.js +1 -1
  615. package/dist/nylas-web-elements/nylas-mailbox-pagination.entry.js +2 -2
  616. package/dist/nylas-web-elements/nylas-mailbox-toolbar-button.entry.js +3 -3
  617. package/dist/nylas-web-elements/nylas-mailbox.entry.js +4 -4
  618. package/dist/nylas-web-elements/nylas-min-cancellation-notice.entry.js +28 -13
  619. package/dist/nylas-web-elements/nylas-min-cancellation-notice.entry.js.map +1 -1
  620. package/dist/nylas-web-elements/nylas-notification.entry.js +2 -2
  621. package/dist/nylas-web-elements/nylas-provider.entry.js +6 -6
  622. package/dist/nylas-web-elements/nylas-scheduler-editor.entry.js +18 -18
  623. package/dist/nylas-web-elements/nylas-scheduler-editor.entry.js.map +1 -1
  624. package/dist/nylas-web-elements/nylas-scheduling.entry.js +3 -3
  625. package/dist/nylas-web-elements/nylas-selected-event-card.entry.js +3 -3
  626. package/dist/nylas-web-elements/nylas-summarize-message-button.entry.js +4 -4
  627. package/dist/nylas-web-elements/nylas-threads-refresh.entry.js +4 -4
  628. package/dist/nylas-web-elements/nylas-threads-search.entry.js +3 -3
  629. package/dist/nylas-web-elements/nylas-time-window-picker.entry.js +2 -2
  630. package/dist/nylas-web-elements/nylas-timeslot-picker.entry.js +2 -2
  631. package/dist/nylas-web-elements/nylas-view-email.entry.js +2 -2
  632. package/dist/nylas-web-elements/nylas-view-thread.entry.js +3 -3
  633. package/dist/nylas-web-elements/nylas-web-elements.esm.js +1 -1
  634. package/dist/nylas-web-elements/p-00a9efc1.entry.js +2 -0
  635. package/dist/nylas-web-elements/{p-618b94cd.entry.js → p-074919b0.entry.js} +2 -2
  636. package/dist/nylas-web-elements/p-1e445e86.entry.js +2 -0
  637. package/dist/nylas-web-elements/{p-7692056f.entry.js → p-2081b475.entry.js} +2 -2
  638. package/dist/nylas-web-elements/{p-370cdcca.entry.js → p-21c3dcad.entry.js} +2 -2
  639. package/dist/nylas-web-elements/{p-55368bc0.entry.js → p-22531c3d.entry.js} +2 -2
  640. package/dist/nylas-web-elements/{p-7c55dfa0.entry.js → p-2d151de9.entry.js} +2 -2
  641. package/dist/nylas-web-elements/p-343a02e1.entry.js +2 -0
  642. package/dist/nylas-web-elements/{p-1c94940d.entry.js → p-349f07e3.entry.js} +2 -2
  643. package/dist/nylas-web-elements/{p-9c399019.entry.js → p-3b281401.entry.js} +2 -2
  644. package/dist/nylas-web-elements/{p-e03b2592.entry.js → p-4154e97e.entry.js} +2 -2
  645. package/dist/nylas-web-elements/{p-3f6155de.entry.js → p-434fcde2.entry.js} +2 -2
  646. package/dist/nylas-web-elements/p-44a9ce77.entry.js +2 -0
  647. package/dist/nylas-web-elements/{p-e22aa0b0.js → p-47b99cf5.js} +2 -2
  648. package/dist/nylas-web-elements/{p-1819b3d7.js → p-49f716ed.js} +4 -4
  649. package/dist/nylas-web-elements/p-49f716ed.js.map +1 -0
  650. package/dist/nylas-web-elements/p-4c12e1e9.js +2 -0
  651. package/dist/nylas-web-elements/p-4c12e1e9.js.map +1 -0
  652. package/dist/nylas-web-elements/{p-1ab25f04.entry.js → p-50b4a80f.entry.js} +2 -2
  653. package/dist/nylas-web-elements/{p-266f9995.entry.js → p-571472d4.entry.js} +2 -2
  654. package/dist/nylas-web-elements/{p-c199d203.entry.js → p-5caa0f36.entry.js} +2 -2
  655. package/dist/nylas-web-elements/{p-57b753c6.entry.js → p-607b547b.entry.js} +2 -2
  656. package/dist/nylas-web-elements/{p-945caf14.entry.js → p-694b511a.entry.js} +2 -2
  657. package/dist/nylas-web-elements/{p-18a936a3.entry.js → p-73c062f8.entry.js} +2 -2
  658. package/dist/nylas-web-elements/{p-81ea7310.entry.js → p-7614e31e.entry.js} +2 -2
  659. package/dist/nylas-web-elements/{p-fe3b8e66.entry.js → p-7687925d.entry.js} +2 -2
  660. package/dist/nylas-web-elements/{p-c451c9e1.entry.js → p-828165d3.entry.js} +2 -2
  661. package/dist/nylas-web-elements/p-939db546.entry.js +2 -0
  662. package/dist/nylas-web-elements/{p-858f0aad.entry.js → p-95a3094a.entry.js} +2 -2
  663. package/dist/nylas-web-elements/{p-ae893050.entry.js → p-980c32d9.entry.js} +3 -3
  664. package/dist/nylas-web-elements/{p-04e3a98e.entry.js → p-a17f542c.entry.js} +2 -2
  665. package/dist/nylas-web-elements/p-a3b1a98c.js +2 -0
  666. package/dist/nylas-web-elements/p-a3b1a98c.js.map +1 -0
  667. package/dist/nylas-web-elements/{p-41dc0d93.js → p-ad7cf473.js} +2 -2
  668. package/dist/nylas-web-elements/p-ad7cf473.js.map +1 -0
  669. package/dist/nylas-web-elements/{p-8b1a6e27.entry.js → p-b25821e1.entry.js} +2 -2
  670. package/dist/nylas-web-elements/{p-572bf8c2.entry.js → p-b53062f7.entry.js} +2 -2
  671. package/dist/nylas-web-elements/{p-674b6d5d.entry.js → p-bb89e973.entry.js} +2 -2
  672. package/dist/nylas-web-elements/p-c20ab972.entry.js +2 -0
  673. package/dist/nylas-web-elements/p-c529dced.entry.js +2 -0
  674. package/dist/nylas-web-elements/p-c529dced.entry.js.map +1 -0
  675. package/dist/nylas-web-elements/{p-1260ac06.entry.js → p-d5375409.entry.js} +2 -2
  676. package/dist/nylas-web-elements/{p-9d4bffbb.entry.js → p-d8f09631.entry.js} +2 -2
  677. package/dist/nylas-web-elements/p-da74ec1c.entry.js +2 -0
  678. package/dist/nylas-web-elements/p-da74ec1c.entry.js.map +1 -0
  679. package/dist/nylas-web-elements/p-db15d382.js +2 -0
  680. package/dist/nylas-web-elements/p-db15d382.js.map +1 -0
  681. package/dist/nylas-web-elements/{p-9ea458c3.js → p-f0250b7d.js} +2 -2
  682. package/dist/nylas-web-elements/{p-eaa9151b.js → p-f0f3f350.js} +2 -2
  683. package/dist/nylas-web-elements/{p-424f4d9a.entry.js → p-f3974e14.entry.js} +2 -2
  684. package/dist/nylas-web-elements/{p-9b195811.entry.js → p-f47163ac.entry.js} +2 -2
  685. package/dist/nylas-web-elements/{p-1655dec3.entry.js → p-f5d17746.entry.js} +4 -4
  686. package/dist/nylas-web-elements/p-f5d17746.entry.js.map +1 -0
  687. package/dist/nylas-web-elements/people-icon.entry.js +1 -1
  688. package/dist/nylas-web-elements/play-icon.entry.js +1 -1
  689. package/dist/nylas-web-elements/refresh-icon.entry.js +1 -1
  690. package/dist/nylas-web-elements/{register-component-e5afe237.js → register-component-ff6f5df4.js} +2 -2
  691. package/dist/nylas-web-elements/{register-component-e5afe237.js.map → register-component-ff6f5df4.js.map} +1 -1
  692. package/dist/nylas-web-elements/reply-all-icon.entry.js +1 -1
  693. package/dist/nylas-web-elements/reply-icon.entry.js +1 -1
  694. package/dist/nylas-web-elements/{scheduler-config-store-0efc3519.js → scheduler-config-store-8f2e658e.js} +10 -4
  695. package/dist/nylas-web-elements/scheduler-config-store-8f2e658e.js.map +1 -0
  696. package/dist/nylas-web-elements/{scheduler-store-8ddcc496.js → scheduler-store-e62b2146.js} +16 -3
  697. package/dist/nylas-web-elements/scheduler-store-e62b2146.js.map +1 -0
  698. package/dist/nylas-web-elements/search-icon.entry.js +1 -1
  699. package/dist/nylas-web-elements/select-dropdown.entry.js +2 -2
  700. package/dist/nylas-web-elements/sent-icon.entry.js +1 -1
  701. package/dist/nylas-web-elements/spam-icon.entry.js +1 -1
  702. package/dist/nylas-web-elements/star-icon.entry.js +1 -1
  703. package/dist/nylas-web-elements/stop-icon.entry.js +1 -1
  704. package/dist/nylas-web-elements/time-period-selector.entry.js +2 -2
  705. package/dist/nylas-web-elements/tooltip-component.entry.js +1 -1
  706. package/dist/nylas-web-elements/translate-icon.entry.js +1 -1
  707. package/dist/nylas-web-elements/trash-icon.entry.js +1 -1
  708. package/dist/nylas-web-elements/underline-icon.entry.js +1 -1
  709. package/dist/{esm/utils-73d8a928.js → nylas-web-elements/utils-3e18e0b2.js} +46 -2
  710. package/dist/nylas-web-elements/{utils-73d8a928.js.map → utils-3e18e0b2.js.map} +1 -1
  711. package/dist/nylas-web-elements/warning-icon.entry.js +1 -1
  712. package/dist/types/common/constants.d.ts +2 -0
  713. package/dist/types/common/nylas-api-request.d.ts +3 -0
  714. package/dist/types/components/scheduler-editor/nylas-availability-picker/nylas-availability-picker.d.ts +10 -4
  715. package/dist/types/components/scheduler-editor/nylas-booking-calendar-picker/nylas-booking-calendar-picker.d.ts +2 -0
  716. package/dist/types/components/scheduler-editor/nylas-calendar-picker/nylas-calendar-picker.d.ts +3 -2
  717. package/dist/types/components/scheduler-editor/nylas-custom-booking-flow/nylas-custom-booking-flow.d.ts +4 -1
  718. package/dist/types/components/scheduler-editor/nylas-editor-tabs/nylas-editor-tabs.d.ts +35 -5
  719. package/dist/types/components/scheduler-editor/nylas-event-description/nylas-event-description.d.ts +3 -0
  720. package/dist/types/components/scheduler-editor/nylas-event-duration/nylas-event-duration.d.ts +3 -0
  721. package/dist/types/components/scheduler-editor/nylas-event-title/nylas-event-title.d.ts +7 -1
  722. package/dist/types/components/scheduler-editor/nylas-limit-future-bookings/nylas-limit-future-bookings.d.ts +6 -6
  723. package/dist/types/components/scheduler-editor/nylas-list-configurations/nylas-list-configurations.d.ts +2 -0
  724. package/dist/types/components/scheduler-editor/nylas-location-component/nylas-location-component.d.ts +3 -0
  725. package/dist/types/components/scheduler-editor/nylas-min-cancellation-notice/nylas-min-cancellation-notice.d.ts +4 -1
  726. package/dist/types/components/scheduler-editor/nylas-scheduler-editor/nylas-scheduler-editor.d.ts +3 -2
  727. package/dist/types/components.d.ts +110 -22
  728. package/dist/types/connector/nylas-connector/index.d.ts +1 -1
  729. package/dist/types/connector/nylas-scheduler-config-connector/index.d.ts +1 -1
  730. package/dist/types/connector/nylas-scheduler-connector/errors/index.d.ts +1 -0
  731. package/dist/types/index.d.ts +1 -1
  732. package/dist/types/stores/scheduler-config-store.d.ts +6 -2
  733. package/dist/types/utils/utils.d.ts +1 -0
  734. package/package.json +4 -2
  735. package/dist/cjs/nylas-api-request-2a0e7022.js.map +0 -1
  736. package/dist/cjs/nylas-api-request-55923233.js.map +0 -1
  737. package/dist/cjs/scheduler-config-store-4d93a9b7.js.map +0 -1
  738. package/dist/cjs/scheduler-config-store-a0e08cab.js.map +0 -1
  739. package/dist/cjs/scheduler-store-a492526c.js.map +0 -1
  740. package/dist/cjs/scheduler-store-e148a4cc.js.map +0 -1
  741. package/dist/cjs/utils-20663d54.js.map +0 -1
  742. package/dist/esm/nylas-api-request-3120d9ac.js.map +0 -1
  743. package/dist/esm/nylas-api-request-4f3dbb72.js.map +0 -1
  744. package/dist/esm/scheduler-config-store-0efc3519.js.map +0 -1
  745. package/dist/esm/scheduler-config-store-6222c0ed.js.map +0 -1
  746. package/dist/esm/scheduler-store-39d37291.js.map +0 -1
  747. package/dist/esm/scheduler-store-8ddcc496.js.map +0 -1
  748. package/dist/esm/utils-d6204242.js.map +0 -1
  749. package/dist/nylas-web-elements/nylas-api-request-4f3dbb72.js.map +0 -1
  750. package/dist/nylas-web-elements/p-0edb3b69.entry.js +0 -2
  751. package/dist/nylas-web-elements/p-1655dec3.entry.js.map +0 -1
  752. package/dist/nylas-web-elements/p-1819b3d7.js.map +0 -1
  753. package/dist/nylas-web-elements/p-1aa7b357.js +0 -2
  754. package/dist/nylas-web-elements/p-1aa7b357.js.map +0 -1
  755. package/dist/nylas-web-elements/p-1f843391.js +0 -2
  756. package/dist/nylas-web-elements/p-1f843391.js.map +0 -1
  757. package/dist/nylas-web-elements/p-3116f5cc.js +0 -2
  758. package/dist/nylas-web-elements/p-3116f5cc.js.map +0 -1
  759. package/dist/nylas-web-elements/p-41dc0d93.js.map +0 -1
  760. package/dist/nylas-web-elements/p-47180df9.entry.js +0 -2
  761. package/dist/nylas-web-elements/p-605142a9.entry.js +0 -2
  762. package/dist/nylas-web-elements/p-6dcc9411.entry.js +0 -2
  763. package/dist/nylas-web-elements/p-6dcc9411.entry.js.map +0 -1
  764. package/dist/nylas-web-elements/p-9d0c0340.entry.js +0 -2
  765. package/dist/nylas-web-elements/p-9d75bcb2.entry.js +0 -2
  766. package/dist/nylas-web-elements/p-9d75bcb2.entry.js.map +0 -1
  767. package/dist/nylas-web-elements/p-be7124f0.entry.js +0 -2
  768. package/dist/nylas-web-elements/p-c45ac7c6.entry.js +0 -2
  769. package/dist/nylas-web-elements/scheduler-config-store-0efc3519.js.map +0 -1
  770. package/dist/nylas-web-elements/scheduler-store-8ddcc496.js.map +0 -1
  771. /package/dist/nylas-web-elements/{p-c45ac7c6.entry.js.map → p-00a9efc1.entry.js.map} +0 -0
  772. /package/dist/nylas-web-elements/{p-618b94cd.entry.js.map → p-074919b0.entry.js.map} +0 -0
  773. /package/dist/nylas-web-elements/{p-47180df9.entry.js.map → p-1e445e86.entry.js.map} +0 -0
  774. /package/dist/nylas-web-elements/{p-7692056f.entry.js.map → p-2081b475.entry.js.map} +0 -0
  775. /package/dist/nylas-web-elements/{p-370cdcca.entry.js.map → p-21c3dcad.entry.js.map} +0 -0
  776. /package/dist/nylas-web-elements/{p-55368bc0.entry.js.map → p-22531c3d.entry.js.map} +0 -0
  777. /package/dist/nylas-web-elements/{p-7c55dfa0.entry.js.map → p-2d151de9.entry.js.map} +0 -0
  778. /package/dist/nylas-web-elements/{p-be7124f0.entry.js.map → p-343a02e1.entry.js.map} +0 -0
  779. /package/dist/nylas-web-elements/{p-1c94940d.entry.js.map → p-349f07e3.entry.js.map} +0 -0
  780. /package/dist/nylas-web-elements/{p-9c399019.entry.js.map → p-3b281401.entry.js.map} +0 -0
  781. /package/dist/nylas-web-elements/{p-e03b2592.entry.js.map → p-4154e97e.entry.js.map} +0 -0
  782. /package/dist/nylas-web-elements/{p-3f6155de.entry.js.map → p-434fcde2.entry.js.map} +0 -0
  783. /package/dist/nylas-web-elements/{p-605142a9.entry.js.map → p-44a9ce77.entry.js.map} +0 -0
  784. /package/dist/nylas-web-elements/{p-e22aa0b0.js.map → p-47b99cf5.js.map} +0 -0
  785. /package/dist/nylas-web-elements/{p-1ab25f04.entry.js.map → p-50b4a80f.entry.js.map} +0 -0
  786. /package/dist/nylas-web-elements/{p-266f9995.entry.js.map → p-571472d4.entry.js.map} +0 -0
  787. /package/dist/nylas-web-elements/{p-c199d203.entry.js.map → p-5caa0f36.entry.js.map} +0 -0
  788. /package/dist/nylas-web-elements/{p-57b753c6.entry.js.map → p-607b547b.entry.js.map} +0 -0
  789. /package/dist/nylas-web-elements/{p-945caf14.entry.js.map → p-694b511a.entry.js.map} +0 -0
  790. /package/dist/nylas-web-elements/{p-18a936a3.entry.js.map → p-73c062f8.entry.js.map} +0 -0
  791. /package/dist/nylas-web-elements/{p-81ea7310.entry.js.map → p-7614e31e.entry.js.map} +0 -0
  792. /package/dist/nylas-web-elements/{p-fe3b8e66.entry.js.map → p-7687925d.entry.js.map} +0 -0
  793. /package/dist/nylas-web-elements/{p-c451c9e1.entry.js.map → p-828165d3.entry.js.map} +0 -0
  794. /package/dist/nylas-web-elements/{p-9d0c0340.entry.js.map → p-939db546.entry.js.map} +0 -0
  795. /package/dist/nylas-web-elements/{p-858f0aad.entry.js.map → p-95a3094a.entry.js.map} +0 -0
  796. /package/dist/nylas-web-elements/{p-ae893050.entry.js.map → p-980c32d9.entry.js.map} +0 -0
  797. /package/dist/nylas-web-elements/{p-04e3a98e.entry.js.map → p-a17f542c.entry.js.map} +0 -0
  798. /package/dist/nylas-web-elements/{p-8b1a6e27.entry.js.map → p-b25821e1.entry.js.map} +0 -0
  799. /package/dist/nylas-web-elements/{p-572bf8c2.entry.js.map → p-b53062f7.entry.js.map} +0 -0
  800. /package/dist/nylas-web-elements/{p-674b6d5d.entry.js.map → p-bb89e973.entry.js.map} +0 -0
  801. /package/dist/nylas-web-elements/{p-0edb3b69.entry.js.map → p-c20ab972.entry.js.map} +0 -0
  802. /package/dist/nylas-web-elements/{p-1260ac06.entry.js.map → p-d5375409.entry.js.map} +0 -0
  803. /package/dist/nylas-web-elements/{p-9d4bffbb.entry.js.map → p-d8f09631.entry.js.map} +0 -0
  804. /package/dist/nylas-web-elements/{p-9ea458c3.js.map → p-f0250b7d.js.map} +0 -0
  805. /package/dist/nylas-web-elements/{p-eaa9151b.js.map → p-f0f3f350.js.map} +0 -0
  806. /package/dist/nylas-web-elements/{p-424f4d9a.entry.js.map → p-f3974e14.entry.js.map} +0 -0
  807. /package/dist/nylas-web-elements/{p-9b195811.entry.js.map → p-f47163ac.entry.js.map} +0 -0
@@ -13,12 +13,13 @@ var __metadata = (this && this.__metadata) || function (k, v) {
13
13
  return Reflect.metadata(k, v);
14
14
  };
15
15
  import { RegisterComponent } from "../../../common/register-component";
16
- import { debug, getBrowser } from "../../../utils/utils";
16
+ import { debug, getBrowser, isNonPrintableKey } from "../../../utils/utils";
17
17
  import { Host, h } from "@stencil/core";
18
18
  import { EVENT_TITLE_TOKENS as eventTitleTokens } from "../../../common/constants";
19
19
  export class NylasEventTitle {
20
20
  constructor() {
21
- this.eventTitle = undefined;
21
+ this.selectedConfiguration = undefined;
22
+ this.eventTitle = this.selectedConfiguration?.event_booking?.title;
22
23
  this.name = 'title';
23
24
  this.showTokens = false;
24
25
  this.availableTokens = eventTitleTokens.map(token => ({
@@ -29,6 +30,7 @@ export class NylasEventTitle {
29
30
  this.filteredTokens = this.availableTokens;
30
31
  this.ariaActivedescendant = '';
31
32
  this.currentWord = { $value: '', fullText: '', index: -1, focusOffset: -1 };
33
+ this.validationError = '';
32
34
  }
33
35
  elementNameChangedHandler(newValue) {
34
36
  debug('nylas-event-title', 'elementNameChangedHandler', newValue);
@@ -45,6 +47,12 @@ export class NylasEventTitle {
45
47
  options?.forEach(option => option.classList.remove('active'));
46
48
  }
47
49
  }
50
+ configChangedHandler(newVal) {
51
+ const title = newVal?.event_booking?.title;
52
+ if (title) {
53
+ this.updateEventTitleFromProp(title);
54
+ }
55
+ }
48
56
  connectedCallback() {
49
57
  debug('nylas-event-title', 'connectedCallback');
50
58
  }
@@ -59,13 +67,32 @@ export class NylasEventTitle {
59
67
  disconnectedCallback() {
60
68
  debug('nylas-event-title', 'disconnectedCallback');
61
69
  }
70
+ formSubmittedHandler(event) {
71
+ debug('nylas-event-title', 'formSubmittedHandler', event);
72
+ if (!this.internals?.validity?.valid) {
73
+ this.validationError = 'Event title is required';
74
+ }
75
+ else {
76
+ this.validationError = '';
77
+ }
78
+ }
62
79
  updateEventTitleFromProp(newValue) {
63
80
  debug('nylas-event-title', 'eventTitleChangedHandler', newValue);
64
- this.titleRef.innerHTML = this.highlightTokens();
65
- this.titleRef.focus();
81
+ if (this.titleRef) {
82
+ this.titleRef.innerHTML = this.highlightTokens(newValue);
83
+ this.titleRef.focus();
84
+ if (typeof this.internals.setValidity === 'function') {
85
+ if (newValue === '') {
86
+ this.internals?.setValidity({ customError: true }, `Event title is required`, this.titleRef);
87
+ }
88
+ else {
89
+ this.internals?.setValidity({ customError: false });
90
+ }
91
+ }
92
+ }
66
93
  }
67
- highlightTokens() {
68
- let outputHtml = this.eventTitle || '';
94
+ highlightTokens(title) {
95
+ let outputHtml = title;
69
96
  eventTitleTokens.forEach(tokenObj => {
70
97
  const token = tokenObj.value;
71
98
  const regex = new RegExp(`(\\${token})(?!\\w)`, 'g');
@@ -74,7 +101,7 @@ export class NylasEventTitle {
74
101
  return outputHtml;
75
102
  }
76
103
  getCurrentSelectionForBrowser() {
77
- const getSelectionTextData = (nodeValue, offset, node) => {
104
+ const getSelectionTextData = (nodeValue, offset, node, allSelected) => {
78
105
  const text = nodeValue.replace(/[\u200B-\u200D\uFEFF]/g, '');
79
106
  const dollarIndex = text.lastIndexOf('$');
80
107
  const lastWord = text.substring(dollarIndex).split(' ')[0];
@@ -84,25 +111,29 @@ export class NylasEventTitle {
84
111
  lastWord,
85
112
  currentText: text,
86
113
  node,
114
+ allSelected,
87
115
  };
88
116
  };
117
+ const isAllSelected = (selection) => selection.anchorOffset === 0 && selection.focusOffset === selection.focusNode?.nodeValue?.length;
89
118
  const currentBrowser = getBrowser();
90
- console.log('currentBrowser', currentBrowser);
91
119
  switch (currentBrowser) {
92
120
  case 'Chrome':
93
121
  const shadowRootSelection = this.host.shadowRoot?.getSelection();
94
122
  const focusNode = shadowRootSelection?.focusNode;
95
123
  const focusNodeValue = focusNode?.nodeValue || '';
96
- return getSelectionTextData(focusNodeValue, shadowRootSelection?.focusOffset || -1, focusNode);
124
+ const allSelected = shadowRootSelection && isAllSelected(shadowRootSelection);
125
+ return getSelectionTextData(focusNodeValue, shadowRootSelection?.focusOffset || -1, focusNode, allSelected);
97
126
  case 'Firefox':
98
127
  const selection = document.getSelection();
99
128
  const anchorNodeValue = selection?.anchorNode?.nodeValue || '';
100
- return getSelectionTextData(anchorNodeValue, selection?.focusOffset || -1, selection?.anchorNode);
129
+ const allSelectedFirefox = selection && isAllSelected(selection);
130
+ return getSelectionTextData(anchorNodeValue, selection?.focusOffset || -1, selection?.anchorNode, allSelectedFirefox);
101
131
  case 'Safari':
102
132
  const windowSelection = window.getSelection();
103
133
  const anchorNode = windowSelection?.getComposedRanges(this.host.shadowRoot)[0];
104
134
  const currentText = anchorNode?.startContainer?.nodeValue || '';
105
- return getSelectionTextData(currentText, anchorNode?.endOffset || -1, anchorNode?.startContainer);
135
+ const allSelectedSafari = windowSelection && isAllSelected(windowSelection);
136
+ return getSelectionTextData(currentText, anchorNode?.endOffset || -1, anchorNode?.startContainer, allSelectedSafari);
106
137
  default:
107
138
  console.warn('Browser not supported');
108
139
  return null;
@@ -138,6 +169,10 @@ export class NylasEventTitle {
138
169
  this.updateEventTitle(textContent);
139
170
  }
140
171
  handleInputKeyDown(event) {
172
+ const selection = this.getCurrentSelectionForBrowser();
173
+ if (selection?.allSelected && !isNonPrintableKey(event)) {
174
+ this.titleRef.innerHTML = '';
175
+ }
141
176
  if (event.key === 'Enter') {
142
177
  event.preventDefault();
143
178
  const activeOption = this.host.shadowRoot?.getElementById(this.ariaActivedescendant);
@@ -183,10 +218,12 @@ export class NylasEventTitle {
183
218
  this.resetDropdown();
184
219
  }
185
220
  else if (event.key === 'Backspace' || event.key === 'Delete') {
186
- const selection = this.getCurrentSelectionForBrowser();
187
221
  if (selection?.currentText.startsWith('${')) {
188
222
  selection?.node?.parentNode && selection.node.parentNode.removeChild(selection.node);
189
223
  }
224
+ if (this.titleRef.textContent === '' || selection?.currentText === '' || selection?.allSelected) {
225
+ this.titleRef.innerHTML = '';
226
+ }
190
227
  }
191
228
  }
192
229
  selectOption(e, option) {
@@ -221,12 +258,12 @@ export class NylasEventTitle {
221
258
  const newTextNodeAfter = document.createTextNode(textAfter);
222
259
  if (textAfter !== '') {
223
260
  textNode.replaceWith(newTextNode, tagSpan, newTextNodeAfter);
224
- newRange.setStart(newTextNodeAfter, 0);
261
+ newRange.setStart(newTextNodeAfter, 1);
225
262
  }
226
263
  else {
227
264
  const afterNode = document.createTextNode('\u200B');
228
265
  textNode.replaceWith(newTextNode, tagSpan, afterNode);
229
- newRange.setStart(afterNode, 0);
266
+ newRange.setStart(afterNode, 1);
230
267
  }
231
268
  this.resetDropdown();
232
269
  this.titleRef.focus();
@@ -246,6 +283,15 @@ export class NylasEventTitle {
246
283
  }
247
284
  updateEventTitle(text) {
248
285
  const value = text.replace(/ +/g, ' ');
286
+ if (value === '') {
287
+ this.internals?.setValidity({ customError: true }, `Event title is required`, this.titleRef);
288
+ this.validationError = 'Event title is required';
289
+ }
290
+ else {
291
+ this.internals?.setValidity({ customError: false });
292
+ this.validationError = '';
293
+ }
294
+ this.internals?.setFormValue(value, this.name);
249
295
  this.valueChanged.emit({ value: value, name: this.name });
250
296
  }
251
297
  resetDropdown() {
@@ -256,7 +302,10 @@ export class NylasEventTitle {
256
302
  return (h("div", { class: "token-label" }, h("span", { class: "token" }, token.token), h("span", { class: "description" }, token.description)));
257
303
  }
258
304
  render() {
259
- return (h(Host, { key: 'a58acf57120285f1c42b0df698b31e298b40407d' }, h("div", { key: 'ed5b5e3d7694fbce89647344b066326271786779', class: "nylas-event-title", part: "net" }, h("label", { key: '102d6d0df0164809afe2f215408cc321703c38bc', htmlFor: "title" }, "Event title", h("span", { key: 'e024b656ae41640181ba67aed42a52509774354c', class: "required" }, "*"), h("span", { key: '7116bafdab5470e86ba2acdafc2236610b79ea59', class: "label-icon" }, h("tooltip-component", { key: '71a50958f2f04cdfe0cc35c17f60c64f3b910e84' }, h("info-icon", { key: '92e96b68f699d4aff80e028538259e27ba803e18', slot: "tooltip-icon" }), h("span", { key: '5c29a9e8bde6f4cd8df38082b70ad15682e4b687', slot: "tooltip-content" }, "Enter a title for your event.")))), h("div", { key: '72f580436b050b2af9b78149e3b8831912847e7f', class: "title", part: "net__title", ref: el => (this.titleRef = el), contentEditable: "true", onInput: e => this.handleChange(e), onKeyDown: event => this.handleInputKeyDown(event) }), this.showTokens && this.filteredTokens?.length > 0 && (h("div", { class: "token-options", part: "net__dropdown-content" }, h("ul", { tabindex: "-1", role: "listbox", "aria-label": this.name, "aria-activedescendant": this.ariaActivedescendant }, this.filteredTokens.map(option => (h("li", { tabindex: "0", key: option.label, id: option.label, class: { active: this.ariaActivedescendant === option.label }, onClick: e => this.selectOption(e, option), role: "option" }, this.getLabelHTML(option.labelHTML))))))), h("span", { key: 'a75e5bea3c3841e1030ff676465c036006cf617f', class: "help-text" }, "Create a dynamic templated event title by typing $. Learn more"))));
305
+ return (h(Host, { key: 'e0ddf6c13a5a0c0d2e0db9188365418fb7484dcf' }, h("div", { key: 'a3b8e594c8d9632709e777891f04df0aaaf7c5c3', class: "nylas-event-title", part: "net" }, h("label", { key: 'e5794d2cd8be0b1666bfa67c3ea657da5dc8d45d', htmlFor: "title" }, "Event title", h("span", { key: '1210caceb7bf824f01559460e1c5e572cb2dad92', class: "required" }, "*"), h("span", { key: '4280ec285221e6db76ca08723fe3888a1d2643e3', class: "label-icon" }, h("tooltip-component", { key: 'd6c05fb79cf39656af7589a2e9de9ef832d7a2f8' }, h("info-icon", { key: 'a4659d97d60d00dfcc2c993e70da5cfd05904f78', slot: "tooltip-icon" }), h("span", { key: '738bfa669eec42b417be02fbad0584af34044c83', slot: "tooltip-content" }, "Enter a title for your event.")))), h("div", { key: 'df102dc899f8de91154689d9cdaae28465380622', class: {
306
+ title: true,
307
+ error: this.validationError !== '',
308
+ }, part: "net__title", ref: el => (this.titleRef = el), contentEditable: "true", onInput: e => this.handleChange(e), onKeyDown: event => this.handleInputKeyDown(event) }), this.showTokens && this.filteredTokens?.length > 0 && (h("div", { class: "token-options", part: "net__dropdown-content" }, h("ul", { tabindex: "-1", role: "listbox", "aria-label": this.name, "aria-activedescendant": this.ariaActivedescendant }, this.filteredTokens.map(option => (h("li", { tabindex: "0", key: option.label, id: option.label, class: { active: this.ariaActivedescendant === option.label }, onClick: e => this.selectOption(e, option), role: "option" }, this.getLabelHTML(option.labelHTML))))))), h("span", { key: 'ec769eea7e2e3ff6d64bef0f5099540c93ba80ab', class: "help-text" }, "Create a dynamic templated event title by typing $. Learn more"), this.validationError != '' && h("span", { class: "error-message" }, this.validationError))));
260
309
  }
261
310
  static get is() { return "nylas-event-title"; }
262
311
  static get encapsulation() { return "shadow"; }
@@ -273,6 +322,27 @@ export class NylasEventTitle {
273
322
  }
274
323
  static get properties() {
275
324
  return {
325
+ "selectedConfiguration": {
326
+ "type": "unknown",
327
+ "mutable": false,
328
+ "complexType": {
329
+ "original": "Configuration",
330
+ "resolved": "Configuration | undefined",
331
+ "references": {
332
+ "Configuration": {
333
+ "location": "import",
334
+ "path": "@nylas/core",
335
+ "id": "../nylas-js-core/dist/index.d.ts::Configuration"
336
+ }
337
+ }
338
+ },
339
+ "required": false,
340
+ "optional": true,
341
+ "docs": {
342
+ "tags": [],
343
+ "text": "The selected config"
344
+ }
345
+ },
276
346
  "eventTitle": {
277
347
  "type": "string",
278
348
  "mutable": false,
@@ -288,7 +358,8 @@ export class NylasEventTitle {
288
358
  "text": "The title of the event from the cofiguration."
289
359
  },
290
360
  "attribute": "event-title",
291
- "reflect": false
361
+ "reflect": false,
362
+ "defaultValue": "this.selectedConfiguration?.event_booking?.title"
292
363
  },
293
364
  "name": {
294
365
  "type": "string",
@@ -316,7 +387,8 @@ export class NylasEventTitle {
316
387
  "availableTokens": {},
317
388
  "filteredTokens": {},
318
389
  "ariaActivedescendant": {},
319
- "currentWord": {}
390
+ "currentWord": {},
391
+ "validationError": {}
320
392
  };
321
393
  }
322
394
  static get events() {
@@ -345,6 +417,18 @@ export class NylasEventTitle {
345
417
  }, {
346
418
  "propName": "ariaActivedescendant",
347
419
  "methodName": "ariaActivedescendantChangedHandler"
420
+ }, {
421
+ "propName": "selectedConfiguration",
422
+ "methodName": "configChangedHandler"
423
+ }];
424
+ }
425
+ static get listeners() {
426
+ return [{
427
+ "name": "formSubmitted",
428
+ "method": "formSubmittedHandler",
429
+ "target": "window",
430
+ "capture": false,
431
+ "passive": false
348
432
  }];
349
433
  }
350
434
  static get attachInternalsMemberName() { return "internals"; }
@@ -352,6 +436,7 @@ export class NylasEventTitle {
352
436
  __decorate([
353
437
  RegisterComponent({
354
438
  name: 'nylas-event-title',
439
+ stateToProps: new Map([['schedulerConfig.selectedConfiguration', 'selectedConfiguration']]),
355
440
  eventToProps: {},
356
441
  fireRegisterEvent: true,
357
442
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"nylas-event-title.js","sourceRoot":"","sources":["../../../../src/components/scheduler-editor/nylas-event-title/nylas-event-title.tsx"],"names":[],"mappings":"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","sourcesContent":["import { RegisterComponent } from '@/common/register-component';\nimport { NylasSchedulerConfigConnector } from '@/connector/nylas-scheduler-config-connector';\nimport { debug, getBrowser } from '@/utils/utils';\nimport { AttachInternals, Component, Host, State, h, Element, Prop, Watch, Event, EventEmitter } from '@stencil/core';\nimport { NylasSchedulerEditor } from '../nylas-scheduler-editor/nylas-scheduler-editor';\nimport { EVENT_TITLE_TOKENS as eventTitleTokens } from '@/common/constants';\n\ninterface CustomShadowRoot extends ShadowRoot {\n getSelection: () => Selection | null;\n}\n\ntype Token = {\n token: string;\n value: string;\n description: string;\n};\n\n/**\n * The `nylas-event-title` component is a form input for the title of an event.\n * @part net - The event title container\n * @part net__title - The event title input\n * @part net__dropdown-content - The token options container\n */\n@Component({\n tag: 'nylas-event-title',\n styleUrl: 'nylas-event-title.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class NylasEventTitle {\n @Element() host!: HTMLElement;\n @AttachInternals() internals!: ElementInternals;\n\n // Properties\n /**\n * The title of the event from the cofiguration.\n */\n @Prop() eventTitle?: string;\n /**\n * The name attribute of this component.\n */\n @Prop() name: string = 'title';\n\n // State variables\n /**\n * Whether to show the tokens dropdown.\n */\n @State() showTokens: boolean = false;\n /**\n * The available token options for the dropdown.\n */\n @State() availableTokens: { label: string; value: string; labelHTML: Token }[] = eventTitleTokens.map(token => ({\n label: token.token,\n value: token.value,\n labelHTML: token,\n }));\n /**\n * The filtered token options for the dropdown based on the current query.\n */\n @State() filteredTokens: { label: string; value: string; labelHTML: Token }[] = this.availableTokens;\n /**\n * The aria-activedescendant attribute value. This is used to indicate the\n * currently active descendant in the tokens dropdown.\n */\n @State() ariaActivedescendant: string = '';\n /**\n * Stores the reference to the current word being typed.\n * This is used to update the event title with the selected token tag when\n * an option is selected from the dropdown by clicking on it.\n */\n @State() currentWord: {\n $value: string;\n fullText: string;\n index: number;\n focusOffset: number;\n } = { $value: '', fullText: '', index: -1, focusOffset: -1 };\n\n // Reference to the title div element\n private titleRef!: HTMLDivElement;\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-event-title', 'elementNameChangedHandler', newValue);\n this.host.setAttribute('name', newValue);\n }\n\n @Watch('ariaActivedescendant')\n ariaActivedescendantChangedHandler(newValue: string) {\n debug('nylas-event-title', 'ariaActivedescendantChangedHandler', newValue);\n if (newValue !== '') {\n const activeOption = this.host.shadowRoot?.getElementById(newValue);\n activeOption?.classList.add('active');\n } else {\n const options = this.host.shadowRoot?.querySelectorAll('.token-options li.active');\n options?.forEach(option => option.classList.remove('active'));\n }\n }\n\n // Events\n /**\n * This event is fired when the value of the event title changes.\n */\n @Event() valueChanged!: EventEmitter<{\n value: string;\n name: string;\n }>;\n\n // Lifecycle methods\n connectedCallback() {\n debug('nylas-event-title', 'connectedCallback');\n }\n\n componentWillLoad() {\n debug('nylas-event-title', 'componentWillLoad');\n this.host.setAttribute('name', this.name);\n }\n\n componentDidLoad() {\n debug('nylas-event-title', 'componentDidLoad');\n this.updateEventTitleFromProp(this.eventTitle || '');\n }\n\n disconnectedCallback() {\n debug('nylas-event-title', 'disconnectedCallback');\n }\n\n updateEventTitleFromProp(newValue: string) {\n debug('nylas-event-title', 'eventTitleChangedHandler', newValue);\n\n this.titleRef.innerHTML = this.highlightTokens();\n this.titleRef.focus();\n }\n\n highlightTokens() {\n let outputHtml = this.eventTitle || '';\n\n eventTitleTokens.forEach(tokenObj => {\n const token = tokenObj.value;\n // Create a regular expression that matches the token as a whole word\n const regex = new RegExp(`(\\\\${token})(?!\\\\w)`, 'g');\n // Replace the token with a span element\n outputHtml = outputHtml.replace(regex, '<span class=\"highlighted-tag\">$1</span>');\n });\n return outputHtml;\n }\n\n getCurrentSelectionForBrowser() {\n const getSelectionTextData = (nodeValue, offset, node) => {\n // Remove zero-width space characters from the text, because they are not visible and cause issues with the selection\n const text = nodeValue.replace(/[\\u200B-\\u200D\\uFEFF]/g, '');\n const dollarIndex = text.lastIndexOf('$');\n const lastWord = text.substring(dollarIndex).split(' ')[0];\n return {\n focusOffset: offset,\n dollarIndex,\n lastWord,\n currentText: text,\n node,\n };\n };\n\n const currentBrowser = getBrowser();\n console.log('currentBrowser', currentBrowser);\n switch (currentBrowser) {\n case 'Chrome':\n const shadowRootSelection = (this.host.shadowRoot as CustomShadowRoot)?.getSelection();\n const focusNode = shadowRootSelection?.focusNode;\n const focusNodeValue = focusNode?.nodeValue || '';\n return getSelectionTextData(focusNodeValue, shadowRootSelection?.focusOffset || -1, focusNode);\n case 'Firefox':\n const selection = document.getSelection();\n const anchorNodeValue = selection?.anchorNode?.nodeValue || '';\n return getSelectionTextData(anchorNodeValue, selection?.focusOffset || -1, selection?.anchorNode);\n case 'Safari':\n const windowSelection = window.getSelection();\n const anchorNode = (windowSelection as any)?.getComposedRanges(this.host.shadowRoot as CustomShadowRoot)[0];\n const currentText = anchorNode?.startContainer?.nodeValue || '';\n return getSelectionTextData(currentText, anchorNode?.endOffset || -1, anchorNode?.startContainer);\n default:\n console.warn('Browser not supported');\n return null;\n }\n }\n\n handleChange(event: Event) {\n const textContent = (event.target as HTMLDivElement).textContent || '';\n // All browsers handle Selection within Shadow DOM differently, so get the current selection based on the browser\n const currentSelection = this.getCurrentSelectionForBrowser();\n if (!currentSelection) {\n this.updateEventTitle(textContent);\n this.resetDropdown();\n return;\n }\n const { focusOffset, dollarIndex, lastWord, currentText } = currentSelection;\n\n if (dollarIndex === -1 || focusOffset < dollarIndex) {\n this.updateEventTitle(textContent);\n this.resetDropdown();\n return;\n }\n if (lastWord.startsWith('$')) {\n this.showTokens = true;\n // Update the current word being typed, we need this reference to update the event title with the selected token\n // because the user can select an option from the dropdown by clicking on it, which will not trigger the input event.\n this.currentWord = {\n $value: lastWord,\n fullText: currentText,\n index: dollarIndex,\n focusOffset,\n };\n this.populateSuggestionsDropdown(lastWord);\n } else {\n this.resetDropdown();\n }\n this.updateEventTitle(textContent);\n }\n\n handleInputKeyDown(event) {\n if (event.key === 'Enter') {\n event.preventDefault();\n const activeOption = this.host.shadowRoot?.getElementById(this.ariaActivedescendant);\n if (activeOption) {\n activeOption.click();\n this.ariaActivedescendant = '';\n }\n } else if (event.key === 'ArrowDown') {\n event.preventDefault();\n const activeOption = this.host.shadowRoot?.getElementById(this.ariaActivedescendant);\n if (activeOption) {\n const nextOption = activeOption.nextElementSibling;\n if (nextOption) {\n this.ariaActivedescendant = nextOption.id;\n } else {\n this.ariaActivedescendant = this.filteredTokens[0].label;\n }\n } else {\n this.ariaActivedescendant = this.filteredTokens[0].label;\n }\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n const activeOption = this.host.shadowRoot?.getElementById(this.ariaActivedescendant);\n if (activeOption) {\n const prevOption = activeOption.previousElementSibling;\n if (prevOption) {\n this.ariaActivedescendant = prevOption.id;\n } else {\n this.ariaActivedescendant = this.filteredTokens[this.filteredTokens.length - 1].label;\n }\n } else {\n this.ariaActivedescendant = this.filteredTokens[this.filteredTokens.length - 1].label;\n }\n } else if (event.key === 'Escape') {\n event.preventDefault();\n this.resetDropdown();\n } else if (event.key === 'Backspace' || event.key === 'Delete') {\n const selection = this.getCurrentSelectionForBrowser();\n if (selection?.currentText.startsWith('${')) {\n selection?.node?.parentNode && selection.node.parentNode.removeChild(selection.node);\n }\n }\n }\n\n selectOption(e: Event, option: { label: string; value: string; labelHTML: Token }) {\n e.preventDefault();\n const word = this.currentWord.fullText;\n const dollarWord = this.currentWord.$value;\n\n // Traverse the DOM to find the text node that contains the current word fullText\n let currentNode = this.titleRef.firstChild;\n let textNode: ChildNode | null = null;\n\n while (currentNode) {\n if (currentNode.nodeType === 3) {\n const currentNodeText = currentNode.textContent?.replace(/[\\u200B-\\u200D\\uFEFF]/g, '') || '';\n const wordText = word.replace(/[\\u200B-\\u200D\\uFEFF]/g, '');\n if (currentNodeText.includes(wordText)) {\n textNode = currentNode;\n break;\n }\n }\n currentNode = currentNode.nextSibling;\n }\n\n if (!textNode) {\n return;\n }\n // Split the text node into three parts: text before the token, the token, and text after the token\n const text = textNode.textContent || '';\n const index = text.indexOf(dollarWord);\n const textBefore = text.substring(0, index);\n const textAfter = text.substring(index + dollarWord.length);\n const newTextNode = document.createTextNode(textBefore);\n const newRange = document.createRange();\n\n // Create a new span element to replace the text node\n const tagSpan = document.createElement('span');\n tagSpan.classList.add('highlighted-tag');\n tagSpan.textContent = `${option.value}`;\n const newTextNodeAfter = document.createTextNode(textAfter);\n\n if (textAfter !== '') {\n // If there is text after the token, add it to the new span element\n textNode.replaceWith(newTextNode, tagSpan, newTextNodeAfter);\n newRange.setStart(newTextNodeAfter, 0);\n } else {\n // If there is no text after the token, add a zero-width space character (Without this, the cursor will not move outside the highlighted span element)\n const afterNode = document.createTextNode('\\u200B');\n textNode.replaceWith(newTextNode, tagSpan, afterNode);\n newRange.setStart(afterNode, 0);\n }\n\n // Hide the dropdown\n this.resetDropdown();\n this.titleRef.focus();\n\n // Set the focus to the new span element\n const sel = window.getSelection();\n newRange.collapse(true);\n sel?.removeAllRanges();\n sel?.addRange(newRange);\n\n // Update the event title with the selected token\n this.updateEventTitle(this.titleRef.textContent || '');\n }\n\n populateSuggestionsDropdown(query: string = '') {\n this.filteredTokens = this.availableTokens.filter(obj => {\n return obj.label.startsWith(query.toString()) || obj.value.startsWith(query.toString());\n });\n\n // Set the first option as the active descendant\n if (this.filteredTokens.length > 0) {\n this.ariaActivedescendant = this.filteredTokens[0].label;\n }\n }\n\n updateEventTitle(text: string) {\n const value = text.replace(/ +/g, ' ');\n this.valueChanged.emit({ value: value, name: this.name });\n }\n\n resetDropdown() {\n this.showTokens = false;\n this.ariaActivedescendant = '';\n }\n\n getLabelHTML(token: { token: string; description: string }) {\n return (\n <div class=\"token-label\">\n <span class=\"token\">{token.token}</span>\n <span class=\"description\">{token.description}</span>\n </div>\n );\n }\n\n @RegisterComponent<NylasEventTitle, NylasSchedulerConfigConnector, Exclude<NylasSchedulerEditor['stores'], undefined>>({\n name: 'nylas-event-title',\n eventToProps: {},\n fireRegisterEvent: true,\n })\n render() {\n return (\n <Host>\n <div class=\"nylas-event-title\" part=\"net\">\n <label htmlFor=\"title\">\n Event title<span class=\"required\">*</span>\n <span class=\"label-icon\">\n <tooltip-component>\n <info-icon slot=\"tooltip-icon\" />\n <span slot=\"tooltip-content\">Enter a title for your event.</span>\n </tooltip-component>\n </span>\n </label>\n <div\n class=\"title\"\n part=\"net__title\"\n ref={el => (this.titleRef = el as HTMLDivElement)}\n contentEditable=\"true\"\n onInput={e => this.handleChange(e)}\n onKeyDown={event => this.handleInputKeyDown(event)}\n ></div>\n {this.showTokens && this.filteredTokens?.length > 0 && (\n <div class=\"token-options\" part=\"net__dropdown-content\">\n <ul tabindex=\"-1\" role=\"listbox\" aria-label={this.name} aria-activedescendant={this.ariaActivedescendant}>\n {this.filteredTokens.map(option => (\n <li\n tabindex=\"0\"\n key={option.label}\n id={option.label}\n class={{ active: this.ariaActivedescendant === option.label }}\n onClick={e => this.selectOption(e, option)}\n role=\"option\"\n >\n {this.getLabelHTML(option.labelHTML)}\n </li>\n ))}\n </ul>\n </div>\n )}\n <span class=\"help-text\">Create a dynamic templated event title by typing $. Learn more</span>\n </div>\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"nylas-event-title.js","sourceRoot":"","sources":["../../../../src/components/scheduler-editor/nylas-event-title/nylas-event-title.tsx"],"names":[],"mappings":"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","sourcesContent":["import { RegisterComponent } from '@/common/register-component';\nimport { NylasSchedulerConfigConnector } from '@/connector/nylas-scheduler-config-connector';\nimport { debug, getBrowser, isNonPrintableKey } from '@/utils/utils';\nimport { AttachInternals, Component, Host, State, h, Element, Prop, Watch, Event, EventEmitter, Listen } from '@stencil/core';\nimport { NylasSchedulerEditor } from '../nylas-scheduler-editor/nylas-scheduler-editor';\nimport { EVENT_TITLE_TOKENS as eventTitleTokens } from '@/common/constants';\nimport { Configuration } from '@nylas/core';\n\ninterface CustomShadowRoot extends ShadowRoot {\n getSelection: () => Selection | null;\n}\n\ntype Token = {\n token: string;\n value: string;\n description: string;\n};\n\n/**\n * The `nylas-event-title` component is a form input for the title of an event.\n * @part net - The event title container\n * @part net__title - The event title input\n * @part net__dropdown-content - The token options container\n */\n@Component({\n tag: 'nylas-event-title',\n styleUrl: 'nylas-event-title.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class NylasEventTitle {\n @Element() host!: HTMLElement;\n @AttachInternals() internals!: ElementInternals;\n\n // Properties\n /**\n * The selected config\n */\n @Prop() selectedConfiguration?: Configuration;\n /**\n * The title of the event from the cofiguration.\n */\n @Prop() eventTitle?: string = this.selectedConfiguration?.event_booking?.title;\n /**\n * The name attribute of this component.\n */\n @Prop() name: string = 'title';\n\n // State variables\n /**\n * Whether to show the tokens dropdown.\n */\n @State() showTokens: boolean = false;\n /**\n * The available token options for the dropdown.\n */\n @State() availableTokens: { label: string; value: string; labelHTML: Token }[] = eventTitleTokens.map(token => ({\n label: token.token,\n value: token.value,\n labelHTML: token,\n }));\n /**\n * The filtered token options for the dropdown based on the current query.\n */\n @State() filteredTokens: { label: string; value: string; labelHTML: Token }[] = this.availableTokens;\n /**\n * The aria-activedescendant attribute value. This is used to indicate the\n * currently active descendant in the tokens dropdown.\n */\n @State() ariaActivedescendant: string = '';\n /**\n * Stores the reference to the current word being typed.\n * This is used to update the event title with the selected token tag when\n * an option is selected from the dropdown by clicking on it.\n */\n @State() currentWord: {\n $value: string;\n fullText: string;\n index: number;\n focusOffset: number;\n } = { $value: '', fullText: '', index: -1, focusOffset: -1 };\n\n @State() validationError: string = '';\n\n // Reference to the title div element\n private titleRef!: HTMLDivElement;\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-event-title', 'elementNameChangedHandler', newValue);\n this.host.setAttribute('name', newValue);\n }\n\n @Watch('ariaActivedescendant')\n ariaActivedescendantChangedHandler(newValue: string) {\n debug('nylas-event-title', 'ariaActivedescendantChangedHandler', newValue);\n if (newValue !== '') {\n const activeOption = this.host.shadowRoot?.getElementById(newValue);\n activeOption?.classList.add('active');\n } else {\n const options = this.host.shadowRoot?.querySelectorAll('.token-options li.active');\n options?.forEach(option => option.classList.remove('active'));\n }\n }\n\n @Watch('selectedConfiguration')\n configChangedHandler(newVal) {\n const title = newVal?.event_booking?.title;\n if (title) {\n this.updateEventTitleFromProp(title);\n }\n }\n\n // Events\n /**\n * This event is fired when the value of the event title changes.\n */\n @Event() valueChanged!: EventEmitter<{\n value: string;\n name: string;\n }>;\n\n // Lifecycle methods\n connectedCallback() {\n debug('nylas-event-title', 'connectedCallback');\n }\n\n componentWillLoad() {\n debug('nylas-event-title', 'componentWillLoad');\n this.host.setAttribute('name', this.name);\n }\n\n componentDidLoad() {\n debug('nylas-event-title', 'componentDidLoad');\n this.updateEventTitleFromProp(this.eventTitle || '');\n }\n\n disconnectedCallback() {\n debug('nylas-event-title', 'disconnectedCallback');\n }\n\n @Listen('formSubmitted', { target: 'window' })\n formSubmittedHandler(event: CustomEvent) {\n debug('nylas-event-title', 'formSubmittedHandler', event);\n if (!this.internals?.validity?.valid) {\n this.validationError = 'Event title is required';\n } else {\n this.validationError = '';\n }\n }\n\n updateEventTitleFromProp(newValue: string) {\n debug('nylas-event-title', 'eventTitleChangedHandler', newValue);\n if (this.titleRef) {\n this.titleRef.innerHTML = this.highlightTokens(newValue);\n this.titleRef.focus();\n if (typeof this.internals.setValidity === 'function') {\n if (newValue === '') {\n this.internals?.setValidity({ customError: true }, `Event title is required`, this.titleRef);\n } else {\n this.internals?.setValidity({ customError: false });\n }\n }\n }\n }\n\n highlightTokens(title: string) {\n let outputHtml = title;\n\n eventTitleTokens.forEach(tokenObj => {\n const token = tokenObj.value;\n // Create a regular expression that matches the token as a whole word\n const regex = new RegExp(`(\\\\${token})(?!\\\\w)`, 'g');\n // Replace the token with a span element\n outputHtml = outputHtml.replace(regex, '<span class=\"highlighted-tag\">$1</span>');\n });\n return outputHtml;\n }\n\n getCurrentSelectionForBrowser() {\n const getSelectionTextData = (nodeValue, offset, node, allSelected) => {\n // Remove zero-width space characters from the text, because they are not visible and cause issues with the selection\n const text = nodeValue.replace(/[\\u200B-\\u200D\\uFEFF]/g, '');\n const dollarIndex = text.lastIndexOf('$');\n const lastWord = text.substring(dollarIndex).split(' ')[0];\n return {\n focusOffset: offset,\n dollarIndex,\n lastWord,\n currentText: text,\n node,\n allSelected,\n };\n };\n\n // Check if the selection has selected all the text in the node, we need this to handle the case where the user selects all the text and then types or deletes\n const isAllSelected = (selection: Selection) => selection.anchorOffset === 0 && selection.focusOffset === selection.focusNode?.nodeValue?.length;\n\n const currentBrowser = getBrowser();\n switch (currentBrowser) {\n case 'Chrome':\n const shadowRootSelection = (this.host.shadowRoot as CustomShadowRoot)?.getSelection();\n const focusNode = shadowRootSelection?.focusNode;\n const focusNodeValue = focusNode?.nodeValue || '';\n const allSelected = shadowRootSelection && isAllSelected(shadowRootSelection);\n return getSelectionTextData(focusNodeValue, shadowRootSelection?.focusOffset || -1, focusNode, allSelected);\n case 'Firefox':\n const selection = document.getSelection();\n const anchorNodeValue = selection?.anchorNode?.nodeValue || '';\n const allSelectedFirefox = selection && isAllSelected(selection);\n return getSelectionTextData(anchorNodeValue, selection?.focusOffset || -1, selection?.anchorNode, allSelectedFirefox);\n case 'Safari':\n const windowSelection = window.getSelection();\n const anchorNode = (windowSelection as any)?.getComposedRanges(this.host.shadowRoot as CustomShadowRoot)[0];\n const currentText = anchorNode?.startContainer?.nodeValue || '';\n const allSelectedSafari = windowSelection && isAllSelected(windowSelection);\n return getSelectionTextData(currentText, anchorNode?.endOffset || -1, anchorNode?.startContainer, allSelectedSafari);\n default:\n console.warn('Browser not supported');\n return null;\n }\n }\n\n handleChange(event: Event) {\n const textContent = (event.target as HTMLDivElement).textContent || '';\n // All browsers handle Selection within Shadow DOM differently, so get the current selection based on the browser\n const currentSelection = this.getCurrentSelectionForBrowser();\n if (!currentSelection) {\n this.updateEventTitle(textContent);\n this.resetDropdown();\n return;\n }\n const { focusOffset, dollarIndex, lastWord, currentText } = currentSelection;\n\n if (dollarIndex === -1 || focusOffset < dollarIndex) {\n this.updateEventTitle(textContent);\n this.resetDropdown();\n return;\n }\n if (lastWord.startsWith('$')) {\n this.showTokens = true;\n // Update the current word being typed, we need this reference to update the event title with the selected token\n // because the user can select an option from the dropdown by clicking on it, which will not trigger the input event.\n this.currentWord = {\n $value: lastWord,\n fullText: currentText,\n index: dollarIndex,\n focusOffset,\n };\n this.populateSuggestionsDropdown(lastWord);\n } else {\n this.resetDropdown();\n }\n this.updateEventTitle(textContent);\n }\n\n handleInputKeyDown(event) {\n const selection = this.getCurrentSelectionForBrowser();\n\n // If no text is remaining in the title, reset the title to an empty string\n if (selection?.allSelected && !isNonPrintableKey(event)) {\n this.titleRef.innerHTML = '';\n }\n\n if (event.key === 'Enter') {\n event.preventDefault();\n const activeOption = this.host.shadowRoot?.getElementById(this.ariaActivedescendant);\n if (activeOption) {\n activeOption.click();\n this.ariaActivedescendant = '';\n }\n } else if (event.key === 'ArrowDown') {\n event.preventDefault();\n const activeOption = this.host.shadowRoot?.getElementById(this.ariaActivedescendant);\n if (activeOption) {\n const nextOption = activeOption.nextElementSibling;\n if (nextOption) {\n this.ariaActivedescendant = nextOption.id;\n } else {\n this.ariaActivedescendant = this.filteredTokens[0].label;\n }\n } else {\n this.ariaActivedescendant = this.filteredTokens[0].label;\n }\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n const activeOption = this.host.shadowRoot?.getElementById(this.ariaActivedescendant);\n if (activeOption) {\n const prevOption = activeOption.previousElementSibling;\n if (prevOption) {\n this.ariaActivedescendant = prevOption.id;\n } else {\n this.ariaActivedescendant = this.filteredTokens[this.filteredTokens.length - 1].label;\n }\n } else {\n this.ariaActivedescendant = this.filteredTokens[this.filteredTokens.length - 1].label;\n }\n } else if (event.key === 'Escape') {\n event.preventDefault();\n this.resetDropdown();\n } else if (event.key === 'Backspace' || event.key === 'Delete') {\n if (selection?.currentText.startsWith('${')) {\n selection?.node?.parentNode && selection.node.parentNode.removeChild(selection.node);\n }\n if (this.titleRef.textContent === '' || selection?.currentText === '' || selection?.allSelected) {\n this.titleRef.innerHTML = '';\n }\n }\n }\n\n selectOption(e: Event, option: { label: string; value: string; labelHTML: Token }) {\n e.preventDefault();\n const word = this.currentWord.fullText;\n const dollarWord = this.currentWord.$value;\n\n // Traverse the DOM to find the text node that contains the current word fullText\n let currentNode = this.titleRef.firstChild;\n let textNode: ChildNode | null = null;\n\n while (currentNode) {\n if (currentNode.nodeType === 3) {\n const currentNodeText = currentNode.textContent?.replace(/[\\u200B-\\u200D\\uFEFF]/g, '') || '';\n const wordText = word.replace(/[\\u200B-\\u200D\\uFEFF]/g, '');\n if (currentNodeText.includes(wordText)) {\n textNode = currentNode;\n break;\n }\n }\n currentNode = currentNode.nextSibling;\n }\n\n if (!textNode) {\n return;\n }\n // Split the text node into three parts: text before the token, the token, and text after the token\n const text = textNode.textContent || '';\n const index = text.indexOf(dollarWord);\n const textBefore = text.substring(0, index);\n const textAfter = text.substring(index + dollarWord.length);\n const newTextNode = document.createTextNode(textBefore);\n const newRange = document.createRange();\n\n // Create a new span element to replace the text node\n const tagSpan = document.createElement('span');\n tagSpan.classList.add('highlighted-tag');\n tagSpan.textContent = `${option.value}`;\n const newTextNodeAfter = document.createTextNode(textAfter);\n\n if (textAfter !== '') {\n // If there is text after the token, add it to the new span element\n textNode.replaceWith(newTextNode, tagSpan, newTextNodeAfter);\n newRange.setStart(newTextNodeAfter, 1);\n } else {\n // If there is no text after the token, add a zero-width space character (Without this, the cursor will not move outside the highlighted span element)\n const afterNode = document.createTextNode('\\u200B');\n textNode.replaceWith(newTextNode, tagSpan, afterNode);\n newRange.setStart(afterNode, 1);\n }\n\n // Hide the dropdown\n this.resetDropdown();\n this.titleRef.focus();\n\n // Set the focus to the new span element\n const sel = window.getSelection();\n newRange.collapse(true);\n sel?.removeAllRanges();\n sel?.addRange(newRange);\n\n // Update the event title with the selected token\n this.updateEventTitle(this.titleRef.textContent || '');\n }\n\n populateSuggestionsDropdown(query: string = '') {\n this.filteredTokens = this.availableTokens.filter(obj => {\n return obj.label.startsWith(query.toString()) || obj.value.startsWith(query.toString());\n });\n\n // Set the first option as the active descendant\n if (this.filteredTokens.length > 0) {\n this.ariaActivedescendant = this.filteredTokens[0].label;\n }\n }\n\n updateEventTitle(text: string) {\n const value = text.replace(/ +/g, ' ');\n if (value === '') {\n this.internals?.setValidity({ customError: true }, `Event title is required`, this.titleRef);\n this.validationError = 'Event title is required';\n } else {\n this.internals?.setValidity({ customError: false });\n this.validationError = '';\n }\n this.internals?.setFormValue(value, this.name);\n this.valueChanged.emit({ value: value, name: this.name });\n }\n\n resetDropdown() {\n this.showTokens = false;\n this.ariaActivedescendant = '';\n }\n\n getLabelHTML(token: { token: string; description: string }) {\n return (\n <div class=\"token-label\">\n <span class=\"token\">{token.token}</span>\n <span class=\"description\">{token.description}</span>\n </div>\n );\n }\n\n @RegisterComponent<NylasEventTitle, NylasSchedulerConfigConnector, Exclude<NylasSchedulerEditor['stores'], undefined>>({\n name: 'nylas-event-title',\n stateToProps: new Map([['schedulerConfig.selectedConfiguration', 'selectedConfiguration']]),\n eventToProps: {},\n fireRegisterEvent: true,\n })\n render() {\n return (\n <Host>\n <div class=\"nylas-event-title\" part=\"net\">\n <label htmlFor=\"title\">\n Event title<span class=\"required\">*</span>\n <span class=\"label-icon\">\n <tooltip-component>\n <info-icon slot=\"tooltip-icon\" />\n <span slot=\"tooltip-content\">Enter a title for your event.</span>\n </tooltip-component>\n </span>\n </label>\n <div\n class={{\n title: true,\n error: this.validationError !== '',\n }}\n part=\"net__title\"\n ref={el => (this.titleRef = el as HTMLDivElement)}\n contentEditable=\"true\"\n onInput={e => this.handleChange(e)}\n onKeyDown={event => this.handleInputKeyDown(event)}\n ></div>\n {this.showTokens && this.filteredTokens?.length > 0 && (\n <div class=\"token-options\" part=\"net__dropdown-content\">\n <ul tabindex=\"-1\" role=\"listbox\" aria-label={this.name} aria-activedescendant={this.ariaActivedescendant}>\n {this.filteredTokens.map(option => (\n <li\n tabindex=\"0\"\n key={option.label}\n id={option.label}\n class={{ active: this.ariaActivedescendant === option.label }}\n onClick={e => this.selectOption(e, option)}\n role=\"option\"\n >\n {this.getLabelHTML(option.labelHTML)}\n </li>\n ))}\n </ul>\n </div>\n )}\n <span class=\"help-text\">Create a dynamic templated event title by typing $. Learn more</span>\n {this.validationError != '' && <span class=\"error-message\">{this.validationError}</span>}\n </div>\n </Host>\n );\n }\n}\n"]}
@@ -29,7 +29,7 @@ export class NylasFormCard {
29
29
  debug('nylas-event-card', 'disconnectedCallback');
30
30
  }
31
31
  render() {
32
- return (h(Host, { key: '81fa6a1951100e90fcf60cf4efaa8b8a3dc92729' }, h("div", { key: '9f813106becb938ea7ef27207c1e1f83e0743b53', class: "nylas-form-card" }, h("div", { key: '157e236b69a61cb4512a8a7affb5d552e0167623', class: "nylas-form-card__header" }, h("slot", { key: '9dd035b05c0e6d6b591b8077dde95586ff0361e8', name: "header-title" }), h("slot", { key: '4e6e6422388ddf05a2ad41f47a5547315ea21507', name: "header-subtitle" })), h("div", { key: '52b8baced8af16d5c2eb96ee038e798a8f7643a2', class: "nylas-form-card__content" }, h("slot", { key: 'af22784e0343f4bcb4dc3689e719162077890c91', name: "content" })))));
32
+ return (h(Host, { key: 'ccce348d0ddf9bec8fddb815cf63cbc9d9df4973' }, h("div", { key: '6c0f3120bc608ac05fb631752834636cdb5a4845', class: "nylas-form-card" }, h("div", { key: '08a045eb3b7190d38373efb80f4f709987956347', class: "nylas-form-card__header" }, h("slot", { key: 'a9a076210a056c984ad40eced110f2d9b737f36d', name: "header-title" }), h("slot", { key: '65cc8f117db216d458338da2b3a0f673864234bc', name: "header-subtitle" })), h("div", { key: '6c308c3377952cd7a1b3ad112de55333ef517a03', class: "nylas-form-card__content" }, h("slot", { key: '5c0e7388949d250f0e3b027df2bfd9a3342d1574', name: "content" })))));
33
33
  }
34
34
  static get is() { return "nylas-form-card"; }
35
35
  static get encapsulation() { return "shadow"; }
@@ -17,6 +17,7 @@ import { debug } from "../../../utils/utils";
17
17
  import { Host, h } from "@stencil/core";
18
18
  export class NylasLimitFutureBookings {
19
19
  constructor() {
20
+ this.selectedConfiguration = undefined;
20
21
  this.availableDaysInFuture = undefined;
21
22
  this.name = 'limit-future-bookings';
22
23
  this.selectedNumber = 1;
@@ -26,10 +27,14 @@ export class NylasLimitFutureBookings {
26
27
  debug('nylas-limit-future-bookings', 'elementNameChangedHandler', newValue);
27
28
  this.host.setAttribute('name', newValue);
28
29
  }
30
+ selectedConfigurationChangedHandler(newVal) {
31
+ const daysInFuture = newVal?.scheduler?.available_days_in_future;
32
+ if (daysInFuture) {
33
+ this.updateNumberAndPeriodFromDays(daysInFuture);
34
+ }
35
+ }
29
36
  availableDaysInFutureChanged(newValue) {
30
- const { number, period } = this.calculateNumberAndPeriodFromDays(newValue);
31
- this.selectedNumber = number;
32
- this.selectedPeriod = period;
37
+ this.updateNumberAndPeriodFromDays(newValue);
33
38
  }
34
39
  connectedCallback() {
35
40
  debug('nylas-limit-future-bookings', 'connectedCallback');
@@ -61,25 +66,31 @@ export class NylasLimitFutureBookings {
61
66
  else {
62
67
  availableDaysInFuture = number * 30;
63
68
  }
64
- this.valueChanged.emit({ value: availableDaysInFuture, name: this.name });
69
+ this.valueChanged.emit({ value: availableDaysInFuture, name: 'availableDaysInFuture' });
65
70
  if (typeof this.internals.setFormValue !== 'function') {
66
71
  return;
67
72
  }
68
73
  this.internals.setFormValue(availableDaysInFuture.toString(), this.name);
69
74
  }
70
- calculateNumberAndPeriodFromDays(days) {
75
+ updateNumberAndPeriodFromDays(days) {
76
+ let number, period;
71
77
  if (days >= 30 && days % 30 === 0) {
72
- return { number: days / 30, period: 'month' };
78
+ number = days / 30;
79
+ period = 'month';
73
80
  }
74
81
  else if (days >= 7 && days % 7 === 0) {
75
- return { number: days / 7, period: 'week' };
82
+ number = days / 7;
83
+ period = 'week';
76
84
  }
77
85
  else {
78
- return { number: days, period: 'day' };
86
+ number = days;
87
+ period = 'day';
79
88
  }
89
+ this.selectedNumber = number;
90
+ this.selectedPeriod = period;
80
91
  }
81
92
  render() {
82
- return (h(Host, { key: '51c0c8da5fd7f5dde898fd72e450f7d964c424c6' }, h("div", { key: '0cca0db28b809eec38f93bb25ad8e7ec281836f0', class: "nylas-limit-future-bookings", part: "nlfb" }, h("label", { key: 'feb8cd912af491a1f26a5e32ec2a7cf6d34309da' }, "Limit future bookings", h("span", { key: 'c1e61e9137428534f80db3222fa0c71b220fe333', class: "label-icon" }, h("tooltip-component", { key: 'b1f429be3c382dfe5b1cf6bfd98f71dd9a3d4b81' }, h("info-icon", { key: 'e52cdd714fa99b9e8ff1b995a15a44474bf7dbdd', slot: "tooltip-icon" }), h("span", { key: '8fc34d1fd12b92312d6e5c380a0aba8a2605285d', slot: "tooltip-content" }, "Set a limit on how far in the future bookings can be made.")))), h("time-period-selector", { key: '3edfddf9214f8729e6d36f4b5aca4fb771829cea', id: "limit-future-bookings", timePeriods: ['day', 'week', 'month'], exportparts: "tps__number-dropdown: nlfb__number-dropdown, tps__number-dropdown-button: nlfb__number-dropdown-button, tps__number-dropdown-content: nlfb__number-dropdown-content, tps__period-dropdown: nlfb__period-dropdown, tps__period-dropdown-button: nlfb__period-dropdown-button, tps__period-dropdown-content: nlfb__period-dropdown-content", defaultSelectedNumber: this.selectedNumber, defaultSelectedPeriod: this.selectedPeriod }))));
93
+ return (h(Host, { key: '1bb30d8045366579b327f32f954d64c3360efa11' }, h("div", { key: '2594946bd35a01a0ab64288c54fe886f4577d8b5', class: "nylas-limit-future-bookings", part: "nlfb" }, h("label", { key: 'cf955eb319e09617dd95037d66a387122238d17c' }, "Limit future bookings", h("span", { key: '4f5658353873122f083faec5504856902bdba106', class: "label-icon" }, h("tooltip-component", { key: 'ee20b3543178702592b83e70a5a85988d0c3cd29' }, h("info-icon", { key: 'dfe75e502418b3f00a29d3d0fb76338056089266', slot: "tooltip-icon" }), h("span", { key: 'c7226da2491e6c3beda2f9739afda6220c37c0e1', slot: "tooltip-content" }, "Set a limit on how far in the future bookings can be made.")))), h("time-period-selector", { key: '5ad178b3d7158738a2882cb5a6554727de34a23d', id: "limit-future-bookings", timePeriods: ['day', 'week', 'month'], exportparts: "tps__number-dropdown: nlfb__number-dropdown, tps__number-dropdown-button: nlfb__number-dropdown-button, tps__number-dropdown-content: nlfb__number-dropdown-content, tps__period-dropdown: nlfb__period-dropdown, tps__period-dropdown-button: nlfb__period-dropdown-button, tps__period-dropdown-content: nlfb__period-dropdown-content", defaultSelectedNumber: this.selectedNumber, defaultSelectedPeriod: this.selectedPeriod }))));
83
94
  }
84
95
  static get is() { return "nylas-limit-future-bookings"; }
85
96
  static get encapsulation() { return "shadow"; }
@@ -96,6 +107,27 @@ export class NylasLimitFutureBookings {
96
107
  }
97
108
  static get properties() {
98
109
  return {
110
+ "selectedConfiguration": {
111
+ "type": "unknown",
112
+ "mutable": false,
113
+ "complexType": {
114
+ "original": "Configuration",
115
+ "resolved": "Configuration | undefined",
116
+ "references": {
117
+ "Configuration": {
118
+ "location": "import",
119
+ "path": "@nylas/core",
120
+ "id": "../nylas-js-core/dist/index.d.ts::Configuration"
121
+ }
122
+ }
123
+ },
124
+ "required": false,
125
+ "optional": true,
126
+ "docs": {
127
+ "tags": [],
128
+ "text": "The selected config"
129
+ }
130
+ },
99
131
  "availableDaysInFuture": {
100
132
  "type": "number",
101
133
  "mutable": false,
@@ -162,6 +194,9 @@ export class NylasLimitFutureBookings {
162
194
  return [{
163
195
  "propName": "name",
164
196
  "methodName": "elementNameChangedHandler"
197
+ }, {
198
+ "propName": "selectedConfiguration",
199
+ "methodName": "selectedConfigurationChangedHandler"
165
200
  }, {
166
201
  "propName": "availableDaysInFuture",
167
202
  "methodName": "availableDaysInFutureChanged"
@@ -181,6 +216,7 @@ export class NylasLimitFutureBookings {
181
216
  __decorate([
182
217
  RegisterComponent({
183
218
  name: 'nylas-limit-future-bookings',
219
+ stateToProps: new Map([['schedulerConfig.selectedConfiguration', 'selectedConfiguration']]),
184
220
  eventToProps: {},
185
221
  fireRegisterEvent: true,
186
222
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"nylas-limit-future-bookings.js","sourceRoot":"","sources":["../../../../src/components/scheduler-editor/nylas-limit-future-bookings/nylas-limit-future-bookings.tsx"],"names":[],"mappings":"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","sourcesContent":["import { RegisterComponent } from '@/common/register-component';\nimport { NylasSchedulerConfigConnector } from '@/connector/nylas-scheduler-config-connector';\nimport { debug } from '@/utils/utils';\nimport { AttachInternals, Component, Host, State, h, Element, Prop, Watch, Event, EventEmitter, Listen } from '@stencil/core';\nimport { NylasSchedulerEditor } from '../nylas-scheduler-editor/nylas-scheduler-editor';\n\n/**\n * The `nylas-limit-future-bookings` component is a form input for the description of an event.\n * @part nlfb - The limit future bookings container\n * @part nlfb__number-dropdown - The number dropdown container\n * @part nlfb__number-dropdown-button - The number dropdown button\n * @part nlfb__number-dropdown-content - The number dropdown content\n * @part nlfb__period-dropdown - The period dropdown container\n * @part nlfb__period-dropdown-button - The period dropdown button\n * @part nlfb__period-dropdown-content - The period dropdown content\n */\n@Component({\n tag: 'nylas-limit-future-bookings',\n styleUrl: 'nylas-limit-future-bookings.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class NylasLimitFutureBookings {\n @Prop() availableDaysInFuture?: number;\n @AttachInternals() internals!: ElementInternals;\n @Element() host!: HTMLElement;\n @Prop() name: string = 'limit-future-bookings';\n\n @State() selectedNumber: number = 1;\n @State() selectedPeriod: string = 'day';\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-limit-future-bookings', 'elementNameChangedHandler', newValue);\n this.host.setAttribute('name', newValue);\n }\n\n @Watch('availableDaysInFuture')\n availableDaysInFutureChanged(newValue: number) {\n const { number, period } = this.calculateNumberAndPeriodFromDays(newValue);\n this.selectedNumber = number;\n this.selectedPeriod = period;\n }\n\n @Event() valueChanged!: EventEmitter<{\n value: string;\n name: string;\n }>;\n\n connectedCallback() {\n debug('nylas-limit-future-bookings', 'connectedCallback');\n }\n\n componentWillLoad() {\n debug('nylas-limit-future-bookings', 'componentWillLoad');\n this.host.setAttribute('name', this.name);\n }\n\n componentDidLoad() {\n debug('nylas-limit-future-bookings', 'componentDidLoad');\n this.availableDaysInFutureChanged(this.availableDaysInFuture ?? 1);\n if (typeof this.internals.setFormValue !== 'function') {\n return;\n }\n this.internals.setFormValue(this.availableDaysInFuture?.toString() ?? '1', this.name);\n }\n\n disconnectedCallback() {\n debug('nylas-limit-future-bookings', 'disconnectedCallback');\n }\n\n @Listen('timePeriodChanged')\n timePeriodChangedHandler(\n event: CustomEvent<{\n number: number;\n period: string;\n }>,\n ) {\n const { number, period } = event.detail;\n let availableDaysInFuture;\n if (period === 'day') {\n availableDaysInFuture = number;\n } else if (period === 'week') {\n availableDaysInFuture = number * 7;\n } else {\n availableDaysInFuture = number * 30;\n }\n this.valueChanged.emit({ value: availableDaysInFuture, name: this.name });\n if (typeof this.internals.setFormValue !== 'function') {\n return;\n }\n this.internals.setFormValue(availableDaysInFuture.toString(), this.name);\n }\n\n calculateNumberAndPeriodFromDays(days: number): { number: number; period: string } {\n if (days >= 30 && days % 30 === 0) {\n return { number: days / 30, period: 'month' };\n } else if (days >= 7 && days % 7 === 0) {\n return { number: days / 7, period: 'week' };\n } else {\n return { number: days, period: 'day' };\n }\n }\n\n @RegisterComponent<NylasLimitFutureBookings, NylasSchedulerConfigConnector, Exclude<NylasSchedulerEditor['stores'], undefined>>({\n name: 'nylas-limit-future-bookings',\n eventToProps: {},\n fireRegisterEvent: true,\n })\n render() {\n return (\n <Host>\n <div class=\"nylas-limit-future-bookings\" part=\"nlfb\">\n <label>\n Limit future bookings\n <span class=\"label-icon\">\n <tooltip-component>\n <info-icon slot=\"tooltip-icon\" />\n <span slot=\"tooltip-content\">Set a limit on how far in the future bookings can be made.</span>\n </tooltip-component>\n </span>\n </label>\n <time-period-selector\n id=\"limit-future-bookings\"\n timePeriods={['day', 'week', 'month']}\n exportparts=\"tps__number-dropdown: nlfb__number-dropdown, tps__number-dropdown-button: nlfb__number-dropdown-button, tps__number-dropdown-content: nlfb__number-dropdown-content, tps__period-dropdown: nlfb__period-dropdown, tps__period-dropdown-button: nlfb__period-dropdown-button, tps__period-dropdown-content: nlfb__period-dropdown-content\"\n defaultSelectedNumber={this.selectedNumber}\n defaultSelectedPeriod={this.selectedPeriod}\n />\n </div>\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"nylas-limit-future-bookings.js","sourceRoot":"","sources":["../../../../src/components/scheduler-editor/nylas-limit-future-bookings/nylas-limit-future-bookings.tsx"],"names":[],"mappings":"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","sourcesContent":["import { RegisterComponent } from '@/common/register-component';\nimport { NylasSchedulerConfigConnector } from '@/connector/nylas-scheduler-config-connector';\nimport { debug } from '@/utils/utils';\nimport { AttachInternals, Component, Host, State, h, Element, Prop, Watch, Event, EventEmitter, Listen } from '@stencil/core';\nimport { NylasSchedulerEditor } from '../nylas-scheduler-editor/nylas-scheduler-editor';\nimport { Configuration } from '@nylas/core';\n\n/**\n * The `nylas-limit-future-bookings` component is a form input for the description of an event.\n * @part nlfb - The limit future bookings container\n * @part nlfb__number-dropdown - The number dropdown container\n * @part nlfb__number-dropdown-button - The number dropdown button\n * @part nlfb__number-dropdown-content - The number dropdown content\n * @part nlfb__period-dropdown - The period dropdown container\n * @part nlfb__period-dropdown-button - The period dropdown button\n * @part nlfb__period-dropdown-content - The period dropdown content\n */\n@Component({\n tag: 'nylas-limit-future-bookings',\n styleUrl: 'nylas-limit-future-bookings.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class NylasLimitFutureBookings {\n @Element() host!: HTMLElement;\n /**\n * The selected config\n */\n @Prop() selectedConfiguration?: Configuration;\n @Prop() availableDaysInFuture?: number;\n @Prop() name: string = 'limit-future-bookings';\n\n @State() selectedNumber: number = 1;\n @State() selectedPeriod: string = 'day';\n\n @AttachInternals() internals!: ElementInternals;\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-limit-future-bookings', 'elementNameChangedHandler', newValue);\n this.host.setAttribute('name', newValue);\n }\n\n @Watch('selectedConfiguration')\n selectedConfigurationChangedHandler(newVal: Configuration) {\n const daysInFuture = newVal?.scheduler?.available_days_in_future;\n if (daysInFuture) {\n this.updateNumberAndPeriodFromDays(daysInFuture);\n }\n }\n\n @Watch('availableDaysInFuture')\n availableDaysInFutureChanged(newValue: number) {\n this.updateNumberAndPeriodFromDays(newValue);\n }\n\n @Event() valueChanged!: EventEmitter<{\n value: string;\n name: string;\n }>;\n\n connectedCallback() {\n debug('nylas-limit-future-bookings', 'connectedCallback');\n }\n\n componentWillLoad() {\n debug('nylas-limit-future-bookings', 'componentWillLoad');\n this.host.setAttribute('name', this.name);\n }\n\n componentDidLoad() {\n debug('nylas-limit-future-bookings', 'componentDidLoad');\n this.availableDaysInFutureChanged(this.availableDaysInFuture ?? 1);\n if (typeof this.internals.setFormValue !== 'function') {\n return;\n }\n this.internals.setFormValue(this.availableDaysInFuture?.toString() ?? '1', this.name);\n }\n\n disconnectedCallback() {\n debug('nylas-limit-future-bookings', 'disconnectedCallback');\n }\n\n @Listen('timePeriodChanged')\n timePeriodChangedHandler(\n event: CustomEvent<{\n number: number;\n period: string;\n }>,\n ) {\n const { number, period } = event.detail;\n let availableDaysInFuture;\n if (period === 'day') {\n availableDaysInFuture = number;\n } else if (period === 'week') {\n availableDaysInFuture = number * 7;\n } else {\n availableDaysInFuture = number * 30;\n }\n this.valueChanged.emit({ value: availableDaysInFuture, name: 'availableDaysInFuture' });\n if (typeof this.internals.setFormValue !== 'function') {\n return;\n }\n this.internals.setFormValue(availableDaysInFuture.toString(), this.name);\n }\n\n updateNumberAndPeriodFromDays(days: number): void {\n let number, period;\n if (days >= 30 && days % 30 === 0) {\n number = days / 30;\n period = 'month';\n } else if (days >= 7 && days % 7 === 0) {\n number = days / 7;\n period = 'week';\n } else {\n number = days;\n period = 'day';\n }\n this.selectedNumber = number;\n this.selectedPeriod = period;\n }\n\n @RegisterComponent<NylasLimitFutureBookings, NylasSchedulerConfigConnector, Exclude<NylasSchedulerEditor['stores'], undefined>>({\n name: 'nylas-limit-future-bookings',\n stateToProps: new Map([['schedulerConfig.selectedConfiguration', 'selectedConfiguration']]),\n eventToProps: {},\n fireRegisterEvent: true,\n })\n render() {\n return (\n <Host>\n <div class=\"nylas-limit-future-bookings\" part=\"nlfb\">\n <label>\n Limit future bookings\n <span class=\"label-icon\">\n <tooltip-component>\n <info-icon slot=\"tooltip-icon\" />\n <span slot=\"tooltip-content\">Set a limit on how far in the future bookings can be made.</span>\n </tooltip-component>\n </span>\n </label>\n <time-period-selector\n id=\"limit-future-bookings\"\n timePeriods={['day', 'week', 'month']}\n exportparts=\"tps__number-dropdown: nlfb__number-dropdown, tps__number-dropdown-button: nlfb__number-dropdown-button, tps__number-dropdown-content: nlfb__number-dropdown-content, tps__period-dropdown: nlfb__period-dropdown, tps__period-dropdown-button: nlfb__period-dropdown-button, tps__period-dropdown-content: nlfb__period-dropdown-content\"\n defaultSelectedNumber={this.selectedNumber}\n defaultSelectedPeriod={this.selectedPeriod}\n />\n </div>\n </Host>\n );\n }\n}\n"]}