@nylas/web-elements 1.1.0-canary.16 → 1.1.0-canary.18

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 (711) hide show
  1. package/dist/cjs/add-circle-icon.cjs.entry.js +1 -1
  2. package/dist/cjs/add-circle-icon_2.cjs.entry.js +2 -2
  3. package/dist/cjs/archive-icon.cjs.entry.js +1 -1
  4. package/dist/cjs/archive-icon_7.cjs.entry.js +7 -7
  5. package/dist/cjs/arrow-icon.cjs.entry.js +1 -1
  6. package/dist/cjs/bold-icon.cjs.entry.js +1 -1
  7. package/dist/cjs/bold-icon_3.cjs.entry.js +3 -3
  8. package/dist/cjs/button-component.cjs.entry.js +1 -1
  9. package/dist/cjs/calendar-cancel-icon.cjs.entry.js +1 -1
  10. package/dist/cjs/calendar-check-icon.cjs.entry.js +1 -1
  11. package/dist/cjs/calendar-check-icon_2.cjs.entry.js +2 -2
  12. package/dist/cjs/calendar-icon.cjs.entry.js +1 -1
  13. package/dist/cjs/calendar-info-icon.cjs.entry.js +1 -1
  14. package/dist/cjs/{calendar-info-icon_27.cjs.entry.js → calendar-info-icon_28.cjs.entry.js} +304 -416
  15. package/dist/cjs/calendar-info-icon_28.cjs.entry.js.map +1 -0
  16. package/dist/cjs/calendar-patterns-icon.cjs.entry.js +1 -1
  17. package/dist/cjs/checkbox-component.cjs.entry.js +1 -1
  18. package/dist/cjs/checkbox-component.cjs.entry.js.map +1 -1
  19. package/dist/cjs/checkmark-circle-icon.cjs.entry.js +1 -1
  20. package/dist/cjs/chevron-icon.cjs.entry.js +1 -1
  21. package/dist/cjs/chevron-icon_3.cjs.entry.js +5 -5
  22. package/dist/cjs/chevron-icon_3.cjs.entry.js.map +1 -1
  23. package/dist/cjs/clock-icon.cjs.entry.js +1 -1
  24. package/dist/cjs/clock-icon_2.cjs.entry.js +2 -2
  25. package/dist/cjs/close-icon.cjs.entry.js +1 -1
  26. package/dist/cjs/document-refresh-icon.cjs.entry.js +1 -1
  27. package/dist/cjs/flow-icon.cjs.entry.js +1 -1
  28. package/dist/cjs/folder-icon.cjs.entry.js +1 -1
  29. package/dist/cjs/forward-icon.cjs.entry.js +1 -1
  30. package/dist/cjs/forward-icon_6.cjs.entry.js +7 -7
  31. package/dist/cjs/globe-icon.cjs.entry.js +1 -1
  32. package/dist/cjs/google-logo-icon.cjs.entry.js +1 -1
  33. package/dist/cjs/google-logo-icon_4.cjs.entry.js +112 -77
  34. package/dist/cjs/google-logo-icon_4.cjs.entry.js.map +1 -1
  35. package/dist/cjs/inbox-icon.cjs.entry.js +1 -1
  36. package/dist/cjs/index-7af03e3f.js +10 -10
  37. package/dist/cjs/index-c14ea8f5.js +18 -14
  38. package/dist/cjs/info-icon.cjs.entry.js +1 -1
  39. package/dist/cjs/info-icon_2.cjs.entry.js +2 -2
  40. package/dist/cjs/input-component.cjs.entry.js +1 -1
  41. package/dist/cjs/input-dropdown.cjs.entry.js +13 -3
  42. package/dist/cjs/input-dropdown.cjs.entry.js.map +1 -1
  43. package/dist/cjs/input-dropdown_2.cjs.entry.js +14 -4
  44. package/dist/cjs/input-dropdown_2.cjs.entry.js.map +1 -1
  45. package/dist/cjs/italic-icon.cjs.entry.js +1 -1
  46. package/dist/cjs/loader.cjs.js +1 -1
  47. package/dist/cjs/loading-icon.cjs.entry.js +1 -1
  48. package/dist/cjs/location-icon.cjs.entry.js +1 -1
  49. package/dist/cjs/location-off-icon.cjs.entry.js +1 -1
  50. package/dist/cjs/microsoft-logo-icon.cjs.entry.js +1 -1
  51. package/dist/cjs/multi-select-dropdown.cjs.entry.js +2 -2
  52. package/dist/cjs/nylas-additional-participants.cjs.entry.js +16 -12
  53. package/dist/cjs/nylas-additional-participants.cjs.entry.js.map +1 -1
  54. package/dist/cjs/nylas-availability-picker.cjs.entry.js +27 -16
  55. package/dist/cjs/nylas-availability-picker.cjs.entry.js.map +1 -1
  56. package/dist/cjs/nylas-booked-event-card_10.cjs.entry.js +11 -11
  57. package/dist/cjs/nylas-booked-event-card_10.cjs.entry.js.map +1 -1
  58. package/dist/cjs/nylas-booking-form.cjs.entry.js +2 -2
  59. package/dist/cjs/nylas-cancel-booking-form.cjs.entry.js +1 -1
  60. package/dist/cjs/nylas-cancellation-policy.cjs.entry.js +1 -1
  61. package/dist/cjs/nylas-cancelled-event-card.cjs.entry.js +1 -1
  62. package/dist/cjs/nylas-composer.cjs.entry.js +1 -1
  63. package/dist/cjs/nylas-custom-booking-flow.cjs.entry.js +1 -1
  64. package/dist/cjs/nylas-customize-booking-settings.cjs.entry.js +1 -1
  65. package/dist/cjs/nylas-date-picker.cjs.entry.js +1 -1
  66. package/dist/cjs/nylas-date-picker.cjs.entry.js.map +1 -1
  67. package/dist/cjs/nylas-editor-tabs.cjs.entry.js +110 -75
  68. package/dist/cjs/nylas-editor-tabs.cjs.entry.js.map +1 -1
  69. package/dist/cjs/nylas-event-description.cjs.entry.js +1 -1
  70. package/dist/cjs/nylas-event-duration.cjs.entry.js +1 -1
  71. package/dist/cjs/nylas-event-info.cjs.entry.js +1 -1
  72. package/dist/cjs/nylas-event-limits.cjs.entry.js +1 -1
  73. package/dist/cjs/nylas-event-location.cjs.entry.js +3 -3
  74. package/dist/cjs/nylas-event-title.cjs.entry.js +2 -2
  75. package/dist/cjs/nylas-form-card.cjs.entry.js +1 -1
  76. package/dist/cjs/nylas-if-state.cjs.entry.js +1 -1
  77. package/dist/cjs/nylas-limit-future-bookings.cjs.entry.js +1 -1
  78. package/dist/cjs/nylas-list-folders.cjs.entry.js +1 -1
  79. package/dist/cjs/nylas-list-threads.cjs.entry.js +1 -1
  80. package/dist/cjs/nylas-locale-switch.cjs.entry.js +3 -3
  81. package/dist/cjs/nylas-login.cjs.entry.js +1 -1
  82. package/dist/cjs/nylas-logo.cjs.entry.js +1 -1
  83. package/dist/cjs/nylas-mailbox-toolbar-button.cjs.entry.js +1 -1
  84. package/dist/cjs/nylas-mailbox.cjs.entry.js +1 -1
  85. package/dist/cjs/nylas-min-booking-notice.cjs.entry.js +1 -1
  86. package/dist/cjs/nylas-min-cancellation-notice.cjs.entry.js +1 -1
  87. package/dist/cjs/nylas-notification.cjs.entry.js +1 -1
  88. package/dist/cjs/nylas-participants-custom-availability.cjs.entry.js +142 -0
  89. package/dist/cjs/nylas-participants-custom-availability.cjs.entry.js.map +1 -0
  90. package/dist/cjs/nylas-provider.cjs.entry.js +1 -1
  91. package/dist/cjs/nylas-scheduler-editor.cjs.entry.js +1 -1
  92. package/dist/cjs/nylas-selected-event-card.cjs.entry.js +1 -1
  93. package/dist/cjs/nylas-summarize-message-button.cjs.entry.js +2 -2
  94. package/dist/cjs/nylas-threads-refresh.cjs.entry.js +2 -2
  95. package/dist/cjs/nylas-threads-search.cjs.entry.js +1 -1
  96. package/dist/cjs/nylas-time-window-picker.cjs.entry.js +1 -1
  97. package/dist/cjs/nylas-timeslot-interval.cjs.entry.js +2 -2
  98. package/dist/cjs/nylas-view-email.cjs.entry.js +1 -1
  99. package/dist/cjs/nylas-view-thread.cjs.entry.js +1 -1
  100. package/dist/cjs/nylas-web-elements.cjs.js +1 -1
  101. package/dist/cjs/people-icon.cjs.entry.js +1 -1
  102. package/dist/cjs/person-icon.cjs.entry.js +1 -1
  103. package/dist/cjs/play-icon.cjs.entry.js +1 -1
  104. package/dist/cjs/play-icon_2.cjs.entry.js +2 -2
  105. package/dist/cjs/radio-button-group.cjs.entry.js +1 -1
  106. package/dist/cjs/refresh-icon.cjs.entry.js +1 -1
  107. package/dist/cjs/reply-all-icon.cjs.entry.js +1 -1
  108. package/dist/cjs/reply-icon.cjs.entry.js +1 -1
  109. package/dist/cjs/search-icon.cjs.entry.js +1 -1
  110. package/dist/cjs/select-dropdown.cjs.entry.js +3 -3
  111. package/dist/cjs/select-dropdown.cjs.entry.js.map +1 -1
  112. package/dist/cjs/sent-icon.cjs.entry.js +1 -1
  113. package/dist/cjs/spam-icon.cjs.entry.js +1 -1
  114. package/dist/cjs/star-icon.cjs.entry.js +1 -1
  115. package/dist/cjs/stop-icon.cjs.entry.js +1 -1
  116. package/dist/cjs/textarea-component.cjs.entry.js +1 -1
  117. package/dist/cjs/time-period-selector.cjs.entry.js +1 -1
  118. package/dist/cjs/toggle-switch.cjs.entry.js +1 -1
  119. package/dist/cjs/toggle-switch.cjs.entry.js.map +1 -1
  120. package/dist/cjs/tooltip-component.cjs.entry.js +1 -1
  121. package/dist/cjs/translate-icon.cjs.entry.js +1 -1
  122. package/dist/cjs/trash-icon.cjs.entry.js +1 -1
  123. package/dist/cjs/underline-icon.cjs.entry.js +1 -1
  124. package/dist/cjs/warning-icon.cjs.entry.js +1 -1
  125. package/dist/collection/collection-manifest.json +1 -0
  126. package/dist/collection/common/icons/add-circle.js +1 -1
  127. package/dist/collection/common/icons/archive.js +1 -1
  128. package/dist/collection/common/icons/arrow.js +1 -1
  129. package/dist/collection/common/icons/bold.js +1 -1
  130. package/dist/collection/common/icons/calendar-cancel.js +1 -1
  131. package/dist/collection/common/icons/calendar-check.js +1 -1
  132. package/dist/collection/common/icons/calendar-info.js +1 -1
  133. package/dist/collection/common/icons/calendar-patterns.js +1 -1
  134. package/dist/collection/common/icons/calendar.js +1 -1
  135. package/dist/collection/common/icons/checkmark-circle.js +1 -1
  136. package/dist/collection/common/icons/chevron.js +1 -1
  137. package/dist/collection/common/icons/clock.js +1 -1
  138. package/dist/collection/common/icons/close.js +1 -1
  139. package/dist/collection/common/icons/document-refresh.js +1 -1
  140. package/dist/collection/common/icons/flow.js +1 -1
  141. package/dist/collection/common/icons/folder.js +1 -1
  142. package/dist/collection/common/icons/forward.js +1 -1
  143. package/dist/collection/common/icons/globe.js +1 -1
  144. package/dist/collection/common/icons/google-logo.js +1 -1
  145. package/dist/collection/common/icons/inbox.js +1 -1
  146. package/dist/collection/common/icons/info.js +1 -1
  147. package/dist/collection/common/icons/italic.js +1 -1
  148. package/dist/collection/common/icons/loading.js +1 -1
  149. package/dist/collection/common/icons/location-off.js +1 -1
  150. package/dist/collection/common/icons/location.js +1 -1
  151. package/dist/collection/common/icons/microsoft-logo.js +1 -1
  152. package/dist/collection/common/icons/nylas-logo.js +1 -1
  153. package/dist/collection/common/icons/people.js +1 -1
  154. package/dist/collection/common/icons/person.js +1 -1
  155. package/dist/collection/common/icons/play.js +1 -1
  156. package/dist/collection/common/icons/refresh.js +1 -1
  157. package/dist/collection/common/icons/reply-all.js +1 -1
  158. package/dist/collection/common/icons/reply.js +1 -1
  159. package/dist/collection/common/icons/search.js +1 -1
  160. package/dist/collection/common/icons/sent.js +1 -1
  161. package/dist/collection/common/icons/spam.js +1 -1
  162. package/dist/collection/common/icons/star.js +1 -1
  163. package/dist/collection/common/icons/stop.js +1 -1
  164. package/dist/collection/common/icons/translate.js +1 -1
  165. package/dist/collection/common/icons/trash.js +1 -1
  166. package/dist/collection/common/icons/underline.js +1 -1
  167. package/dist/collection/common/icons/warning.js +1 -1
  168. package/dist/collection/components/design-system/button-component/button-component.js +1 -1
  169. package/dist/collection/components/design-system/checkbox-component/checkbox-component.js +1 -1
  170. package/dist/collection/components/design-system/checkbox-component/checkbox-component.js.map +1 -1
  171. package/dist/collection/components/design-system/input-component/input-component.js +1 -1
  172. package/dist/collection/components/design-system/input-dropdown/input-dropdown.js +31 -3
  173. package/dist/collection/components/design-system/input-dropdown/input-dropdown.js.map +1 -1
  174. package/dist/collection/components/design-system/multi-select-dropdown/multi-select-dropdown.js +2 -2
  175. package/dist/collection/components/design-system/radio-button-group/radio-button-group.js +1 -1
  176. package/dist/collection/components/design-system/select-dropdown/select-dropdown.js +3 -3
  177. package/dist/collection/components/design-system/select-dropdown/select-dropdown.js.map +1 -1
  178. package/dist/collection/components/design-system/textarea-component/textarea-component.js +1 -1
  179. package/dist/collection/components/design-system/time-period-selector/time-period-selector.js +1 -1
  180. package/dist/collection/components/design-system/toggle-switch/toggle-switch.js +1 -1
  181. package/dist/collection/components/design-system/toggle-switch/toggle-switch.js.map +1 -1
  182. package/dist/collection/components/design-system/tooltip-component/toolitp-component.js +1 -1
  183. package/dist/collection/components/mailbox/nylas-composer/nylas-composer.js +1 -1
  184. package/dist/collection/components/mailbox/nylas-list-folders/nylas-list-folders.js +1 -1
  185. package/dist/collection/components/mailbox/nylas-list-threads/nylas-list-threads.js +1 -1
  186. package/dist/collection/components/mailbox/nylas-mailbox/nylas-mailbox.js +1 -1
  187. package/dist/collection/components/mailbox/nylas-mailbox-toolbar-button/nylas-mailbox-toolbar-button.js +1 -1
  188. package/dist/collection/components/mailbox/nylas-summarize-message-button/nylas-summarize-message-button.js +2 -2
  189. package/dist/collection/components/mailbox/nylas-threads-refresh/nylas-threads-refresh.js +2 -2
  190. package/dist/collection/components/mailbox/nylas-threads-search/nylas-threads-search.js +1 -1
  191. package/dist/collection/components/mailbox/nylas-view-email/nylas-view-email.js +1 -1
  192. package/dist/collection/components/mailbox/nylas-view-thread/nylas-view-thread.js +1 -1
  193. package/dist/collection/components/nylas-if-state/nylas-if-state.js +1 -1
  194. package/dist/collection/components/nylas-login/nylas-login.js +1 -1
  195. package/dist/collection/components/nylas-provider/nylas-provider.js +1 -1
  196. package/dist/collection/components/scheduler/nylas-booking-form/nylas-booking-form.js +2 -2
  197. package/dist/collection/components/scheduler/nylas-cancel-booking-form/nylas-cancel-booking-form.js +1 -1
  198. package/dist/collection/components/scheduler/nylas-cancelled-event-card/nylas-cancelled-event-card.js +1 -1
  199. package/dist/collection/components/scheduler/nylas-date-picker/nylas-date-picker.js +1 -1
  200. package/dist/collection/components/scheduler/nylas-date-picker/nylas-date-picker.js.map +1 -1
  201. package/dist/collection/components/scheduler/nylas-locale-switch/nylas-locale-switch.js +3 -3
  202. package/dist/collection/components/scheduler/nylas-notification/nylas-notification.js +1 -1
  203. package/dist/collection/components/scheduler/nylas-selected-event-card/nylas-selected-event-card.js +1 -1
  204. package/dist/collection/components/scheduler-editor/nylas-additional-participants/nylas-additional-participants.js +33 -12
  205. package/dist/collection/components/scheduler-editor/nylas-additional-participants/nylas-additional-participants.js.map +1 -1
  206. package/dist/collection/components/scheduler-editor/nylas-availability-picker/nylas-availability-picker.css +1 -1
  207. package/dist/collection/components/scheduler-editor/nylas-availability-picker/nylas-availability-picker.js +48 -25
  208. package/dist/collection/components/scheduler-editor/nylas-availability-picker/nylas-availability-picker.js.map +1 -1
  209. package/dist/collection/components/scheduler-editor/nylas-cancellation-policy/nylas-cancellation-policy.js +1 -1
  210. package/dist/collection/components/scheduler-editor/nylas-custom-booking-flow/nylas-custom-booking-flow.js +1 -1
  211. package/dist/collection/components/scheduler-editor/nylas-customize-booking-settings/nylas-customize-booking-settings.js +1 -1
  212. package/dist/collection/components/scheduler-editor/nylas-editor-tabs/nylas-editor-tabs.js +108 -74
  213. package/dist/collection/components/scheduler-editor/nylas-editor-tabs/nylas-editor-tabs.js.map +1 -1
  214. package/dist/collection/components/scheduler-editor/nylas-editor-tabs/tab-contents.js +1 -1
  215. package/dist/collection/components/scheduler-editor/nylas-editor-tabs/tab-contents.js.map +1 -1
  216. package/dist/collection/components/scheduler-editor/nylas-event-description/nylas-event-description.js +1 -1
  217. package/dist/collection/components/scheduler-editor/nylas-event-duration/nylas-event-duration.js +1 -1
  218. package/dist/collection/components/scheduler-editor/nylas-event-info/nylas-event-info.js +1 -1
  219. package/dist/collection/components/scheduler-editor/nylas-event-limits/nylas-event-limits.js +1 -1
  220. package/dist/collection/components/scheduler-editor/nylas-event-location/nylas-event-location.js +3 -3
  221. package/dist/collection/components/scheduler-editor/nylas-event-title/nylas-event-title.js +2 -2
  222. package/dist/collection/components/scheduler-editor/nylas-form-card/nylas-form-card.js +1 -1
  223. package/dist/collection/components/scheduler-editor/nylas-limit-future-bookings/nylas-limit-future-bookings.js +1 -1
  224. package/dist/collection/components/scheduler-editor/nylas-min-booking-notice/nylas-min-booking-notice.js +1 -1
  225. package/dist/collection/components/scheduler-editor/nylas-min-cancellation-notice/nylas-min-cancellation-notice.js +1 -1
  226. package/dist/collection/components/scheduler-editor/nylas-participants-custom-availability/nylas-participants-custom-availability.css +98 -0
  227. package/dist/collection/components/scheduler-editor/nylas-participants-custom-availability/nylas-participants-custom-availability.js +219 -0
  228. package/dist/collection/components/scheduler-editor/nylas-participants-custom-availability/nylas-participants-custom-availability.js.map +1 -0
  229. package/dist/collection/components/scheduler-editor/nylas-scheduler-editor/nylas-scheduler-editor.js +2 -2
  230. package/dist/collection/components/scheduler-editor/nylas-time-window-picker/nylas-time-window-picker.js +1 -1
  231. package/dist/collection/components/scheduler-editor/nylas-timeslot-interval/nylas-timeslot-interval.js +2 -2
  232. package/dist/components/add-circle.js +1 -1
  233. package/dist/components/archive.js +1 -1
  234. package/dist/components/arrow.js +1 -1
  235. package/dist/components/bold.js +1 -1
  236. package/dist/components/button-component2.js +1 -1
  237. package/dist/components/calendar-cancel.js +1 -1
  238. package/dist/components/calendar-check.js +1 -1
  239. package/dist/components/calendar-info.js +1 -1
  240. package/dist/components/calendar-patterns.js +1 -1
  241. package/dist/components/calendar.js +1 -1
  242. package/dist/components/checkbox-component2.js +1 -1
  243. package/dist/components/checkbox-component2.js.map +1 -1
  244. package/dist/components/checkmark-circle.js +1 -1
  245. package/dist/components/chevron.js +1 -1
  246. package/dist/components/clock.js +1 -1
  247. package/dist/components/close.js +1 -1
  248. package/dist/components/document-refresh-icon.js +1 -1
  249. package/dist/components/flow.js +1 -1
  250. package/dist/components/folder.js +1 -1
  251. package/dist/components/forward.js +1 -1
  252. package/dist/components/globe.js +1 -1
  253. package/dist/components/google-logo.js +1 -1
  254. package/dist/components/inbox.js +1 -1
  255. package/dist/components/info.js +1 -1
  256. package/dist/components/input-component2.js +1 -1
  257. package/dist/components/input-dropdown2.js +14 -3
  258. package/dist/components/input-dropdown2.js.map +1 -1
  259. package/dist/components/italic.js +1 -1
  260. package/dist/components/loading.js +1 -1
  261. package/dist/components/location-off.js +1 -1
  262. package/dist/components/location.js +1 -1
  263. package/dist/components/microsoft-logo.js +1 -1
  264. package/dist/components/multi-select-dropdown2.js +2 -2
  265. package/dist/components/nylas-additional-participants2.js +17 -13
  266. package/dist/components/nylas-additional-participants2.js.map +1 -1
  267. package/dist/components/nylas-availability-picker2.js +28 -16
  268. package/dist/components/nylas-availability-picker2.js.map +1 -1
  269. package/dist/components/nylas-booking-form2.js +2 -2
  270. package/dist/components/nylas-cancel-booking-form2.js +1 -1
  271. package/dist/components/nylas-cancellation-policy2.js +1 -1
  272. package/dist/components/nylas-cancelled-event-card2.js +1 -1
  273. package/dist/components/nylas-composer2.js +1 -1
  274. package/dist/components/nylas-custom-booking-flow.js +1 -1
  275. package/dist/components/nylas-customize-booking-settings2.js +1 -1
  276. package/dist/components/nylas-date-picker2.js +1 -1
  277. package/dist/components/nylas-date-picker2.js.map +1 -1
  278. package/dist/components/nylas-editor-tabs2.js +200 -153
  279. package/dist/components/nylas-editor-tabs2.js.map +1 -1
  280. package/dist/components/nylas-event-description2.js +1 -1
  281. package/dist/components/nylas-event-duration2.js +1 -1
  282. package/dist/components/nylas-event-info2.js +1 -1
  283. package/dist/components/nylas-event-limits2.js +1 -1
  284. package/dist/components/nylas-event-location2.js +3 -3
  285. package/dist/components/nylas-event-title2.js +2 -2
  286. package/dist/components/nylas-form-card2.js +1 -1
  287. package/dist/components/nylas-if-state.js +1 -1
  288. package/dist/components/nylas-limit-future-bookings2.js +1 -1
  289. package/dist/components/nylas-list-folders.js +1 -1
  290. package/dist/components/nylas-list-threads.js +1 -1
  291. package/dist/components/nylas-locale-switch2.js +3 -3
  292. package/dist/components/nylas-login.js +1 -1
  293. package/dist/components/nylas-logo2.js +1 -1
  294. package/dist/components/nylas-mailbox-toolbar-button.js +1 -1
  295. package/dist/components/nylas-mailbox.js +1 -1
  296. package/dist/components/nylas-min-booking-notice2.js +1 -1
  297. package/dist/components/nylas-min-cancellation-notice2.js +1 -1
  298. package/dist/components/nylas-notification2.js +1 -1
  299. package/dist/components/nylas-participants-custom-availability.d.ts +11 -0
  300. package/dist/components/nylas-participants-custom-availability.js +8 -0
  301. package/dist/components/nylas-participants-custom-availability.js.map +1 -0
  302. package/dist/components/nylas-participants-custom-availability2.js +218 -0
  303. package/dist/components/nylas-participants-custom-availability2.js.map +1 -0
  304. package/dist/components/nylas-provider.js +1 -1
  305. package/dist/components/nylas-scheduler-editor.js +101 -89
  306. package/dist/components/nylas-scheduler-editor.js.map +1 -1
  307. package/dist/components/nylas-selected-event-card2.js +1 -1
  308. package/dist/components/nylas-summarize-message-button2.js +2 -2
  309. package/dist/components/nylas-threads-refresh.js +2 -2
  310. package/dist/components/nylas-threads-search.js +1 -1
  311. package/dist/components/nylas-time-window-picker2.js +1 -1
  312. package/dist/components/nylas-timeslot-interval2.js +2 -2
  313. package/dist/components/nylas-view-email2.js +1 -1
  314. package/dist/components/nylas-view-thread.js +1 -1
  315. package/dist/components/people.js +1 -1
  316. package/dist/components/person.js +1 -1
  317. package/dist/components/play.js +1 -1
  318. package/dist/components/radio-button-group2.js +1 -1
  319. package/dist/components/refresh.js +1 -1
  320. package/dist/components/reply-all.js +1 -1
  321. package/dist/components/reply.js +1 -1
  322. package/dist/components/search.js +1 -1
  323. package/dist/components/select-dropdown2.js +3 -3
  324. package/dist/components/select-dropdown2.js.map +1 -1
  325. package/dist/components/sent.js +1 -1
  326. package/dist/components/spam.js +1 -1
  327. package/dist/components/star.js +1 -1
  328. package/dist/components/stop.js +1 -1
  329. package/dist/components/textarea-component.js +1 -1
  330. package/dist/components/time-period-selector2.js +1 -1
  331. package/dist/components/toggle-switch.js +1 -49
  332. package/dist/components/toggle-switch.js.map +1 -1
  333. package/dist/components/toggle-switch2.js +53 -0
  334. package/dist/components/toggle-switch2.js.map +1 -0
  335. package/dist/components/toolitp-component.js +1 -1
  336. package/dist/components/translate.js +1 -1
  337. package/dist/components/trash.js +1 -1
  338. package/dist/components/underline.js +1 -1
  339. package/dist/components/warning.js +1 -1
  340. package/dist/esm/add-circle-icon.entry.js +1 -1
  341. package/dist/esm/add-circle-icon_2.entry.js +2 -2
  342. package/dist/esm/archive-icon.entry.js +1 -1
  343. package/dist/esm/archive-icon_7.entry.js +7 -7
  344. package/dist/esm/arrow-icon.entry.js +1 -1
  345. package/dist/esm/bold-icon.entry.js +1 -1
  346. package/dist/esm/bold-icon_3.entry.js +3 -3
  347. package/dist/esm/button-component.entry.js +1 -1
  348. package/dist/esm/calendar-cancel-icon.entry.js +1 -1
  349. package/dist/esm/calendar-check-icon.entry.js +1 -1
  350. package/dist/esm/calendar-check-icon_2.entry.js +2 -2
  351. package/dist/esm/calendar-icon.entry.js +1 -1
  352. package/dist/esm/calendar-info-icon.entry.js +1 -1
  353. package/dist/esm/{calendar-info-icon_27.entry.js → calendar-info-icon_28.entry.js} +304 -417
  354. package/dist/esm/calendar-info-icon_28.entry.js.map +1 -0
  355. package/dist/esm/calendar-patterns-icon.entry.js +1 -1
  356. package/dist/esm/checkbox-component.entry.js +1 -1
  357. package/dist/esm/checkbox-component.entry.js.map +1 -1
  358. package/dist/esm/checkmark-circle-icon.entry.js +1 -1
  359. package/dist/esm/chevron-icon.entry.js +1 -1
  360. package/dist/esm/chevron-icon_3.entry.js +5 -5
  361. package/dist/esm/chevron-icon_3.entry.js.map +1 -1
  362. package/dist/esm/clock-icon.entry.js +1 -1
  363. package/dist/esm/clock-icon_2.entry.js +2 -2
  364. package/dist/esm/close-icon.entry.js +1 -1
  365. package/dist/esm/document-refresh-icon.entry.js +1 -1
  366. package/dist/esm/flow-icon.entry.js +1 -1
  367. package/dist/esm/folder-icon.entry.js +1 -1
  368. package/dist/esm/forward-icon.entry.js +1 -1
  369. package/dist/esm/forward-icon_6.entry.js +7 -7
  370. package/dist/esm/globe-icon.entry.js +1 -1
  371. package/dist/esm/google-logo-icon.entry.js +1 -1
  372. package/dist/esm/google-logo-icon_4.entry.js +112 -77
  373. package/dist/esm/google-logo-icon_4.entry.js.map +1 -1
  374. package/dist/esm/inbox-icon.entry.js +1 -1
  375. package/dist/esm/index-582cfc93.js +18 -14
  376. package/dist/esm/index-7cb0dd3d.js +10 -10
  377. package/dist/esm/{index.es-896126fc.js → index.es-c5a8a1ac.js} +2 -2
  378. package/dist/esm/{index.es-896126fc.js.map → index.es-c5a8a1ac.js.map} +1 -1
  379. package/dist/esm/index.js +2 -2
  380. package/dist/esm/info-icon.entry.js +1 -1
  381. package/dist/esm/info-icon_2.entry.js +2 -2
  382. package/dist/esm/input-component.entry.js +1 -1
  383. package/dist/esm/input-dropdown.entry.js +13 -3
  384. package/dist/esm/input-dropdown.entry.js.map +1 -1
  385. package/dist/esm/input-dropdown_2.entry.js +14 -4
  386. package/dist/esm/input-dropdown_2.entry.js.map +1 -1
  387. package/dist/esm/italic-icon.entry.js +1 -1
  388. package/dist/esm/loader.js +1 -1
  389. package/dist/esm/loading-icon.entry.js +1 -1
  390. package/dist/esm/location-icon.entry.js +1 -1
  391. package/dist/esm/location-off-icon.entry.js +1 -1
  392. package/dist/esm/{mailbox-store-c9b2a4fd.js → mailbox-store-94133e15.js} +3 -3
  393. package/dist/esm/{mailbox-store-c9b2a4fd.js.map → mailbox-store-94133e15.js.map} +1 -1
  394. package/dist/esm/microsoft-logo-icon.entry.js +1 -1
  395. package/dist/esm/multi-select-dropdown.entry.js +3 -3
  396. package/dist/esm/nylas-additional-participants.entry.js +19 -15
  397. package/dist/esm/nylas-additional-participants.entry.js.map +1 -1
  398. package/dist/esm/{nylas-api-request-27e81d64.js → nylas-api-request-5ac7887c.js} +2 -2
  399. package/dist/esm/{nylas-api-request-27e81d64.js.map → nylas-api-request-5ac7887c.js.map} +1 -1
  400. package/dist/esm/nylas-availability-picker.entry.js +29 -18
  401. package/dist/esm/nylas-availability-picker.entry.js.map +1 -1
  402. package/dist/esm/nylas-booked-event-card.entry.js +2 -2
  403. package/dist/esm/nylas-booked-event-card_10.entry.js +11 -11
  404. package/dist/esm/nylas-booked-event-card_10.entry.js.map +1 -1
  405. package/dist/esm/nylas-booking-calendar-picker.entry.js +2 -2
  406. package/dist/esm/nylas-booking-form.entry.js +4 -4
  407. package/dist/esm/nylas-buffer-time.entry.js +2 -2
  408. package/dist/esm/nylas-calendar-picker.entry.js +2 -2
  409. package/dist/esm/nylas-cancel-booking-form.entry.js +3 -3
  410. package/dist/esm/nylas-cancellation-policy.entry.js +3 -3
  411. package/dist/esm/nylas-cancelled-event-card.entry.js +3 -3
  412. package/dist/esm/nylas-composer.entry.js +2 -2
  413. package/dist/esm/nylas-custom-booking-flow.entry.js +3 -3
  414. package/dist/esm/nylas-customize-booking-settings.entry.js +3 -3
  415. package/dist/esm/nylas-date-picker.entry.js +3 -3
  416. package/dist/esm/nylas-date-picker.entry.js.map +1 -1
  417. package/dist/esm/nylas-editor-tabs.entry.js +112 -77
  418. package/dist/esm/nylas-editor-tabs.entry.js.map +1 -1
  419. package/dist/esm/nylas-event-description.entry.js +3 -3
  420. package/dist/esm/nylas-event-duration.entry.js +3 -3
  421. package/dist/esm/nylas-event-info.entry.js +3 -3
  422. package/dist/esm/nylas-event-limits.entry.js +3 -3
  423. package/dist/esm/nylas-event-location.entry.js +5 -5
  424. package/dist/esm/nylas-event-title.entry.js +4 -4
  425. package/dist/esm/nylas-form-card.entry.js +3 -3
  426. package/dist/esm/nylas-if-state.entry.js +3 -3
  427. package/dist/esm/nylas-limit-future-bookings.entry.js +3 -3
  428. package/dist/esm/nylas-list-configurations.entry.js +2 -2
  429. package/dist/esm/nylas-list-folders.entry.js +3 -3
  430. package/dist/esm/nylas-list-threads.entry.js +3 -3
  431. package/dist/esm/nylas-locale-switch.entry.js +5 -5
  432. package/dist/esm/nylas-login.entry.js +3 -3
  433. package/dist/esm/nylas-logo.entry.js +1 -1
  434. package/dist/esm/nylas-mailbox-pagination.entry.js +2 -2
  435. package/dist/esm/nylas-mailbox-toolbar-button.entry.js +3 -3
  436. package/dist/esm/nylas-mailbox.entry.js +4 -4
  437. package/dist/esm/nylas-min-booking-notice.entry.js +3 -3
  438. package/dist/esm/nylas-min-cancellation-notice.entry.js +3 -3
  439. package/dist/esm/nylas-notification.entry.js +2 -2
  440. package/dist/esm/nylas-participants-custom-availability.entry.js +138 -0
  441. package/dist/esm/nylas-participants-custom-availability.entry.js.map +1 -0
  442. package/dist/esm/nylas-provider.entry.js +5 -5
  443. package/dist/esm/nylas-scheduler-editor.entry.js +4 -4
  444. package/dist/esm/nylas-scheduling.entry.js +3 -3
  445. package/dist/esm/nylas-selected-event-card.entry.js +3 -3
  446. package/dist/esm/nylas-summarize-message-button.entry.js +4 -4
  447. package/dist/esm/nylas-threads-refresh.entry.js +4 -4
  448. package/dist/esm/nylas-threads-search.entry.js +3 -3
  449. package/dist/esm/nylas-time-window-picker.entry.js +2 -2
  450. package/dist/esm/nylas-timeslot-interval.entry.js +4 -4
  451. package/dist/esm/nylas-timeslot-picker.entry.js +2 -2
  452. package/dist/esm/nylas-view-email.entry.js +2 -2
  453. package/dist/esm/nylas-view-thread.entry.js +3 -3
  454. package/dist/esm/nylas-web-elements.js +1 -1
  455. package/dist/esm/people-icon.entry.js +1 -1
  456. package/dist/esm/person-icon.entry.js +1 -1
  457. package/dist/esm/play-icon.entry.js +1 -1
  458. package/dist/esm/play-icon_2.entry.js +2 -2
  459. package/dist/esm/radio-button-group.entry.js +1 -1
  460. package/dist/esm/refresh-icon.entry.js +1 -1
  461. package/dist/esm/{register-component-6ae95538.js → register-component-aef40ec4.js} +2 -2
  462. package/dist/esm/{register-component-6ae95538.js.map → register-component-aef40ec4.js.map} +1 -1
  463. package/dist/esm/reply-all-icon.entry.js +1 -1
  464. package/dist/esm/reply-icon.entry.js +1 -1
  465. package/dist/esm/{scheduler-store-17f7f1c8.js → scheduler-store-6c4866d6.js} +2 -2
  466. package/dist/{nylas-web-elements/scheduler-store-17f7f1c8.js.map → esm/scheduler-store-6c4866d6.js.map} +1 -1
  467. package/dist/esm/search-icon.entry.js +1 -1
  468. package/dist/esm/select-dropdown.entry.js +3 -3
  469. package/dist/esm/select-dropdown.entry.js.map +1 -1
  470. package/dist/esm/sent-icon.entry.js +1 -1
  471. package/dist/esm/spam-icon.entry.js +1 -1
  472. package/dist/esm/star-icon.entry.js +1 -1
  473. package/dist/esm/stop-icon.entry.js +1 -1
  474. package/dist/esm/textarea-component.entry.js +1 -1
  475. package/dist/esm/time-period-selector.entry.js +2 -2
  476. package/dist/esm/toggle-switch.entry.js +1 -1
  477. package/dist/esm/toggle-switch.entry.js.map +1 -1
  478. package/dist/esm/tooltip-component.entry.js +1 -1
  479. package/dist/esm/translate-icon.entry.js +1 -1
  480. package/dist/esm/trash-icon.entry.js +1 -1
  481. package/dist/esm/underline-icon.entry.js +1 -1
  482. package/dist/{nylas-web-elements/utils-49a1d17b.js → esm/utils-04c10cbd.js} +2 -2
  483. package/dist/esm/{utils-49a1d17b.js.map → utils-04c10cbd.js.map} +1 -1
  484. package/dist/esm/warning-icon.entry.js +1 -1
  485. package/dist/nylas-web-elements/add-circle-icon.entry.js +1 -1
  486. package/dist/nylas-web-elements/archive-icon.entry.js +1 -1
  487. package/dist/nylas-web-elements/arrow-icon.entry.js +1 -1
  488. package/dist/nylas-web-elements/bold-icon.entry.js +1 -1
  489. package/dist/nylas-web-elements/button-component.entry.js +1 -1
  490. package/dist/nylas-web-elements/calendar-cancel-icon.entry.js +1 -1
  491. package/dist/nylas-web-elements/calendar-check-icon.entry.js +1 -1
  492. package/dist/nylas-web-elements/calendar-icon.entry.js +1 -1
  493. package/dist/nylas-web-elements/calendar-info-icon.entry.js +1 -1
  494. package/dist/nylas-web-elements/calendar-patterns-icon.entry.js +1 -1
  495. package/dist/nylas-web-elements/checkbox-component.entry.js +1 -1
  496. package/dist/nylas-web-elements/checkbox-component.entry.js.map +1 -1
  497. package/dist/nylas-web-elements/checkmark-circle-icon.entry.js +1 -1
  498. package/dist/nylas-web-elements/chevron-icon.entry.js +1 -1
  499. package/dist/nylas-web-elements/clock-icon.entry.js +1 -1
  500. package/dist/nylas-web-elements/close-icon.entry.js +1 -1
  501. package/dist/nylas-web-elements/document-refresh-icon.entry.js +1 -1
  502. package/dist/nylas-web-elements/flow-icon.entry.js +1 -1
  503. package/dist/nylas-web-elements/folder-icon.entry.js +1 -1
  504. package/dist/nylas-web-elements/forward-icon.entry.js +1 -1
  505. package/dist/nylas-web-elements/globe-icon.entry.js +1 -1
  506. package/dist/nylas-web-elements/google-logo-icon.entry.js +1 -1
  507. package/dist/nylas-web-elements/inbox-icon.entry.js +1 -1
  508. package/dist/nylas-web-elements/{index.es-896126fc.js → index.es-c5a8a1ac.js} +2 -2
  509. package/dist/nylas-web-elements/{index.es-896126fc.js.map → index.es-c5a8a1ac.js.map} +1 -1
  510. package/dist/nylas-web-elements/index.esm.js +2 -2
  511. package/dist/nylas-web-elements/info-icon.entry.js +1 -1
  512. package/dist/nylas-web-elements/input-component.entry.js +1 -1
  513. package/dist/nylas-web-elements/input-dropdown.entry.js +13 -3
  514. package/dist/nylas-web-elements/input-dropdown.entry.js.map +1 -1
  515. package/dist/nylas-web-elements/italic-icon.entry.js +1 -1
  516. package/dist/nylas-web-elements/loading-icon.entry.js +1 -1
  517. package/dist/nylas-web-elements/location-icon.entry.js +1 -1
  518. package/dist/nylas-web-elements/location-off-icon.entry.js +1 -1
  519. package/dist/nylas-web-elements/{mailbox-store-c9b2a4fd.js → mailbox-store-94133e15.js} +3 -3
  520. package/dist/nylas-web-elements/{mailbox-store-c9b2a4fd.js.map → mailbox-store-94133e15.js.map} +1 -1
  521. package/dist/nylas-web-elements/microsoft-logo-icon.entry.js +1 -1
  522. package/dist/nylas-web-elements/multi-select-dropdown.entry.js +3 -3
  523. package/dist/nylas-web-elements/nylas-additional-participants.entry.js +19 -15
  524. package/dist/nylas-web-elements/nylas-additional-participants.entry.js.map +1 -1
  525. package/dist/nylas-web-elements/{nylas-api-request-27e81d64.js → nylas-api-request-5ac7887c.js} +2 -2
  526. package/dist/nylas-web-elements/{nylas-api-request-27e81d64.js.map → nylas-api-request-5ac7887c.js.map} +1 -1
  527. package/dist/nylas-web-elements/nylas-availability-picker.entry.js +29 -18
  528. package/dist/nylas-web-elements/nylas-availability-picker.entry.js.map +1 -1
  529. package/dist/nylas-web-elements/nylas-booked-event-card.entry.js +2 -2
  530. package/dist/nylas-web-elements/nylas-booking-calendar-picker.entry.js +2 -2
  531. package/dist/nylas-web-elements/nylas-booking-form.entry.js +4 -4
  532. package/dist/nylas-web-elements/nylas-buffer-time.entry.js +2 -2
  533. package/dist/nylas-web-elements/nylas-calendar-picker.entry.js +2 -2
  534. package/dist/nylas-web-elements/nylas-cancel-booking-form.entry.js +3 -3
  535. package/dist/nylas-web-elements/nylas-cancellation-policy.entry.js +3 -3
  536. package/dist/nylas-web-elements/nylas-cancelled-event-card.entry.js +3 -3
  537. package/dist/nylas-web-elements/nylas-composer.entry.js +2 -2
  538. package/dist/nylas-web-elements/nylas-custom-booking-flow.entry.js +3 -3
  539. package/dist/nylas-web-elements/nylas-customize-booking-settings.entry.js +3 -3
  540. package/dist/nylas-web-elements/nylas-date-picker.entry.js +3 -3
  541. package/dist/nylas-web-elements/nylas-date-picker.entry.js.map +1 -1
  542. package/dist/nylas-web-elements/nylas-editor-tabs.entry.js +112 -77
  543. package/dist/nylas-web-elements/nylas-editor-tabs.entry.js.map +1 -1
  544. package/dist/nylas-web-elements/nylas-event-description.entry.js +3 -3
  545. package/dist/nylas-web-elements/nylas-event-duration.entry.js +3 -3
  546. package/dist/nylas-web-elements/nylas-event-info.entry.js +3 -3
  547. package/dist/nylas-web-elements/nylas-event-limits.entry.js +3 -3
  548. package/dist/nylas-web-elements/nylas-event-location.entry.js +5 -5
  549. package/dist/nylas-web-elements/nylas-event-title.entry.js +4 -4
  550. package/dist/nylas-web-elements/nylas-form-card.entry.js +3 -3
  551. package/dist/nylas-web-elements/nylas-if-state.entry.js +3 -3
  552. package/dist/nylas-web-elements/nylas-limit-future-bookings.entry.js +3 -3
  553. package/dist/nylas-web-elements/nylas-list-configurations.entry.js +2 -2
  554. package/dist/nylas-web-elements/nylas-list-folders.entry.js +3 -3
  555. package/dist/nylas-web-elements/nylas-list-threads.entry.js +3 -3
  556. package/dist/nylas-web-elements/nylas-locale-switch.entry.js +5 -5
  557. package/dist/nylas-web-elements/nylas-login.entry.js +3 -3
  558. package/dist/nylas-web-elements/nylas-logo.entry.js +1 -1
  559. package/dist/nylas-web-elements/nylas-mailbox-pagination.entry.js +2 -2
  560. package/dist/nylas-web-elements/nylas-mailbox-toolbar-button.entry.js +3 -3
  561. package/dist/nylas-web-elements/nylas-mailbox.entry.js +4 -4
  562. package/dist/nylas-web-elements/nylas-min-booking-notice.entry.js +3 -3
  563. package/dist/nylas-web-elements/nylas-min-cancellation-notice.entry.js +3 -3
  564. package/dist/nylas-web-elements/nylas-notification.entry.js +2 -2
  565. package/dist/nylas-web-elements/nylas-participants-custom-availability.entry.js +138 -0
  566. package/dist/nylas-web-elements/nylas-participants-custom-availability.entry.js.map +1 -0
  567. package/dist/nylas-web-elements/nylas-provider.entry.js +5 -5
  568. package/dist/nylas-web-elements/nylas-scheduler-editor.entry.js +4 -4
  569. package/dist/nylas-web-elements/nylas-scheduling.entry.js +3 -3
  570. package/dist/nylas-web-elements/nylas-selected-event-card.entry.js +3 -3
  571. package/dist/nylas-web-elements/nylas-summarize-message-button.entry.js +4 -4
  572. package/dist/nylas-web-elements/nylas-threads-refresh.entry.js +4 -4
  573. package/dist/nylas-web-elements/nylas-threads-search.entry.js +3 -3
  574. package/dist/nylas-web-elements/nylas-time-window-picker.entry.js +2 -2
  575. package/dist/nylas-web-elements/nylas-timeslot-interval.entry.js +4 -4
  576. package/dist/nylas-web-elements/nylas-timeslot-picker.entry.js +2 -2
  577. package/dist/nylas-web-elements/nylas-view-email.entry.js +2 -2
  578. package/dist/nylas-web-elements/nylas-view-thread.entry.js +3 -3
  579. package/dist/nylas-web-elements/nylas-web-elements.esm.js +1 -1
  580. package/dist/nylas-web-elements/{p-4b84ab3f.entry.js → p-061d0ae2.entry.js} +2 -2
  581. package/dist/nylas-web-elements/{p-de63bc35.entry.js → p-08d75d35.entry.js} +2 -2
  582. package/dist/nylas-web-elements/p-0d98c728.entry.js +2 -0
  583. package/dist/nylas-web-elements/p-0d98c728.entry.js.map +1 -0
  584. package/dist/nylas-web-elements/p-12b83ea9.entry.js +2 -0
  585. package/dist/nylas-web-elements/{p-0dbc0c01.entry.js.map → p-12b83ea9.entry.js.map} +1 -1
  586. package/dist/nylas-web-elements/{p-98a2f588.entry.js → p-16a3bfb2.entry.js} +2 -2
  587. package/dist/nylas-web-elements/p-246983ed.entry.js +2 -0
  588. package/dist/nylas-web-elements/p-246983ed.entry.js.map +1 -0
  589. package/dist/nylas-web-elements/{p-4b1466b3.entry.js → p-25c97a60.entry.js} +2 -2
  590. package/dist/nylas-web-elements/{p-395f49eb.entry.js → p-28512ab6.entry.js} +2 -2
  591. package/dist/nylas-web-elements/{p-b27e34a9.entry.js → p-2f148064.entry.js} +2 -2
  592. package/dist/nylas-web-elements/{p-120d2c72.entry.js → p-3175cae0.entry.js} +2 -2
  593. package/dist/nylas-web-elements/{p-4fdc6122.entry.js → p-34f0d1fe.entry.js} +2 -2
  594. package/dist/nylas-web-elements/p-37f41a90.entry.js +2 -0
  595. package/dist/nylas-web-elements/{p-2f656fb3.entry.js → p-39160c0d.entry.js} +2 -2
  596. package/dist/nylas-web-elements/{p-da21471c.entry.js → p-3f435fab.entry.js} +2 -2
  597. package/dist/nylas-web-elements/{p-27db7b0b.entry.js → p-5231fc13.entry.js} +3 -3
  598. package/dist/nylas-web-elements/{p-deafc6bc.entry.js → p-5c3c1888.entry.js} +2 -2
  599. package/dist/nylas-web-elements/p-60b03f86.entry.js +2 -0
  600. package/dist/nylas-web-elements/{p-09fec39c.entry.js → p-65097f45.entry.js} +2 -2
  601. package/dist/nylas-web-elements/{p-e4a7746d.entry.js → p-6ce66add.entry.js} +2 -2
  602. package/dist/nylas-web-elements/{p-ec26560f.entry.js → p-6ef1024f.entry.js} +2 -2
  603. package/dist/nylas-web-elements/{p-ace74b9d.entry.js → p-7a95bc3f.entry.js} +2 -2
  604. package/dist/nylas-web-elements/{p-bfd3b5f0.entry.js → p-7ce048c0.entry.js} +2 -2
  605. package/dist/nylas-web-elements/{p-a7dd4c24.entry.js → p-8e63b66c.entry.js} +2 -2
  606. package/dist/nylas-web-elements/p-958746a1.entry.js +2 -0
  607. package/dist/nylas-web-elements/{p-53da3000.entry.js.map → p-958746a1.entry.js.map} +1 -1
  608. package/dist/nylas-web-elements/{p-11f94952.entry.js → p-a800e7af.entry.js} +2 -2
  609. package/dist/nylas-web-elements/{p-13b003b5.entry.js → p-a85408e0.entry.js} +2 -2
  610. package/dist/nylas-web-elements/{p-c8c737ed.entry.js → p-aeb1c91c.entry.js} +2 -2
  611. package/dist/nylas-web-elements/{p-6e888067.entry.js → p-b0c8021f.entry.js} +2 -2
  612. package/dist/nylas-web-elements/{p-6891ad5d.entry.js → p-b2aca6c4.entry.js} +2 -2
  613. package/dist/nylas-web-elements/{p-b9064de4.entry.js → p-b334d63b.entry.js} +2 -2
  614. package/dist/nylas-web-elements/p-b4d09fcf.entry.js +2 -0
  615. package/dist/nylas-web-elements/p-b4d09fcf.entry.js.map +1 -0
  616. package/dist/nylas-web-elements/{p-470536e0.entry.js → p-b9559f06.entry.js} +2 -2
  617. package/dist/nylas-web-elements/{p-470536e0.entry.js.map → p-b9559f06.entry.js.map} +1 -1
  618. package/dist/nylas-web-elements/{p-4f548e66.entry.js → p-c1ff6499.entry.js} +2 -2
  619. package/dist/nylas-web-elements/{p-32682655.entry.js → p-cb03e4d4.entry.js} +2 -2
  620. package/dist/nylas-web-elements/p-de7b0878.entry.js +2 -0
  621. package/dist/nylas-web-elements/p-e8cde784.entry.js +2 -0
  622. package/dist/nylas-web-elements/p-e8cde784.entry.js.map +1 -0
  623. package/dist/nylas-web-elements/p-f2d1b1a6.entry.js +2 -0
  624. package/dist/nylas-web-elements/{p-24082558.entry.js.map → p-f2d1b1a6.entry.js.map} +1 -1
  625. package/dist/nylas-web-elements/p-f6fafe86.entry.js +2 -0
  626. package/dist/nylas-web-elements/p-f6fafe86.entry.js.map +1 -0
  627. package/dist/nylas-web-elements/{p-d5146511.entry.js → p-f8653b9b.entry.js} +2 -2
  628. package/dist/nylas-web-elements/people-icon.entry.js +1 -1
  629. package/dist/nylas-web-elements/person-icon.entry.js +1 -1
  630. package/dist/nylas-web-elements/play-icon.entry.js +1 -1
  631. package/dist/nylas-web-elements/radio-button-group.entry.js +1 -1
  632. package/dist/nylas-web-elements/refresh-icon.entry.js +1 -1
  633. package/dist/nylas-web-elements/{register-component-6ae95538.js → register-component-aef40ec4.js} +2 -2
  634. package/dist/nylas-web-elements/{register-component-6ae95538.js.map → register-component-aef40ec4.js.map} +1 -1
  635. package/dist/nylas-web-elements/reply-all-icon.entry.js +1 -1
  636. package/dist/nylas-web-elements/reply-icon.entry.js +1 -1
  637. package/dist/nylas-web-elements/{scheduler-store-17f7f1c8.js → scheduler-store-6c4866d6.js} +2 -2
  638. package/dist/{esm/scheduler-store-17f7f1c8.js.map → nylas-web-elements/scheduler-store-6c4866d6.js.map} +1 -1
  639. package/dist/nylas-web-elements/search-icon.entry.js +1 -1
  640. package/dist/nylas-web-elements/select-dropdown.entry.js +3 -3
  641. package/dist/nylas-web-elements/select-dropdown.entry.js.map +1 -1
  642. package/dist/nylas-web-elements/sent-icon.entry.js +1 -1
  643. package/dist/nylas-web-elements/spam-icon.entry.js +1 -1
  644. package/dist/nylas-web-elements/star-icon.entry.js +1 -1
  645. package/dist/nylas-web-elements/stop-icon.entry.js +1 -1
  646. package/dist/nylas-web-elements/textarea-component.entry.js +1 -1
  647. package/dist/nylas-web-elements/time-period-selector.entry.js +2 -2
  648. package/dist/nylas-web-elements/toggle-switch.entry.js +1 -1
  649. package/dist/nylas-web-elements/toggle-switch.entry.js.map +1 -1
  650. package/dist/nylas-web-elements/tooltip-component.entry.js +1 -1
  651. package/dist/nylas-web-elements/translate-icon.entry.js +1 -1
  652. package/dist/nylas-web-elements/trash-icon.entry.js +1 -1
  653. package/dist/nylas-web-elements/underline-icon.entry.js +1 -1
  654. package/dist/{esm/utils-49a1d17b.js → nylas-web-elements/utils-04c10cbd.js} +2 -2
  655. package/dist/nylas-web-elements/{utils-49a1d17b.js.map → utils-04c10cbd.js.map} +1 -1
  656. package/dist/nylas-web-elements/warning-icon.entry.js +1 -1
  657. package/dist/types/components/design-system/input-dropdown/input-dropdown.d.ts +2 -0
  658. package/dist/types/components/scheduler-editor/nylas-additional-participants/nylas-additional-participants.d.ts +6 -1
  659. package/dist/types/components/scheduler-editor/nylas-availability-picker/nylas-availability-picker.d.ts +2 -4
  660. package/dist/types/components/scheduler-editor/nylas-editor-tabs/nylas-editor-tabs.d.ts +12 -5
  661. package/dist/types/components/scheduler-editor/nylas-participants-custom-availability/nylas-participants-custom-availability.d.ts +36 -0
  662. package/dist/types/components.d.ts +122 -9
  663. package/package.json +1 -1
  664. package/dist/cjs/calendar-info-icon_27.cjs.entry.js.map +0 -1
  665. package/dist/esm/calendar-info-icon_27.entry.js.map +0 -1
  666. package/dist/nylas-web-elements/p-0dbc0c01.entry.js +0 -2
  667. package/dist/nylas-web-elements/p-24082558.entry.js +0 -2
  668. package/dist/nylas-web-elements/p-3fd63454.entry.js +0 -2
  669. package/dist/nylas-web-elements/p-3fd63454.entry.js.map +0 -1
  670. package/dist/nylas-web-elements/p-427548f5.entry.js +0 -2
  671. package/dist/nylas-web-elements/p-427548f5.entry.js.map +0 -1
  672. package/dist/nylas-web-elements/p-53da3000.entry.js +0 -2
  673. package/dist/nylas-web-elements/p-7fac2bba.entry.js +0 -2
  674. package/dist/nylas-web-elements/p-96418bc6.entry.js +0 -2
  675. package/dist/nylas-web-elements/p-9acfea5f.entry.js +0 -2
  676. package/dist/nylas-web-elements/p-9acfea5f.entry.js.map +0 -1
  677. package/dist/nylas-web-elements/p-c170c56d.entry.js +0 -2
  678. package/dist/nylas-web-elements/p-efd5b80a.entry.js +0 -2
  679. package/dist/nylas-web-elements/p-efd5b80a.entry.js.map +0 -1
  680. package/dist/nylas-web-elements/p-fbac3865.entry.js +0 -2
  681. package/dist/nylas-web-elements/p-fbac3865.entry.js.map +0 -1
  682. /package/dist/nylas-web-elements/{p-4b84ab3f.entry.js.map → p-061d0ae2.entry.js.map} +0 -0
  683. /package/dist/nylas-web-elements/{p-de63bc35.entry.js.map → p-08d75d35.entry.js.map} +0 -0
  684. /package/dist/nylas-web-elements/{p-98a2f588.entry.js.map → p-16a3bfb2.entry.js.map} +0 -0
  685. /package/dist/nylas-web-elements/{p-4b1466b3.entry.js.map → p-25c97a60.entry.js.map} +0 -0
  686. /package/dist/nylas-web-elements/{p-395f49eb.entry.js.map → p-28512ab6.entry.js.map} +0 -0
  687. /package/dist/nylas-web-elements/{p-b27e34a9.entry.js.map → p-2f148064.entry.js.map} +0 -0
  688. /package/dist/nylas-web-elements/{p-120d2c72.entry.js.map → p-3175cae0.entry.js.map} +0 -0
  689. /package/dist/nylas-web-elements/{p-4fdc6122.entry.js.map → p-34f0d1fe.entry.js.map} +0 -0
  690. /package/dist/nylas-web-elements/{p-c170c56d.entry.js.map → p-37f41a90.entry.js.map} +0 -0
  691. /package/dist/nylas-web-elements/{p-2f656fb3.entry.js.map → p-39160c0d.entry.js.map} +0 -0
  692. /package/dist/nylas-web-elements/{p-da21471c.entry.js.map → p-3f435fab.entry.js.map} +0 -0
  693. /package/dist/nylas-web-elements/{p-27db7b0b.entry.js.map → p-5231fc13.entry.js.map} +0 -0
  694. /package/dist/nylas-web-elements/{p-deafc6bc.entry.js.map → p-5c3c1888.entry.js.map} +0 -0
  695. /package/dist/nylas-web-elements/{p-7fac2bba.entry.js.map → p-60b03f86.entry.js.map} +0 -0
  696. /package/dist/nylas-web-elements/{p-09fec39c.entry.js.map → p-65097f45.entry.js.map} +0 -0
  697. /package/dist/nylas-web-elements/{p-e4a7746d.entry.js.map → p-6ce66add.entry.js.map} +0 -0
  698. /package/dist/nylas-web-elements/{p-ec26560f.entry.js.map → p-6ef1024f.entry.js.map} +0 -0
  699. /package/dist/nylas-web-elements/{p-ace74b9d.entry.js.map → p-7a95bc3f.entry.js.map} +0 -0
  700. /package/dist/nylas-web-elements/{p-bfd3b5f0.entry.js.map → p-7ce048c0.entry.js.map} +0 -0
  701. /package/dist/nylas-web-elements/{p-a7dd4c24.entry.js.map → p-8e63b66c.entry.js.map} +0 -0
  702. /package/dist/nylas-web-elements/{p-11f94952.entry.js.map → p-a800e7af.entry.js.map} +0 -0
  703. /package/dist/nylas-web-elements/{p-13b003b5.entry.js.map → p-a85408e0.entry.js.map} +0 -0
  704. /package/dist/nylas-web-elements/{p-c8c737ed.entry.js.map → p-aeb1c91c.entry.js.map} +0 -0
  705. /package/dist/nylas-web-elements/{p-6e888067.entry.js.map → p-b0c8021f.entry.js.map} +0 -0
  706. /package/dist/nylas-web-elements/{p-6891ad5d.entry.js.map → p-b2aca6c4.entry.js.map} +0 -0
  707. /package/dist/nylas-web-elements/{p-b9064de4.entry.js.map → p-b334d63b.entry.js.map} +0 -0
  708. /package/dist/nylas-web-elements/{p-4f548e66.entry.js.map → p-c1ff6499.entry.js.map} +0 -0
  709. /package/dist/nylas-web-elements/{p-32682655.entry.js.map → p-cb03e4d4.entry.js.map} +0 -0
  710. /package/dist/nylas-web-elements/{p-96418bc6.entry.js.map → p-de7b0878.entry.js.map} +0 -0
  711. /package/dist/nylas-web-elements/{p-d5146511.entry.js.map → p-f8653b9b.entry.js.map} +0 -0
@@ -1 +1 @@
1
- {"file":"register-component-6ae95538.js","mappings":"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","names":[],"sources":["src/common/register-component.ts"],"sourcesContent":["import { BaseNylasConnectorInterface } from '@/connector/connector-interface';\nimport { debug, error } from '@/utils/utils';\nimport { ComponentInterface, getElement } from '@stencil/core';\nimport { CombinedStoreStateKeys, EventEmitterEventType, ExtractEventEmitterKeys, ExtractEventEmitterProperties } from './types';\nexport interface RegisteredComponent<H extends ComponentInterface, B extends BaseNylasConnectorInterface, MailboxStores = string> {\n name: string;\n element: HTMLElement;\n getStoresToProp?: keyof H;\n storeToProps?: Map<string, keyof H>;\n stateToProps?: Map<MailboxStores, keyof H>;\n eventToProps?: Map<ExtractEventEmitterKeys<H>, (event: CustomEvent<EventEmitterEventType<H[ExtractEventEmitterKeys<H>]>>, nylasConnector: B) => Promise<void>>;\n localPropsToProp?: Map<string, keyof H>;\n authToProp?: keyof H;\n connectorToProp?: keyof H;\n registrationEventName?: string;\n unregistrationEventName?: string;\n}\n\nexport function createComponentEvent<T extends ComponentInterface, B extends BaseNylasConnectorInterface>(\n instance: T,\n registeredComponent: RegisteredComponent<T, B>,\n eventName: string = 'registerComponent',\n) {\n return new CustomEvent<RegisteredComponent<typeof instance, B>>(eventName, {\n bubbles: true,\n composed: true,\n detail: registeredComponent,\n });\n}\n\nexport function unregisterComponentEvent<T extends ComponentInterface, B extends BaseNylasConnectorInterface>(\n instance: T,\n registeredComponent: RegisteredComponent<T, B>,\n eventName: string = 'unregisterComponent',\n) {\n return new CustomEvent<RegisteredComponent<typeof instance, B>>(eventName, {\n bubbles: true,\n composed: true,\n detail: registeredComponent,\n });\n}\n\nexport interface RegisterComponentConfig<H extends ComponentInterface, B extends BaseNylasConnectorInterface, MailboxStores>\n extends Omit<RegisteredComponent<H, B, MailboxStores>, 'eventToProps' | 'name' | 'element'> {\n name: string;\n eventToProps?: Partial<{\n [P in ExtractEventEmitterProperties<H> as P['key']]: (event: CustomEvent<P['eventType']>, nylasConnector: B) => Promise<void>;\n }>;\n fireRegisterEvent?: boolean;\n}\n\nexport interface NylasComponentInterface extends ComponentInterface {\n authToProp?: keyof this;\n connectorToProp?: keyof this;\n}\n\nexport function RegisterComponent<H extends NylasComponentInterface, B extends BaseNylasConnectorInterface, MailboxStores extends Record<string, any>>(\n config: RegisterComponentConfig<H, B, CombinedStoreStateKeys<keyof MailboxStores, MailboxStores>>,\n) {\n return (target: H, propKey: string) => {\n const componentName = config.name;\n debug(`[${componentName}] Registering component ${componentName} being called on ${propKey}`);\n\n const origionalCallback = target.componentWillLoad;\n if (!origionalCallback) {\n error(`[${componentName}] componentWillLoad lifecycle method in ${componentName} missing. Required for RegisterComponent decorator.`);\n return;\n }\n\n const origionalConnectCallback = target.connectedCallback;\n if (!origionalConnectCallback) {\n error(`[${componentName}] connectedCallback lifecycle method in ${componentName} missing. Required for RegisterComponent decorator.`);\n return;\n }\n\n const origionalDisconnectCallback = target.disconnectedCallback;\n if (!origionalDisconnectCallback) {\n error(`[${componentName}] disconnectedCallback lifecycle method in ${componentName} missing. Required for RegisterComponent decorator.`);\n return;\n }\n\n // Detect a conflict if config.storeToProps and config.stateToProps are both defined\n // for overlapping prop keys\n if (config.storeToProps && config.stateToProps) {\n const storeToPropsKeys = Array.from(config.storeToProps.values());\n const stateToPropsKeys = Array.from(config.stateToProps.values());\n const intersection = storeToPropsKeys.filter(key => stateToPropsKeys.includes(key));\n if (intersection.length > 0) {\n error(\n `[${componentName}] Overlapping prop keys detected in ${componentName} for storeToProps and stateToProps. Make sure to only define them once. Overlapping keys: ${intersection.join(\n ', ',\n )}`,\n );\n return;\n }\n }\n\n // Convert the record of eventToProps to a map\n const eventToPropsMap = new Map<ExtractEventEmitterKeys<H>, (event: CustomEvent<EventEmitterEventType<H[ExtractEventEmitterKeys<H>]>>, nylasConnector: B) => Promise<void>>();\n if (config.eventToProps) {\n Object.keys(config.eventToProps).forEach(key => {\n eventToPropsMap.set(\n key as ExtractEventEmitterKeys<H>,\n config.eventToProps?.[key as ExtractEventEmitterKeys<H>] as (\n event: CustomEvent<EventEmitterEventType<H[ExtractEventEmitterKeys<H>]>>,\n nylasConnector: B,\n ) => Promise<void>,\n );\n });\n }\n\n target.connectedCallback = function () {\n debug(`[~${componentName}] connectedCallback called`);\n const origionalResult = origionalConnectCallback?.call(this);\n const host = getElement(this);\n\n // If the nylas id is already set, then we don't need to do anything\n if (host.dataset.nylasId) {\n return origionalResult;\n }\n\n Object.defineProperty(host, 'registerNylasComponent', {\n get() {\n return true;\n },\n enumerable: true,\n });\n Object.defineProperty(host, 'stateToProps', {\n get() {\n return config.stateToProps;\n },\n enumerable: true,\n });\n Object.defineProperty(host, 'getStoresToProp', {\n get() {\n return config.getStoresToProp;\n },\n enumerable: true,\n });\n Object.defineProperty(host, 'storeToProps', {\n get() {\n return config.storeToProps;\n },\n enumerable: true,\n });\n Object.defineProperty(host, 'eventToProps', {\n get() {\n return eventToPropsMap;\n },\n enumerable: true,\n });\n Object.defineProperty(host, 'authToProp', {\n get() {\n return config.authToProp;\n },\n enumerable: true,\n });\n Object.defineProperty(host, 'connectorToProp', {\n get() {\n return config.connectorToProp;\n },\n enumerable: true,\n });\n Object.defineProperty(host, 'localPropsToProp', {\n get() {\n return config.localPropsToProp;\n },\n enumerable: true,\n });\n return origionalResult;\n };\n\n if (config.fireRegisterEvent) {\n target.componentWillLoad = function () {\n const origionalResult = origionalCallback?.call(this);\n const host = getElement(this);\n\n // We use our host element to dispatch a registration event that is picked up by the\n // the nylas-provider component.\n const registeredComponent: RegisteredComponent<H, B> = {\n element: host,\n ...config,\n eventToProps: eventToPropsMap,\n };\n const event = createComponentEvent(target, registeredComponent, config.registrationEventName);\n if (host.dispatchEvent(event)) {\n debug(`[${componentName}] Component ${componentName} successfully fired registration event`);\n }\n\n return origionalResult;\n };\n\n target.disconnectedCallback = function () {\n const origionalResult = origionalDisconnectCallback?.call(this);\n const host = getElement(this);\n\n // We use our host element to dispatch a registration event that is picked up by the\n // the nylas-provider component.\n const registeredComponent: RegisteredComponent<H, B> = {\n element: host,\n ...config,\n eventToProps: eventToPropsMap,\n };\n const event = unregisterComponentEvent(target, registeredComponent, config.unregistrationEventName);\n if (host.dispatchEvent(event)) {\n debug(`[${componentName}] Component ${componentName} successfully fired unregistration event`);\n }\n\n return origionalResult;\n };\n }\n };\n}\n"],"version":3}
1
+ {"file":"register-component-aef40ec4.js","mappings":"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","names":[],"sources":["src/common/register-component.ts"],"sourcesContent":["import { BaseNylasConnectorInterface } from '@/connector/connector-interface';\nimport { debug, error } from '@/utils/utils';\nimport { ComponentInterface, getElement } from '@stencil/core';\nimport { CombinedStoreStateKeys, EventEmitterEventType, ExtractEventEmitterKeys, ExtractEventEmitterProperties } from './types';\nexport interface RegisteredComponent<H extends ComponentInterface, B extends BaseNylasConnectorInterface, MailboxStores = string> {\n name: string;\n element: HTMLElement;\n getStoresToProp?: keyof H;\n storeToProps?: Map<string, keyof H>;\n stateToProps?: Map<MailboxStores, keyof H>;\n eventToProps?: Map<ExtractEventEmitterKeys<H>, (event: CustomEvent<EventEmitterEventType<H[ExtractEventEmitterKeys<H>]>>, nylasConnector: B) => Promise<void>>;\n localPropsToProp?: Map<string, keyof H>;\n authToProp?: keyof H;\n connectorToProp?: keyof H;\n registrationEventName?: string;\n unregistrationEventName?: string;\n}\n\nexport function createComponentEvent<T extends ComponentInterface, B extends BaseNylasConnectorInterface>(\n instance: T,\n registeredComponent: RegisteredComponent<T, B>,\n eventName: string = 'registerComponent',\n) {\n return new CustomEvent<RegisteredComponent<typeof instance, B>>(eventName, {\n bubbles: true,\n composed: true,\n detail: registeredComponent,\n });\n}\n\nexport function unregisterComponentEvent<T extends ComponentInterface, B extends BaseNylasConnectorInterface>(\n instance: T,\n registeredComponent: RegisteredComponent<T, B>,\n eventName: string = 'unregisterComponent',\n) {\n return new CustomEvent<RegisteredComponent<typeof instance, B>>(eventName, {\n bubbles: true,\n composed: true,\n detail: registeredComponent,\n });\n}\n\nexport interface RegisterComponentConfig<H extends ComponentInterface, B extends BaseNylasConnectorInterface, MailboxStores>\n extends Omit<RegisteredComponent<H, B, MailboxStores>, 'eventToProps' | 'name' | 'element'> {\n name: string;\n eventToProps?: Partial<{\n [P in ExtractEventEmitterProperties<H> as P['key']]: (event: CustomEvent<P['eventType']>, nylasConnector: B) => Promise<void>;\n }>;\n fireRegisterEvent?: boolean;\n}\n\nexport interface NylasComponentInterface extends ComponentInterface {\n authToProp?: keyof this;\n connectorToProp?: keyof this;\n}\n\nexport function RegisterComponent<H extends NylasComponentInterface, B extends BaseNylasConnectorInterface, MailboxStores extends Record<string, any>>(\n config: RegisterComponentConfig<H, B, CombinedStoreStateKeys<keyof MailboxStores, MailboxStores>>,\n) {\n return (target: H, propKey: string) => {\n const componentName = config.name;\n debug(`[${componentName}] Registering component ${componentName} being called on ${propKey}`);\n\n const origionalCallback = target.componentWillLoad;\n if (!origionalCallback) {\n error(`[${componentName}] componentWillLoad lifecycle method in ${componentName} missing. Required for RegisterComponent decorator.`);\n return;\n }\n\n const origionalConnectCallback = target.connectedCallback;\n if (!origionalConnectCallback) {\n error(`[${componentName}] connectedCallback lifecycle method in ${componentName} missing. Required for RegisterComponent decorator.`);\n return;\n }\n\n const origionalDisconnectCallback = target.disconnectedCallback;\n if (!origionalDisconnectCallback) {\n error(`[${componentName}] disconnectedCallback lifecycle method in ${componentName} missing. Required for RegisterComponent decorator.`);\n return;\n }\n\n // Detect a conflict if config.storeToProps and config.stateToProps are both defined\n // for overlapping prop keys\n if (config.storeToProps && config.stateToProps) {\n const storeToPropsKeys = Array.from(config.storeToProps.values());\n const stateToPropsKeys = Array.from(config.stateToProps.values());\n const intersection = storeToPropsKeys.filter(key => stateToPropsKeys.includes(key));\n if (intersection.length > 0) {\n error(\n `[${componentName}] Overlapping prop keys detected in ${componentName} for storeToProps and stateToProps. Make sure to only define them once. Overlapping keys: ${intersection.join(\n ', ',\n )}`,\n );\n return;\n }\n }\n\n // Convert the record of eventToProps to a map\n const eventToPropsMap = new Map<ExtractEventEmitterKeys<H>, (event: CustomEvent<EventEmitterEventType<H[ExtractEventEmitterKeys<H>]>>, nylasConnector: B) => Promise<void>>();\n if (config.eventToProps) {\n Object.keys(config.eventToProps).forEach(key => {\n eventToPropsMap.set(\n key as ExtractEventEmitterKeys<H>,\n config.eventToProps?.[key as ExtractEventEmitterKeys<H>] as (\n event: CustomEvent<EventEmitterEventType<H[ExtractEventEmitterKeys<H>]>>,\n nylasConnector: B,\n ) => Promise<void>,\n );\n });\n }\n\n target.connectedCallback = function () {\n debug(`[~${componentName}] connectedCallback called`);\n const origionalResult = origionalConnectCallback?.call(this);\n const host = getElement(this);\n\n // If the nylas id is already set, then we don't need to do anything\n if (host.dataset.nylasId) {\n return origionalResult;\n }\n\n Object.defineProperty(host, 'registerNylasComponent', {\n get() {\n return true;\n },\n enumerable: true,\n });\n Object.defineProperty(host, 'stateToProps', {\n get() {\n return config.stateToProps;\n },\n enumerable: true,\n });\n Object.defineProperty(host, 'getStoresToProp', {\n get() {\n return config.getStoresToProp;\n },\n enumerable: true,\n });\n Object.defineProperty(host, 'storeToProps', {\n get() {\n return config.storeToProps;\n },\n enumerable: true,\n });\n Object.defineProperty(host, 'eventToProps', {\n get() {\n return eventToPropsMap;\n },\n enumerable: true,\n });\n Object.defineProperty(host, 'authToProp', {\n get() {\n return config.authToProp;\n },\n enumerable: true,\n });\n Object.defineProperty(host, 'connectorToProp', {\n get() {\n return config.connectorToProp;\n },\n enumerable: true,\n });\n Object.defineProperty(host, 'localPropsToProp', {\n get() {\n return config.localPropsToProp;\n },\n enumerable: true,\n });\n return origionalResult;\n };\n\n if (config.fireRegisterEvent) {\n target.componentWillLoad = function () {\n const origionalResult = origionalCallback?.call(this);\n const host = getElement(this);\n\n // We use our host element to dispatch a registration event that is picked up by the\n // the nylas-provider component.\n const registeredComponent: RegisteredComponent<H, B> = {\n element: host,\n ...config,\n eventToProps: eventToPropsMap,\n };\n const event = createComponentEvent(target, registeredComponent, config.registrationEventName);\n if (host.dispatchEvent(event)) {\n debug(`[${componentName}] Component ${componentName} successfully fired registration event`);\n }\n\n return origionalResult;\n };\n\n target.disconnectedCallback = function () {\n const origionalResult = origionalDisconnectCallback?.call(this);\n const host = getElement(this);\n\n // We use our host element to dispatch a registration event that is picked up by the\n // the nylas-provider component.\n const registeredComponent: RegisteredComponent<H, B> = {\n element: host,\n ...config,\n eventToProps: eventToPropsMap,\n };\n const event = unregisterComponentEvent(target, registeredComponent, config.unregistrationEventName);\n if (host.dispatchEvent(event)) {\n debug(`[${componentName}] Component ${componentName} successfully fired unregistration event`);\n }\n\n return origionalResult;\n };\n }\n };\n}\n"],"version":3}
@@ -9,7 +9,7 @@ const ReplyAllIcon = class {
9
9
  this.height = '15';
10
10
  }
11
11
  render() {
12
- return (h("svg", { key: 'cf3a910b7232018b6579cfe31a868e3ba54f30b0', fill: "auto", width: this.width, height: this.height, viewBox: "0 0 1920 1920", xmlns: "http://www.w3.org/2000/svg" }, h("path", { key: '1db5bb9aa170d0a00c5939cdd7bfe7b878124c2c', d: "m1030.975 188 81.249 81.249-429.228 429.228h300.747c516.223 0 936.257 420.034 936.257 936.257v98.028h-114.92v-98.028c0-452.901-368.436-821.337-821.337-821.337H682.996l429.228 429.229-81.25 81.248-567.936-567.937L1030.975 188Zm-463.038.011 81.249 81.25-486.688 486.688 486.688 486.688-81.249 81.249L0 755.949 567.937 188.01Z", "fill-rule": "evenodd" })));
12
+ return (h("svg", { key: '27304a19b7ec5d4fb64051ba1edbd99699adc3c5', fill: "auto", width: this.width, height: this.height, viewBox: "0 0 1920 1920", xmlns: "http://www.w3.org/2000/svg" }, h("path", { key: '185831a5360ae2e5b3559e22839c38fe8667e027', d: "m1030.975 188 81.249 81.249-429.228 429.228h300.747c516.223 0 936.257 420.034 936.257 936.257v98.028h-114.92v-98.028c0-452.901-368.436-821.337-821.337-821.337H682.996l429.228 429.229-81.25 81.248-567.936-567.937L1030.975 188Zm-463.038.011 81.249 81.25-486.688 486.688 486.688 486.688-81.249 81.249L0 755.949 567.937 188.01Z", "fill-rule": "evenodd" })));
13
13
  }
14
14
  };
15
15
  ReplyAllIcon.style = iconCss;
@@ -9,7 +9,7 @@ const ReplyIcon = class {
9
9
  this.height = '15';
10
10
  }
11
11
  render() {
12
- return (h("svg", { key: 'a353055eb9122f1dae36fbf49a557c431fd8580a', fill: "auto", width: this.width, height: this.height, viewBox: "0 0 1920 1920", xmlns: "http://www.w3.org/2000/svg" }, h("path", { key: '97ac62efd50d229e10b45fc2a47f3c8c5a9b6e5d', d: "M835.942 632.563H244.966l478.08-478.08-90.496-90.496L-.026 696.563 632.55 1329.14l90.496-90.496-478.08-478.08h590.976c504.448 0 914.816 410.368 914.816 914.816v109.184h128V1675.38c0-574.976-467.84-1042.816-1042.816-1042.816", "fill-rule": "evenodd" })));
12
+ return (h("svg", { key: '8f2d5daffb8ab92a42abacce15e2abd868f979a7', fill: "auto", width: this.width, height: this.height, viewBox: "0 0 1920 1920", xmlns: "http://www.w3.org/2000/svg" }, h("path", { key: 'fcad20369efbf76e019c7b433e380419c696e481', d: "M835.942 632.563H244.966l478.08-478.08-90.496-90.496L-.026 696.563 632.55 1329.14l90.496-90.496-478.08-478.08h590.976c504.448 0 914.816 410.368 914.816 914.816v109.184h128V1675.38c0-574.976-467.84-1042.816-1042.816-1042.816", "fill-rule": "evenodd" })));
13
13
  }
14
14
  };
15
15
  ReplyIcon.style = iconCss;
@@ -1,4 +1,4 @@
1
- import { h as addDaysToCurrentDate, a as debug } from './utils-49a1d17b.js';
1
+ import { h as addDaysToCurrentDate, a as debug } from './utils-04c10cbd.js';
2
2
  import { c as createStore } from './index-2c7e4f4b.js';
3
3
 
4
4
  var ErrorCategory;
@@ -543,4 +543,4 @@ function CreateNylasSchedulerStore(defaultState = {}) {
543
543
 
544
544
  export { CreateNylasSchedulerStore as C, ErrorCategory as E, NylaSchedulerAPIConnector as N };
545
545
 
546
- //# sourceMappingURL=scheduler-store-17f7f1c8.js.map
546
+ //# sourceMappingURL=scheduler-store-6c4866d6.js.map
@@ -1 +1 @@
1
- {"file":"scheduler-store-17f7f1c8.js","mappings":"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","names":[],"sources":["src/connector/nylas-scheduler-connector/errors/index.ts","src/connector/shared/api/scheduler.ts","src/stores/scheduler-store.ts"],"sourcesContent":["export enum ErrorCategory {\n Component = 'component',\n Api = 'api',\n Auth = 'auth',\n}\n\nexport interface ErrorDetails {\n title: string;\n message: string;\n category: ErrorCategory;\n}\n\nexport enum ComponentErrorType {\n endtime_not_in_future = 'endtime_not_in_future',\n no_booking_info = 'no_booking_info',\n no_timeslot_selected = 'no_timeslot_selected',\n no_timezone_selected = 'no_timezone_selected',\n no_booking_id = 'no_booking_id',\n invalid_start_time = 'invalid_start_time',\n invalid_end_time = 'invalid_end_time',\n invalid_timezone = 'invalid_timezone',\n}\n\nexport enum APIErrorType {\n invalid_session = 'invalid_session',\n general_error = 'general_error',\n internal_error = 'internal_error',\n invalid_request_error = 'invalid_request_error',\n timeslot_not_available = 'timeslot_not_available',\n provider_error = 'provider_error',\n not_found_error = 'not_found_error',\n}\n\nexport class Errors {\n component = (_title: string): Record<ComponentErrorType, (message?: string) => ErrorDetails> => {\n const category = ErrorCategory.Component;\n const title = `${_title} Error`;\n return {\n endtime_not_in_future: (message: string = '\"endtime\" can not be in the future') => {\n return {\n title,\n message,\n category,\n };\n },\n no_booking_info: (message: string = 'No booking info provided') => {\n return {\n title,\n message,\n category,\n };\n },\n no_timeslot_selected: (message: string = 'No timeslot selected') => {\n return {\n title,\n message,\n category,\n };\n },\n no_timezone_selected: (message: string = 'No timezone selected') => {\n return {\n title,\n message,\n category,\n };\n },\n no_booking_id: (message: string = 'No booking id provided') => {\n return {\n title,\n message,\n category,\n };\n },\n invalid_start_time: (message: string = 'Invalid start time') => {\n return {\n title,\n message,\n category,\n };\n },\n invalid_end_time: (message: string = 'Invalid end time') => {\n return {\n title,\n message,\n category,\n };\n },\n invalid_timezone: (message: string = 'Invalid timezone') => {\n return {\n title,\n message,\n category,\n };\n },\n };\n };\n\n api = (_title: string): Record<APIErrorType, (message: string) => ErrorDetails> => {\n const category = ErrorCategory.Api;\n const title = `${_title} Error`;\n\n return {\n invalid_session: (message: string) => {\n return {\n title,\n message,\n category,\n };\n },\n general_error: (message: string) => {\n return {\n title,\n message,\n category,\n };\n },\n internal_error: (message: string) => {\n return {\n title,\n message,\n category,\n };\n },\n invalid_request_error: (message: string) => {\n return {\n title,\n message,\n category,\n };\n },\n timeslot_not_available: (message: string) => {\n return {\n title,\n message,\n category,\n };\n },\n provider_error: (message: string) => {\n return {\n title,\n message,\n category,\n };\n },\n not_found_error: (message: string) => {\n return {\n title,\n message,\n category,\n };\n },\n };\n };\n}\n","import { AvailabilityResponse, NylasEvent, UISettingsResponse } from '@/common/types';\nimport { NylasSchedulerStoreType } from '../../../components';\nimport type { NylasErrorResponse, NylasResponse, NylasSchedulerBookingData, NylasSchedulerResponse, Timeslot } from '@nylas/core';\nimport { APIErrorType, Errors } from '@/connector/nylas-scheduler-connector/errors';\nimport { addDaysToCurrentDate } from '@/utils/utils';\n\ntype NylasSchedulerAPIConnectorOptions = {\n schedulerAPIURL: string;\n schedulerStore: NylasSchedulerStoreType;\n sessionId?: string;\n configId?: string;\n};\n\n/**\n * NylaSchedulerConnector\n * This class is used to make API requests to the scheduler.\n */\nexport class NylaSchedulerAPIConnector {\n private schedulerStore: NylasSchedulerStoreType;\n private schedulerAPIURL: string;\n private sessionId: string | undefined;\n private configId: string | undefined;\n private errors = new Errors();\n\n constructor({ schedulerAPIURL, schedulerStore, sessionId, configId }: NylasSchedulerAPIConnectorOptions) {\n this.schedulerStore = schedulerStore;\n this.schedulerAPIURL = schedulerAPIURL;\n this.sessionId = sessionId;\n this.configId = configId;\n }\n\n private getHeaders() {\n return this.sessionId\n ? {\n Authorization: `Bearer ${this.sessionId}`,\n }\n : {};\n }\n\n /**\n * Makes an API request to the scheduler.\n * @param path The path to the API endpoint.\n * @param method The HTTP method.\n * @param body The request body (if any).\n * @returns {Promise<T>}\n */\n public async makeAPIRequest<T>(path: string, method: string, body: string | undefined, headers = {}): Promise<NylasResponse<T>> {\n try {\n const schedulerURL = new URL(this.schedulerAPIURL);\n schedulerURL.pathname = path;\n const response = await fetch(decodeURIComponent(schedulerURL.toString()), {\n method,\n headers: {\n 'Content-Type': 'application/json',\n 'Origin': window.location.origin,\n ...headers,\n },\n body,\n });\n // The server returns a json object for errors: eg.\n // {\n // \"request_id\": \"<request_id>\",\n // \"error\": {\n // \"type\": \"not_found_error\",\n // \"message\": \"Session not found\"\n // }\n // }\n const data = await response.json();\n return data as NylasResponse<T>;\n } catch (error: any) {\n // NOTE: current server implementation doesn't return a JSON object for errors on some endpoints\n // handle this case by returning the error response as a string to be handled downstream\n return {\n error: {\n message: error.message,\n title: 'API request failed',\n type: 'api',\n },\n } as NylasErrorResponse;\n }\n }\n\n private getErrorMessage(error: NylasErrorResponse['error']) {\n let errorMessage = error?.message || error?.title || 'Something went wrong';\n if (error?.type === 'provider_error') {\n errorMessage = error?.provider_error?.error?.message || error?.provider_error?.error?.title || 'Something went wrong';\n }\n return errorMessage;\n }\n\n public setConfigId(configId: string) {\n this.configId = configId;\n }\n\n /**\n * Selects a date in the scheduler.\n */\n public selectDate(date: Date) {\n this.schedulerStore.set('selectedDate', date);\n this.schedulerStore.set('selectedTimeslot', null);\n }\n\n /**\n * Selects a time in the scheduler.\n */\n public selectTime(time: Timeslot) {\n this.schedulerStore.set('selectedTimeslot', time);\n }\n\n /**\n * Sets the timezone in the scheduler.\n */\n public selectTimezone(timezone: string) {\n this.schedulerStore.set('selectedTimezone', timezone);\n }\n\n /**\n * Toggles showBookingForm\n * @param value boolean\n */\n public async toggleAdditionalData(value: boolean) {\n if (!value) {\n // Refetch availability\n await this.refetchAvailability();\n }\n this.schedulerStore.set('showBookingForm', value);\n }\n\n /**\n * Set/update the name of the participant booking the event.\n */\n public setParticipantName(name: string) {\n const { bookingInfo } = this.schedulerStore.state;\n this.schedulerStore.set('bookingInfo', {\n ...bookingInfo,\n primaryParticipant: {\n ...(bookingInfo?.primaryParticipant as NylasSchedulerBookingData['primaryParticipant']),\n name,\n },\n });\n }\n\n /**\n * Set/update the email of the participant booking the event.\n */\n public setParticipantEmail(email: string) {\n const { bookingInfo } = this.schedulerStore.state;\n this.schedulerStore.set('bookingInfo', {\n ...bookingInfo,\n primaryParticipant: {\n ...(bookingInfo?.primaryParticipant as NylasSchedulerBookingData['primaryParticipant']),\n email,\n },\n });\n }\n\n private async refetchAvailability() {\n const today = new Date();\n // Refetch availability\n const startTime = new Date(today.getFullYear(), today.getMonth(), 1).getTime() / 1000;\n const startTimeWithOffset = startTime < today.getTime() / 1000 ? Math.floor(today.getTime() / 1000) : startTime;\n const endTime = new Date(today.getFullYear(), today.getMonth() + 1, 1).getTime() / 1000;\n const result = await this.getAvailability(startTimeWithOffset, endTime);\n return result;\n }\n\n private async resetStoreStateAndFetchAvailability() {\n const today = new Date();\n // Refetch availability\n const result = await this.refetchAvailability();\n // Set selected date to first available date\n const firstAvailableDate = this.schedulerStore.get('availability').find((timeslot: any) => new Date(timeslot.start_time) > new Date());\n let _selectedDate = today;\n if (firstAvailableDate) {\n _selectedDate = firstAvailableDate.start_time;\n }\n this.schedulerStore.set('selectedDate', _selectedDate);\n // Reset store state\n this.schedulerStore.set('eventInfo', null);\n this.schedulerStore.set('showBookingForm', false);\n this.schedulerStore.set('selectedTimeslot', null);\n\n return result;\n }\n\n /**\n * Set reschedule booking id\n */\n public async setReschedule(bookingID: string) {\n const eventInfo = this.schedulerStore.state.eventInfo;\n if (eventInfo) {\n this.schedulerStore.set('reschedulingEventInfo', eventInfo);\n }\n // Set reschedule booking id\n const result = await this.resetStoreStateAndFetchAvailability();\n this.schedulerStore.set('rescheduleBookingId', bookingID);\n return result;\n }\n\n /**\n * Set cancel booking id\n */\n public async setCancel(bookingID: string) {\n this.schedulerStore.set('cancelBookingId', bookingID);\n }\n\n public async resetCancel() {\n const result = await this.resetStoreStateAndFetchAvailability();\n this.schedulerStore.set('cancelBookingId', '');\n this.schedulerStore.set('cancelledEventInfo', null);\n return result;\n }\n\n /**\n * Book the selected timeslot.\n * @param data The booking info.\n * @returns {Promise<NylasResponse<NylasEvent>>}\n */\n public async bookTimeslot(data?: NylasSchedulerBookingData & { timeslot?: Timeslot }): Promise<NylasSchedulerResponse<NylasEvent>> {\n this.schedulerStore.set('isLoading', true);\n const { selectedTimeslot, selectedTimezone, bookingInfo } = this.schedulerStore.state;\n if (!data && !bookingInfo) {\n return { error: this.errors.component('Booking').no_booking_info() };\n }\n\n const timeslot = data?.timeslot || selectedTimeslot;\n if (!timeslot) {\n return { error: this.errors.component('Create Booking').no_timeslot_selected() };\n }\n\n const timezone = data && data?.timezone ? data?.timezone : selectedTimezone;\n\n if (!timezone) {\n return { error: this.errors.component('Create Booking').no_timezone_selected() };\n }\n\n const primaryParticipant = data ? data?.primaryParticipant : bookingInfo?.primaryParticipant;\n const guests = data ? data?.guests || [] : bookingInfo?.guests || [];\n const additional_fields = data ? data?.additionalFields : bookingInfo?.additionalFields;\n\n const headers = this.getHeaders();\n const configIdParam = !this.sessionId && this.configId ? `?configuration_id=${this.configId}` : '';\n const url = `/v3/scheduling/bookings${configIdParam}`;\n\n const response = await this.makeAPIRequest<NylasEvent>(\n decodeURIComponent(url),\n 'POST',\n JSON.stringify({\n additional_fields,\n additional_guests: guests,\n guest: { ...primaryParticipant },\n start_time: timeslot.start_time.getTime() / 1000,\n end_time: timeslot.end_time.getTime() / 1000,\n timezone: timezone,\n }),\n headers,\n );\n\n if ('error' in response) {\n this.schedulerStore.set('isLoading', false);\n const errorType = response.error?.type;\n let error = response.error;\n if (errorType && errorType in this.errors.api('Create Booking')) {\n const errorMessage = this.getErrorMessage(error);\n error = this.errors.api('Create Booking')[errorType as APIErrorType](errorMessage);\n }\n return { error };\n }\n\n if ('data' in response) {\n this.schedulerStore.set('eventInfo', response?.data);\n }\n\n this.schedulerStore.set('isLoading', false);\n return response;\n }\n\n /**\n * Get UI settings for the scheduler.\n */\n public async getUISettings(): Promise<NylasSchedulerResponse<UISettingsResponse>> {\n this.schedulerStore.set('isLoading', true);\n const headers = this.getHeaders();\n const configIdParam = !this.sessionId && this.configId ? `?configuration_id=${this.configId}` : '';\n const url = `/v3/scheduling/ui-settings${configIdParam}`;\n\n const response = await this.makeAPIRequest<UISettingsResponse>(url, 'GET', undefined, headers);\n if ('error' in response) {\n this.schedulerStore.set('isLoading', false);\n const errorType = response.error?.type;\n let error = response.error;\n if (errorType && errorType in this.errors.api('Get UI Settings')) {\n error = this.errors.api('Get UI Settings')[errorType as APIErrorType](error?.message || error?.title || 'Something went wrong');\n }\n return { error };\n }\n if ('data' in response) {\n this.schedulerStore.set('configSettings', response.data);\n }\n this.schedulerStore.set('isLoading', false);\n return response;\n }\n\n private getStartTimeWithMinBookingNotice(startTime: number) {\n const scheduler = this.schedulerStore.get('configSettings')?.scheduler;\n const min_booking_notice = scheduler?.min_booking_notice;\n if (!min_booking_notice) {\n return startTime;\n }\n return startTime + min_booking_notice * 60;\n }\n\n private getEndTimeForAvailableDaysInFuture(endTime: number) {\n const today = new Date();\n const availableDaysInFuture = this.schedulerStore.get('configSettings')?.scheduler?.available_days_in_future;\n const endTimeForAvailableDaysInFuture = Math.floor(addDaysToCurrentDate(today, availableDaysInFuture).getTime() / 1000);\n const endTimeWithOffset = Math.min(endTimeForAvailableDaysInFuture, endTime);\n return endTimeWithOffset;\n }\n\n /**\n * Gets the availability for a page.\n * @param startTime The start time.\n * @param endTime The end time.\n * @returns {Promise<AvailabilityResponse>}\n */\n public async getAvailability(startTime: number = 0, endTime: number = 0): Promise<NylasSchedulerResponse<AvailabilityResponse>> {\n this.schedulerStore.set('isLoading', true);\n const params = new URLSearchParams();\n const now = new Date();\n const nowTime = now.getTime();\n\n if (endTime && endTime < nowTime / 1000) {\n this.schedulerStore.set('isLoading', false);\n const error = this.errors.component('Get Availability').endtime_not_in_future();\n return { error };\n }\n\n // Calculate the start of the current month if startTime is not provided\n if (!startTime) {\n const startOfMonth = new Date(now.getFullYear(), now.getMonth(), 1);\n startTime = Math.floor(startOfMonth.getTime() / 1000); // Convert to UNIX timestamp in seconds\n }\n\n startTime = this.getStartTimeWithMinBookingNotice(startTime);\n // Calculate the end of the current month if endTime is not provided\n if (!endTime) {\n const endOfMonth = new Date(now.getFullYear(), now.getMonth() + 1, 0); // Setting day to 0 gets the last day of the previous month, so in this case, the last day of the current month\n endTime = Math.floor(endOfMonth.getTime() / 1000); // Convert to UNIX timestamp in seconds\n }\n endTime = this.getEndTimeForAvailableDaysInFuture(endTime);\n\n params.append('start_time', encodeURIComponent(startTime.toString()));\n params.append('end_time', encodeURIComponent(endTime.toString()));\n if (this.configId && !this.sessionId) {\n params.append('configuration_id', encodeURIComponent(this.configId));\n }\n const queryString = params.toString();\n const url = `/v3/scheduling/availability${queryString ? `?${queryString}` : ''}`;\n const headers = this.getHeaders();\n const response = await this.makeAPIRequest<AvailabilityResponse>(decodeURIComponent(url), 'GET', undefined, headers);\n\n if ('error' in response) {\n this.schedulerStore.set('availability', []);\n this.schedulerStore.set('isLoading', false);\n const errorType = response.error?.type;\n let error = response.error;\n if (errorType && errorType in this.errors.api('Get Availability')) {\n const errorMessage = this.getErrorMessage(error);\n error = this.errors.api('Get Availability')[errorType as APIErrorType](errorMessage);\n }\n return { error };\n }\n\n if ('data' in response) {\n const availability =\n response.data?.time_slots?.map(timeslot => {\n return {\n ...timeslot,\n start_time: new Date(timeslot.start_time * 1000),\n end_time: new Date(timeslot.end_time * 1000),\n };\n }) || [];\n\n // Filter out timeslots that are in the past\n const availabilityTimeslotsFiltered = availability.filter(timeslot => timeslot.start_time.getTime() > nowTime);\n this.schedulerStore.set('availability', availabilityTimeslotsFiltered);\n }\n\n this.schedulerStore.set('isLoading', false);\n return response;\n }\n\n /**\n * Cancels a booking.\n * @param bookingId The booking ID.\n */\n public async cancelBooking(bookingId: string, reason: string): Promise<NylasSchedulerResponse<Partial<NylasEvent>>> {\n this.schedulerStore.set('isLoading', true);\n if (!bookingId) {\n return { error: this.errors.component('Cancel Booking').no_booking_id() };\n }\n const configIdParam = !this.sessionId && this.configId ? `?configuration_id=${this.configId}` : '';\n const url = `/v3/scheduling/bookings/${bookingId}${configIdParam}`;\n const headers = this.getHeaders();\n const response = await this.makeAPIRequest<Partial<NylasEvent>>(\n decodeURIComponent(url),\n 'DELETE',\n JSON.stringify({\n action: 'cancel',\n cancellation_reason: reason,\n }),\n headers,\n );\n\n if ('error' in response) {\n this.schedulerStore.set('isLoading', false);\n const errorType = response.error?.type;\n let error = response.error;\n if (errorType && errorType in this.errors.api('Cancel Booking')) {\n const errorMessage = this.getErrorMessage(error);\n error = this.errors.api('Cancel Booking')[errorType as APIErrorType](errorMessage);\n }\n return { error };\n }\n\n this.schedulerStore.set('cancelledEventInfo', {\n booking_id: bookingId,\n });\n\n this.schedulerStore.set('isLoading', false);\n return response;\n }\n\n /**\n * Reschedules a booking.\n * @param bookingId The booking ID.\n * @param data The booking info.\n * @returns {Promise<NylasResponse<NylasEvent>>}\n */\n public async rescheduleBooking(bookingId: string, data: NylasSchedulerBookingData): Promise<NylasSchedulerResponse<NylasEvent>> {\n this.schedulerStore.set('isLoading', true);\n if (!bookingId) {\n return { error: this.errors.component('Reschedule Booking').no_booking_id() };\n }\n const apiErrors = this.errors.api('Reschedule Booking');\n const componentErrors = this.errors.component('Reschedule Booking');\n const { bookingInfo, selectedTimeslot, selectedTimezone } = this.schedulerStore.state;\n // Validate data\n const { startTime, endTime, timezone } = data;\n const start_time = startTime || selectedTimeslot?.start_time;\n\n if (!start_time) {\n return { error: componentErrors.invalid_start_time('Please pass \"startTime\" in data or set \"selectedTimeslot\" in the defaultSchedulerState.') };\n }\n const end_time = endTime || selectedTimeslot?.end_time;\n if (!end_time) {\n return { error: componentErrors.invalid_end_time('Please pass \"endTime\" in data or set \"selectedTimeslot\" in the defaultSchedulerState.') };\n }\n const time_zone = timezone || selectedTimezone;\n if (!time_zone) {\n return { error: componentErrors.invalid_timezone('Please pass \"timezone\" in data or set \"selectedTimezone\" in the defaultSchedulerState.') };\n }\n\n const primaryParticipant = data ? data?.primaryParticipant : bookingInfo?.primaryParticipant;\n const guests = data ? data?.guests || [] : bookingInfo?.guests || [];\n const additional_fields = data ? { ...data?.additionalFields, guests } : { ...bookingInfo?.additionalFields, guests };\n\n const configIdParam = !this.sessionId && this.configId ? `?configuration_id=${this.configId}` : '';\n const url = `/v3/scheduling/bookings/${bookingId}${configIdParam}`;\n const headers = this.getHeaders();\n const response = await this.makeAPIRequest<NylasEvent>(\n decodeURIComponent(url),\n 'PATCH',\n JSON.stringify({\n start_time: start_time.getTime() / 1000,\n end_time: end_time.getTime() / 1000,\n time_zone,\n additional_fields,\n guest: { ...primaryParticipant },\n }),\n headers,\n );\n\n if ('error' in response) {\n this.schedulerStore.set('isLoading', false);\n const errorType = response.error?.type;\n let error = response.error;\n if (errorType && errorType in apiErrors) {\n const errorMessage = this.getErrorMessage(error);\n error = apiErrors[errorType as APIErrorType](errorMessage);\n }\n return { error };\n }\n\n const eventInfo = this.schedulerStore.get('reschedulingEventInfo');\n if ('data' in response) {\n this.schedulerStore.set('eventInfo', response?.data);\n } else if (eventInfo) {\n this.schedulerStore.set('eventInfo', eventInfo);\n } else {\n // We should technically never reach this point\n const event = {\n booking_id: bookingId,\n } as NylasEvent;\n this.schedulerStore.set('eventInfo', event);\n }\n\n this.schedulerStore.set('isLoading', false);\n return response;\n }\n}\n","import { DataState, NylasEvent } from '@/common/types';\nimport { debug } from '@/utils/utils';\nimport { NylasSchedulerBookingData, Timeslot } from '@nylas/core';\nimport { createStore } from '@stencil/store';\n\nexport type AvailabilityTimeslot = {\n emails: string[];\n start_time: Date;\n end_time: Date;\n};\n\nexport type LoadingState = {\n api: 'availability' | 'createBooking' | 'cancelBooking' | 'rescheduleBooking';\n};\n\nexport type ConfigSettings = {\n scheduler: {\n available_days_in_future: number;\n min_cancellation_notice: number;\n min_booking_notice: number;\n rescheduling_url?: string;\n cancellation_url?: string;\n cancellation_policy?: string;\n hide_additional_guests?: boolean;\n hide_cancellation_options?: boolean;\n hide_rescheduling_options?: boolean;\n };\n organizer: {\n name: string;\n email: string;\n };\n};\n\nexport interface NylasSchedulerStoreState {\n selectedDate: Date | null;\n selectedLanguage: string;\n selectedTimezone: string;\n selectedTimeslot: Timeslot | null;\n showBookingForm: boolean;\n selectableDates: Date[] | null;\n eventDuration: number;\n availability: AvailabilityTimeslot[];\n state: DataState;\n eventInfo: NylasEvent | null;\n cancelledEventInfo: Partial<NylasEvent> | null;\n reschedulingEventInfo?: NylasEvent;\n bookingInfo?: NylasSchedulerBookingData;\n rescheduleBookingId?: string;\n cancelBookingId?: string;\n isLoading: boolean;\n nylasBranding?: boolean;\n configSettings?: ConfigSettings;\n}\n\nexport type NylasSchedulerStoreType = ReturnType<typeof CreateNylasSchedulerStore>;\n\nexport function CreateNylasSchedulerStore(defaultState: Partial<NylasSchedulerStoreState> = {}) {\n const defaultNylasStoreState: NylasSchedulerStoreState = {\n selectedDate: null,\n selectedLanguage: navigator.language,\n selectedTimezone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n selectedTimeslot: null,\n showBookingForm: false,\n selectableDates: null,\n availability: [],\n eventDuration: 0,\n state: 'ready',\n eventInfo: null,\n cancelledEventInfo: null,\n isLoading: false,\n nylasBranding: true,\n ...defaultState,\n };\n debug(`[defaultNylasStoreState]: `, defaultNylasStoreState);\n const store = createStore<NylasSchedulerStoreState>(defaultNylasStoreState);\n\n store.onChange('availability', availability => {\n debug(`[availability]: `, availability);\n const selectableDates = availability.map(timeslot => timeslot.start_time);\n debug(`[selectableDates]: `, selectableDates);\n store.set('selectableDates', selectableDates);\n const timeslot = availability[0];\n if (!timeslot) return;\n const durationMinutes = Math.floor((timeslot.end_time.getTime() - timeslot.start_time.getTime()) / 60000);\n debug(`[durationMinutes]: `, durationMinutes);\n store.set('eventDuration', durationMinutes);\n });\n\n /**\n * Reset the Nylas store to its default state.\n * There is something wrong with the stencil/store reset method,\n * so we have to do it via this hack.\n */\n store.reset = () => {\n for (const key in defaultNylasStoreState) {\n const value = defaultNylasStoreState[key as keyof typeof defaultNylasStoreState];\n store.set(key as any, value);\n }\n };\n\n return store;\n}\n"],"version":3}
1
+ {"file":"scheduler-store-6c4866d6.js","mappings":"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","names":[],"sources":["src/connector/nylas-scheduler-connector/errors/index.ts","src/connector/shared/api/scheduler.ts","src/stores/scheduler-store.ts"],"sourcesContent":["export enum ErrorCategory {\n Component = 'component',\n Api = 'api',\n Auth = 'auth',\n}\n\nexport interface ErrorDetails {\n title: string;\n message: string;\n category: ErrorCategory;\n}\n\nexport enum ComponentErrorType {\n endtime_not_in_future = 'endtime_not_in_future',\n no_booking_info = 'no_booking_info',\n no_timeslot_selected = 'no_timeslot_selected',\n no_timezone_selected = 'no_timezone_selected',\n no_booking_id = 'no_booking_id',\n invalid_start_time = 'invalid_start_time',\n invalid_end_time = 'invalid_end_time',\n invalid_timezone = 'invalid_timezone',\n}\n\nexport enum APIErrorType {\n invalid_session = 'invalid_session',\n general_error = 'general_error',\n internal_error = 'internal_error',\n invalid_request_error = 'invalid_request_error',\n timeslot_not_available = 'timeslot_not_available',\n provider_error = 'provider_error',\n not_found_error = 'not_found_error',\n}\n\nexport class Errors {\n component = (_title: string): Record<ComponentErrorType, (message?: string) => ErrorDetails> => {\n const category = ErrorCategory.Component;\n const title = `${_title} Error`;\n return {\n endtime_not_in_future: (message: string = '\"endtime\" can not be in the future') => {\n return {\n title,\n message,\n category,\n };\n },\n no_booking_info: (message: string = 'No booking info provided') => {\n return {\n title,\n message,\n category,\n };\n },\n no_timeslot_selected: (message: string = 'No timeslot selected') => {\n return {\n title,\n message,\n category,\n };\n },\n no_timezone_selected: (message: string = 'No timezone selected') => {\n return {\n title,\n message,\n category,\n };\n },\n no_booking_id: (message: string = 'No booking id provided') => {\n return {\n title,\n message,\n category,\n };\n },\n invalid_start_time: (message: string = 'Invalid start time') => {\n return {\n title,\n message,\n category,\n };\n },\n invalid_end_time: (message: string = 'Invalid end time') => {\n return {\n title,\n message,\n category,\n };\n },\n invalid_timezone: (message: string = 'Invalid timezone') => {\n return {\n title,\n message,\n category,\n };\n },\n };\n };\n\n api = (_title: string): Record<APIErrorType, (message: string) => ErrorDetails> => {\n const category = ErrorCategory.Api;\n const title = `${_title} Error`;\n\n return {\n invalid_session: (message: string) => {\n return {\n title,\n message,\n category,\n };\n },\n general_error: (message: string) => {\n return {\n title,\n message,\n category,\n };\n },\n internal_error: (message: string) => {\n return {\n title,\n message,\n category,\n };\n },\n invalid_request_error: (message: string) => {\n return {\n title,\n message,\n category,\n };\n },\n timeslot_not_available: (message: string) => {\n return {\n title,\n message,\n category,\n };\n },\n provider_error: (message: string) => {\n return {\n title,\n message,\n category,\n };\n },\n not_found_error: (message: string) => {\n return {\n title,\n message,\n category,\n };\n },\n };\n };\n}\n","import { AvailabilityResponse, NylasEvent, UISettingsResponse } from '@/common/types';\nimport { NylasSchedulerStoreType } from '../../../components';\nimport type { NylasErrorResponse, NylasResponse, NylasSchedulerBookingData, NylasSchedulerResponse, Timeslot } from '@nylas/core';\nimport { APIErrorType, Errors } from '@/connector/nylas-scheduler-connector/errors';\nimport { addDaysToCurrentDate } from '@/utils/utils';\n\ntype NylasSchedulerAPIConnectorOptions = {\n schedulerAPIURL: string;\n schedulerStore: NylasSchedulerStoreType;\n sessionId?: string;\n configId?: string;\n};\n\n/**\n * NylaSchedulerConnector\n * This class is used to make API requests to the scheduler.\n */\nexport class NylaSchedulerAPIConnector {\n private schedulerStore: NylasSchedulerStoreType;\n private schedulerAPIURL: string;\n private sessionId: string | undefined;\n private configId: string | undefined;\n private errors = new Errors();\n\n constructor({ schedulerAPIURL, schedulerStore, sessionId, configId }: NylasSchedulerAPIConnectorOptions) {\n this.schedulerStore = schedulerStore;\n this.schedulerAPIURL = schedulerAPIURL;\n this.sessionId = sessionId;\n this.configId = configId;\n }\n\n private getHeaders() {\n return this.sessionId\n ? {\n Authorization: `Bearer ${this.sessionId}`,\n }\n : {};\n }\n\n /**\n * Makes an API request to the scheduler.\n * @param path The path to the API endpoint.\n * @param method The HTTP method.\n * @param body The request body (if any).\n * @returns {Promise<T>}\n */\n public async makeAPIRequest<T>(path: string, method: string, body: string | undefined, headers = {}): Promise<NylasResponse<T>> {\n try {\n const schedulerURL = new URL(this.schedulerAPIURL);\n schedulerURL.pathname = path;\n const response = await fetch(decodeURIComponent(schedulerURL.toString()), {\n method,\n headers: {\n 'Content-Type': 'application/json',\n 'Origin': window.location.origin,\n ...headers,\n },\n body,\n });\n // The server returns a json object for errors: eg.\n // {\n // \"request_id\": \"<request_id>\",\n // \"error\": {\n // \"type\": \"not_found_error\",\n // \"message\": \"Session not found\"\n // }\n // }\n const data = await response.json();\n return data as NylasResponse<T>;\n } catch (error: any) {\n // NOTE: current server implementation doesn't return a JSON object for errors on some endpoints\n // handle this case by returning the error response as a string to be handled downstream\n return {\n error: {\n message: error.message,\n title: 'API request failed',\n type: 'api',\n },\n } as NylasErrorResponse;\n }\n }\n\n private getErrorMessage(error: NylasErrorResponse['error']) {\n let errorMessage = error?.message || error?.title || 'Something went wrong';\n if (error?.type === 'provider_error') {\n errorMessage = error?.provider_error?.error?.message || error?.provider_error?.error?.title || 'Something went wrong';\n }\n return errorMessage;\n }\n\n public setConfigId(configId: string) {\n this.configId = configId;\n }\n\n /**\n * Selects a date in the scheduler.\n */\n public selectDate(date: Date) {\n this.schedulerStore.set('selectedDate', date);\n this.schedulerStore.set('selectedTimeslot', null);\n }\n\n /**\n * Selects a time in the scheduler.\n */\n public selectTime(time: Timeslot) {\n this.schedulerStore.set('selectedTimeslot', time);\n }\n\n /**\n * Sets the timezone in the scheduler.\n */\n public selectTimezone(timezone: string) {\n this.schedulerStore.set('selectedTimezone', timezone);\n }\n\n /**\n * Toggles showBookingForm\n * @param value boolean\n */\n public async toggleAdditionalData(value: boolean) {\n if (!value) {\n // Refetch availability\n await this.refetchAvailability();\n }\n this.schedulerStore.set('showBookingForm', value);\n }\n\n /**\n * Set/update the name of the participant booking the event.\n */\n public setParticipantName(name: string) {\n const { bookingInfo } = this.schedulerStore.state;\n this.schedulerStore.set('bookingInfo', {\n ...bookingInfo,\n primaryParticipant: {\n ...(bookingInfo?.primaryParticipant as NylasSchedulerBookingData['primaryParticipant']),\n name,\n },\n });\n }\n\n /**\n * Set/update the email of the participant booking the event.\n */\n public setParticipantEmail(email: string) {\n const { bookingInfo } = this.schedulerStore.state;\n this.schedulerStore.set('bookingInfo', {\n ...bookingInfo,\n primaryParticipant: {\n ...(bookingInfo?.primaryParticipant as NylasSchedulerBookingData['primaryParticipant']),\n email,\n },\n });\n }\n\n private async refetchAvailability() {\n const today = new Date();\n // Refetch availability\n const startTime = new Date(today.getFullYear(), today.getMonth(), 1).getTime() / 1000;\n const startTimeWithOffset = startTime < today.getTime() / 1000 ? Math.floor(today.getTime() / 1000) : startTime;\n const endTime = new Date(today.getFullYear(), today.getMonth() + 1, 1).getTime() / 1000;\n const result = await this.getAvailability(startTimeWithOffset, endTime);\n return result;\n }\n\n private async resetStoreStateAndFetchAvailability() {\n const today = new Date();\n // Refetch availability\n const result = await this.refetchAvailability();\n // Set selected date to first available date\n const firstAvailableDate = this.schedulerStore.get('availability').find((timeslot: any) => new Date(timeslot.start_time) > new Date());\n let _selectedDate = today;\n if (firstAvailableDate) {\n _selectedDate = firstAvailableDate.start_time;\n }\n this.schedulerStore.set('selectedDate', _selectedDate);\n // Reset store state\n this.schedulerStore.set('eventInfo', null);\n this.schedulerStore.set('showBookingForm', false);\n this.schedulerStore.set('selectedTimeslot', null);\n\n return result;\n }\n\n /**\n * Set reschedule booking id\n */\n public async setReschedule(bookingID: string) {\n const eventInfo = this.schedulerStore.state.eventInfo;\n if (eventInfo) {\n this.schedulerStore.set('reschedulingEventInfo', eventInfo);\n }\n // Set reschedule booking id\n const result = await this.resetStoreStateAndFetchAvailability();\n this.schedulerStore.set('rescheduleBookingId', bookingID);\n return result;\n }\n\n /**\n * Set cancel booking id\n */\n public async setCancel(bookingID: string) {\n this.schedulerStore.set('cancelBookingId', bookingID);\n }\n\n public async resetCancel() {\n const result = await this.resetStoreStateAndFetchAvailability();\n this.schedulerStore.set('cancelBookingId', '');\n this.schedulerStore.set('cancelledEventInfo', null);\n return result;\n }\n\n /**\n * Book the selected timeslot.\n * @param data The booking info.\n * @returns {Promise<NylasResponse<NylasEvent>>}\n */\n public async bookTimeslot(data?: NylasSchedulerBookingData & { timeslot?: Timeslot }): Promise<NylasSchedulerResponse<NylasEvent>> {\n this.schedulerStore.set('isLoading', true);\n const { selectedTimeslot, selectedTimezone, bookingInfo } = this.schedulerStore.state;\n if (!data && !bookingInfo) {\n return { error: this.errors.component('Booking').no_booking_info() };\n }\n\n const timeslot = data?.timeslot || selectedTimeslot;\n if (!timeslot) {\n return { error: this.errors.component('Create Booking').no_timeslot_selected() };\n }\n\n const timezone = data && data?.timezone ? data?.timezone : selectedTimezone;\n\n if (!timezone) {\n return { error: this.errors.component('Create Booking').no_timezone_selected() };\n }\n\n const primaryParticipant = data ? data?.primaryParticipant : bookingInfo?.primaryParticipant;\n const guests = data ? data?.guests || [] : bookingInfo?.guests || [];\n const additional_fields = data ? data?.additionalFields : bookingInfo?.additionalFields;\n\n const headers = this.getHeaders();\n const configIdParam = !this.sessionId && this.configId ? `?configuration_id=${this.configId}` : '';\n const url = `/v3/scheduling/bookings${configIdParam}`;\n\n const response = await this.makeAPIRequest<NylasEvent>(\n decodeURIComponent(url),\n 'POST',\n JSON.stringify({\n additional_fields,\n additional_guests: guests,\n guest: { ...primaryParticipant },\n start_time: timeslot.start_time.getTime() / 1000,\n end_time: timeslot.end_time.getTime() / 1000,\n timezone: timezone,\n }),\n headers,\n );\n\n if ('error' in response) {\n this.schedulerStore.set('isLoading', false);\n const errorType = response.error?.type;\n let error = response.error;\n if (errorType && errorType in this.errors.api('Create Booking')) {\n const errorMessage = this.getErrorMessage(error);\n error = this.errors.api('Create Booking')[errorType as APIErrorType](errorMessage);\n }\n return { error };\n }\n\n if ('data' in response) {\n this.schedulerStore.set('eventInfo', response?.data);\n }\n\n this.schedulerStore.set('isLoading', false);\n return response;\n }\n\n /**\n * Get UI settings for the scheduler.\n */\n public async getUISettings(): Promise<NylasSchedulerResponse<UISettingsResponse>> {\n this.schedulerStore.set('isLoading', true);\n const headers = this.getHeaders();\n const configIdParam = !this.sessionId && this.configId ? `?configuration_id=${this.configId}` : '';\n const url = `/v3/scheduling/ui-settings${configIdParam}`;\n\n const response = await this.makeAPIRequest<UISettingsResponse>(url, 'GET', undefined, headers);\n if ('error' in response) {\n this.schedulerStore.set('isLoading', false);\n const errorType = response.error?.type;\n let error = response.error;\n if (errorType && errorType in this.errors.api('Get UI Settings')) {\n error = this.errors.api('Get UI Settings')[errorType as APIErrorType](error?.message || error?.title || 'Something went wrong');\n }\n return { error };\n }\n if ('data' in response) {\n this.schedulerStore.set('configSettings', response.data);\n }\n this.schedulerStore.set('isLoading', false);\n return response;\n }\n\n private getStartTimeWithMinBookingNotice(startTime: number) {\n const scheduler = this.schedulerStore.get('configSettings')?.scheduler;\n const min_booking_notice = scheduler?.min_booking_notice;\n if (!min_booking_notice) {\n return startTime;\n }\n return startTime + min_booking_notice * 60;\n }\n\n private getEndTimeForAvailableDaysInFuture(endTime: number) {\n const today = new Date();\n const availableDaysInFuture = this.schedulerStore.get('configSettings')?.scheduler?.available_days_in_future;\n const endTimeForAvailableDaysInFuture = Math.floor(addDaysToCurrentDate(today, availableDaysInFuture).getTime() / 1000);\n const endTimeWithOffset = Math.min(endTimeForAvailableDaysInFuture, endTime);\n return endTimeWithOffset;\n }\n\n /**\n * Gets the availability for a page.\n * @param startTime The start time.\n * @param endTime The end time.\n * @returns {Promise<AvailabilityResponse>}\n */\n public async getAvailability(startTime: number = 0, endTime: number = 0): Promise<NylasSchedulerResponse<AvailabilityResponse>> {\n this.schedulerStore.set('isLoading', true);\n const params = new URLSearchParams();\n const now = new Date();\n const nowTime = now.getTime();\n\n if (endTime && endTime < nowTime / 1000) {\n this.schedulerStore.set('isLoading', false);\n const error = this.errors.component('Get Availability').endtime_not_in_future();\n return { error };\n }\n\n // Calculate the start of the current month if startTime is not provided\n if (!startTime) {\n const startOfMonth = new Date(now.getFullYear(), now.getMonth(), 1);\n startTime = Math.floor(startOfMonth.getTime() / 1000); // Convert to UNIX timestamp in seconds\n }\n\n startTime = this.getStartTimeWithMinBookingNotice(startTime);\n // Calculate the end of the current month if endTime is not provided\n if (!endTime) {\n const endOfMonth = new Date(now.getFullYear(), now.getMonth() + 1, 0); // Setting day to 0 gets the last day of the previous month, so in this case, the last day of the current month\n endTime = Math.floor(endOfMonth.getTime() / 1000); // Convert to UNIX timestamp in seconds\n }\n endTime = this.getEndTimeForAvailableDaysInFuture(endTime);\n\n params.append('start_time', encodeURIComponent(startTime.toString()));\n params.append('end_time', encodeURIComponent(endTime.toString()));\n if (this.configId && !this.sessionId) {\n params.append('configuration_id', encodeURIComponent(this.configId));\n }\n const queryString = params.toString();\n const url = `/v3/scheduling/availability${queryString ? `?${queryString}` : ''}`;\n const headers = this.getHeaders();\n const response = await this.makeAPIRequest<AvailabilityResponse>(decodeURIComponent(url), 'GET', undefined, headers);\n\n if ('error' in response) {\n this.schedulerStore.set('availability', []);\n this.schedulerStore.set('isLoading', false);\n const errorType = response.error?.type;\n let error = response.error;\n if (errorType && errorType in this.errors.api('Get Availability')) {\n const errorMessage = this.getErrorMessage(error);\n error = this.errors.api('Get Availability')[errorType as APIErrorType](errorMessage);\n }\n return { error };\n }\n\n if ('data' in response) {\n const availability =\n response.data?.time_slots?.map(timeslot => {\n return {\n ...timeslot,\n start_time: new Date(timeslot.start_time * 1000),\n end_time: new Date(timeslot.end_time * 1000),\n };\n }) || [];\n\n // Filter out timeslots that are in the past\n const availabilityTimeslotsFiltered = availability.filter(timeslot => timeslot.start_time.getTime() > nowTime);\n this.schedulerStore.set('availability', availabilityTimeslotsFiltered);\n }\n\n this.schedulerStore.set('isLoading', false);\n return response;\n }\n\n /**\n * Cancels a booking.\n * @param bookingId The booking ID.\n */\n public async cancelBooking(bookingId: string, reason: string): Promise<NylasSchedulerResponse<Partial<NylasEvent>>> {\n this.schedulerStore.set('isLoading', true);\n if (!bookingId) {\n return { error: this.errors.component('Cancel Booking').no_booking_id() };\n }\n const configIdParam = !this.sessionId && this.configId ? `?configuration_id=${this.configId}` : '';\n const url = `/v3/scheduling/bookings/${bookingId}${configIdParam}`;\n const headers = this.getHeaders();\n const response = await this.makeAPIRequest<Partial<NylasEvent>>(\n decodeURIComponent(url),\n 'DELETE',\n JSON.stringify({\n action: 'cancel',\n cancellation_reason: reason,\n }),\n headers,\n );\n\n if ('error' in response) {\n this.schedulerStore.set('isLoading', false);\n const errorType = response.error?.type;\n let error = response.error;\n if (errorType && errorType in this.errors.api('Cancel Booking')) {\n const errorMessage = this.getErrorMessage(error);\n error = this.errors.api('Cancel Booking')[errorType as APIErrorType](errorMessage);\n }\n return { error };\n }\n\n this.schedulerStore.set('cancelledEventInfo', {\n booking_id: bookingId,\n });\n\n this.schedulerStore.set('isLoading', false);\n return response;\n }\n\n /**\n * Reschedules a booking.\n * @param bookingId The booking ID.\n * @param data The booking info.\n * @returns {Promise<NylasResponse<NylasEvent>>}\n */\n public async rescheduleBooking(bookingId: string, data: NylasSchedulerBookingData): Promise<NylasSchedulerResponse<NylasEvent>> {\n this.schedulerStore.set('isLoading', true);\n if (!bookingId) {\n return { error: this.errors.component('Reschedule Booking').no_booking_id() };\n }\n const apiErrors = this.errors.api('Reschedule Booking');\n const componentErrors = this.errors.component('Reschedule Booking');\n const { bookingInfo, selectedTimeslot, selectedTimezone } = this.schedulerStore.state;\n // Validate data\n const { startTime, endTime, timezone } = data;\n const start_time = startTime || selectedTimeslot?.start_time;\n\n if (!start_time) {\n return { error: componentErrors.invalid_start_time('Please pass \"startTime\" in data or set \"selectedTimeslot\" in the defaultSchedulerState.') };\n }\n const end_time = endTime || selectedTimeslot?.end_time;\n if (!end_time) {\n return { error: componentErrors.invalid_end_time('Please pass \"endTime\" in data or set \"selectedTimeslot\" in the defaultSchedulerState.') };\n }\n const time_zone = timezone || selectedTimezone;\n if (!time_zone) {\n return { error: componentErrors.invalid_timezone('Please pass \"timezone\" in data or set \"selectedTimezone\" in the defaultSchedulerState.') };\n }\n\n const primaryParticipant = data ? data?.primaryParticipant : bookingInfo?.primaryParticipant;\n const guests = data ? data?.guests || [] : bookingInfo?.guests || [];\n const additional_fields = data ? { ...data?.additionalFields, guests } : { ...bookingInfo?.additionalFields, guests };\n\n const configIdParam = !this.sessionId && this.configId ? `?configuration_id=${this.configId}` : '';\n const url = `/v3/scheduling/bookings/${bookingId}${configIdParam}`;\n const headers = this.getHeaders();\n const response = await this.makeAPIRequest<NylasEvent>(\n decodeURIComponent(url),\n 'PATCH',\n JSON.stringify({\n start_time: start_time.getTime() / 1000,\n end_time: end_time.getTime() / 1000,\n time_zone,\n additional_fields,\n guest: { ...primaryParticipant },\n }),\n headers,\n );\n\n if ('error' in response) {\n this.schedulerStore.set('isLoading', false);\n const errorType = response.error?.type;\n let error = response.error;\n if (errorType && errorType in apiErrors) {\n const errorMessage = this.getErrorMessage(error);\n error = apiErrors[errorType as APIErrorType](errorMessage);\n }\n return { error };\n }\n\n const eventInfo = this.schedulerStore.get('reschedulingEventInfo');\n if ('data' in response) {\n this.schedulerStore.set('eventInfo', response?.data);\n } else if (eventInfo) {\n this.schedulerStore.set('eventInfo', eventInfo);\n } else {\n // We should technically never reach this point\n const event = {\n booking_id: bookingId,\n } as NylasEvent;\n this.schedulerStore.set('eventInfo', event);\n }\n\n this.schedulerStore.set('isLoading', false);\n return response;\n }\n}\n","import { DataState, NylasEvent } from '@/common/types';\nimport { debug } from '@/utils/utils';\nimport { NylasSchedulerBookingData, Timeslot } from '@nylas/core';\nimport { createStore } from '@stencil/store';\n\nexport type AvailabilityTimeslot = {\n emails: string[];\n start_time: Date;\n end_time: Date;\n};\n\nexport type LoadingState = {\n api: 'availability' | 'createBooking' | 'cancelBooking' | 'rescheduleBooking';\n};\n\nexport type ConfigSettings = {\n scheduler: {\n available_days_in_future: number;\n min_cancellation_notice: number;\n min_booking_notice: number;\n rescheduling_url?: string;\n cancellation_url?: string;\n cancellation_policy?: string;\n hide_additional_guests?: boolean;\n hide_cancellation_options?: boolean;\n hide_rescheduling_options?: boolean;\n };\n organizer: {\n name: string;\n email: string;\n };\n};\n\nexport interface NylasSchedulerStoreState {\n selectedDate: Date | null;\n selectedLanguage: string;\n selectedTimezone: string;\n selectedTimeslot: Timeslot | null;\n showBookingForm: boolean;\n selectableDates: Date[] | null;\n eventDuration: number;\n availability: AvailabilityTimeslot[];\n state: DataState;\n eventInfo: NylasEvent | null;\n cancelledEventInfo: Partial<NylasEvent> | null;\n reschedulingEventInfo?: NylasEvent;\n bookingInfo?: NylasSchedulerBookingData;\n rescheduleBookingId?: string;\n cancelBookingId?: string;\n isLoading: boolean;\n nylasBranding?: boolean;\n configSettings?: ConfigSettings;\n}\n\nexport type NylasSchedulerStoreType = ReturnType<typeof CreateNylasSchedulerStore>;\n\nexport function CreateNylasSchedulerStore(defaultState: Partial<NylasSchedulerStoreState> = {}) {\n const defaultNylasStoreState: NylasSchedulerStoreState = {\n selectedDate: null,\n selectedLanguage: navigator.language,\n selectedTimezone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n selectedTimeslot: null,\n showBookingForm: false,\n selectableDates: null,\n availability: [],\n eventDuration: 0,\n state: 'ready',\n eventInfo: null,\n cancelledEventInfo: null,\n isLoading: false,\n nylasBranding: true,\n ...defaultState,\n };\n debug(`[defaultNylasStoreState]: `, defaultNylasStoreState);\n const store = createStore<NylasSchedulerStoreState>(defaultNylasStoreState);\n\n store.onChange('availability', availability => {\n debug(`[availability]: `, availability);\n const selectableDates = availability.map(timeslot => timeslot.start_time);\n debug(`[selectableDates]: `, selectableDates);\n store.set('selectableDates', selectableDates);\n const timeslot = availability[0];\n if (!timeslot) return;\n const durationMinutes = Math.floor((timeslot.end_time.getTime() - timeslot.start_time.getTime()) / 60000);\n debug(`[durationMinutes]: `, durationMinutes);\n store.set('eventDuration', durationMinutes);\n });\n\n /**\n * Reset the Nylas store to its default state.\n * There is something wrong with the stencil/store reset method,\n * so we have to do it via this hack.\n */\n store.reset = () => {\n for (const key in defaultNylasStoreState) {\n const value = defaultNylasStoreState[key as keyof typeof defaultNylasStoreState];\n store.set(key as any, value);\n }\n };\n\n return store;\n}\n"],"version":3}
@@ -9,7 +9,7 @@ const SearchIcon = class {
9
9
  this.height = '15';
10
10
  }
11
11
  render() {
12
- return (h("svg", { key: '40a81a00f79c85303a904e3ef66e7833a240fff2', width: this.width, height: this.height, fill: "none", xmlns: "http://www.w3.org/2000/svg" }, h("path", { key: 'dd4c72fa1db6849fd72bfcb3fbde40f115caac11', fill: "currentColor", d: "M5.5 0C8.53757 0 11 2.46243 11 5.5C11 6.83879 10.5217 8.06586 9.72656 9.01962L13.8536 13.1464C14.0488 13.3417 14.0488 13.6583 13.8536 13.8536C13.68 14.0271 13.4106 14.0464 13.2157 13.9114L13.1464 13.8536L9.01962 9.72656C8.06586 10.5217 6.83879 11 5.5 11C2.46243 11 0 8.53757 0 5.5C0 2.46243 2.46243 0 5.5 0ZM5.5 1C3.01472 1 1 3.01472 1 5.5C1 7.98528 3.01472 10 5.5 10C7.98528 10 10 7.98528 10 5.5C10 3.01472 7.98528 1 5.5 1Z" })));
12
+ return (h("svg", { key: 'dcf22b14b42ef62b0a4e33b4985712c2f0aac88e', width: this.width, height: this.height, fill: "none", xmlns: "http://www.w3.org/2000/svg" }, h("path", { key: '1048ab3533bef7bdb57dbdccf489ce6240722cf1', fill: "currentColor", d: "M5.5 0C8.53757 0 11 2.46243 11 5.5C11 6.83879 10.5217 8.06586 9.72656 9.01962L13.8536 13.1464C14.0488 13.3417 14.0488 13.6583 13.8536 13.8536C13.68 14.0271 13.4106 14.0464 13.2157 13.9114L13.1464 13.8536L9.01962 9.72656C8.06586 10.5217 6.83879 11 5.5 11C2.46243 11 0 8.53757 0 5.5C0 2.46243 2.46243 0 5.5 0ZM5.5 1C3.01472 1 1 3.01472 1 5.5C1 7.98528 3.01472 10 5.5 10C7.98528 10 10 7.98528 10 5.5C10 3.01472 7.98528 1 5.5 1Z" })));
13
13
  }
14
14
  };
15
15
  SearchIcon.style = iconCss;
@@ -27,7 +27,7 @@ const SelectDropdown = class {
27
27
  this.filteredOptions = newValue;
28
28
  }
29
29
  defaultSelectedOptionChangedHandler(newValue, oldValue) {
30
- if (newValue.label === oldValue.label) {
30
+ if (typeof newValue === 'undefined' || newValue?.label === oldValue?.label) {
31
31
  return;
32
32
  }
33
33
  this.selectedOption = newValue;
@@ -158,11 +158,11 @@ const SelectDropdown = class {
158
158
  }
159
159
  }
160
160
  render() {
161
- return (h("div", { key: 'ac6e39d604f87ee8e154147cc8f82ffcfd81feef', class: "dropdown", part: "sd_dropdown" }, h("label", { key: '65ea5d43d46c9d3caa60b9d2a7453a75e3d59862', part: "sd_dropdown_label", class: { error: !!this.errorMessage } }, this.label && (h("p", null, h("span", { class: "label" }, this.label), this.required && h("span", { class: "required" }, "*"))), h("button", { key: 'a64e6e066a0e3b5c2436ea4ada9582995f416674', part: "sd_dropdown-button", class: { dropbtn: true, open: this.isOpen, error: !!this.errorMessage }, onClick: () => this.toggleDropdown(), "aria-haspopup": "listbox", "aria-expanded": this.isOpen ? 'true' : 'false', "aria-label": this.name, onKeyDown: e => this.handleSelectButtonKeyDown(e) }, h("slot", { key: '5558be7313b2513877366e5cc90c14059ca7a3d1', name: "select-icon", "aria-hidden": "true" }), h("span", { key: '561f266038fa16b3422974b2bd6b5e7dcfeb1577', class: "selected-option", part: "sd_dropdown-button-selected-label" }, this.selectedOption?.label ? `${this.selectedOption?.label + this.pluralizedLabel}` : ''), h("span", { key: '87308c6804530032c5e22750f8753e2589576d00', class: {
161
+ return (h("div", { key: '8c4d201f5fa71b9707a1cb50adc62399f32e5aba', class: "dropdown", part: "sd_dropdown" }, h("label", { key: 'b2e4851e2925d7e44c36a538a28001a838124cba', part: "sd_dropdown_label", class: { error: !!this.errorMessage } }, this.label && (h("p", null, h("span", { class: "label" }, this.label), this.required && h("span", { class: "required" }, "*"))), h("button", { key: '66559916660643e8ed8ed67bf821fa2eb122ea6c', part: "sd_dropdown-button", class: { dropbtn: true, open: this.isOpen, error: !!this.errorMessage }, onClick: () => this.toggleDropdown(), "aria-haspopup": "listbox", "aria-expanded": this.isOpen ? 'true' : 'false', "aria-label": this.name, onKeyDown: e => this.handleSelectButtonKeyDown(e) }, h("slot", { key: '2916f44530f59d218171c54dfe7a6949b3f773c4', name: "select-icon", "aria-hidden": "true" }), h("span", { key: '21653fb2f1225a0f9d64b6939da10b66eeeb8fcc', class: "selected-option", part: "sd_dropdown-button-selected-label" }, this.selectedOption?.label ? `${this.selectedOption?.label + this.pluralizedLabel}` : ''), h("span", { key: '900f31e8a1ca22a3be2f4ca965bdaa9099ef3fca', class: {
162
162
  open: this.isOpen,
163
163
  closed: !this.isOpen,
164
164
  chevron: true,
165
- }, "aria-hidden": "true" }, h("chevron-icon", { key: '47be995d85c4e3c3895785f41c89a8a23d0d1a64', width: "16", height: "16" }))), this.errorMessage && h("span", { class: "error help-text" }, this.errorMessage)), this.isOpen ? (h("div", { class: "dropdown-content", part: "sd_dropdown-content" }, this.withSearch && (h("div", { class: { 'search-box': true, 'open': this.isOpen } }, h("search-icon", { width: "15", height: "15", class: 'icon' }), h("input", { type: "text", role: "combobox", placeholder: "Search", value: this.searchValue, ref: el => (this.inputRef = el), onInput: event => this.filterOptions(event), onKeyDown: e => this.handleComboboxKeyDown(e) }))), h("ul", { tabindex: "-1", role: "listbox", "aria-label": this.name, "aria-activedescendant": this.ariaActivedescendant, onKeyDown: e => this.handleListboxKeydown(e) }, this.filteredOptions.map(option => option.value && (h("li", { tabindex: "0", key: option.value, id: option.value, onClick: () => this.selectOption(option), role: "option" }, option.labelHTML ? option.labelHTML : option.label)))))) : null));
165
+ }, "aria-hidden": "true" }, h("chevron-icon", { key: 'd0a08c205df0a9258b699618cad25eff5085fe84', width: "16", height: "16" }))), this.errorMessage && h("span", { class: "error help-text" }, this.errorMessage)), this.isOpen ? (h("div", { class: "dropdown-content", part: "sd_dropdown-content" }, this.withSearch && (h("div", { class: { 'search-box': true, 'open': this.isOpen } }, h("search-icon", { width: "15", height: "15", class: 'icon' }), h("input", { type: "text", role: "combobox", placeholder: "Search", value: this.searchValue, ref: el => (this.inputRef = el), onInput: event => this.filterOptions(event), onKeyDown: e => this.handleComboboxKeyDown(e) }))), h("ul", { tabindex: "-1", role: "listbox", "aria-label": this.name, "aria-activedescendant": this.ariaActivedescendant, onKeyDown: e => this.handleListboxKeydown(e) }, this.filteredOptions.map(option => option.value && (h("li", { tabindex: "0", key: option.value, id: option.value, onClick: () => this.selectOption(option), role: "option" }, option.labelHTML ? option.labelHTML : option.label)))))) : null));
166
166
  }
167
167
  get el() { return getElement(this); }
168
168
  static get watchers() { return {
@@ -1 +1 @@
1
- {"file":"select-dropdown.entry.js","mappings":"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","names":[],"sources":["src/components/design-system/select-dropdown/select-dropdown.scss?tag=select-dropdown&encapsulation=shadow","src/components/design-system/select-dropdown/select-dropdown.tsx"],"sourcesContent":["@import '../../../common/styles/variables.scss';\n@import '../../../common/mixins/inputs.scss';\n\n:host {\n display: block;\n position: relative;\n @media #{$mobile} {\n position: unset;\n }\n @include default-css-variables;\n width: 100%;\n}\n\nlabel {\n @include input-label;\n flex-direction: column;\n gap: 4px;\n font-family: var(--nylas-font-family);\n font-size: 16px;\n color: var(--nylas-base-800);\n p {\n margin: 0;\n }\n .error {\n color: var(--nylas-error);\n }\n}\n\n.dropdown {\n display: inline-block;\n width: inherit;\n}\n\n.dropbtn {\n color: var(--nylas-base-800);\n padding: 14px;\n font-size: 1rem;\n font-family: var(--nylas-font-family);\n cursor: pointer;\n display: flex;\n justify-content: space-between;\n gap: 0.5rem;\n background: transparent;\n border: 1px solid var(--nylas-base-300);\n border-radius: var(--nylas-border-radius-2x);\n &.error {\n border: 1px solid var(--nylas-error);\n }\n &.focus {\n background: transparent;\n }\n &:hover,\n &:active {\n outline: 1px solid var(--nylas-primary);\n }\n &:active {\n outline: 2px solid var(--nylas-primary);\n }\n span {\n &.chevron {\n display: flex;\n align-self: center;\n }\n &.open {\n transform: rotate(90deg);\n }\n &.closed {\n transform: rotate(270deg);\n }\n &.selected-option {\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n max-width: 144px;\n font-size: 14px;\n line-height: 20px;\n @media #{$mobile} {\n max-width: 124px;\n font-size: 16px;\n }\n }\n }\n}\n\n.dropdown-content {\n display: block;\n margin-top: 0.5rem;\n background-color: var(--nylas-base-0);\n width: 100%;\n max-height: 336px;\n overflow: auto;\n z-index: 1;\n border-radius: 4px;\n position: absolute;\n @media #{$mobile} {\n right: 0;\n width: 325px;\n max-width: unset;\n }\n box-shadow: 0px 4px 6px -2px rgba(0, 0, 0, 0.05);\n box-shadow: 0px 10px 15px -3px rgba(0, 0, 0, 0.1);\n}\n\n.search-box {\n border-bottom: 1px solid var(--nylas-base-200);\n padding: 10px;\n position: sticky;\n top: 0;\n background: var(--nylas-base-0);\n .icon {\n position: absolute;\n top: 1.25rem;\n left: 1.25rem;\n color: var(--nylas-base-300);\n }\n}\n\n.dropdown-content ul {\n padding: 0;\n list-style-type: none;\n color: var(--nylas-base-900);\n max-height: 336px;\n li {\n padding: 16px, 12px, 16px, 12px;\n color: black;\n padding: 12px 16px;\n text-decoration: none;\n display: block;\n font-family: inherit;\n font-size: 14px;\n font-weight: 400;\n line-height: 20px;\n letter-spacing: 0px;\n text-align: left;\n cursor: pointer;\n &:hover,\n &:focus {\n background-color: var(--nylas-base-100);\n }\n }\n}\n\n.dropdown-content .selected {\n background-color: #e7e7e7;\n}\n\ninput[type='text'] {\n width: -webkit-fill-available;\n padding: inherit;\n border: 1px solid #ccc;\n border-radius: 4px;\n position: sticky;\n background: no-repeat scroll 7px 7px;\n padding-left: 30px;\n background-size: 16px 16px;\n}\n","import { Component, Element, Event, EventEmitter, h, Listen, Prop, State, Watch } from '@stencil/core';\n\ninterface DropdownOption {\n labelHTML?: HTMLElement;\n label: string;\n value: string;\n}\n\n/**\n * The `select-dropdown` component is a dropdown that allows users to select an option from a list of options.\n * @part sd_dropdown - The dropdown container\n * @part sd_dropdown-button - The dropdown button\n * @part sd_dropdown-button-selected-label - The selected option label\n * @part sd_dropdown-content - The dropdown content\n * @part sd_dropdown_label - The dropdown label\n */\n@Component({\n tag: 'select-dropdown',\n styleUrl: 'select-dropdown.scss',\n shadow: true,\n})\nexport class SelectDropdown {\n @Element() el!: HTMLElement;\n\n private inputRef?: HTMLInputElement;\n\n // Props\n /**\n * The name of the dropdown\n */\n @Prop() name!: string;\n /**\n * The options to display in the dropdown\n */\n @Prop() options: DropdownOption[] = [];\n /**\n * The default selected option\n */\n @Prop() defaultSelectedOption?: DropdownOption;\n /**\n * Should show search input\n */\n @Prop() withSearch: boolean = true;\n\n /**\n * The label for the dropdown, skipped if no label is provided\n */\n @Prop() label?: string;\n\n /**\n * If true, the dropdown is required for form submission\n */\n @Prop() required: boolean = false;\n\n /**\n * Show pluralized label for the selected option. This is s tring that is appended to the selected option label as a suffix.\n */\n @Prop() pluralizedLabel: string = '';\n\n // States\n /**\n * The selected option\n */\n @State() selectedOption: DropdownOption | null = this.defaultSelectedOption || null;\n /**\n * The open state of the dropdown\n */\n @State() isOpen: boolean = false;\n /**\n * The search value for the dropdown\n */\n @State() searchValue: string = '';\n /**\n * The filtered options based on the search value\n */\n @State() filteredOptions: DropdownOption[] = [...this.options];\n /**\n * The aria-activedescendant attribute for the listbox element to indicate the currently active\n * option in the list box to screen readers. The value of aria-activedescendant is the ID of\n * the active option.\n */\n @State() ariaActivedescendant: string = '';\n\n /**\n * The error message to display when the value is empty or null and the dropdown is required\n */\n @State() errorMessage: string = '';\n\n // Events\n /**\n * This event is fired when the selected option is changed\n */\n @Event({ bubbles: true, composed: true }) nylasFormDropdownChanged!: EventEmitter<{\n value: DropdownOption['value'];\n name: string;\n error?: string;\n label?: string;\n }>;\n\n @Watch('options')\n optionsChangedHandler(newValue: DropdownOption[], oldValue: DropdownOption[]) {\n if (newValue === oldValue) {\n return;\n }\n this.filteredOptions = newValue;\n }\n\n @Watch('defaultSelectedOption')\n defaultSelectedOptionChangedHandler(newValue: DropdownOption, oldValue: DropdownOption) {\n if (newValue.label === oldValue.label) {\n return;\n }\n this.selectedOption = newValue;\n }\n\n // Lifecycle methods\n componentWillLoad() {\n this.filteredOptions = this.options;\n // Set the selected option to the first option if no option is selected\n if (!this.selectedOption && !!this.defaultSelectedOption) {\n this.selectedOption = this.defaultSelectedOption;\n }\n if (!this.selectedOption && this.options.length > 0) {\n this.selectedOption = this.options[0];\n }\n }\n\n // Event listeners\n /**\n * Listen for the bookingFormSubmitted event to validate the input value when the form is submitted.\n */\n @Listen('bookingFormSubmitted', { target: 'document' })\n handleBookingFormSubmitted(event: CustomEvent) {\n this.validate(this.selectedOption?.value || '');\n if (this.errorMessage) {\n event.preventDefault();\n }\n }\n\n // Methods\n validate(value: string) {\n if (this.required && !value) {\n this.errorMessage = `${this.label} is required.`;\n } else {\n this.errorMessage = '';\n }\n }\n toggleDropdown(): void {\n this.isOpen = !this.isOpen;\n }\n\n filterOptions(event: Event): void {\n const value = (event.target as HTMLInputElement).value;\n this.searchValue = value;\n this.filteredOptions = this.options.filter(option => option.label.toLowerCase().includes(value.toLowerCase()));\n }\n\n selectOption(option: DropdownOption): void {\n this.errorMessage = '';\n this.selectedOption = option;\n this.toggleDropdown();\n this.nylasFormDropdownChanged.emit({\n value: option.value,\n name: this.name,\n error: this.errorMessage,\n label: this.label,\n });\n }\n\n handleSelectButtonKeyDown(event: KeyboardEvent): void {\n switch (event.key) {\n case 'ArrowDown':\n case 'Enter':\n event.preventDefault();\n if (!this.isOpen) {\n this.toggleDropdown();\n }\n this.inputRef?.focus();\n break;\n case 'Escape':\n this.isOpen = false;\n break;\n }\n }\n\n handleListboxKeydown(e) {\n const items = this.filteredOptions; // Assuming this is the array of your current filtered options\n const currentIndex = items.findIndex(item => item.value === this.ariaActivedescendant);\n if (e.key === 'ArrowDown' || (e.key === 'Tab' && !e.shiftKey)) {\n e.preventDefault();\n if (currentIndex === items.length - 1) {\n this.ariaActivedescendant = '';\n this.inputRef?.focus();\n return;\n }\n const nextIndex = currentIndex + 1 < items.length ? currentIndex + 1 : 0;\n this.ariaActivedescendant = items[nextIndex].value;\n this.focusOption(nextIndex);\n } else if (e.key === 'ArrowUp' || (e.key === 'Tab' && e.shiftKey)) {\n e.preventDefault();\n if (currentIndex === 0) {\n this.ariaActivedescendant = '';\n this.inputRef?.focus();\n return;\n }\n const prevIndex = currentIndex - 1 >= 0 ? currentIndex - 1 : items.length - 1;\n this.ariaActivedescendant = items[prevIndex].value;\n this.focusOption(prevIndex);\n } else if (e.key === 'Enter') {\n e.preventDefault();\n if (this.ariaActivedescendant) {\n this.selectOption(items[currentIndex]);\n }\n } else if (e.key === 'Escape') {\n this.isOpen = false;\n }\n }\n\n focusOption(index) {\n const option = this.filteredOptions[index];\n if (!option) return; // Guard clause in case index is out of bounds\n\n const elementId = option.value;\n const element = this.el.shadowRoot?.getElementById(elementId) as HTMLLIElement;\n\n if (element) {\n element.focus(); // Set focus on the element\n element.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n }\n }\n\n handleComboboxKeyDown(event: KeyboardEvent): void {\n if (event.key === 'ArrowDown' || (event.key == 'Tab' && !event.shiftKey)) {\n event.preventDefault();\n this.ariaActivedescendant = this.filteredOptions[0].value;\n this.focusOption(0);\n } else if (event.key === 'ArrowUp' || (event.key === 'Tab' && event.shiftKey)) {\n event.preventDefault();\n this.ariaActivedescendant = this.filteredOptions[this.filteredOptions.length - 1].value;\n this.focusOption(this.filteredOptions.length - 1);\n } else if (event.key === 'Escape') {\n this.isOpen = false;\n }\n }\n\n // Event listeners\n @Listen('click', { target: 'document', capture: true })\n handleOutsideClick(event: MouseEvent) {\n // Get the path of the event\n const path = event.composedPath();\n\n // Check if the path includes the host element\n const isClickInside = path.includes(this.el);\n\n if (!isClickInside && this.isOpen) {\n this.isOpen = false;\n }\n }\n\n render() {\n return (\n <div class=\"dropdown\" part=\"sd_dropdown\">\n <label part=\"sd_dropdown_label\" class={{ error: !!this.errorMessage }}>\n {this.label && (\n <p>\n <span class=\"label\">{this.label}</span>\n {this.required && <span class=\"required\">*</span>}\n </p>\n )}\n <button\n part=\"sd_dropdown-button\"\n class={{ dropbtn: true, open: this.isOpen, error: !!this.errorMessage }}\n onClick={() => this.toggleDropdown()}\n aria-haspopup=\"listbox\"\n aria-expanded={this.isOpen ? 'true' : 'false'}\n aria-label={this.name}\n onKeyDown={e => this.handleSelectButtonKeyDown(e)}\n >\n <slot name=\"select-icon\" aria-hidden=\"true\"></slot>\n <span class=\"selected-option\" part=\"sd_dropdown-button-selected-label\">\n {this.selectedOption?.label ? `${this.selectedOption?.label + this.pluralizedLabel}` : ''}\n </span>\n <span\n class={{\n open: this.isOpen,\n closed: !this.isOpen,\n chevron: true,\n }}\n aria-hidden=\"true\"\n >\n <chevron-icon width=\"16\" height=\"16\" />\n </span>\n </button>\n {this.errorMessage && <span class=\"error help-text\">{this.errorMessage}</span>}\n </label>\n\n {this.isOpen ? (\n <div class=\"dropdown-content\" part=\"sd_dropdown-content\">\n {this.withSearch && (\n <div class={{ 'search-box': true, 'open': this.isOpen }}>\n <search-icon width=\"15\" height=\"15\" class={'icon'} />\n <input\n type=\"text\"\n role=\"combobox\"\n placeholder=\"Search\"\n value={this.searchValue}\n ref={el => (this.inputRef = el)}\n onInput={event => this.filterOptions(event)}\n onKeyDown={e => this.handleComboboxKeyDown(e)}\n />\n </div>\n )}\n <ul tabindex=\"-1\" role=\"listbox\" aria-label={this.name} aria-activedescendant={this.ariaActivedescendant} onKeyDown={e => this.handleListboxKeydown(e)}>\n {this.filteredOptions.map(\n option =>\n option.value && (\n <li tabindex=\"0\" key={option.value} id={option.value} onClick={() => this.selectOption(option)} role=\"option\">\n {option.labelHTML ? option.labelHTML : option.label}\n </li>\n ),\n )}\n </ul>\n </div>\n ) : null}\n </div>\n );\n }\n}\n"],"version":3}
1
+ {"file":"select-dropdown.entry.js","mappings":";;AAAA,MAAM,iBAAiB,GAAG,2sGAA2sG;;MCqBxtG,cAAc;;;;;uBAaW,EAAE;;0BAQR,IAAI;;wBAUN,KAAK;+BAKC,EAAE;8BAMa,IAAI,CAAC,qBAAqB,IAAI,IAAI;sBAIxD,KAAK;2BAID,EAAE;+BAIY,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;oCAMtB,EAAE;4BAKV,EAAE;;IAclC,qBAAqB,CAAC,QAA0B,EAAE,QAA0B;QAC1E,IAAI,QAAQ,KAAK,QAAQ,EAAE;YACzB,OAAO;SACR;QACD,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC;KACjC;IAGD,mCAAmC,CAAC,QAAwB,EAAE,QAAwB;QACpF,IAAI,OAAO,QAAQ,KAAK,WAAW,IAAI,QAAQ,EAAE,KAAK,KAAK,QAAQ,EAAE,KAAK,EAAE;YAC1E,OAAO;SACR;QACD,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC;KAChC;IAGD,iBAAiB;QACf,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC;QAEpC,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,CAAC,IAAI,CAAC,qBAAqB,EAAE;YACxD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC;SAClD;QACD,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YACnD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;SACvC;KACF;IAOD,0BAA0B,CAAC,KAAkB;QAC3C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;QAChD,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,KAAK,CAAC,cAAc,EAAE,CAAC;SACxB;KACF;IAGD,QAAQ,CAAC,KAAa;QACpB,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK,EAAE;YAC3B,IAAI,CAAC,YAAY,GAAG,GAAG,IAAI,CAAC,KAAK,eAAe,CAAC;SAClD;aAAM;YACL,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;SACxB;KACF;IACD,cAAc;QACZ,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;KAC5B;IAED,aAAa,CAAC,KAAY;QACxB,MAAM,KAAK,GAAI,KAAK,CAAC,MAA2B,CAAC,KAAK,CAAC;QACvD,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;KAChH;IAED,YAAY,CAAC,MAAsB;QACjC,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;QAC7B,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC;YACjC,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,YAAY;YACxB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC,CAAC;KACJ;IAED,yBAAyB,CAAC,KAAoB;QAC5C,QAAQ,KAAK,CAAC,GAAG;YACf,KAAK,WAAW,CAAC;YACjB,KAAK,OAAO;gBACV,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;oBAChB,IAAI,CAAC,cAAc,EAAE,CAAC;iBACvB;gBACD,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC;gBACvB,MAAM;YACR,KAAK,QAAQ;gBACX,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;gBACpB,MAAM;SACT;KACF;IAED,oBAAoB,CAAC,CAAC;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC;QACnC,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACvF,IAAI,CAAC,CAAC,GAAG,KAAK,WAAW,KAAK,CAAC,CAAC,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE;YAC7D,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,IAAI,YAAY,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;gBACrC,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;gBAC/B,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC;gBACvB,OAAO;aACR;YACD,MAAM,SAAS,GAAG,YAAY,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC;YACzE,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC;YACnD,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;SAC7B;aAAM,IAAI,CAAC,CAAC,GAAG,KAAK,SAAS,KAAK,CAAC,CAAC,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE;YACjE,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,IAAI,YAAY,KAAK,CAAC,EAAE;gBACtB,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;gBAC/B,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC;gBACvB,OAAO;aACR;YACD,MAAM,SAAS,GAAG,YAAY,GAAG,CAAC,IAAI,CAAC,GAAG,YAAY,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;YAC9E,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC;YACnD,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;SAC7B;aAAM,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,EAAE;YAC5B,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,IAAI,IAAI,CAAC,oBAAoB,EAAE;gBAC7B,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;aACxC;SACF;aAAM,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ,EAAE;YAC7B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;SACrB;KACF;IAED,WAAW,CAAC,KAAK;QACf,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM;YAAE,OAAO;QAEpB,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,cAAc,CAAC,SAAS,CAAkB,CAAC;QAE/E,IAAI,OAAO,EAAE;YACX,OAAO,CAAC,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;SAClE;KACF;IAED,qBAAqB,CAAC,KAAoB;QACxC,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,KAAK,KAAK,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;YACxE,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAC1D,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;SACrB;aAAM,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,KAAK,KAAK,CAAC,GAAG,KAAK,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE;YAC7E,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;YACxF,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;SACnD;aAAM,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;YACjC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;SACrB;KACF;IAID,kBAAkB,CAAC,KAAiB;QAElC,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;QAGlC,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAE7C,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,MAAM,EAAE;YACjC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;SACrB;KACF;IAED,MAAM;QACJ,QACE,4DAAK,KAAK,EAAC,UAAU,EAAC,IAAI,EAAC,aAAa,IACtC,8DAAO,IAAI,EAAC,mBAAmB,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,IAClE,IAAI,CAAC,KAAK,KACT,aACE,YAAM,KAAK,EAAC,OAAO,IAAE,IAAI,CAAC,KAAK,CAAQ,EACtC,IAAI,CAAC,QAAQ,IAAI,YAAM,KAAK,EAAC,UAAU,QAAS,CAC/C,CACL,EACD,+DACE,IAAI,EAAC,oBAAoB,EACzB,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,EACvE,OAAO,EAAE,MAAM,IAAI,CAAC,cAAc,EAAE,mBACtB,SAAS,mBACR,IAAI,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,gBACjC,IAAI,CAAC,IAAI,EACrB,SAAS,EAAE,CAAC,IAAI,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,IAEjD,6DAAM,IAAI,EAAC,aAAa,iBAAa,MAAM,GAAQ,EACnD,6DAAM,KAAK,EAAC,iBAAiB,EAAC,IAAI,EAAC,mCAAmC,IACnE,IAAI,CAAC,cAAc,EAAE,KAAK,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE,GAAG,EAAE,CACpF,EACP,6DACE,KAAK,EAAE;gBACL,IAAI,EAAE,IAAI,CAAC,MAAM;gBACjB,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM;gBACpB,OAAO,EAAE,IAAI;aACd,iBACW,MAAM,IAElB,qEAAc,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,GAAG,CAClC,CACA,EACR,IAAI,CAAC,YAAY,IAAI,YAAM,KAAK,EAAC,iBAAiB,IAAE,IAAI,CAAC,YAAY,CAAQ,CACxE,EAEP,IAAI,CAAC,MAAM,IACV,WAAK,KAAK,EAAC,kBAAkB,EAAC,IAAI,EAAC,qBAAqB,IACrD,IAAI,CAAC,UAAU,KACd,WAAK,KAAK,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IACrD,mBAAa,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,KAAK,EAAE,MAAM,GAAI,EACrD,aACE,IAAI,EAAC,MAAM,EACX,IAAI,EAAC,UAAU,EACf,WAAW,EAAC,QAAQ,EACpB,KAAK,EAAE,IAAI,CAAC,WAAW,EACvB,GAAG,EAAE,EAAE,KAAK,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,EAC/B,OAAO,EAAE,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAC3C,SAAS,EAAE,CAAC,IAAI,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,GAC7C,CACE,CACP,EACD,UAAI,QAAQ,EAAC,IAAI,EAAC,IAAI,EAAC,SAAS,gBAAa,IAAI,CAAC,IAAI,2BAAyB,IAAI,CAAC,oBAAoB,EAAE,SAAS,EAAE,CAAC,IAAI,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,IACnJ,IAAI,CAAC,eAAe,CAAC,GAAG,CACvB,MAAM,IACJ,MAAM,CAAC,KAAK,KACV,UAAI,QAAQ,EAAC,GAAG,EAAC,GAAG,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,IAAI,EAAC,QAAQ,IAC1G,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,CAChD,CACN,CACJ,CACE,CACD,IACJ,IAAI,CACJ,EACN;KACH;;;;;;;;;;;","names":[],"sources":["src/components/design-system/select-dropdown/select-dropdown.scss?tag=select-dropdown&encapsulation=shadow","src/components/design-system/select-dropdown/select-dropdown.tsx"],"sourcesContent":["@import '../../../common/styles/variables.scss';\n@import '../../../common/mixins/inputs.scss';\n\n:host {\n display: block;\n position: relative;\n @media #{$mobile} {\n position: unset;\n }\n @include default-css-variables;\n width: 100%;\n}\n\nlabel {\n @include input-label;\n flex-direction: column;\n gap: 4px;\n font-family: var(--nylas-font-family);\n font-size: 16px;\n color: var(--nylas-base-800);\n p {\n margin: 0;\n }\n .error {\n color: var(--nylas-error);\n }\n}\n\n.dropdown {\n display: inline-block;\n width: inherit;\n}\n\n.dropbtn {\n color: var(--nylas-base-800);\n padding: 14px;\n font-size: 1rem;\n font-family: var(--nylas-font-family);\n cursor: pointer;\n display: flex;\n justify-content: space-between;\n gap: 0.5rem;\n background: transparent;\n border: 1px solid var(--nylas-base-300);\n border-radius: var(--nylas-border-radius-2x);\n &.error {\n border: 1px solid var(--nylas-error);\n }\n &.focus {\n background: transparent;\n }\n &:hover,\n &:active {\n outline: 1px solid var(--nylas-primary);\n }\n &:active {\n outline: 2px solid var(--nylas-primary);\n }\n span {\n &.chevron {\n display: flex;\n align-self: center;\n }\n &.open {\n transform: rotate(90deg);\n }\n &.closed {\n transform: rotate(270deg);\n }\n &.selected-option {\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n max-width: 144px;\n font-size: 14px;\n line-height: 20px;\n @media #{$mobile} {\n max-width: 124px;\n font-size: 16px;\n }\n }\n }\n}\n\n.dropdown-content {\n display: block;\n margin-top: 0.5rem;\n background-color: var(--nylas-base-0);\n width: 100%;\n max-height: 336px;\n overflow: auto;\n z-index: 1;\n border-radius: 4px;\n position: absolute;\n @media #{$mobile} {\n right: 0;\n width: 325px;\n max-width: unset;\n }\n box-shadow: 0px 4px 6px -2px rgba(0, 0, 0, 0.05);\n box-shadow: 0px 10px 15px -3px rgba(0, 0, 0, 0.1);\n}\n\n.search-box {\n border-bottom: 1px solid var(--nylas-base-200);\n padding: 10px;\n position: sticky;\n top: 0;\n background: var(--nylas-base-0);\n .icon {\n position: absolute;\n top: 1.25rem;\n left: 1.25rem;\n color: var(--nylas-base-300);\n }\n}\n\n.dropdown-content ul {\n padding: 0;\n list-style-type: none;\n color: var(--nylas-base-900);\n max-height: 336px;\n li {\n padding: 16px, 12px, 16px, 12px;\n color: black;\n padding: 12px 16px;\n text-decoration: none;\n display: block;\n font-family: inherit;\n font-size: 14px;\n font-weight: 400;\n line-height: 20px;\n letter-spacing: 0px;\n text-align: left;\n cursor: pointer;\n &:hover,\n &:focus {\n background-color: var(--nylas-base-100);\n }\n }\n}\n\n.dropdown-content .selected {\n background-color: #e7e7e7;\n}\n\ninput[type='text'] {\n width: -webkit-fill-available;\n padding: inherit;\n border: 1px solid #ccc;\n border-radius: 4px;\n position: sticky;\n background: no-repeat scroll 7px 7px;\n padding-left: 30px;\n background-size: 16px 16px;\n}\n","import { Component, Element, Event, EventEmitter, h, Listen, Prop, State, Watch } from '@stencil/core';\n\ninterface DropdownOption {\n labelHTML?: HTMLElement;\n label: string;\n value: string;\n}\n\n/**\n * The `select-dropdown` component is a dropdown that allows users to select an option from a list of options.\n * @part sd_dropdown - The dropdown container\n * @part sd_dropdown-button - The dropdown button\n * @part sd_dropdown-button-selected-label - The selected option label\n * @part sd_dropdown-content - The dropdown content\n * @part sd_dropdown_label - The dropdown label\n */\n@Component({\n tag: 'select-dropdown',\n styleUrl: 'select-dropdown.scss',\n shadow: true,\n})\nexport class SelectDropdown {\n @Element() el!: HTMLElement;\n\n private inputRef?: HTMLInputElement;\n\n // Props\n /**\n * The name of the dropdown\n */\n @Prop() name!: string;\n /**\n * The options to display in the dropdown\n */\n @Prop() options: DropdownOption[] = [];\n /**\n * The default selected option\n */\n @Prop() defaultSelectedOption?: DropdownOption;\n /**\n * Should show search input\n */\n @Prop() withSearch: boolean = true;\n\n /**\n * The label for the dropdown, skipped if no label is provided\n */\n @Prop() label?: string;\n\n /**\n * If true, the dropdown is required for form submission\n */\n @Prop() required: boolean = false;\n\n /**\n * Show pluralized label for the selected option. This is s tring that is appended to the selected option label as a suffix.\n */\n @Prop() pluralizedLabel: string = '';\n\n // States\n /**\n * The selected option\n */\n @State() selectedOption: DropdownOption | null = this.defaultSelectedOption || null;\n /**\n * The open state of the dropdown\n */\n @State() isOpen: boolean = false;\n /**\n * The search value for the dropdown\n */\n @State() searchValue: string = '';\n /**\n * The filtered options based on the search value\n */\n @State() filteredOptions: DropdownOption[] = [...this.options];\n /**\n * The aria-activedescendant attribute for the listbox element to indicate the currently active\n * option in the list box to screen readers. The value of aria-activedescendant is the ID of\n * the active option.\n */\n @State() ariaActivedescendant: string = '';\n\n /**\n * The error message to display when the value is empty or null and the dropdown is required\n */\n @State() errorMessage: string = '';\n\n // Events\n /**\n * This event is fired when the selected option is changed\n */\n @Event({ bubbles: true, composed: true }) nylasFormDropdownChanged!: EventEmitter<{\n value: DropdownOption['value'];\n name: string;\n error?: string;\n label?: string;\n }>;\n\n @Watch('options')\n optionsChangedHandler(newValue: DropdownOption[], oldValue: DropdownOption[]) {\n if (newValue === oldValue) {\n return;\n }\n this.filteredOptions = newValue;\n }\n\n @Watch('defaultSelectedOption')\n defaultSelectedOptionChangedHandler(newValue: DropdownOption, oldValue: DropdownOption) {\n if (typeof newValue === 'undefined' || newValue?.label === oldValue?.label) {\n return;\n }\n this.selectedOption = newValue;\n }\n\n // Lifecycle methods\n componentWillLoad() {\n this.filteredOptions = this.options;\n // Set the selected option to the first option if no option is selected\n if (!this.selectedOption && !!this.defaultSelectedOption) {\n this.selectedOption = this.defaultSelectedOption;\n }\n if (!this.selectedOption && this.options.length > 0) {\n this.selectedOption = this.options[0];\n }\n }\n\n // Event listeners\n /**\n * Listen for the bookingFormSubmitted event to validate the input value when the form is submitted.\n */\n @Listen('bookingFormSubmitted', { target: 'document' })\n handleBookingFormSubmitted(event: CustomEvent) {\n this.validate(this.selectedOption?.value || '');\n if (this.errorMessage) {\n event.preventDefault();\n }\n }\n\n // Methods\n validate(value: string) {\n if (this.required && !value) {\n this.errorMessage = `${this.label} is required.`;\n } else {\n this.errorMessage = '';\n }\n }\n toggleDropdown(): void {\n this.isOpen = !this.isOpen;\n }\n\n filterOptions(event: Event): void {\n const value = (event.target as HTMLInputElement).value;\n this.searchValue = value;\n this.filteredOptions = this.options.filter(option => option.label.toLowerCase().includes(value.toLowerCase()));\n }\n\n selectOption(option: DropdownOption): void {\n this.errorMessage = '';\n this.selectedOption = option;\n this.toggleDropdown();\n this.nylasFormDropdownChanged.emit({\n value: option.value,\n name: this.name,\n error: this.errorMessage,\n label: this.label,\n });\n }\n\n handleSelectButtonKeyDown(event: KeyboardEvent): void {\n switch (event.key) {\n case 'ArrowDown':\n case 'Enter':\n event.preventDefault();\n if (!this.isOpen) {\n this.toggleDropdown();\n }\n this.inputRef?.focus();\n break;\n case 'Escape':\n this.isOpen = false;\n break;\n }\n }\n\n handleListboxKeydown(e) {\n const items = this.filteredOptions; // Assuming this is the array of your current filtered options\n const currentIndex = items.findIndex(item => item.value === this.ariaActivedescendant);\n if (e.key === 'ArrowDown' || (e.key === 'Tab' && !e.shiftKey)) {\n e.preventDefault();\n if (currentIndex === items.length - 1) {\n this.ariaActivedescendant = '';\n this.inputRef?.focus();\n return;\n }\n const nextIndex = currentIndex + 1 < items.length ? currentIndex + 1 : 0;\n this.ariaActivedescendant = items[nextIndex].value;\n this.focusOption(nextIndex);\n } else if (e.key === 'ArrowUp' || (e.key === 'Tab' && e.shiftKey)) {\n e.preventDefault();\n if (currentIndex === 0) {\n this.ariaActivedescendant = '';\n this.inputRef?.focus();\n return;\n }\n const prevIndex = currentIndex - 1 >= 0 ? currentIndex - 1 : items.length - 1;\n this.ariaActivedescendant = items[prevIndex].value;\n this.focusOption(prevIndex);\n } else if (e.key === 'Enter') {\n e.preventDefault();\n if (this.ariaActivedescendant) {\n this.selectOption(items[currentIndex]);\n }\n } else if (e.key === 'Escape') {\n this.isOpen = false;\n }\n }\n\n focusOption(index) {\n const option = this.filteredOptions[index];\n if (!option) return; // Guard clause in case index is out of bounds\n\n const elementId = option.value;\n const element = this.el.shadowRoot?.getElementById(elementId) as HTMLLIElement;\n\n if (element) {\n element.focus(); // Set focus on the element\n element.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n }\n }\n\n handleComboboxKeyDown(event: KeyboardEvent): void {\n if (event.key === 'ArrowDown' || (event.key == 'Tab' && !event.shiftKey)) {\n event.preventDefault();\n this.ariaActivedescendant = this.filteredOptions[0].value;\n this.focusOption(0);\n } else if (event.key === 'ArrowUp' || (event.key === 'Tab' && event.shiftKey)) {\n event.preventDefault();\n this.ariaActivedescendant = this.filteredOptions[this.filteredOptions.length - 1].value;\n this.focusOption(this.filteredOptions.length - 1);\n } else if (event.key === 'Escape') {\n this.isOpen = false;\n }\n }\n\n // Event listeners\n @Listen('click', { target: 'document', capture: true })\n handleOutsideClick(event: MouseEvent) {\n // Get the path of the event\n const path = event.composedPath();\n\n // Check if the path includes the host element\n const isClickInside = path.includes(this.el);\n\n if (!isClickInside && this.isOpen) {\n this.isOpen = false;\n }\n }\n\n render() {\n return (\n <div class=\"dropdown\" part=\"sd_dropdown\">\n <label part=\"sd_dropdown_label\" class={{ error: !!this.errorMessage }}>\n {this.label && (\n <p>\n <span class=\"label\">{this.label}</span>\n {this.required && <span class=\"required\">*</span>}\n </p>\n )}\n <button\n part=\"sd_dropdown-button\"\n class={{ dropbtn: true, open: this.isOpen, error: !!this.errorMessage }}\n onClick={() => this.toggleDropdown()}\n aria-haspopup=\"listbox\"\n aria-expanded={this.isOpen ? 'true' : 'false'}\n aria-label={this.name}\n onKeyDown={e => this.handleSelectButtonKeyDown(e)}\n >\n <slot name=\"select-icon\" aria-hidden=\"true\"></slot>\n <span class=\"selected-option\" part=\"sd_dropdown-button-selected-label\">\n {this.selectedOption?.label ? `${this.selectedOption?.label + this.pluralizedLabel}` : ''}\n </span>\n <span\n class={{\n open: this.isOpen,\n closed: !this.isOpen,\n chevron: true,\n }}\n aria-hidden=\"true\"\n >\n <chevron-icon width=\"16\" height=\"16\" />\n </span>\n </button>\n {this.errorMessage && <span class=\"error help-text\">{this.errorMessage}</span>}\n </label>\n\n {this.isOpen ? (\n <div class=\"dropdown-content\" part=\"sd_dropdown-content\">\n {this.withSearch && (\n <div class={{ 'search-box': true, 'open': this.isOpen }}>\n <search-icon width=\"15\" height=\"15\" class={'icon'} />\n <input\n type=\"text\"\n role=\"combobox\"\n placeholder=\"Search\"\n value={this.searchValue}\n ref={el => (this.inputRef = el)}\n onInput={event => this.filterOptions(event)}\n onKeyDown={e => this.handleComboboxKeyDown(e)}\n />\n </div>\n )}\n <ul tabindex=\"-1\" role=\"listbox\" aria-label={this.name} aria-activedescendant={this.ariaActivedescendant} onKeyDown={e => this.handleListboxKeydown(e)}>\n {this.filteredOptions.map(\n option =>\n option.value && (\n <li tabindex=\"0\" key={option.value} id={option.value} onClick={() => this.selectOption(option)} role=\"option\">\n {option.labelHTML ? option.labelHTML : option.label}\n </li>\n ),\n )}\n </ul>\n </div>\n ) : null}\n </div>\n );\n }\n}\n"],"version":3}
@@ -9,7 +9,7 @@ const SentIcon = class {
9
9
  this.height = '15';
10
10
  }
11
11
  render() {
12
- return (h("svg", { key: 'b3c088995658cd0e496bbb5add5a4f937b96837d', width: this.width, height: this.height, viewBox: "0 0 24 24", fill: "auto", xmlns: "http://www.w3.org/2000/svg" }, h("path", { key: '314fb0dd64e67ad973dac494453e2c1bbbdc9f3d', d: "M21.5 12L3.5 3.5L3.5 20.5L21.5 12Z", stroke: "auto", "stroke-width": "1.5" }), h("path", { key: 'f24cbf7ceadf6efa9676bb277fc96ac254d9c668', d: "M3.5 3.5L12 10.5", stroke: "auto", "stroke-width": "1.5" }), h("path", { key: '491979a302745c0ecbce438405cbc392593d47dd', d: "M3.5 20.5L12 13.5", stroke: "auto", "stroke-width": "1.5" })));
12
+ return (h("svg", { key: '1d987da73b497a15a2a5595e3719dd9fe2571dd8', width: this.width, height: this.height, viewBox: "0 0 24 24", fill: "auto", xmlns: "http://www.w3.org/2000/svg" }, h("path", { key: 'ab98c2c75245ec1feb91de8b46ab7f15a8aded0b', d: "M21.5 12L3.5 3.5L3.5 20.5L21.5 12Z", stroke: "auto", "stroke-width": "1.5" }), h("path", { key: '4e8a2ff35b1b2cb8d150f30e209cf45340e94013', d: "M3.5 3.5L12 10.5", stroke: "auto", "stroke-width": "1.5" }), h("path", { key: '6689fc0f544843a9a0627e79d88e8e9787ef2077', d: "M3.5 20.5L12 13.5", stroke: "auto", "stroke-width": "1.5" })));
13
13
  }
14
14
  };
15
15
  SentIcon.style = iconCss;
@@ -9,7 +9,7 @@ const SpamIcon = class {
9
9
  this.height = '15';
10
10
  }
11
11
  render() {
12
- return (h("svg", { key: 'a1faf60f8ef46ef4f770dda1da7d3040836faac9', width: this.width, height: this.height, viewBox: "0 0 24 24", fill: "auto", xmlns: "http://www.w3.org/2000/svg" }, h("path", { key: 'a8a11efc172095bd69c052641ac25a2deeba649d', d: "M20 3H4C2.89543 3 2 3.89543 2 5V19C2 20.1046 2.89543 21 4 21H20C21.1046 21 22 20.1046 22 19V5C22 3.89543 21.1046 3 20 3Z", stroke: "auto", "stroke-width": "1.5" }), h("path", { key: '2601512a6e12ac6f51145a3907d8d672f71e8cb4', d: "M2 5L12 12.5L22 5", stroke: "auto", "stroke-width": "1.5" })));
12
+ return (h("svg", { key: 'bdbcaf79a1c8379867cc533963bb7916df1f8c22', width: this.width, height: this.height, viewBox: "0 0 24 24", fill: "auto", xmlns: "http://www.w3.org/2000/svg" }, h("path", { key: 'deecdfc0927c7bccca2a371ffdda8695ecee1355', d: "M20 3H4C2.89543 3 2 3.89543 2 5V19C2 20.1046 2.89543 21 4 21H20C21.1046 21 22 20.1046 22 19V5C22 3.89543 21.1046 3 20 3Z", stroke: "auto", "stroke-width": "1.5" }), h("path", { key: 'e9cc38d4d4868a9f1431109e5496575bc75c08b7', d: "M2 5L12 12.5L22 5", stroke: "auto", "stroke-width": "1.5" })));
13
13
  }
14
14
  };
15
15
  SpamIcon.style = iconCss;
@@ -9,7 +9,7 @@ const StarIcon = class {
9
9
  this.height = '15';
10
10
  }
11
11
  render() {
12
- return (h("svg", { key: 'cde183d1ecede967504e09a1163d49440cb90202', width: this.width, height: this.height, viewBox: "0 0 24 24", fill: "auto", xmlns: "http://www.w3.org/2000/svg" }, h("path", { key: '2e6a40a4ac879c3f7cb5fb932c54a65e86aafcf8', d: "M9.15316 5.40838C10.4198 3.13613 11.0531 2 12 2C12.9469 2 13.5802 3.13612 14.8468 5.40837L15.1745 5.99623C15.5345 6.64193 15.7144 6.96479 15.9951 7.17781C16.2757 7.39083 16.6251 7.4699 17.3241 7.62805L17.9605 7.77203C20.4201 8.32856 21.65 8.60682 21.9426 9.54773C22.2352 10.4886 21.3968 11.4691 19.7199 13.4299L19.2861 13.9372C18.8096 14.4944 18.5713 14.773 18.4641 15.1177C18.357 15.4624 18.393 15.8341 18.465 16.5776L18.5306 17.2544C18.7841 19.8706 18.9109 21.1787 18.1449 21.7602C17.3788 22.3417 16.2273 21.8115 13.9243 20.7512L13.3285 20.4768C12.6741 20.1755 12.3469 20.0248 12 20.0248C11.6531 20.0248 11.3259 20.1755 10.6715 20.4768L10.0757 20.7512C7.77268 21.8115 6.62118 22.3417 5.85515 21.7602C5.08912 21.1787 5.21588 19.8706 5.4694 17.2544L5.53498 16.5776C5.60703 15.8341 5.64305 15.4624 5.53586 15.1177C5.42868 14.773 5.19043 14.4944 4.71392 13.9372L4.2801 13.4299C2.60325 11.4691 1.76482 10.4886 2.05742 9.54773C2.35002 8.60682 3.57986 8.32856 6.03954 7.77203L6.67589 7.62805C7.37485 7.4699 7.72433 7.39083 8.00494 7.17781C8.28555 6.96479 8.46553 6.64194 8.82547 5.99623L9.15316 5.40838Z", stroke: "auto", "stroke-width": "1.5" })));
12
+ return (h("svg", { key: '6ac24835331b992a6b7fd10bd12287df5744f055', width: this.width, height: this.height, viewBox: "0 0 24 24", fill: "auto", xmlns: "http://www.w3.org/2000/svg" }, h("path", { key: 'a684ba5d0acb6289fb50994fcb171aeb14a2d69c', d: "M9.15316 5.40838C10.4198 3.13613 11.0531 2 12 2C12.9469 2 13.5802 3.13612 14.8468 5.40837L15.1745 5.99623C15.5345 6.64193 15.7144 6.96479 15.9951 7.17781C16.2757 7.39083 16.6251 7.4699 17.3241 7.62805L17.9605 7.77203C20.4201 8.32856 21.65 8.60682 21.9426 9.54773C22.2352 10.4886 21.3968 11.4691 19.7199 13.4299L19.2861 13.9372C18.8096 14.4944 18.5713 14.773 18.4641 15.1177C18.357 15.4624 18.393 15.8341 18.465 16.5776L18.5306 17.2544C18.7841 19.8706 18.9109 21.1787 18.1449 21.7602C17.3788 22.3417 16.2273 21.8115 13.9243 20.7512L13.3285 20.4768C12.6741 20.1755 12.3469 20.0248 12 20.0248C11.6531 20.0248 11.3259 20.1755 10.6715 20.4768L10.0757 20.7512C7.77268 21.8115 6.62118 22.3417 5.85515 21.7602C5.08912 21.1787 5.21588 19.8706 5.4694 17.2544L5.53498 16.5776C5.60703 15.8341 5.64305 15.4624 5.53586 15.1177C5.42868 14.773 5.19043 14.4944 4.71392 13.9372L4.2801 13.4299C2.60325 11.4691 1.76482 10.4886 2.05742 9.54773C2.35002 8.60682 3.57986 8.32856 6.03954 7.77203L6.67589 7.62805C7.37485 7.4699 7.72433 7.39083 8.00494 7.17781C8.28555 6.96479 8.46553 6.64194 8.82547 5.99623L9.15316 5.40838Z", stroke: "auto", "stroke-width": "1.5" })));
13
13
  }
14
14
  };
15
15
  StarIcon.style = iconCss;
@@ -9,7 +9,7 @@ const StopIcon = class {
9
9
  this.height = '15';
10
10
  }
11
11
  render() {
12
- return (h("svg", { key: 'b39e317c3d3a25ed955ef96918cb986264487f42', width: this.width, height: this.height, viewBox: "0 0 24 24", fill: "auto", xmlns: "http://www.w3.org/2000/svg" }, h("path", { key: 'cec2514adff36410b8f035e6d0439ff58c7bf5cf', d: "M4 4H20V20H4V4Z", stroke: "auto", "stroke-width": "1.5", "stroke-linecap": "round", "stroke-linejoin": "round" })));
12
+ return (h("svg", { key: '8b5933c45a744cde84b5f7e8d11f9ed7a0beafc1', width: this.width, height: this.height, viewBox: "0 0 24 24", fill: "auto", xmlns: "http://www.w3.org/2000/svg" }, h("path", { key: 'a7c58dc851d448fffc8b152c97900b22bbff8910', d: "M4 4H20V20H4V4Z", stroke: "auto", "stroke-width": "1.5", "stroke-linecap": "round", "stroke-linejoin": "round" })));
13
13
  }
14
14
  };
15
15
  StopIcon.style = iconCss;
@@ -52,7 +52,7 @@ const TextareaComponent = class {
52
52
  }
53
53
  }
54
54
  render() {
55
- return (h("label", { key: '53a7c178e2c02573ea764282c4d362ad43c59999', part: "tc__label", class: { error: !!this.error } }, h("p", { key: '9207758aeb7c6df5112baf8d2ec006b782e98f71' }, h("span", { key: '5b0835cb533db40654234682f04ccd67a42dccec', class: "label" }, this.label), this.required && h("span", { class: "required" }, "*")), h("textarea", { key: '1d98854a3ac31203d2abc80e4db7ca39d2fb4263', name: this.name, placeholder: this.placeholder, readOnly: this.readOnly, autoFocus: this.autoFocus, value: this.value, maxLength: this.maxLength, onInput: e => this.handleInput(e), class: { error: !!this.error }, part: "tc__textarea" }), this.error && h("span", { class: "error help-text" }, this.error)));
55
+ return (h("label", { key: 'c50781bd0a20ae976d5a8991f62a4491ad92cf26', part: "tc__label", class: { error: !!this.error } }, h("p", { key: '379135af9453a717675b92dd2a2bd9a7dcf0a201' }, h("span", { key: '03f6acdb661f443ada626d83a2d3bce76ce3b451', class: "label" }, this.label), this.required && h("span", { class: "required" }, "*")), h("textarea", { key: '93ad5be33536e6464021d594c3a30a8c251a9977', name: this.name, placeholder: this.placeholder, readOnly: this.readOnly, autoFocus: this.autoFocus, value: this.value, maxLength: this.maxLength, onInput: e => this.handleInput(e), class: { error: !!this.error }, part: "tc__textarea" }), this.error && h("span", { class: "error help-text" }, this.error)));
56
56
  }
57
57
  };
58
58
  TextareaComponent.style = textareaComponentCss;
@@ -1,5 +1,5 @@
1
1
  import { r as registerInstance, a as createEvent, h, i as getElement } from './index-582cfc93.js';
2
- import { a as debug } from './utils-49a1d17b.js';
2
+ import { a as debug } from './utils-04c10cbd.js';
3
3
  import './buffer-es6-5510d761.js';
4
4
  import './_commonjsHelpers-6cbf8316.js';
5
5
 
@@ -104,7 +104,7 @@ const TimePeriodSelector = class {
104
104
  this.selectedNumber = parseInt(this.numberOptions[0].value);
105
105
  }
106
106
  render() {
107
- return (h("div", { key: '89f218f22905064cadac4d109b631ec138b461ef', class: "time-period-selector" }, h("input-dropdown", { key: '2b86597d92716df5196e696a82ef813d895688dc', id: "time-number", name: 'time-number', inputValue: this.selectedNumber.toString(), exportparts: "sd_dropdown: tps__number-dropdown, sd_dropdown-button: tps__number-dropdown-button, sd_dropdown-content: tps__number-dropdown-content", options: this.numberOptions, defaultInputOption: this.numberOptions.find(i => i.value == this.selectedNumber.toString()) ?? this.numberOptions[0] }), h("select-dropdown", { key: '7283a087443a6c3827f41f0276e1c8024025eeca', id: "time-period", name: 'time-period', options: this.timePeriodOptions, exportparts: "sd_dropdown: tps__period-dropdown, sd_dropdown-button: tps__period-dropdown-button, sd_dropdown-content: tps__period-dropdown-content", pluralizedLabel: this.selectedNumber > 1 ? 's' : '', defaultSelectedOption: this.timePeriodOptions.find(i => i.value == this.selectedPeriod) ?? this.timePeriodOptions[0], withSearch: false })));
107
+ return (h("div", { key: 'a4b421b31d77e41c8ef3c2a7533699a6cfaeb60c', class: "time-period-selector" }, h("input-dropdown", { key: 'b5f99b1d27195ad8fdc3617cf04e3fba3cfd49dd', id: "time-number", name: 'time-number', inputValue: this.selectedNumber.toString(), exportparts: "sd_dropdown: tps__number-dropdown, sd_dropdown-button: tps__number-dropdown-button, sd_dropdown-content: tps__number-dropdown-content", options: this.numberOptions, defaultInputOption: this.numberOptions.find(i => i.value == this.selectedNumber.toString()) ?? this.numberOptions[0] }), h("select-dropdown", { key: 'c06e213131979c07431ed1a6964bd0e0e2338b97', id: "time-period", name: 'time-period', options: this.timePeriodOptions, exportparts: "sd_dropdown: tps__period-dropdown, sd_dropdown-button: tps__period-dropdown-button, sd_dropdown-content: tps__period-dropdown-content", pluralizedLabel: this.selectedNumber > 1 ? 's' : '', defaultSelectedOption: this.timePeriodOptions.find(i => i.value == this.selectedPeriod) ?? this.timePeriodOptions[0], withSearch: false })));
108
108
  }
109
109
  get host() { return getElement(this); }
110
110
  static get watchers() { return {
@@ -23,7 +23,7 @@ const ToggleSwitchComponent = class {
23
23
  });
24
24
  }
25
25
  render() {
26
- return (h("label", { key: 'e1666e95609e7e7b8364dc92630b3549786db8cd', class: "switch", htmlFor: "checkbox" }, h("input", { key: 'ed6b39d27fd625e94a8176dc35ac550f73b9aac9', type: "checkbox", id: "checkbox", name: this.name }), h("div", { key: 'f589add79b5f1941377b590e48627996c90b6730', class: "slider round" })));
26
+ return (h("label", { key: 'a0da5f3c6cac6310e9368ec4a5ed737decd04b5b', class: "switch", part: "ts_label" }, h("input", { key: '89e844d8135eadd471b960910794143ab1699afb', type: "checkbox", part: "ts_input", name: this.name, checked: this.isChecked, onChange: () => this.toggleCheck() }), h("div", { key: '19e8cea0befc42520c775555c8de96ac83d1612d', class: "slider round", part: "ts_slider" })));
27
27
  }
28
28
  };
29
29
  ToggleSwitchComponent.style = toggleSwitchCss;
@@ -1 +1 @@
1
- {"file":"toggle-switch.entry.js","mappings":";;AAAA,MAAM,eAAe,GAAG,6pCAA6pC;;MCOxqC,qBAAqB;;;;oBACT,eAAe;uBACX,KAAK;qBACR,EAAE;yBAEI,IAAI,CAAC,OAAO;;IAQ1C,iBAAiB;QACf,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC;KAC/B;IAED,WAAW;QACT,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;QACjC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;YAC/B,OAAO,EAAE,IAAI,CAAC,SAAS;YACvB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC,CAAC;KACJ;IAED,MAAM;QACJ,QACE,8DAAO,KAAK,EAAC,QAAQ,EAAC,OAAO,EAAC,UAAU,IACtC,8DAAO,IAAI,EAAC,UAAU,EAAC,EAAE,EAAC,UAAU,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAI,EACxD,4DAAK,KAAK,EAAC,cAAc,GAAO,CAC1B,EACR;KACH;;;;;;","names":[],"sources":["src/components/design-system/toggle-switch/toggle-switch.scss?tag=toggle-switch&encapsulation=shadow","src/components/design-system/toggle-switch/toggle-switch.tsx"],"sourcesContent":["@import '../../../common/styles/variables.scss';\n\n.switch {\n @include default-css-variables;\n display: inline-block;\n height: 34px;\n position: relative;\n width: 60px;\n}\n\n.switch input {\n display: none;\n}\n\n.slider {\n background-color: var(--nylas-base-400);\n bottom: 0;\n cursor: pointer;\n left: 0;\n position: absolute;\n right: 0;\n top: 0;\n transition: 0.4s;\n}\n\n.slider:before {\n background-color: var(--nylas-base-0);\n bottom: 4px;\n content: '';\n height: 32px;\n left: 4px;\n position: absolute;\n transition: 0.4s;\n width: 32px;\n}\n\ninput:checked + .slider {\n background-color: var(--nylas-success);\n}\n\ninput:checked + .slider:before {\n transform: translateX(32px);\n}\n\n.slider.round {\n border-radius: 35px;\n width: 72px;\n height: 40px;\n}\n\n.slider.round:before {\n border-radius: 50%;\n}\n","import { Component, h, Prop, State, Event, EventEmitter } from '@stencil/core';\n\n@Component({\n tag: 'toggle-switch',\n styleUrl: 'toggle-switch.scss',\n shadow: true,\n})\nexport class ToggleSwitchComponent {\n @Prop() name: string = 'toggle-switch';\n @Prop() checked: boolean = false;\n @Prop() label: string = '';\n\n @State() isChecked: boolean = this.checked;\n\n @Event() nylasFormSwitchToggled!: EventEmitter<{\n checked: boolean;\n name: string;\n label: string;\n }>;\n\n componentWillLoad() {\n this.isChecked = this.checked;\n }\n\n toggleCheck() {\n this.isChecked = !this.isChecked;\n this.nylasFormSwitchToggled.emit({\n checked: this.isChecked,\n name: this.name,\n label: this.label,\n });\n }\n\n render() {\n return (\n <label class=\"switch\" htmlFor=\"checkbox\">\n <input type=\"checkbox\" id=\"checkbox\" name={this.name} />\n <div class=\"slider round\"></div>\n </label>\n );\n }\n}\n"],"version":3}
1
+ {"file":"toggle-switch.entry.js","mappings":";;AAAA,MAAM,eAAe,GAAG,6pCAA6pC;;MCcxqC,qBAAqB;;;;oBACT,eAAe;uBACX,KAAK;qBACR,EAAE;yBAEI,IAAI,CAAC,OAAO;;IAQ1C,iBAAiB;QACf,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC;KAC/B;IAED,WAAW;QACT,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;QACjC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;YAC/B,OAAO,EAAE,IAAI,CAAC,SAAS;YACvB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC,CAAC;KACJ;IAED,MAAM;QACJ,QACE,8DAAO,KAAK,EAAC,QAAQ,EAAC,IAAI,EAAC,UAAU,IACnC,8DAAO,IAAI,EAAC,UAAU,EAAC,IAAI,EAAC,UAAU,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC,WAAW,EAAE,GAAI,EACvH,4DAAK,KAAK,EAAC,cAAc,EAAC,IAAI,EAAC,WAAW,GAAO,CAC3C,EACR;KACH;;;;;;","names":[],"sources":["src/components/design-system/toggle-switch/toggle-switch.scss?tag=toggle-switch&encapsulation=shadow","src/components/design-system/toggle-switch/toggle-switch.tsx"],"sourcesContent":["@import '../../../common/styles/variables.scss';\n\n.switch {\n @include default-css-variables;\n display: inline-block;\n height: 34px;\n position: relative;\n width: 60px;\n}\n\n.switch input {\n display: none;\n}\n\n.slider {\n background-color: var(--nylas-base-400);\n bottom: 0;\n cursor: pointer;\n left: 0;\n position: absolute;\n right: 0;\n top: 0;\n transition: 0.4s;\n}\n\n.slider:before {\n background-color: var(--nylas-base-0);\n bottom: 4px;\n content: '';\n height: 32px;\n left: 4px;\n position: absolute;\n transition: 0.4s;\n width: 32px;\n}\n\ninput:checked + .slider {\n background-color: var(--nylas-success);\n}\n\ninput:checked + .slider:before {\n transform: translateX(32px);\n}\n\n.slider.round {\n border-radius: 35px;\n width: 72px;\n height: 40px;\n}\n\n.slider.round:before {\n border-radius: 50%;\n}\n","import { Component, h, Prop, State, Event, EventEmitter } from '@stencil/core';\n\n/**\n * The `toggle-switch` component is a UI component that allows users to toggle a switch.\n *\n * @part ts_label - The label of the toggle switch\n * @part ts_input - The input of the toggle switch\n * @part ts_slider - The slider of the toggle switch\n */\n@Component({\n tag: 'toggle-switch',\n styleUrl: 'toggle-switch.scss',\n shadow: true,\n})\nexport class ToggleSwitchComponent {\n @Prop() name: string = 'toggle-switch';\n @Prop() checked: boolean = false;\n @Prop() label: string = '';\n\n @State() isChecked: boolean = this.checked;\n\n @Event() nylasFormSwitchToggled!: EventEmitter<{\n checked: boolean;\n name: string;\n label: string;\n }>;\n\n componentWillLoad() {\n this.isChecked = this.checked;\n }\n\n toggleCheck() {\n this.isChecked = !this.isChecked;\n this.nylasFormSwitchToggled.emit({\n checked: this.isChecked,\n name: this.name,\n label: this.label,\n });\n }\n\n render() {\n return (\n <label class=\"switch\" part=\"ts_label\">\n <input type=\"checkbox\" part=\"ts_input\" name={this.name} checked={this.isChecked} onChange={() => this.toggleCheck()} />\n <div class=\"slider round\" part=\"ts_slider\"></div>\n </label>\n );\n }\n}\n"],"version":3}