@nylas/web-elements 2.4.1 → 2.5.0-canary-20260306042320
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cdn/input-color-picker/input-color-picker.es.js +3 -3
- package/dist/cdn/nylas-scheduler-editor/nylas-scheduler-editor.es.js +2893 -2839
- package/dist/cdn/nylas-scheduling/nylas-scheduling.es.js +286 -273
- package/dist/cjs/add-circle-icon_2.cjs.entry.js +2 -2
- package/dist/cjs/archive-icon.cjs.entry.js +1 -1
- package/dist/cjs/arrow-icon.cjs.entry.js +1 -1
- package/dist/cjs/bold-icon.cjs.entry.js +1 -1
- package/dist/cjs/button-component_2.cjs.entry.js +2 -2
- package/dist/cjs/calendar-agenda-fill-icon_39.cjs.entry.js +86 -62
- package/dist/cjs/calendar-agenda-fill-icon_39.cjs.entry.js.map +1 -1
- package/dist/cjs/calendar-cancel-icon.cjs.entry.js +1 -1
- package/dist/cjs/calendar-check-icon.cjs.entry.js +1 -1
- package/dist/cjs/calendar-icon.cjs.entry.js +1 -1
- package/dist/cjs/checkbox-component.cjs.entry.js +1 -1
- package/dist/cjs/checkbox-group_4.cjs.entry.js +5 -5
- package/dist/cjs/checkmark-circle-icon.cjs.entry.js +1 -1
- package/dist/cjs/checkmark-icon_15.cjs.entry.js +44 -23
- package/dist/cjs/checkmark-icon_15.cjs.entry.js.map +1 -1
- package/dist/cjs/chevron-icon_3.cjs.entry.js +4 -4
- package/dist/cjs/clock-icon_4.cjs.entry.js +4 -4
- package/dist/cjs/delete-icon.cjs.entry.js +1 -1
- package/dist/cjs/document-refresh-icon.cjs.entry.js +1 -1
- package/dist/cjs/folder-icon.cjs.entry.js +1 -1
- package/dist/cjs/forward-icon.cjs.entry.js +1 -1
- package/dist/cjs/globe-icon_3.cjs.entry.js +5 -5
- package/dist/cjs/google-logo-icon.microsoft-logo-icon.nylas-editor-tabs.nylas-editor-tabs-group.nylas-list-configurations.nylas-select-event-type.entry.cjs.js.map +1 -1
- package/dist/cjs/google-logo-icon_6.cjs.entry.js +19 -17
- package/dist/cjs/google-logo-icon_6.cjs.entry.js.map +1 -1
- package/dist/cjs/google-meet-icon_5.cjs.entry.js +5 -5
- package/dist/cjs/inbox-icon.cjs.entry.js +1 -1
- package/dist/cjs/info-icon_2.cjs.entry.js +3 -3
- package/dist/cjs/input-component.cjs.entry.js +1 -1
- package/dist/cjs/input-dropdown_2.cjs.entry.js +2 -2
- package/dist/cjs/italic-icon.cjs.entry.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/multi-select-dropdown.cjs.entry.js +2 -2
- package/dist/cjs/nylas-booked-event-card_11.cjs.entry.js +4 -4
- package/dist/cjs/nylas-form-card.cjs.entry.js +1 -1
- package/dist/cjs/nylas-notification_2.cjs.entry.js +2 -2
- package/dist/cjs/nylas-scheduler-editor.cjs.entry.js +13 -6
- package/dist/cjs/nylas-scheduler-editor.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-scheduler-editor.entry.cjs.js.map +1 -1
- package/dist/cjs/nylas-scheduling.cjs.entry.js +38 -19
- package/dist/cjs/nylas-scheduling.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-scheduling.entry.cjs.js.map +1 -1
- package/dist/cjs/nylas-web-elements.cjs.js +1 -1
- package/dist/cjs/person-icon.cjs.entry.js +1 -1
- package/dist/cjs/play-icon.cjs.entry.js +1 -1
- package/dist/cjs/radio-button-group.cjs.entry.js +1 -1
- package/dist/cjs/refresh-icon.cjs.entry.js +1 -1
- package/dist/cjs/reply-all-icon.cjs.entry.js +1 -1
- package/dist/cjs/reply-icon.cjs.entry.js +1 -1
- package/dist/cjs/sent-icon.cjs.entry.js +1 -1
- package/dist/cjs/spam-icon.cjs.entry.js +1 -1
- package/dist/cjs/star-icon.cjs.entry.js +1 -1
- package/dist/cjs/stop-icon.cjs.entry.js +1 -1
- package/dist/cjs/textarea-component.cjs.entry.js +1 -1
- package/dist/cjs/toggle-switch.cjs.entry.js +1 -1
- package/dist/cjs/translate-icon.cjs.entry.js +1 -1
- package/dist/cjs/trash-fill-icon.cjs.entry.js +1 -1
- package/dist/cjs/underline-icon.cjs.entry.js +1 -1
- package/dist/cjs/{version-BpVJo5VP.js → version-Co332DgG.js} +3 -3
- package/dist/{esm/version-BCn0rl0y.js.map → cjs/version-Co332DgG.js.map} +1 -1
- package/dist/collection/common/icons/add-circle.js +1 -1
- package/dist/collection/common/icons/archive.js +1 -1
- package/dist/collection/common/icons/arrow.js +1 -1
- package/dist/collection/common/icons/bold.js +1 -1
- package/dist/collection/common/icons/calendar-agenda-fill.js +1 -1
- package/dist/collection/common/icons/calendar-agenda.js +1 -1
- package/dist/collection/common/icons/calendar-cancel.js +1 -1
- package/dist/collection/common/icons/calendar-check.js +1 -1
- package/dist/collection/common/icons/calendar-info.js +1 -1
- package/dist/collection/common/icons/calendar-patterns.js +1 -1
- package/dist/collection/common/icons/calendar.js +1 -1
- package/dist/collection/common/icons/checkmark-circle.js +1 -1
- package/dist/collection/common/icons/checkmark.js +1 -1
- package/dist/collection/common/icons/chevron.js +1 -1
- package/dist/collection/common/icons/clock.js +1 -1
- package/dist/collection/common/icons/close.js +1 -1
- package/dist/collection/common/icons/copy.js +1 -1
- package/dist/collection/common/icons/delete.js +1 -1
- package/dist/collection/common/icons/document-refresh.js +1 -1
- package/dist/collection/common/icons/dragable.js +1 -1
- package/dist/collection/common/icons/edit.js +1 -1
- package/dist/collection/common/icons/envelope-fill.js +1 -1
- package/dist/collection/common/icons/envelope.js +1 -1
- package/dist/collection/common/icons/eye.js +1 -1
- package/dist/collection/common/icons/feedback-icon.js +1 -1
- package/dist/collection/common/icons/flow.js +1 -1
- package/dist/collection/common/icons/folder.js +1 -1
- package/dist/collection/common/icons/forward.js +1 -1
- package/dist/collection/common/icons/globe.js +1 -1
- package/dist/collection/common/icons/google-logo.js +1 -1
- package/dist/collection/common/icons/google-meet.js +1 -1
- package/dist/collection/common/icons/inbox.js +1 -1
- package/dist/collection/common/icons/info.js +1 -1
- package/dist/collection/common/icons/italic.js +1 -1
- package/dist/collection/common/icons/loading.js +1 -1
- package/dist/collection/common/icons/location-off.js +1 -1
- package/dist/collection/common/icons/location.js +1 -1
- package/dist/collection/common/icons/microsof-teams.js +1 -1
- package/dist/collection/common/icons/microsoft-logo.js +1 -1
- package/dist/collection/common/icons/nylas-logo.js +1 -1
- package/dist/collection/common/icons/paintbrush-fill.js +1 -1
- package/dist/collection/common/icons/paintbrush.js +1 -1
- package/dist/collection/common/icons/people.js +1 -1
- package/dist/collection/common/icons/person-clipboard.js +1 -1
- package/dist/collection/common/icons/person.js +1 -1
- package/dist/collection/common/icons/play.js +1 -1
- package/dist/collection/common/icons/plus.js +1 -1
- package/dist/collection/common/icons/refresh.js +1 -1
- package/dist/collection/common/icons/reply-all.js +1 -1
- package/dist/collection/common/icons/reply.js +1 -1
- package/dist/collection/common/icons/search.js +1 -1
- package/dist/collection/common/icons/sent.js +1 -1
- package/dist/collection/common/icons/spam.js +1 -1
- package/dist/collection/common/icons/star.js +1 -1
- package/dist/collection/common/icons/stop.js +1 -1
- package/dist/collection/common/icons/translate.js +1 -1
- package/dist/collection/common/icons/trash-fill.js +1 -1
- package/dist/collection/common/icons/trash.js +1 -1
- package/dist/collection/common/icons/underline.js +1 -1
- package/dist/collection/common/icons/warning.js +1 -1
- package/dist/collection/common/icons/zoom.js +1 -1
- package/dist/collection/components/design-system/button-component/button-component.js +1 -1
- package/dist/collection/components/design-system/checkbox-component/checkbox-component.js +1 -1
- package/dist/collection/components/design-system/checkbox-group/checkbox-group.js +1 -1
- package/dist/collection/components/design-system/input-color-picker/input-color-picker.js +2 -2
- package/dist/collection/components/design-system/input-component/input-component.js +1 -1
- package/dist/collection/components/design-system/input-dropdown/input-dropdown.js +1 -1
- package/dist/collection/components/design-system/input-image-url/input-image-url.js +1 -1
- package/dist/collection/components/design-system/multi-select-dropdown/multi-select-dropdown.js +2 -2
- package/dist/collection/components/design-system/nylas-date-component/nylas-date-component.js +1 -1
- package/dist/collection/components/design-system/radio-button-group/radio-button-group.js +1 -1
- package/dist/collection/components/design-system/select-dropdown/select-dropdown.js +2 -2
- package/dist/collection/components/design-system/textarea-component/textarea-component.js +1 -1
- package/dist/collection/components/design-system/time-period-selector/time-period-selector.js +1 -1
- package/dist/collection/components/design-system/toggle-switch/toggle-switch.js +1 -1
- package/dist/collection/components/design-system/tooltip-component/toolitp-component.js +2 -2
- package/dist/collection/components/scheduler/nylas-confirmed-event-card/nylas-confirmed-event-card.js +1 -1
- package/dist/collection/components/scheduler/nylas-feedback-form/nylas-feedback-form.js +2 -2
- package/dist/collection/components/scheduler/nylas-notification/nylas-notification.js +1 -1
- package/dist/collection/components/scheduler/nylas-organizer-confirmation-card/nylas-organizer-confirmation-card.js +2 -2
- package/dist/collection/components/scheduler/nylas-scheduling/nylas-scheduling.js +33 -17
- package/dist/collection/components/scheduler/nylas-scheduling/nylas-scheduling.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-additional-participants/nylas-additional-participants.js +50 -9
- package/dist/collection/components/scheduler-editor/nylas-additional-participants/nylas-additional-participants.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-availability-picker/nylas-availability-picker.js +1 -1
- package/dist/collection/components/scheduler-editor/nylas-booking-confirmation-redirect/nylas-booking-confirmation-redirect.js +1 -1
- package/dist/collection/components/scheduler-editor/nylas-booking-confirmation-type/nylas-booking-confirmation-type.js +1 -1
- package/dist/collection/components/scheduler-editor/nylas-booking-form-config/nylas-booking-form-config.js +2 -2
- package/dist/collection/components/scheduler-editor/nylas-cancellation-policy/nylas-cancellation-policy.js +1 -1
- package/dist/collection/components/scheduler-editor/nylas-confirmation-email/nylas-confirmation-email.js +2 -2
- package/dist/collection/components/scheduler-editor/nylas-connected-calendars/nylas-connected-calendars.js +21 -10
- package/dist/collection/components/scheduler-editor/nylas-connected-calendars/nylas-connected-calendars.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-custom-booking-flow/nylas-custom-booking-flow.js +1 -1
- package/dist/collection/components/scheduler-editor/nylas-customize-booking-settings/nylas-customize-booking-settings.js +1 -1
- package/dist/collection/components/scheduler-editor/nylas-disable-emails/nylas-disable-emails.js +1 -1
- package/dist/collection/components/scheduler-editor/nylas-editor-tabs/nylas-editor-tabs.js +11 -9
- package/dist/collection/components/scheduler-editor/nylas-editor-tabs/nylas-editor-tabs.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-editor-tabs-group/nylas-editor-tabs-group.js +5 -5
- package/dist/collection/components/scheduler-editor/nylas-event-capacity/nylas-event-capacity.js +1 -1
- package/dist/collection/components/scheduler-editor/nylas-event-info/nylas-event-info.js +1 -1
- package/dist/collection/components/scheduler-editor/nylas-event-limits/nylas-event-limits.js +1 -1
- package/dist/collection/components/scheduler-editor/nylas-event-location/nylas-event-location.js +1 -1
- package/dist/collection/components/scheduler-editor/nylas-event-timeslot/nylas-event-timeslot.js +3 -3
- package/dist/collection/components/scheduler-editor/nylas-form-card/nylas-form-card.js +1 -1
- package/dist/collection/components/scheduler-editor/nylas-limit-future-bookings/nylas-limit-future-bookings.js +1 -1
- package/dist/collection/components/scheduler-editor/nylas-min-booking-notice/nylas-min-booking-notice.js +1 -1
- package/dist/collection/components/scheduler-editor/nylas-min-cancellation-notice/nylas-min-cancellation-notice.js +1 -1
- package/dist/collection/components/scheduler-editor/nylas-notetaker-config/nylas-notetaker-config.js +8 -8
- package/dist/collection/components/scheduler-editor/nylas-only-specific-time-availability/nylas-only-specific-time-availability.js +1 -1
- package/dist/collection/components/scheduler-editor/nylas-page-name/nylas-page-name.js +1 -1
- package/dist/collection/components/scheduler-editor/nylas-page-styling/nylas-page-styling.js +1 -1
- package/dist/collection/components/scheduler-editor/nylas-participant-booking-calendars/nylas-participant-booking-calendars.js +21 -8
- package/dist/collection/components/scheduler-editor/nylas-participant-booking-calendars/nylas-participant-booking-calendars.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-participants-custom-availability/nylas-participants-custom-availability.js +2 -2
- package/dist/collection/components/scheduler-editor/nylas-participants-custom-availability/nylas-participants-custom-availability.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-reminder-emails/nylas-reminder-emails.js +3 -3
- package/dist/collection/components/scheduler-editor/nylas-reminder-time/nylas-reminder-time.js +1 -1
- package/dist/collection/components/scheduler-editor/nylas-scheduler-editor/nylas-scheduler-editor.js +41 -4
- package/dist/collection/components/scheduler-editor/nylas-scheduler-editor/nylas-scheduler-editor.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-specific-time-availability-picker/nylas-specific-time-availability-picker.js +2 -2
- package/dist/collection/components/scheduler-editor/nylas-time-window-picker/nylas-time-window-picker.js +3 -3
- package/dist/collection/components/scheduler-editor/nylas-timeslot-interval/nylas-timeslot-interval.js +1 -1
- package/dist/collection/connector/shared/api/scheduler.js +3 -0
- package/dist/collection/connector/shared/api/scheduler.js.map +1 -1
- package/dist/collection/stores/scheduler-config-store.js +1 -1
- package/dist/collection/stores/scheduler-config-store.js.map +1 -1
- package/dist/collection/version.js +1 -1
- package/dist/collection/version.js.map +1 -1
- package/dist/components/add-circle-icon.js +1 -1
- package/dist/components/archive-icon.js +1 -1
- package/dist/components/arrow-icon.js +1 -1
- package/dist/components/bold-icon.js +1 -1
- package/dist/components/button-component.js +1 -1
- package/dist/components/calendar-agenda-fill-icon.js +1 -1
- package/dist/components/calendar-agenda-icon.js +1 -1
- package/dist/components/calendar-cancel-icon.js +1 -1
- package/dist/components/calendar-check-icon.js +1 -1
- package/dist/components/calendar-icon.js +1 -1
- package/dist/components/calendar-info-icon.js +1 -1
- package/dist/components/calendar-patterns-icon.js +1 -1
- package/dist/components/checkbox-component.js +1 -1
- package/dist/components/checkbox-group.js +1 -1
- package/dist/components/checkmark-circle-icon.js +1 -1
- package/dist/components/checkmark-icon.js +1 -1
- package/dist/components/chevron-icon.js +1 -1
- package/dist/components/clock-icon.js +1 -1
- package/dist/components/close-icon.js +1 -1
- package/dist/components/copy-icon.js +1 -1
- package/dist/components/delete-icon.js +1 -1
- package/dist/components/document-refresh-icon.js +1 -1
- package/dist/components/dragable-icon.js +1 -1
- package/dist/components/edit-icon.js +1 -1
- package/dist/components/envelope-fill-icon.js +1 -1
- package/dist/components/envelope-icon.js +1 -1
- package/dist/components/eye-icon.js +1 -1
- package/dist/components/feedback-icon.js +1 -1
- package/dist/components/flow-icon.js +1 -1
- package/dist/components/folder-icon.js +1 -1
- package/dist/components/forward-icon.js +1 -1
- package/dist/components/globe-icon.js +1 -1
- package/dist/components/google-logo-icon.js +1 -1
- package/dist/components/google-meet-icon.js +1 -1
- package/dist/components/inbox-icon.js +1 -1
- package/dist/components/info-icon.js +1 -1
- package/dist/components/input-color-picker.js +1 -1
- package/dist/components/input-component.js +1 -1
- package/dist/components/input-dropdown.js +1 -1
- package/dist/components/input-image-url.js +1 -1
- package/dist/components/italic-icon.js +1 -1
- package/dist/components/loading-icon.js +1 -1
- package/dist/components/location-icon.js +1 -1
- package/dist/components/location-off-icon.js +1 -1
- package/dist/components/microsoft-logo-icon.js +1 -1
- package/dist/components/microsoft-teams-icon.js +1 -1
- package/dist/components/multi-select-dropdown.js +1 -1
- package/dist/components/nylas-additional-participants.js +1 -1
- package/dist/components/nylas-availability-picker.js +1 -1
- package/dist/components/nylas-booked-event-card.js +1 -1
- package/dist/components/nylas-booking-calendar-picker.js +1 -1
- package/dist/components/nylas-booking-confirmation-redirect.js +1 -1
- package/dist/components/nylas-booking-confirmation-type.js +1 -1
- package/dist/components/nylas-booking-form-config.js +1 -1
- package/dist/components/nylas-booking-form.js +1 -1
- package/dist/components/nylas-buffer-time.js +1 -1
- package/dist/components/nylas-calendar-picker.js +1 -1
- package/dist/components/nylas-cancel-booking-form.js +1 -1
- package/dist/components/nylas-cancellation-policy.js +1 -1
- package/dist/components/nylas-cancelled-event-card.js +1 -1
- package/dist/components/nylas-confirmation-email.js +1 -1
- package/dist/components/nylas-confirmed-event-card.js +1 -1
- package/dist/components/nylas-connected-calendars.js +1 -1
- package/dist/components/nylas-custom-booking-flow.js +1 -1
- package/dist/components/nylas-custom-event-slug.js +1 -1
- package/dist/components/nylas-customize-booking-settings.js +1 -1
- package/dist/components/nylas-date-component.js +1 -1
- package/dist/components/nylas-date-picker.js +1 -1
- package/dist/components/nylas-disable-emails.js +1 -1
- package/dist/components/nylas-editor-tabs-group.js +1 -1
- package/dist/components/nylas-editor-tabs.js +1 -1
- package/dist/components/nylas-event-calendar.js +1 -1
- package/dist/components/nylas-event-capacity.js +1 -1
- package/dist/components/nylas-event-description.js +1 -1
- package/dist/components/nylas-event-duration.js +1 -1
- package/dist/components/nylas-event-info.js +1 -1
- package/dist/components/nylas-event-limits.js +1 -1
- package/dist/components/nylas-event-location.js +1 -1
- package/dist/components/nylas-event-timeslot.js +1 -1
- package/dist/components/nylas-event-title.js +1 -1
- package/dist/components/nylas-feedback-form.js +1 -1
- package/dist/components/nylas-form-card.js +1 -1
- package/dist/components/nylas-limit-future-bookings.js +1 -1
- package/dist/components/nylas-list-configurations.js +1 -1
- package/dist/components/nylas-locale-switch.js +1 -1
- package/dist/components/nylas-logo.js +1 -1
- package/dist/components/nylas-min-booking-notice.js +1 -1
- package/dist/components/nylas-min-cancellation-notice.js +1 -1
- package/dist/components/nylas-notetaker-config.js +1 -1
- package/dist/components/nylas-notification.js +1 -1
- package/dist/components/nylas-only-specific-time-availability.js +1 -1
- package/dist/components/nylas-organizer-confirmation-card.js +1 -1
- package/dist/components/nylas-page-name.js +1 -1
- package/dist/components/nylas-page-styling.js +1 -1
- package/dist/components/nylas-participant-booking-calendars.js +1 -1
- package/dist/components/nylas-participants-custom-availability.js +1 -1
- package/dist/components/nylas-reminder-emails.js +1 -1
- package/dist/components/nylas-reminder-time.js +1 -1
- package/dist/components/nylas-scheduler-editor.js +113 -106
- package/dist/components/nylas-scheduler-editor.js.map +1 -1
- package/dist/components/nylas-scheduling-method.js +1 -1
- package/dist/components/nylas-scheduling.js +76 -57
- package/dist/components/nylas-scheduling.js.map +1 -1
- package/dist/components/nylas-select-event-type.js +1 -1
- package/dist/components/nylas-selected-event-card.js +1 -1
- package/dist/components/nylas-specific-time-availability-picker.js +1 -1
- package/dist/components/nylas-time-window-picker.js +1 -1
- package/dist/components/nylas-timeslot-interval.js +1 -1
- package/dist/components/nylas-timeslot-picker.js +1 -1
- package/dist/components/{p-BK05OJWJ.js → p-0Q791asW.js} +10 -10
- package/dist/components/{p-BK05OJWJ.js.map → p-0Q791asW.js.map} +1 -1
- package/dist/components/{p-B54Kgpd1.js → p-5RXhzvUo.js} +15 -15
- package/dist/components/{p-B54Kgpd1.js.map → p-5RXhzvUo.js.map} +1 -1
- package/dist/components/{p-DnRMuXBv.js → p-6A8ylLCU.js} +7 -7
- package/dist/components/{p-DnRMuXBv.js.map → p-6A8ylLCU.js.map} +1 -1
- package/dist/components/{p-dBa2aR6u.js → p-8f-LJhGH.js} +17 -17
- package/dist/components/{p-dBa2aR6u.js.map → p-8f-LJhGH.js.map} +1 -1
- package/dist/components/{p-DbTGA7PK.js → p-9SuQgutb.js} +5 -5
- package/dist/components/{p-DbTGA7PK.js.map → p-9SuQgutb.js.map} +1 -1
- package/dist/components/{p-D5p5Z11R.js → p-B0-YJO0f.js} +5 -5
- package/dist/components/{p-D5p5Z11R.js.map → p-B0-YJO0f.js.map} +1 -1
- package/dist/components/{p-n1uQQdTd.js → p-B2EksfAF.js} +3 -3
- package/dist/components/{p-n1uQQdTd.js.map → p-B2EksfAF.js.map} +1 -1
- package/dist/components/{p-Bkoea0ab.js → p-B2LU95MT.js} +3 -3
- package/dist/components/{p-Bkoea0ab.js.map → p-B2LU95MT.js.map} +1 -1
- package/dist/components/{p-Deswp92f.js → p-B9a2SDWB.js} +8 -8
- package/dist/components/{p-Deswp92f.js.map → p-B9a2SDWB.js.map} +1 -1
- package/dist/components/{p-BW5AWWWU.js → p-BAKh5tMf.js} +3 -3
- package/dist/components/{p-BW5AWWWU.js.map → p-BAKh5tMf.js.map} +1 -1
- package/dist/components/{p-CRjHH_OM.js → p-BD4aqMeC.js} +3 -3
- package/dist/components/{p-CRjHH_OM.js.map → p-BD4aqMeC.js.map} +1 -1
- package/dist/components/{p-wFPFZcNc.js → p-BF0muZ9G.js} +3 -3
- package/dist/components/{p-wFPFZcNc.js.map → p-BF0muZ9G.js.map} +1 -1
- package/dist/components/{p-Dhs6n8pM.js → p-BI99l5Mr.js} +3 -3
- package/dist/components/{p-Dhs6n8pM.js.map → p-BI99l5Mr.js.map} +1 -1
- package/dist/components/{p-PH-ASHZS.js → p-BNuHkEZZ.js} +3 -3
- package/dist/components/{p-PH-ASHZS.js.map → p-BNuHkEZZ.js.map} +1 -1
- package/dist/components/{p-C9beWH2f.js → p-BOk080VZ.js} +7 -7
- package/dist/components/{p-C9beWH2f.js.map → p-BOk080VZ.js.map} +1 -1
- package/dist/components/{p-Bpeu-ygG.js → p-BPbPSFbO.js} +10 -10
- package/dist/components/{p-Bpeu-ygG.js.map → p-BPbPSFbO.js.map} +1 -1
- package/dist/components/{p-CGxeg--J.js → p-BQsgOTb4.js} +14 -14
- package/dist/components/{p-CGxeg--J.js.map → p-BQsgOTb4.js.map} +1 -1
- package/dist/components/{p-DPClTQN0.js → p-BRjK4HIS.js} +10 -10
- package/dist/components/{p-DPClTQN0.js.map → p-BRjK4HIS.js.map} +1 -1
- package/dist/components/{p-S5MMQ3kK.js → p-BSfQxQEN.js} +3 -3
- package/dist/components/{p-S5MMQ3kK.js.map → p-BSfQxQEN.js.map} +1 -1
- package/dist/components/{p-WCXOX3Ou.js → p-BT5kT23k.js} +3 -3
- package/dist/components/{p-WCXOX3Ou.js.map → p-BT5kT23k.js.map} +1 -1
- package/dist/components/{p-DU3FxQJW.js → p-BTWclWyF.js} +5 -5
- package/dist/components/{p-DU3FxQJW.js.map → p-BTWclWyF.js.map} +1 -1
- package/dist/components/{p-Dvm3cFRX.js → p-BVH0Klhu.js} +4 -4
- package/dist/components/{p-Dvm3cFRX.js.map → p-BVH0Klhu.js.map} +1 -1
- package/dist/components/{p-DTF0fIhr.js → p-B_Qi3sM4.js} +3 -3
- package/dist/components/{p-DTF0fIhr.js.map → p-B_Qi3sM4.js.map} +1 -1
- package/dist/components/{p-1lKplrc1.js → p-BbQVpnV2.js} +5 -5
- package/dist/components/{p-1lKplrc1.js.map → p-BbQVpnV2.js.map} +1 -1
- package/dist/components/{p-k3eh7IEY.js → p-BhVGvOQU.js} +4 -4
- package/dist/components/{p-k3eh7IEY.js.map → p-BhVGvOQU.js.map} +1 -1
- package/dist/components/{p-Dhuiox3C.js → p-BjvgBBDi.js} +7 -7
- package/dist/components/{p-Dhuiox3C.js.map → p-BjvgBBDi.js.map} +1 -1
- package/dist/components/{p-B4WU6Ddk.js → p-BkqJQBCp.js} +3 -3
- package/dist/components/{p-B4WU6Ddk.js.map → p-BkqJQBCp.js.map} +1 -1
- package/dist/components/{p-C9OPB0dE.js → p-BluyqSV4.js} +12 -12
- package/dist/components/{p-C9OPB0dE.js.map → p-BluyqSV4.js.map} +1 -1
- package/dist/components/{p-BBKmpMW8.js → p-BmBJwWDS.js} +6 -6
- package/dist/components/{p-BBKmpMW8.js.map → p-BmBJwWDS.js.map} +1 -1
- package/dist/components/{p-D1LkVzVP.js → p-BmFTnJHK.js} +6 -6
- package/dist/components/{p-D1LkVzVP.js.map → p-BmFTnJHK.js.map} +1 -1
- package/dist/components/{p-sbWcoagv.js → p-BnEkgCIs.js} +3 -3
- package/dist/components/{p-sbWcoagv.js.map → p-BnEkgCIs.js.map} +1 -1
- package/dist/components/{p-BQqYYMC9.js → p-BoUo2hc7.js} +3 -3
- package/dist/components/{p-BQqYYMC9.js.map → p-BoUo2hc7.js.map} +1 -1
- package/dist/components/{p-CxX2L0KD.js → p-BrOgWk7y.js} +3 -3
- package/dist/components/{p-CxX2L0KD.js.map → p-BrOgWk7y.js.map} +1 -1
- package/dist/components/{p-CK4A4BDU.js → p-BxsadZ25.js} +8 -8
- package/dist/components/{p-CK4A4BDU.js.map → p-BxsadZ25.js.map} +1 -1
- package/dist/components/{p-B-gCWV_D.js → p-ByDfkWkX.js} +3 -3
- package/dist/components/{p-B-gCWV_D.js.map → p-ByDfkWkX.js.map} +1 -1
- package/dist/components/{p-B7pr9t7K.js → p-C0W947JI.js} +6 -6
- package/dist/components/{p-B7pr9t7K.js.map → p-C0W947JI.js.map} +1 -1
- package/dist/components/{p-BPwvrBru.js → p-C3knoHon.js} +4 -4
- package/dist/components/{p-BPwvrBru.js.map → p-C3knoHon.js.map} +1 -1
- package/dist/components/{p-CZF2moAV.js → p-C4BZ4XFc.js} +3 -3
- package/dist/components/{p-CZF2moAV.js.map → p-C4BZ4XFc.js.map} +1 -1
- package/dist/components/{p--JWPNuJw.js → p-C4RTQIyO.js} +3 -3
- package/dist/components/{p--JWPNuJw.js.map → p-C4RTQIyO.js.map} +1 -1
- package/dist/components/{p-GAHE0QsH.js → p-C6FGSOHu.js} +8 -8
- package/dist/components/{p-GAHE0QsH.js.map → p-C6FGSOHu.js.map} +1 -1
- package/dist/components/{p-Ccv_qdzg.js → p-C6yDHOLr.js} +6 -6
- package/dist/components/{p-Ccv_qdzg.js.map → p-C6yDHOLr.js.map} +1 -1
- package/dist/components/{p-BWj2o6Z2.js → p-C7J83Us-.js} +3 -3
- package/dist/components/{p-BWj2o6Z2.js.map → p-C7J83Us-.js.map} +1 -1
- package/dist/components/{p-hYRQCAHR.js → p-C7ZpwRD0.js} +3 -3
- package/dist/components/{p-hYRQCAHR.js.map → p-C7ZpwRD0.js.map} +1 -1
- package/dist/components/{p-I6ZJueEV.js → p-C8tr7RQP.js} +14 -14
- package/dist/components/{p-I6ZJueEV.js.map → p-C8tr7RQP.js.map} +1 -1
- package/dist/components/{p-DDuJfpmS.js → p-C9Mlv9rC.js} +3 -3
- package/dist/components/{p-DDuJfpmS.js.map → p-C9Mlv9rC.js.map} +1 -1
- package/dist/components/{p-3TuqcJ7a.js → p-CBBEkysd.js} +3 -3
- package/dist/components/{p-3TuqcJ7a.js.map → p-CBBEkysd.js.map} +1 -1
- package/dist/components/{p-B8zO9u9G.js → p-CDDw-hf8.js} +3 -3
- package/dist/components/{p-B8zO9u9G.js.map → p-CDDw-hf8.js.map} +1 -1
- package/dist/components/{p-D9TpXP_3.js → p-CFeDwD40.js} +3 -3
- package/dist/components/{p-D9TpXP_3.js.map → p-CFeDwD40.js.map} +1 -1
- package/dist/components/{p-B75UH_79.js → p-CHuh_iTR.js} +5 -5
- package/dist/components/{p-B75UH_79.js.map → p-CHuh_iTR.js.map} +1 -1
- package/dist/components/{p-CnuLK086.js → p-CJvmK-NM.js} +3 -3
- package/dist/components/{p-CnuLK086.js.map → p-CJvmK-NM.js.map} +1 -1
- package/dist/components/{p-BbMIB-Yc.js → p-CMzKWvKv.js} +3 -3
- package/dist/components/{p-BbMIB-Yc.js.map → p-CMzKWvKv.js.map} +1 -1
- package/dist/components/{p-Fc2FiFbz.js → p-COXbf1MO.js} +16 -16
- package/dist/components/{p-Fc2FiFbz.js.map → p-COXbf1MO.js.map} +1 -1
- package/dist/components/{p-BXdPZfqZ.js → p-CT64yPEO.js} +3 -3
- package/dist/components/{p-BXdPZfqZ.js.map → p-CT64yPEO.js.map} +1 -1
- package/dist/components/{p-Ba5u-TNq.js → p-CWWiQA0c.js} +6 -6
- package/dist/components/{p-Ba5u-TNq.js.map → p-CWWiQA0c.js.map} +1 -1
- package/dist/components/{p-Bo40Tzgq.js → p-CaQExWbD.js} +10 -10
- package/dist/components/{p-Bo40Tzgq.js.map → p-CaQExWbD.js.map} +1 -1
- package/dist/components/{p-DVTv2Hp1.js → p-CahZPm95.js} +4 -4
- package/dist/components/{p-DVTv2Hp1.js.map → p-CahZPm95.js.map} +1 -1
- package/dist/components/{p-B35dXoaU.js → p-Ce8gcoEa.js} +3 -3
- package/dist/components/{p-B35dXoaU.js.map → p-Ce8gcoEa.js.map} +1 -1
- package/dist/components/{p-D_1SiUrv.js → p-ChXM0wCn.js} +3 -3
- package/dist/components/{p-D_1SiUrv.js.map → p-ChXM0wCn.js.map} +1 -1
- package/dist/components/{p-CjPOfL98.js → p-CrEiNqrO.js} +20 -20
- package/dist/components/p-CrEiNqrO.js.map +1 -0
- package/dist/components/{p-DcgnP4PE.js → p-Cs_iJUbv.js} +3 -3
- package/dist/components/{p-DcgnP4PE.js.map → p-Cs_iJUbv.js.map} +1 -1
- package/dist/components/{p-DywCqDUg.js → p-CvLWbTI_.js} +3 -3
- package/dist/components/{p-DywCqDUg.js.map → p-CvLWbTI_.js.map} +1 -1
- package/dist/components/{p-BA0crRT4.js → p-Cyk3GcD_.js} +3 -3
- package/dist/components/{p-BA0crRT4.js.map → p-Cyk3GcD_.js.map} +1 -1
- package/dist/components/{p-DFnxqEjY.js → p-CykUOtqt.js} +5 -5
- package/dist/components/{p-DFnxqEjY.js.map → p-CykUOtqt.js.map} +1 -1
- package/dist/components/{p-D0Ur_s8w.js → p-CyzGRI94.js} +3 -3
- package/dist/components/{p-D0Ur_s8w.js.map → p-CyzGRI94.js.map} +1 -1
- package/dist/components/{p-DHEweiQ6.js → p-CzVZs3uZ.js} +3 -3
- package/dist/components/{p-DHEweiQ6.js.map → p-CzVZs3uZ.js.map} +1 -1
- package/dist/components/{p-3GhnM4Rs.js → p-D0g7xlgg.js} +17 -17
- package/dist/components/{p-3GhnM4Rs.js.map → p-D0g7xlgg.js.map} +1 -1
- package/dist/components/{p-BqxHAMYj.js → p-D0sMDSI5.js} +7 -7
- package/dist/components/{p-BqxHAMYj.js.map → p-D0sMDSI5.js.map} +1 -1
- package/dist/components/{p-BHKS010u.js → p-D1kxrvKw.js} +102 -100
- package/dist/components/p-D1kxrvKw.js.map +1 -0
- package/dist/components/{p-D0_t-TnJ.js → p-D2ELUj7W.js} +82 -82
- package/dist/components/{p-D0_t-TnJ.js.map → p-D2ELUj7W.js.map} +1 -1
- package/dist/components/{p-B2WOW0ov.js → p-D2FugEkX.js} +9 -9
- package/dist/components/{p-B2WOW0ov.js.map → p-D2FugEkX.js.map} +1 -1
- package/dist/components/{p-Dary9zXr.js → p-D3_U2Yis.js} +5 -5
- package/dist/components/{p-Dary9zXr.js.map → p-D3_U2Yis.js.map} +1 -1
- package/dist/components/{p-pbifVvbz.js → p-D59M0kgu.js} +6 -6
- package/dist/components/{p-pbifVvbz.js.map → p-D59M0kgu.js.map} +1 -1
- package/dist/components/{p-C7vQiSqU.js → p-D7z2dNXN.js} +3 -3
- package/dist/components/{p-C7vQiSqU.js.map → p-D7z2dNXN.js.map} +1 -1
- package/dist/components/{p-BGfs-kGd.js → p-DBHtQK2b.js} +3 -3
- package/dist/components/{p-BGfs-kGd.js.map → p-DBHtQK2b.js.map} +1 -1
- package/dist/components/{p-BPmIPX7g.js → p-DEbbVkgj.js} +3 -3
- package/dist/components/{p-BPmIPX7g.js.map → p-DEbbVkgj.js.map} +1 -1
- package/dist/components/{p-DPvhc5UR.js → p-DGWTdjcf.js} +7 -7
- package/dist/components/{p-DPvhc5UR.js.map → p-DGWTdjcf.js.map} +1 -1
- package/dist/components/{p-BB995eYS.js → p-DJcRuzNc.js} +6 -6
- package/dist/components/{p-BB995eYS.js.map → p-DJcRuzNc.js.map} +1 -1
- package/dist/components/{p-DL2k-3Y9.js → p-DNZkEEGF.js} +7 -7
- package/dist/components/{p-DL2k-3Y9.js.map → p-DNZkEEGF.js.map} +1 -1
- package/dist/components/{p-D2BnadaF.js → p-DPmhcLAV.js} +4 -4
- package/dist/components/{p-D2BnadaF.js.map → p-DPmhcLAV.js.map} +1 -1
- package/dist/components/{p-D07tmsA6.js → p-DPwhlVlN.js} +3 -3
- package/dist/components/{p-D07tmsA6.js.map → p-DPwhlVlN.js.map} +1 -1
- package/dist/components/{p-C-FqPkG1.js → p-DS6Ijr4M.js} +3 -3
- package/dist/components/{p-C-FqPkG1.js.map → p-DS6Ijr4M.js.map} +1 -1
- package/dist/components/{p-brI0OtLp.js → p-DZky0cSu.js} +21 -21
- package/dist/components/{p-brI0OtLp.js.map → p-DZky0cSu.js.map} +1 -1
- package/dist/components/{p-BB2JXH5u.js → p-DcjGlnBR.js} +3 -3
- package/dist/components/{p-BB2JXH5u.js.map → p-DcjGlnBR.js.map} +1 -1
- package/dist/components/{p-CeGr8vNo.js → p-DgCBdNz4.js} +4 -4
- package/dist/components/{p-CeGr8vNo.js.map → p-DgCBdNz4.js.map} +1 -1
- package/dist/components/{p-BO38LdDr.js → p-Dj1TLa3T.js} +3 -3
- package/dist/components/{p-BO38LdDr.js.map → p-Dj1TLa3T.js.map} +1 -1
- package/dist/components/{p-Ha2t2y12.js → p-Dl0Yur5r.js} +3 -3
- package/dist/components/{p-Ha2t2y12.js.map → p-Dl0Yur5r.js.map} +1 -1
- package/dist/components/{p-8bLDlCqt.js → p-Do-hiOVl.js} +6 -6
- package/dist/components/{p-8bLDlCqt.js.map → p-Do-hiOVl.js.map} +1 -1
- package/dist/components/{p-MHQuGZu-.js → p-DoJYki91.js} +5 -5
- package/dist/components/{p-MHQuGZu-.js.map → p-DoJYki91.js.map} +1 -1
- package/dist/components/{p-BP2IBV8d.js → p-DqM3uP9H.js} +39 -18
- package/dist/components/p-DqM3uP9H.js.map +1 -0
- package/dist/components/{p-D0zqlv9X.js → p-DsMKWaSN.js} +7 -7
- package/dist/components/{p-D0zqlv9X.js.map → p-DsMKWaSN.js.map} +1 -1
- package/dist/components/{p-CcJs1phT.js → p-DuVwrI20.js} +4 -4
- package/dist/components/{p-CcJs1phT.js.map → p-DuVwrI20.js.map} +1 -1
- package/dist/components/{p-B6_vWkUg.js → p-DwLh5aVI.js} +3 -3
- package/dist/components/{p-B6_vWkUg.js.map → p-DwLh5aVI.js.map} +1 -1
- package/dist/components/{p-Hj9jbKPX.js → p-DxDoo-4C.js} +4 -4
- package/dist/components/{p-Hj9jbKPX.js.map → p-DxDoo-4C.js.map} +1 -1
- package/dist/components/{p-_fPTbZgX.js → p-G4bkKoDi.js} +33 -33
- package/dist/components/{p-_fPTbZgX.js.map → p-G4bkKoDi.js.map} +1 -1
- package/dist/components/{p-CE-erUmL.js → p-Gm-vN7E1.js} +4 -4
- package/dist/components/{p-CE-erUmL.js.map → p-Gm-vN7E1.js.map} +1 -1
- package/dist/components/{p-9REldQO4.js → p-HeijVgBd.js} +8 -8
- package/dist/components/{p-9REldQO4.js.map → p-HeijVgBd.js.map} +1 -1
- package/dist/components/{p-CKo-5Qfq.js → p-LtcdluKm.js} +13 -13
- package/dist/components/{p-CKo-5Qfq.js.map → p-LtcdluKm.js.map} +1 -1
- package/dist/components/{p-B1gsLDiL.js → p-NBNWXBut.js} +9 -9
- package/dist/components/{p-B1gsLDiL.js.map → p-NBNWXBut.js.map} +1 -1
- package/dist/components/{p-BVrJG89A.js → p-OhUC7F_g.js} +3 -3
- package/dist/components/{p-BVrJG89A.js.map → p-OhUC7F_g.js.map} +1 -1
- package/dist/components/{p-Bfn8MxOP.js → p-QqIA-4UU.js} +5 -5
- package/dist/components/{p-Bfn8MxOP.js.map → p-QqIA-4UU.js.map} +1 -1
- package/dist/components/{p-2_78I5nY.js → p-UNYO4Uen.js} +3 -3
- package/dist/components/{p-2_78I5nY.js.map → p-UNYO4Uen.js.map} +1 -1
- package/dist/components/{p-LGPQBsXs.js → p-_gwYX3vh.js} +10 -10
- package/dist/components/{p-LGPQBsXs.js.map → p-_gwYX3vh.js.map} +1 -1
- package/dist/components/{p-BaI67hQ_.js → p-ao6VxuAL.js} +3 -3
- package/dist/components/{p-BaI67hQ_.js.map → p-ao6VxuAL.js.map} +1 -1
- package/dist/components/{p-DAvS1ihh.js → p-d3kelm3z.js} +3 -3
- package/dist/components/{p-DAvS1ihh.js.map → p-d3kelm3z.js.map} +1 -1
- package/dist/components/{p-CSGxrebs.js → p-hipsVOV5.js} +3 -3
- package/dist/components/{p-CSGxrebs.js.map → p-hipsVOV5.js.map} +1 -1
- package/dist/components/{p-CQ-EyvqC.js → p-icAweFo6.js} +4 -4
- package/dist/components/{p-CQ-EyvqC.js.map → p-icAweFo6.js.map} +1 -1
- package/dist/components/{p-CC5LBxvb.js → p-jBYg7WMS.js} +3 -3
- package/dist/components/{p-CC5LBxvb.js.map → p-jBYg7WMS.js.map} +1 -1
- package/dist/components/{p-DYNQu4cB.js → p-k68ZYeHL.js} +8 -8
- package/dist/components/{p-DYNQu4cB.js.map → p-k68ZYeHL.js.map} +1 -1
- package/dist/components/{p-dlRUGWVl.js → p-kbilJltW.js} +3 -3
- package/dist/components/{p-dlRUGWVl.js.map → p-kbilJltW.js.map} +1 -1
- package/dist/components/{p-Cm33KFk-.js → p-ollg-iFp.js} +29 -18
- package/dist/components/p-ollg-iFp.js.map +1 -0
- package/dist/components/{p-C8RnCnvv.js → p-q7g_LEwC.js} +3 -3
- package/dist/components/{p-C8RnCnvv.js.map → p-q7g_LEwC.js.map} +1 -1
- package/dist/components/{p-lJd3klAU.js → p-rrunpGAl.js} +15 -15
- package/dist/components/{p-lJd3klAU.js.map → p-rrunpGAl.js.map} +1 -1
- package/dist/components/{p-BUp6TlwK.js → p-tVUFrM9G.js} +29 -16
- package/dist/components/p-tVUFrM9G.js.map +1 -0
- package/dist/components/{p-idvnK5Rl.js → p-wphqTozF.js} +6 -6
- package/dist/components/{p-idvnK5Rl.js.map → p-wphqTozF.js.map} +1 -1
- package/dist/components/{p-RvuIq5wt.js → p-xMlGGw2N.js} +3 -3
- package/dist/components/{p-RvuIq5wt.js.map → p-xMlGGw2N.js.map} +1 -1
- package/dist/components/paintbrush-fill-icon.js +1 -1
- package/dist/components/paintbrush-icon.js +1 -1
- package/dist/components/people-icon.js +1 -1
- package/dist/components/person-clipboard-icon.js +1 -1
- package/dist/components/person-icon.js +1 -1
- package/dist/components/play-icon.js +1 -1
- package/dist/components/plus-icon.js +1 -1
- package/dist/components/radio-button-group.js +1 -1
- package/dist/components/refresh-icon.js +1 -1
- package/dist/components/reply-all-icon.js +1 -1
- package/dist/components/reply-icon.js +1 -1
- package/dist/components/search-icon.js +1 -1
- package/dist/components/select-dropdown.js +1 -1
- package/dist/components/sent-icon.js +1 -1
- package/dist/components/spam-icon.js +1 -1
- package/dist/components/star-icon.js +1 -1
- package/dist/components/stop-icon.js +1 -1
- package/dist/components/textarea-component.js +1 -1
- package/dist/components/time-period-selector.js +1 -1
- package/dist/components/toggle-switch.js +1 -1
- package/dist/components/tooltip-component.js +1 -1
- package/dist/components/translate-icon.js +1 -1
- package/dist/components/trash-fill-icon.js +1 -1
- package/dist/components/trash-icon.js +1 -1
- package/dist/components/underline-icon.js +1 -1
- package/dist/components/warning-icon.js +1 -1
- package/dist/components/zoom-icon.js +1 -1
- package/dist/esm/add-circle-icon_2.entry.js +2 -2
- package/dist/esm/archive-icon.entry.js +1 -1
- package/dist/esm/arrow-icon.entry.js +1 -1
- package/dist/esm/bold-icon.entry.js +1 -1
- package/dist/esm/button-component_2.entry.js +2 -2
- package/dist/esm/calendar-agenda-fill-icon_39.entry.js +86 -62
- package/dist/esm/calendar-agenda-fill-icon_39.entry.js.map +1 -1
- package/dist/esm/calendar-cancel-icon.entry.js +1 -1
- package/dist/esm/calendar-check-icon.entry.js +1 -1
- package/dist/esm/calendar-icon.entry.js +1 -1
- package/dist/esm/checkbox-component.entry.js +1 -1
- package/dist/esm/checkbox-group_4.entry.js +5 -5
- package/dist/esm/checkmark-circle-icon.entry.js +1 -1
- package/dist/esm/checkmark-icon_15.entry.js +44 -23
- package/dist/esm/checkmark-icon_15.entry.js.map +1 -1
- package/dist/esm/chevron-icon_3.entry.js +4 -4
- package/dist/esm/clock-icon_4.entry.js +4 -4
- package/dist/esm/delete-icon.entry.js +1 -1
- package/dist/esm/document-refresh-icon.entry.js +1 -1
- package/dist/esm/folder-icon.entry.js +1 -1
- package/dist/esm/forward-icon.entry.js +1 -1
- package/dist/esm/globe-icon_3.entry.js +5 -5
- package/dist/esm/google-logo-icon.microsoft-logo-icon.nylas-editor-tabs.nylas-editor-tabs-group.nylas-list-configurations.nylas-select-event-type.entry.js.map +1 -1
- package/dist/esm/google-logo-icon_6.entry.js +19 -17
- package/dist/esm/google-logo-icon_6.entry.js.map +1 -1
- package/dist/esm/google-meet-icon_5.entry.js +5 -5
- package/dist/esm/inbox-icon.entry.js +1 -1
- package/dist/esm/info-icon_2.entry.js +3 -3
- package/dist/esm/input-component.entry.js +1 -1
- package/dist/esm/input-dropdown_2.entry.js +2 -2
- package/dist/esm/italic-icon.entry.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/multi-select-dropdown.entry.js +2 -2
- package/dist/esm/nylas-booked-event-card_11.entry.js +4 -4
- package/dist/esm/nylas-form-card.entry.js +1 -1
- package/dist/esm/nylas-notification_2.entry.js +2 -2
- package/dist/esm/nylas-scheduler-editor.entry.js +13 -6
- package/dist/esm/nylas-scheduler-editor.entry.js.map +1 -1
- package/dist/esm/nylas-scheduling.entry.js +38 -19
- package/dist/esm/nylas-scheduling.entry.js.map +1 -1
- package/dist/esm/nylas-web-elements.js +1 -1
- package/dist/esm/person-icon.entry.js +1 -1
- package/dist/esm/play-icon.entry.js +1 -1
- package/dist/esm/radio-button-group.entry.js +1 -1
- package/dist/esm/refresh-icon.entry.js +1 -1
- package/dist/esm/reply-all-icon.entry.js +1 -1
- package/dist/esm/reply-icon.entry.js +1 -1
- package/dist/esm/sent-icon.entry.js +1 -1
- package/dist/esm/spam-icon.entry.js +1 -1
- package/dist/esm/star-icon.entry.js +1 -1
- package/dist/esm/stop-icon.entry.js +1 -1
- package/dist/esm/textarea-component.entry.js +1 -1
- package/dist/esm/toggle-switch.entry.js +1 -1
- package/dist/esm/translate-icon.entry.js +1 -1
- package/dist/esm/trash-fill-icon.entry.js +1 -1
- package/dist/esm/underline-icon.entry.js +1 -1
- package/dist/esm/{version-BCn0rl0y.js → version-ClDvNLDf.js} +3 -3
- package/dist/{cjs/version-BpVJo5VP.js.map → esm/version-ClDvNLDf.js.map} +1 -1
- package/dist/nylas-web-elements/google-logo-icon.microsoft-logo-icon.nylas-editor-tabs.nylas-editor-tabs-group.nylas-list-configurations.nylas-select-event-type.entry.esm.js.map +1 -1
- package/dist/nylas-web-elements/nylas-scheduler-editor.entry.esm.js.map +1 -1
- package/dist/nylas-web-elements/nylas-scheduling.entry.esm.js.map +1 -1
- package/dist/nylas-web-elements/nylas-web-elements.esm.js +1 -1
- package/dist/nylas-web-elements/{p-9e4672ac.entry.js → p-02343d66.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-053363a5.entry.js → p-11f478bd.entry.js} +2 -2
- package/dist/nylas-web-elements/p-12a29e9d.entry.js +11 -0
- package/dist/nylas-web-elements/p-12a29e9d.entry.js.map +1 -0
- package/dist/nylas-web-elements/p-16db18a3.entry.js +2 -0
- package/dist/nylas-web-elements/{p-5d087249.entry.js → p-1741705d.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-52a66db6.entry.js → p-219fd6f9.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-c0a17829.entry.js → p-37c5834c.entry.js} +2 -2
- package/dist/nylas-web-elements/p-37eedc9d.entry.js +2 -0
- package/dist/nylas-web-elements/{p-c50fdabc.entry.js → p-38d830c6.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-13a88760.entry.js → p-3d1fd865.entry.js} +2 -2
- package/dist/nylas-web-elements/p-43c3f331.entry.js +2 -0
- package/dist/nylas-web-elements/p-55b2df61.entry.js +2 -0
- package/dist/nylas-web-elements/{p-5b01e519.entry.js → p-5a861a93.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-843fff90.entry.js → p-62d0c211.entry.js} +2 -2
- package/dist/nylas-web-elements/p-68195a72.entry.js +2 -0
- package/dist/nylas-web-elements/{p-dfc63fe6.entry.js → p-7930474b.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-b184b489.entry.js → p-7bc4f51f.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-07beb85c.entry.js → p-7fe0b3bb.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-b2c497eb.entry.js → p-84c3921f.entry.js} +2 -2
- package/dist/nylas-web-elements/p-88e89256.entry.js +2 -0
- package/dist/nylas-web-elements/{p-1398e461.entry.js → p-8b55669a.entry.js} +2 -2
- package/dist/nylas-web-elements/p-913511c9.entry.js +2 -0
- package/dist/nylas-web-elements/p-913511c9.entry.js.map +1 -0
- package/dist/nylas-web-elements/{p-8256e49f.entry.js → p-932456ba.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-3b4ce792.entry.js → p-974fce52.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-051c1704.entry.js → p-991b94bd.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-d1948f4c.entry.js → p-9dd10333.entry.js} +2 -2
- package/dist/nylas-web-elements/p-ClDvNLDf.js +2 -0
- package/dist/nylas-web-elements/{p-BCn0rl0y.js.map → p-ClDvNLDf.js.map} +1 -1
- package/dist/nylas-web-elements/{p-8bcf3b85.entry.js → p-a3b1ac68.entry.js} +2 -2
- package/dist/nylas-web-elements/p-a3baa9bf.entry.js +2 -0
- package/dist/nylas-web-elements/p-a94cbeb7.entry.js +2 -0
- package/dist/nylas-web-elements/{p-a64038fa.entry.js → p-af340293.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-8ea62358.entry.js → p-b6eb8c04.entry.js} +2 -2
- package/dist/nylas-web-elements/p-bafa8e30.entry.js +2 -0
- package/dist/nylas-web-elements/p-bafa8e30.entry.js.map +1 -0
- package/dist/nylas-web-elements/p-bca85255.entry.js +2 -0
- package/dist/nylas-web-elements/p-bf9adc08.entry.js +8 -0
- package/dist/nylas-web-elements/p-bf9adc08.entry.js.map +1 -0
- package/dist/nylas-web-elements/{p-0dd59c68.entry.js → p-c0f88f23.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-d20045de.entry.js → p-c59fc361.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-4e81d20a.entry.js → p-c96b6f73.entry.js} +2 -2
- package/dist/nylas-web-elements/p-d2f6e3d9.entry.js +2 -0
- package/dist/nylas-web-elements/p-d2f6e3d9.entry.js.map +1 -0
- package/dist/nylas-web-elements/{p-c760d10c.entry.js → p-d752c738.entry.js} +2 -2
- package/dist/nylas-web-elements/p-de990849.entry.js +2 -0
- package/dist/nylas-web-elements/p-e2dd457a.entry.js +2 -0
- package/dist/nylas-web-elements/p-e734cde9.entry.js +2 -0
- package/dist/nylas-web-elements/p-ed89219a.entry.js +2 -0
- package/dist/nylas-web-elements/p-f0406089.entry.js +2 -0
- package/dist/nylas-web-elements/{p-059379cf.entry.js → p-f3622337.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-714cfaaa.entry.js → p-f4516330.entry.js} +2 -2
- package/dist/nylas-web-elements/p-f7f2c232.entry.js +2 -0
- package/dist/nylas-web-elements/{p-401fd416.entry.js → p-f84b98e9.entry.js} +2 -2
- package/dist/stencil.config.js +9 -1
- package/dist/stencil.config.js.map +1 -1
- package/dist/types/components/scheduler-editor/nylas-additional-participants/nylas-additional-participants.d.ts +2 -1
- package/dist/types/components/scheduler-editor/nylas-connected-calendars/nylas-connected-calendars.d.ts +1 -0
- package/dist/types/components/scheduler-editor/nylas-participant-booking-calendars/nylas-participant-booking-calendars.d.ts +1 -0
- package/dist/types/components/scheduler-editor/nylas-scheduler-editor/nylas-scheduler-editor.d.ts +9 -0
- package/dist/types/components.d.ts +10 -0
- package/dist/types/connector/shared/api/scheduler.d.ts +1 -0
- package/dist/types/version.d.ts +1 -1
- package/package.json +1 -1
- package/dist/components/p-BHKS010u.js.map +0 -1
- package/dist/components/p-BP2IBV8d.js.map +0 -1
- package/dist/components/p-BUp6TlwK.js.map +0 -1
- package/dist/components/p-CjPOfL98.js.map +0 -1
- package/dist/components/p-Cm33KFk-.js.map +0 -1
- package/dist/nylas-web-elements/p-00454d48.entry.js +0 -2
- package/dist/nylas-web-elements/p-00454d48.entry.js.map +0 -1
- package/dist/nylas-web-elements/p-038c59e1.entry.js +0 -2
- package/dist/nylas-web-elements/p-0c5c41bf.entry.js +0 -2
- package/dist/nylas-web-elements/p-106cec0c.entry.js +0 -2
- package/dist/nylas-web-elements/p-212e4c6b.entry.js +0 -2
- package/dist/nylas-web-elements/p-25966881.entry.js +0 -8
- package/dist/nylas-web-elements/p-25966881.entry.js.map +0 -1
- package/dist/nylas-web-elements/p-2e732ba2.entry.js +0 -2
- package/dist/nylas-web-elements/p-3001a2db.entry.js +0 -2
- package/dist/nylas-web-elements/p-351a0c32.entry.js +0 -2
- package/dist/nylas-web-elements/p-3cb90051.entry.js +0 -2
- package/dist/nylas-web-elements/p-3cb90051.entry.js.map +0 -1
- package/dist/nylas-web-elements/p-531412c9.entry.js +0 -2
- package/dist/nylas-web-elements/p-616b6000.entry.js +0 -2
- package/dist/nylas-web-elements/p-6604dde1.entry.js +0 -11
- package/dist/nylas-web-elements/p-6604dde1.entry.js.map +0 -1
- package/dist/nylas-web-elements/p-6e899199.entry.js +0 -2
- package/dist/nylas-web-elements/p-7117e2e0.entry.js +0 -2
- package/dist/nylas-web-elements/p-8823bc36.entry.js +0 -2
- package/dist/nylas-web-elements/p-9758d9fc.entry.js +0 -2
- package/dist/nylas-web-elements/p-9758d9fc.entry.js.map +0 -1
- package/dist/nylas-web-elements/p-BCn0rl0y.js +0 -2
- package/dist/nylas-web-elements/p-b5d145cd.entry.js +0 -2
- package/dist/nylas-web-elements/p-de00f363.entry.js +0 -2
- package/dist/nylas-web-elements/p-fb4fece1.entry.js +0 -2
- /package/dist/nylas-web-elements/{p-9e4672ac.entry.js.map → p-02343d66.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-053363a5.entry.js.map → p-11f478bd.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-7117e2e0.entry.js.map → p-16db18a3.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-5d087249.entry.js.map → p-1741705d.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-52a66db6.entry.js.map → p-219fd6f9.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-c0a17829.entry.js.map → p-37c5834c.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-8823bc36.entry.js.map → p-37eedc9d.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-c50fdabc.entry.js.map → p-38d830c6.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-13a88760.entry.js.map → p-3d1fd865.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-531412c9.entry.js.map → p-43c3f331.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-212e4c6b.entry.js.map → p-55b2df61.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-5b01e519.entry.js.map → p-5a861a93.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-843fff90.entry.js.map → p-62d0c211.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-b5d145cd.entry.js.map → p-68195a72.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-dfc63fe6.entry.js.map → p-7930474b.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-b184b489.entry.js.map → p-7bc4f51f.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-07beb85c.entry.js.map → p-7fe0b3bb.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-b2c497eb.entry.js.map → p-84c3921f.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-fb4fece1.entry.js.map → p-88e89256.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-1398e461.entry.js.map → p-8b55669a.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-8256e49f.entry.js.map → p-932456ba.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-3b4ce792.entry.js.map → p-974fce52.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-051c1704.entry.js.map → p-991b94bd.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-d1948f4c.entry.js.map → p-9dd10333.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-8bcf3b85.entry.js.map → p-a3b1ac68.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-de00f363.entry.js.map → p-a3baa9bf.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-351a0c32.entry.js.map → p-a94cbeb7.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-a64038fa.entry.js.map → p-af340293.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-8ea62358.entry.js.map → p-b6eb8c04.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-2e732ba2.entry.js.map → p-bca85255.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-0dd59c68.entry.js.map → p-c0f88f23.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-d20045de.entry.js.map → p-c59fc361.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-4e81d20a.entry.js.map → p-c96b6f73.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-c760d10c.entry.js.map → p-d752c738.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-3001a2db.entry.js.map → p-de990849.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-616b6000.entry.js.map → p-e2dd457a.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-106cec0c.entry.js.map → p-e734cde9.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-6e899199.entry.js.map → p-ed89219a.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-0c5c41bf.entry.js.map → p-f0406089.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-059379cf.entry.js.map → p-f3622337.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-714cfaaa.entry.js.map → p-f4516330.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-038c59e1.entry.js.map → p-f7f2c232.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-401fd416.entry.js.map → p-f84b98e9.entry.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"p-C9OPB0dE.js","mappings":"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","names":["__stencil_proxyCustomElement","HTMLElement","i18next"],"sources":["src/components/scheduler-editor/nylas-availability-picker/nylas-availability-picker.scss?tag=nylas-availability-picker&encapsulation=shadow","src/components/scheduler-editor/nylas-availability-picker/nylas-availability-picker.tsx"],"sourcesContent":["@use '../../../common/styles/variables' as *;\n\n:host {\n display: block;\n @include default-css-variables;\n width: inherit;\n}\n\n.nylas-availability-picker {\n width: inherit;\n display: flex;\n flex-direction: column;\n margin: 1rem;\n border-radius: var(--nylas-border-radius-2x);\n border: 1px solid var(--nylas-base-200);\n\n .header {\n padding: 1rem;\n border-bottom: 1px solid var(--nylas-base-200);\n\n h3 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n line-height: 20px;\n color: var(--nylas-base-900);\n text-align: left;\n }\n\n p {\n margin: 0.25rem 0 0 0;\n font-size: 0.875rem;\n font-weight: 400;\n line-height: 20px;\n color: var(--nylas-base-600);\n text-align: left;\n display: flex;\n align-items: center;\n gap: 4px;\n }\n }\n\n .content {\n padding: 1rem;\n border-radius: var(--nylas-border-radius-2x);\n color: var(--nylas-base-900);\n font-size: 16px;\n font-family: var(--nylas-font-family);\n background: var(--nylas-base-25);\n\n @media #{$small-mobile} {\n font-size: 15px;\n }\n\n .select-timezone {\n display: flex;\n justify-content: space-between;\n align-items: center;\n border-bottom: 1px solid var(--nylas-base-200);\n padding-bottom: 1rem;\n gap: 1rem;\n\n h4 {\n display: flex;\n gap: 0.5rem;\n align-items: center;\n margin: 0;\n font-size: 16px;\n font-weight: 500;\n line-height: 20px;\n\n @media #{$small-mobile} {\n font-size: 15px;\n }\n }\n }\n\n .availability {\n display: flex;\n flex-direction: column;\n gap: 1rem;\n padding: 0 0.5rem;\n margin: 1rem 0;\n\n @media #{$small-mobile} {\n gap: 0.5rem;\n padding: 0;\n }\n\n .availability-day {\n display: grid;\n grid-template-columns: minmax(auto, 65px) 1fr minmax(auto, 40px);\n\n gap: 1rem;\n align-items: baseline;\n\n @media #{$mobile} {\n grid-template-columns: 78px 1fr auto;\n }\n\n @media #{$small-mobile} {\n display: inline-grid;\n gap: 8px;\n grid-template-columns: 60px 1fr auto;\n }\n\n .day {\n display: flex;\n gap: 0.5rem;\n align-items: center;\n\n @media #{$small-mobile} {\n gap: 0.25rem;\n }\n\n input[type='checkbox'] {\n transform: scale(1.3);\n }\n }\n\n .time-ranges {\n span.unavailable {\n height: 48px;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .time-range {\n display: flex;\n gap: 1.5rem;\n justify-content: space-between;\n align-items: baseline;\n\n @media #{$small-mobile} {\n justify-content: unset;\n gap: 0.5rem;\n }\n\n .pickers {\n display: flex;\n gap: 1rem;\n\n @media #{$small-mobile} {\n gap: 0.5rem;\n }\n\n span {\n margin-top: 0.75rem;\n }\n }\n\n &:not(:last-of-type) {\n margin-bottom: 1rem;\n }\n }\n\n .error-message {\n width: 100%;\n padding: 4px 8px;\n background: var(--nylas-error-50);\n color: var(--nylas-error);\n font-size: 12px;\n border-radius: 4px;\n border: 1px solid var(--nylas-error-200);\n margin-top: 8px;\n }\n }\n\n button {\n border: none;\n background: transparent;\n height: 40px;\n cursor: pointer;\n color: var(--nylas-base-800);\n\n &:hover,\n &:active {\n color: var(--nylas-primary);\n }\n }\n }\n }\n }\n}\n\nselect-dropdown {\n width: auto;\n}\n\nselect-dropdown::part(sd_dropdown-button) {\n justify-content: initial;\n}\n","import { RegisterComponent } from '@/common/register-component';\nimport { NylasSchedulerConfigConnector } from '@/connector/nylas-scheduler-config-connector';\nimport { convertTo12HourFormat, convertTo24HourFormat, debug, minutesToTime, timeToMinutes } from '@/utils/utils';\nimport { AttachInternals, Component, Element, Event, EventEmitter, Host, Listen, Prop, State, Watch, h } from '@stencil/core';\nimport { NylasSchedulerEditor } from '../nylas-scheduler-editor/nylas-scheduler-editor';\nimport { DEFAULT_OPEN_HOURS, TIMEZONE_MAP } from '@/common/constants';\nimport { Configuration, ThemeConfig } from '@nylas/core';\nimport i18next from '@/utils/i18n';\nimport { LANGUAGE_CODE } from '@/common/constants';\n\nexport type OpenHours = {\n days: number[];\n start: string;\n end: string;\n timezone: string;\n};\n\nexport type Schedule = {\n SUN: { start: string; end: string }[];\n MON: { start: string; end: string }[];\n TUE: { start: string; end: string }[];\n WED: { start: string; end: string }[];\n THU: { start: string; end: string }[];\n FRI: { start: string; end: string }[];\n SAT: { start: string; end: string }[];\n};\n\n/**\n * The `nylas-availability-picker` component is a form input for selecting availability (open hours).\n * @part nap__header - The header of the availability picker\n * @part nap__select-timezone - The timezone selection container\n * @part nap__select-timezone-button - The timezone selection button\n * @part nap__select-timezone-dropdown-content - The timezone selection dropdown content\n * @part nap__availability - The availability container\n * @part nap__day - The day container\n * @part nap__time-ranges - The time ranges container\n * @part nap__time-range - The time range container\n * @part nap__add-time-range - The add time range button\n * @part nap__time-picker-container - The time picker container\n * @part nap__time-picker-input - The time picker input\n * @part nap__time-picker-times - The time picker times\n */\n@Component({\n tag: 'nylas-availability-picker',\n styleUrl: 'nylas-availability-picker.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class NylasAvailabilityPicker {\n /**\n * The element <nylas-availability-picker> itself.\n */\n @Element() host!: HTMLNylasAvailabilityPickerElement;\n /**\n * @standalone\n * The name of the availability picker.\n */\n @Prop() name: string = 'availability';\n /**\n * @standalone\n * The selected configuration.\n */\n @Prop() selectedConfiguration?: Configuration;\n /**\n * @standalone\n * The open hours to display.\n */\n @Prop() openHours?: OpenHours[];\n /**\n * @standalone\n * The default timezone or preset timezone.\n */\n @Prop() defaultTimezone: string = Intl.DateTimeFormat().resolvedOptions().timeZone;\n /**\n * @standalone\n * Hide the header of the availability picker.\n */\n @Prop() hideHeader: boolean = false;\n /**\n * The selected language.\n */\n @Prop() selectedLanguage?: LANGUAGE_CODE;\n /**\n * @standalone\n * The theme configuration.\n */\n @Prop({ attribute: 'theme-config' }) readonly themeConfig?: ThemeConfig;\n\n /**\n * This event is fired when the selected availability / open hours change.\n * The value is a stringified JSON object with the open hours and timezone.\n ```\n {\n openHours: OpenHours[],\n timezone: string\n }\n ```\n */\n @Event() valueChanged!: EventEmitter<{\n value: string;\n name: string;\n }>;\n\n /**\n * The element internals.\n */\n @AttachInternals() internals!: ElementInternals;\n @State() schedule = {\n SUN: [],\n MON: [{ start: '09:00am', end: '05:00pm' }],\n TUE: [{ start: '09:00am', end: '05:00pm' }],\n WED: [{ start: '09:00am', end: '05:00pm' }],\n THU: [{ start: '09:00am', end: '05:00pm' }],\n FRI: [{ start: '09:00am', end: '05:00pm' }],\n SAT: [],\n };\n /**\n * The selected timezone state.\n */\n @State() timezone: string = '';\n\n /**\n * The overlapping time ranges state. This is used to display an error message when there are overlapping time ranges.\n */\n @State() overlapDays: { [key: string]: number[] } = {};\n\n /**\n * State for tracking time window validation errors (e.g., start time after end time)\n */\n @State() timeWindowErrors: { [key: string]: string } = {};\n\n /**\n * Flag to track if the component has loaded.\n */\n private hasLoaded: boolean = false;\n\n /**\n * When a name prop is passed, stencil does not automatically set the name attribute on the host element.\n * Since this component is form-associated, the name attribute is required for form submission.\n * This is a workaround to ensure that the name attribute is set on the host element.\n */\n @Watch('name')\n elementNameChangedHandler(newValue: string) {\n debug('nylas-availability-picker', 'elementNameChangedHandler', newValue);\n this.host.setAttribute('name', newValue);\n }\n\n @Watch('defaultTimezone')\n defaultTimezoneChanged(newValue: string) {\n if (!this.hasLoaded) return;\n if (newValue && newValue !== this.timezone) {\n this.timezone = newValue;\n const updateValue = {\n openHours: this.scheduleToOpenHours(this.schedule),\n timezone: this.timezone,\n };\n this.isInternalsAvailable && this.internals.setFormValue(JSON.stringify(updateValue), this.name);\n this.valueChanged.emit({\n value: JSON.stringify(updateValue),\n name: this.name,\n });\n }\n }\n\n @Watch('openHours')\n openHoursChanged(newValue: OpenHours[]) {\n // Only process if we have a non-empty array and timezone is already set\n // This prevents processing during initialization and handles null/undefined consistently\n if (newValue && newValue.length > 0 && this.timezone) {\n this.openHoursToSchedule(newValue);\n }\n }\n\n @Watch('selectedConfiguration')\n configChangedHandler(newConfig: Configuration) {\n const defaultOpenHours = newConfig?.availability?.availability_rules?.default_open_hours ?? DEFAULT_OPEN_HOURS;\n // If the name is `availability`, we are setting the default open hours. If the name is `participant-****`, we are setting the participant's custom availability.\n // Set the timezone accordingly.\n const defaultOpenHoursTimezone = newConfig?.event_booking?.timezone || this.defaultTimezone;\n this.timezone = this.name === 'availability' ? defaultOpenHoursTimezone : this.defaultTimezone;\n\n // Process openHours if available, otherwise fall back to defaultOpenHours\n // The openHours watcher will handle openHours changes separately to avoid redundant calls\n if (this.openHours && this.openHours.length > 0) {\n this.openHoursToSchedule(this.openHours);\n } else if (defaultOpenHours) {\n this.openHoursToSchedule(defaultOpenHours);\n }\n }\n\n /**\n * Normalize time format to ensure consistent parsing across languages\n */\n private normalizeTimeFormat(timeStr: string): string {\n // Normalize Spanish AM/PM formats (a.m./p.m.) to English am/pm\n return timeStr.replace(/a\\.?m\\.?/gi, 'am').replace(/p\\.?m\\.?/gi, 'pm');\n }\n\n scheduleChanged(newValue: Schedule, valueChanged: boolean = true) {\n const overlapDays: { [key: string]: number[] } = {};\n Object.keys(newValue).forEach(key => {\n const dayTimeRanges = newValue[key];\n if (dayTimeRanges.length > 0) {\n // Normalize time formats before checking overlaps\n const normalizedTimeRanges = dayTimeRanges.map(range => ({\n start: this.normalizeTimeFormat(range.start),\n end: this.normalizeTimeFormat(range.end),\n }));\n const overlaps = this.getOverlaps(normalizedTimeRanges);\n if (overlaps.length > 0) {\n overlapDays[key] = overlaps;\n }\n }\n });\n this.overlapDays = overlapDays;\n\n // Clean up timeWindowErrors for non-existent time ranges\n this.cleanupTimeWindowErrors(newValue);\n\n this.updateFormValidity();\n\n if (valueChanged) {\n this.valueChanged.emit({\n value: JSON.stringify({\n openHours: this.scheduleToOpenHours(newValue),\n timezone: this.timezone,\n }),\n name: this.name,\n });\n }\n }\n\n /**\n * Clean up timeWindowErrors for time ranges that no longer exist in the schedule\n */\n private cleanupTimeWindowErrors(schedule: Schedule) {\n const newTimeWindowErrors = { ...this.timeWindowErrors };\n let hasChanges = false;\n\n // Get all valid time range keys from current schedule\n const validKeys = new Set<string>();\n Object.keys(schedule).forEach(day => {\n const timeRanges = schedule[day];\n timeRanges.forEach((_, index) => {\n validKeys.add(`${day}:${index}_start`);\n validKeys.add(`${day}:${index}_end`);\n });\n });\n\n // Remove errors for keys that no longer exist\n Object.keys(newTimeWindowErrors).forEach(errorKey => {\n if (!validKeys.has(errorKey)) {\n delete newTimeWindowErrors[errorKey];\n hasChanges = true;\n }\n });\n\n if (hasChanges) {\n this.timeWindowErrors = newTimeWindowErrors;\n }\n }\n\n /**\n * Updates form validity based on both overlap errors and time window errors\n */\n updateFormValidity() {\n const hasOverlapErrors = Object.keys(this.overlapDays).length > 0;\n const hasTimeWindowErrors = Object.keys(this.timeWindowErrors).filter(key => this.timeWindowErrors[key]).length > 0;\n\n if (hasOverlapErrors) {\n const element = this.host.shadowRoot?.getElementById(Object.keys(this.overlapDays)[0]) as HTMLInputElement;\n if (element) {\n debug('nylas-availability-picker', 'The time ranges are overlapping. Overlap: ', this.overlapDays);\n this.isInternalsAvailable && this.internals.setValidity({ customError: true }, 'Overlapping time ranges found', element);\n }\n } else if (hasTimeWindowErrors) {\n const firstErrorKey = Object.keys(this.timeWindowErrors).find(key => this.timeWindowErrors[key]);\n const element = this.host.shadowRoot?.getElementById(firstErrorKey!) as HTMLInputElement;\n const errorMessage = this.timeWindowErrors[firstErrorKey!];\n if (element) {\n this.isInternalsAvailable && this.internals.setValidity({ customError: true }, errorMessage, element);\n }\n } else {\n this.isInternalsAvailable && this.internals.setValidity({ customError: false });\n this.isInternalsAvailable &&\n this.internals.setFormValue(\n JSON.stringify({\n openHours: this.scheduleToOpenHours(this.schedule),\n timezone: this.timezone,\n }),\n this.name,\n );\n }\n }\n\n @Watch('selectedLanguage')\n selectedLanguageChangedHandler(newVal: LANGUAGE_CODE, oldVal: LANGUAGE_CODE) {\n if (newVal === oldVal) return;\n i18next.changeLanguage(newVal);\n }\n\n @Listen('nylasFormDropdownChanged')\n nylasFormDropdownChangedHandler(\n event: CustomEvent<{\n value: string;\n name: string;\n }>,\n ) {\n const { name, value } = event.detail;\n if (name === 'timezone') {\n this.timezone = value;\n const updateValue = {\n openHours: this.scheduleToOpenHours(this.schedule),\n timezone: this.timezone,\n };\n this.isInternalsAvailable && this.internals.setFormValue(JSON.stringify(updateValue), this.name);\n this.valueChanged.emit({\n value: JSON.stringify(updateValue),\n name: this.name,\n });\n }\n }\n\n @Watch('themeConfig')\n themeConfigChangedHandler(newVal: ThemeConfig, oldVal: ThemeConfig) {\n if (newVal === oldVal) return;\n this.applyThemeConfig(newVal);\n }\n\n connectedCallback() {\n debug('nylas-availability-picker', 'connectedCallback');\n // Use queueMicrotask to defer theme application until after React has set props.\n // This fixes the timing issue where connectedCallback fires before React sets themeConfig.\n queueMicrotask(() => {\n if (this.themeConfig) {\n this.applyThemeConfig(this.themeConfig);\n this.host.setAttribute('data-themed', '');\n }\n });\n }\n\n disconnectedCallback() {\n debug('nylas-availability-picker', 'disconnectedCallback');\n }\n\n componentWillLoad() {\n debug('nylas-availability-picker', 'componentWillLoad');\n this.host.setAttribute('name', this.name);\n }\n\n componentDidLoad() {\n debug('nylas-availability-picker', 'componentDidLoad');\n\n if (this.selectedConfiguration) {\n this.configChangedHandler(this.selectedConfiguration);\n } else {\n this.timezone = this.defaultTimezone;\n if (this.openHours && this.openHours.length > 0) {\n this.openHoursToSchedule(this.openHours);\n }\n }\n\n const updateValue = {\n openHours: this.scheduleToOpenHours(this.schedule),\n timezone: this.timezone,\n };\n this.isInternalsAvailable && this.internals.setFormValue(JSON.stringify(updateValue), this.name);\n\n // Set initial form validity\n this.updateFormValidity();\n this.hasLoaded = true;\n }\n\n get isInternalsAvailable() {\n return typeof this.internals.setFormValue === 'function';\n }\n\n getOverlaps(timeRanges) {\n // Convert times to minutes and add to the array\n const timeRangesInMinutes = timeRanges.map((range, index) => ({\n start: timeToMinutes(range.start),\n end: timeToMinutes(range.end),\n originalIndex: index,\n }));\n\n // Sort by start time\n timeRangesInMinutes.sort((a, b) => a.start - b.start);\n const overlaps: number[] = [];\n // Check for overlap\n for (let i = 1; i < timeRangesInMinutes.length; i++) {\n if (timeRangesInMinutes[i].start < timeRangesInMinutes[i - 1].end) {\n // Add both overlapping time range indices if they are not already included\n if (!overlaps.includes(timeRangesInMinutes[i].originalIndex)) {\n overlaps.push(timeRangesInMinutes[i].originalIndex);\n }\n if (!overlaps.includes(timeRangesInMinutes[i - 1].originalIndex)) {\n overlaps.push(timeRangesInMinutes[i - 1].originalIndex);\n }\n }\n }\n return overlaps.sort((a, b) => a - b); // Return sorted list of indices\n }\n\n addTimeRange(day) {\n const currentTimeRanges = this.schedule[day];\n\n // Default working hours are from 00:00 to 23:45 for calculation purposes\n const dayStart = 0; // Start of the day in minutes (00:00)\n const dayEnd = 1425; // End of the day in minutes (23:45)\n\n if (currentTimeRanges.length === 0) {\n // If there are no existing time ranges, add one at the start of the day\n this.schedule[day] = [{ start: '09:00am', end: '05:00pm' }]; // Example range\n } else {\n // Convert all time ranges to minutes for comparison\n const timeRangesInMinutes = currentTimeRanges\n .map(range => ({\n start: timeToMinutes(range.start),\n end: timeToMinutes(range.end),\n }))\n .sort((a, b) => a.start - b.start); // Sort by start time\n\n // Attempt to add a new time range at the end of the day\n const lastRangeEnd = timeRangesInMinutes[timeRangesInMinutes.length - 1].end;\n if (lastRangeEnd + 60 <= dayEnd) {\n // There's room at the end of the day\n this.schedule[day].push({\n start: convertTo12HourFormat(minutesToTime(lastRangeEnd)),\n end: convertTo12HourFormat(minutesToTime(lastRangeEnd + 60)),\n });\n } else {\n // No room at the end, look for gaps at the beginning of the day\n let gapFound = false;\n if (timeRangesInMinutes[0].start > dayStart + 60) {\n // There's room for at least a 1-hour meeting at the beginning of the day\n this.schedule[day].push({\n start: convertTo12HourFormat(minutesToTime(dayStart)),\n end: convertTo12HourFormat(minutesToTime(dayStart + 60)),\n });\n gapFound = true;\n }\n\n if (!gapFound) {\n // Search for gaps between scheduled time ranges\n for (let i = 0; i < timeRangesInMinutes.length - 1; i++) {\n const currentEnd = timeRangesInMinutes[i].end;\n const nextStart = timeRangesInMinutes[i + 1].start;\n\n if (nextStart - currentEnd >= 60) {\n // Found a gap\n this.schedule[day].push({\n start: convertTo12HourFormat(minutesToTime(currentEnd)),\n end: convertTo12HourFormat(minutesToTime(currentEnd + 60)),\n });\n break; // Exit the loop after adding a time range\n }\n }\n }\n }\n }\n\n // Sort the updated schedule to maintain order\n this.schedule[day].sort((a, b) => timeToMinutes(a.start) - timeToMinutes(b.start));\n\n this.schedule = { ...this.schedule };\n this.scheduleChanged(this.schedule);\n }\n\n removeTimeRange(day, index) {\n // Clear any time window errors for the removed time range\n const startKey = `${day}:${index}_start`;\n const endKey = `${day}:${index}_end`;\n\n const newTimeWindowErrors = { ...this.timeWindowErrors };\n delete newTimeWindowErrors[startKey];\n delete newTimeWindowErrors[endKey];\n this.timeWindowErrors = newTimeWindowErrors;\n\n this.schedule[day].splice(index, 1);\n this.schedule = { ...this.schedule };\n this.scheduleChanged(this.schedule);\n }\n\n @Listen('timeChange')\n setTime(event: CustomEvent<{ key: string; value: string }>) {\n const { key, value } = event.detail;\n const [dayIndex, timeType] = key.split('_');\n const [day, index] = dayIndex.split(':');\n\n if (timeType === 'start') {\n this.schedule[day][index].start = value;\n } else if (timeType === 'end') {\n this.schedule[day][index].end = value;\n }\n\n // Clear any existing time window error for this specific key\n if (this.timeWindowErrors[key]) {\n const newErrors = { ...this.timeWindowErrors };\n delete newErrors[key];\n this.timeWindowErrors = newErrors;\n }\n\n this.schedule = { ...this.schedule };\n this.scheduleChanged(this.schedule);\n }\n\n @Listen('timeWindowFormError')\n setFormError(event: CustomEvent<{ key: string; message: string }>) {\n const { key, message } = event.detail;\n\n if (message) {\n // Set the error for this specific time input\n this.timeWindowErrors = {\n ...this.timeWindowErrors,\n [key]: message,\n };\n } else {\n // Clear the error for this specific time input\n const newErrors = { ...this.timeWindowErrors };\n delete newErrors[key];\n this.timeWindowErrors = newErrors;\n }\n\n // Update overall form validity\n this.updateFormValidity();\n }\n\n openHoursToSchedule(openHours: OpenHours[]) {\n const newSchedule = {\n SUN: [],\n MON: [],\n TUE: [],\n WED: [],\n THU: [],\n FRI: [],\n SAT: [],\n };\n openHours.forEach(openHour => {\n if (!openHour.days) return;\n openHour.days.forEach(day => {\n const dayKey = this.getDayKey(day);\n const start12hr = this.normalizeTimeFormat(convertTo12HourFormat(openHour.start));\n const end12hr = this.normalizeTimeFormat(convertTo12HourFormat(openHour.end));\n const timeRange = { start: start12hr, end: end12hr };\n\n // Check if the time range already exists for the day\n let timeRangeExists = false;\n if (newSchedule[dayKey]) {\n // Search for an existing time range that matches the current one\n timeRangeExists = newSchedule[dayKey].some(range => range.start === timeRange.start && range.end === timeRange.end);\n }\n\n if (!timeRangeExists) {\n if (newSchedule[dayKey]) {\n newSchedule[dayKey].push(timeRange);\n } else {\n newSchedule[dayKey] = [timeRange];\n }\n }\n });\n });\n\n this.schedule = newSchedule;\n this.scheduleChanged(this.schedule, false);\n }\n\n getDayKey(dayIndex: number): string {\n const days = ['SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT'];\n return days[dayIndex];\n }\n\n scheduleToOpenHours(schedule: Schedule): OpenHours[] {\n const dayKeys = ['SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT'];\n const openHoursMap: Map<string, { days: number[]; start: string; end: string }> = new Map();\n\n dayKeys.forEach((dayKey, index) => {\n if (schedule[dayKey]) {\n // Check if schedule for the day exists\n schedule[dayKey].forEach(timeRange => {\n const start24hr = convertTo24HourFormat(timeRange.start);\n const end24hr = convertTo24HourFormat(timeRange.end);\n const key = `${start24hr}-${end24hr}`;\n\n if (!openHoursMap.has(key)) {\n openHoursMap.set(key, { days: [index], start: start24hr, end: end24hr });\n } else {\n const entry = openHoursMap.get(key);\n if (entry) {\n entry.days.push(index);\n openHoursMap.set(key, entry);\n }\n }\n });\n }\n });\n\n const selectedOpenHours: OpenHours[] = [];\n openHoursMap.forEach((value, _key) => {\n selectedOpenHours.push({\n days: value.days,\n start: value.start,\n end: value.end,\n timezone: this.timezone,\n });\n });\n\n return selectedOpenHours;\n }\n\n applyThemeConfig(themeConfig?: ThemeConfig) {\n if (themeConfig) {\n for (const [key, value] of Object.entries(themeConfig)) {\n this.host.style.setProperty(`${key}`, value);\n }\n }\n }\n\n @RegisterComponent<NylasAvailabilityPicker, NylasSchedulerConfigConnector, Exclude<NylasSchedulerEditor['stores'], undefined>>({\n name: 'nylas-availability-picker',\n stateToProps: new Map([\n ['schedulerConfig.selectedConfiguration', 'selectedConfiguration'],\n ['schedulerConfig.selectedLanguage', 'selectedLanguage'],\n ['schedulerConfig.themeConfig', 'themeConfig'],\n ]),\n fireRegisterEvent: true,\n })\n render() {\n const timezoneOptions = Object.keys(TIMEZONE_MAP).map(key => ({\n label: TIMEZONE_MAP[key],\n value: key,\n }));\n const selectedTimezoneOption = timezoneOptions.find(i => i.value === this.timezone);\n\n return (\n <Host>\n <div class=\"nylas-availability-picker\" part=\"nap\">\n {!this.hideHeader && (\n <div class=\"header\" part=\"nap__header\">\n <h3>{i18next.t('nylasAvailabilityPicker.headerTitle')}</h3>\n <p>\n {i18next.t('nylasAvailabilityPicker.headerSubTitle')}\n <tooltip-component>\n <info-icon slot=\"tooltip-icon\" />\n <span slot=\"tooltip-content\">{i18next.t('nylasAvailabilityPicker.tooltip.desc')}</span>\n </tooltip-component>\n </p>\n </div>\n )}\n <div class=\"content\">\n <div class=\"select-timezone\" part=\"nap__select-timezone\">\n <h4 class=\"sub-header\">{i18next.t('nylasAvailabilityPicker.selectTimezone')}</h4>\n {selectedTimezoneOption?.label && (\n <select-dropdown\n name=\"timezone\"\n searchPlaceholder={i18next.t('search')}\n exportparts=\"sd_dropdown: nap__timezone-container, sd_dropdown-button: nap__timezone-button, sd_dropdown-content: nap__timezone-dropdown-content\"\n options={timezoneOptions}\n defaultSelectedOption={selectedTimezoneOption}\n themeConfig={this.themeConfig}\n >\n <span slot=\"select-icon\">\n <globe-icon width=\"20\" height=\"20\" />\n </span>\n </select-dropdown>\n )}\n </div>\n <div class=\"availability\" part=\"nap__availability\">\n {Object.keys(this.schedule).map(key => {\n const day = key;\n const timeRanges = this.schedule[key] as { start: string; end: string }[];\n return (\n <div class=\"availability-day\">\n <div class=\"day\" part=\"nap__day\">\n <input\n type=\"checkbox\"\n name={day}\n id={day}\n checked={timeRanges.length > 0}\n onClick={() => {\n if (timeRanges.length > 0) {\n // Clear any time window errors for this day when toggling off\n const newTimeWindowErrors = { ...this.timeWindowErrors };\n Object.keys(newTimeWindowErrors).forEach(errorKey => {\n if (errorKey.startsWith(`${day}:`)) {\n delete newTimeWindowErrors[errorKey];\n }\n });\n this.timeWindowErrors = newTimeWindowErrors;\n\n this.schedule[day] = [];\n } else {\n this.schedule[day] = [{ start: '09:00am', end: '05:00pm' }];\n }\n this.schedule = { ...this.schedule };\n this.scheduleChanged(this.schedule);\n }}\n />\n <label htmlFor={day} aria-label=\"Select day\">\n {i18next.t(`nylasAvailabilityPicker.days.${day}`)}\n </label>\n </div>\n <div class=\"time-ranges\" part=\"nap__time-ranges\">\n {timeRanges.length ? null : <span class=\"unavailable\">{i18next.t('nylasAvailabilityPicker.unavailable')}</span>}\n {timeRanges.length > 0 &&\n timeRanges.map((timeRange, timeRangeIndex) => {\n const startKey = `${key}:${timeRangeIndex}_start`;\n const endKey = `${key}:${timeRangeIndex}_end`;\n return (\n <div class=\"time-range\" part=\"nap__time-range\">\n <div class=\"pickers\">\n <nylas-time-window-picker\n id={startKey}\n hasError={this.overlapDays[day]?.includes(timeRangeIndex) || !!this.timeWindowErrors[startKey]}\n time={timeRange.start}\n name={startKey}\n key={startKey}\n language={this.selectedLanguage}\n themeConfig={this.themeConfig}\n exportparts=\"time-picker: nap__time-picker-container, time-input: nap__time-picker-input, times: nap__time-picker-times\"\n />\n <span> - </span>\n <nylas-time-window-picker\n id={endKey}\n hasError={this.overlapDays[day]?.includes(timeRangeIndex) || !!this.timeWindowErrors[endKey]}\n time={timeRange.end}\n name={endKey}\n key={endKey}\n minimumStartTime={timeRange.start}\n language={this.selectedLanguage}\n themeConfig={this.themeConfig}\n exportparts=\"time-picker: nap__time-picker-container, time-input: nap__time-picker-input, times: nap__time-picker-times\"\n />\n </div>\n <button onClick={() => this.removeTimeRange(day, timeRangeIndex)}>\n <close-icon />\n </button>\n </div>\n );\n })}\n {(this.overlapDays[day] || Object.keys(this.timeWindowErrors).find(key => key.startsWith(`${day}:`) && this.timeWindowErrors[key])) && (\n <div class=\"error-message\" part=\"nap__error-message\">\n {this.overlapDays[day] ? i18next.t('nylasAvailabilityPicker.errors.overlappingTimeRanges') : ''}\n {!this.overlapDays[day] && Object.keys(this.timeWindowErrors).find(key => key.startsWith(`${day}:`) && this.timeWindowErrors[key])\n ? this.timeWindowErrors[Object.keys(this.timeWindowErrors).find(key => key.startsWith(`${day}:`) && this.timeWindowErrors[key])!]\n : ''}\n </div>\n )}\n </div>\n <div>\n {timeRanges.length > 0 ? (\n <button onClick={() => this.addTimeRange(day)} part=\"nap__add-time-range\">\n <add-circle-icon />\n </button>\n ) : null}\n </div>\n </div>\n );\n })}\n </div>\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
|
|
1
|
+
{"file":"p-BluyqSV4.js","mappings":"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","names":["__stencil_proxyCustomElement","HTMLElement","i18next"],"sources":["src/components/scheduler-editor/nylas-availability-picker/nylas-availability-picker.scss?tag=nylas-availability-picker&encapsulation=shadow","src/components/scheduler-editor/nylas-availability-picker/nylas-availability-picker.tsx"],"sourcesContent":["@use '../../../common/styles/variables' as *;\n\n:host {\n display: block;\n @include default-css-variables;\n width: inherit;\n}\n\n.nylas-availability-picker {\n width: inherit;\n display: flex;\n flex-direction: column;\n margin: 1rem;\n border-radius: var(--nylas-border-radius-2x);\n border: 1px solid var(--nylas-base-200);\n\n .header {\n padding: 1rem;\n border-bottom: 1px solid var(--nylas-base-200);\n\n h3 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n line-height: 20px;\n color: var(--nylas-base-900);\n text-align: left;\n }\n\n p {\n margin: 0.25rem 0 0 0;\n font-size: 0.875rem;\n font-weight: 400;\n line-height: 20px;\n color: var(--nylas-base-600);\n text-align: left;\n display: flex;\n align-items: center;\n gap: 4px;\n }\n }\n\n .content {\n padding: 1rem;\n border-radius: var(--nylas-border-radius-2x);\n color: var(--nylas-base-900);\n font-size: 16px;\n font-family: var(--nylas-font-family);\n background: var(--nylas-base-25);\n\n @media #{$small-mobile} {\n font-size: 15px;\n }\n\n .select-timezone {\n display: flex;\n justify-content: space-between;\n align-items: center;\n border-bottom: 1px solid var(--nylas-base-200);\n padding-bottom: 1rem;\n gap: 1rem;\n\n h4 {\n display: flex;\n gap: 0.5rem;\n align-items: center;\n margin: 0;\n font-size: 16px;\n font-weight: 500;\n line-height: 20px;\n\n @media #{$small-mobile} {\n font-size: 15px;\n }\n }\n }\n\n .availability {\n display: flex;\n flex-direction: column;\n gap: 1rem;\n padding: 0 0.5rem;\n margin: 1rem 0;\n\n @media #{$small-mobile} {\n gap: 0.5rem;\n padding: 0;\n }\n\n .availability-day {\n display: grid;\n grid-template-columns: minmax(auto, 65px) 1fr minmax(auto, 40px);\n\n gap: 1rem;\n align-items: baseline;\n\n @media #{$mobile} {\n grid-template-columns: 78px 1fr auto;\n }\n\n @media #{$small-mobile} {\n display: inline-grid;\n gap: 8px;\n grid-template-columns: 60px 1fr auto;\n }\n\n .day {\n display: flex;\n gap: 0.5rem;\n align-items: center;\n\n @media #{$small-mobile} {\n gap: 0.25rem;\n }\n\n input[type='checkbox'] {\n transform: scale(1.3);\n }\n }\n\n .time-ranges {\n span.unavailable {\n height: 48px;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .time-range {\n display: flex;\n gap: 1.5rem;\n justify-content: space-between;\n align-items: baseline;\n\n @media #{$small-mobile} {\n justify-content: unset;\n gap: 0.5rem;\n }\n\n .pickers {\n display: flex;\n gap: 1rem;\n\n @media #{$small-mobile} {\n gap: 0.5rem;\n }\n\n span {\n margin-top: 0.75rem;\n }\n }\n\n &:not(:last-of-type) {\n margin-bottom: 1rem;\n }\n }\n\n .error-message {\n width: 100%;\n padding: 4px 8px;\n background: var(--nylas-error-50);\n color: var(--nylas-error);\n font-size: 12px;\n border-radius: 4px;\n border: 1px solid var(--nylas-error-200);\n margin-top: 8px;\n }\n }\n\n button {\n border: none;\n background: transparent;\n height: 40px;\n cursor: pointer;\n color: var(--nylas-base-800);\n\n &:hover,\n &:active {\n color: var(--nylas-primary);\n }\n }\n }\n }\n }\n}\n\nselect-dropdown {\n width: auto;\n}\n\nselect-dropdown::part(sd_dropdown-button) {\n justify-content: initial;\n}\n","import { RegisterComponent } from '@/common/register-component';\nimport { NylasSchedulerConfigConnector } from '@/connector/nylas-scheduler-config-connector';\nimport { convertTo12HourFormat, convertTo24HourFormat, debug, minutesToTime, timeToMinutes } from '@/utils/utils';\nimport { AttachInternals, Component, Element, Event, EventEmitter, Host, Listen, Prop, State, Watch, h } from '@stencil/core';\nimport { NylasSchedulerEditor } from '../nylas-scheduler-editor/nylas-scheduler-editor';\nimport { DEFAULT_OPEN_HOURS, TIMEZONE_MAP } from '@/common/constants';\nimport { Configuration, ThemeConfig } from '@nylas/core';\nimport i18next from '@/utils/i18n';\nimport { LANGUAGE_CODE } from '@/common/constants';\n\nexport type OpenHours = {\n days: number[];\n start: string;\n end: string;\n timezone: string;\n};\n\nexport type Schedule = {\n SUN: { start: string; end: string }[];\n MON: { start: string; end: string }[];\n TUE: { start: string; end: string }[];\n WED: { start: string; end: string }[];\n THU: { start: string; end: string }[];\n FRI: { start: string; end: string }[];\n SAT: { start: string; end: string }[];\n};\n\n/**\n * The `nylas-availability-picker` component is a form input for selecting availability (open hours).\n * @part nap__header - The header of the availability picker\n * @part nap__select-timezone - The timezone selection container\n * @part nap__select-timezone-button - The timezone selection button\n * @part nap__select-timezone-dropdown-content - The timezone selection dropdown content\n * @part nap__availability - The availability container\n * @part nap__day - The day container\n * @part nap__time-ranges - The time ranges container\n * @part nap__time-range - The time range container\n * @part nap__add-time-range - The add time range button\n * @part nap__time-picker-container - The time picker container\n * @part nap__time-picker-input - The time picker input\n * @part nap__time-picker-times - The time picker times\n */\n@Component({\n tag: 'nylas-availability-picker',\n styleUrl: 'nylas-availability-picker.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class NylasAvailabilityPicker {\n /**\n * The element <nylas-availability-picker> itself.\n */\n @Element() host!: HTMLNylasAvailabilityPickerElement;\n /**\n * @standalone\n * The name of the availability picker.\n */\n @Prop() name: string = 'availability';\n /**\n * @standalone\n * The selected configuration.\n */\n @Prop() selectedConfiguration?: Configuration;\n /**\n * @standalone\n * The open hours to display.\n */\n @Prop() openHours?: OpenHours[];\n /**\n * @standalone\n * The default timezone or preset timezone.\n */\n @Prop() defaultTimezone: string = Intl.DateTimeFormat().resolvedOptions().timeZone;\n /**\n * @standalone\n * Hide the header of the availability picker.\n */\n @Prop() hideHeader: boolean = false;\n /**\n * The selected language.\n */\n @Prop() selectedLanguage?: LANGUAGE_CODE;\n /**\n * @standalone\n * The theme configuration.\n */\n @Prop({ attribute: 'theme-config' }) readonly themeConfig?: ThemeConfig;\n\n /**\n * This event is fired when the selected availability / open hours change.\n * The value is a stringified JSON object with the open hours and timezone.\n ```\n {\n openHours: OpenHours[],\n timezone: string\n }\n ```\n */\n @Event() valueChanged!: EventEmitter<{\n value: string;\n name: string;\n }>;\n\n /**\n * The element internals.\n */\n @AttachInternals() internals!: ElementInternals;\n @State() schedule = {\n SUN: [],\n MON: [{ start: '09:00am', end: '05:00pm' }],\n TUE: [{ start: '09:00am', end: '05:00pm' }],\n WED: [{ start: '09:00am', end: '05:00pm' }],\n THU: [{ start: '09:00am', end: '05:00pm' }],\n FRI: [{ start: '09:00am', end: '05:00pm' }],\n SAT: [],\n };\n /**\n * The selected timezone state.\n */\n @State() timezone: string = '';\n\n /**\n * The overlapping time ranges state. This is used to display an error message when there are overlapping time ranges.\n */\n @State() overlapDays: { [key: string]: number[] } = {};\n\n /**\n * State for tracking time window validation errors (e.g., start time after end time)\n */\n @State() timeWindowErrors: { [key: string]: string } = {};\n\n /**\n * Flag to track if the component has loaded.\n */\n private hasLoaded: boolean = false;\n\n /**\n * When a name prop is passed, stencil does not automatically set the name attribute on the host element.\n * Since this component is form-associated, the name attribute is required for form submission.\n * This is a workaround to ensure that the name attribute is set on the host element.\n */\n @Watch('name')\n elementNameChangedHandler(newValue: string) {\n debug('nylas-availability-picker', 'elementNameChangedHandler', newValue);\n this.host.setAttribute('name', newValue);\n }\n\n @Watch('defaultTimezone')\n defaultTimezoneChanged(newValue: string) {\n if (!this.hasLoaded) return;\n if (newValue && newValue !== this.timezone) {\n this.timezone = newValue;\n const updateValue = {\n openHours: this.scheduleToOpenHours(this.schedule),\n timezone: this.timezone,\n };\n this.isInternalsAvailable && this.internals.setFormValue(JSON.stringify(updateValue), this.name);\n this.valueChanged.emit({\n value: JSON.stringify(updateValue),\n name: this.name,\n });\n }\n }\n\n @Watch('openHours')\n openHoursChanged(newValue: OpenHours[]) {\n // Only process if we have a non-empty array and timezone is already set\n // This prevents processing during initialization and handles null/undefined consistently\n if (newValue && newValue.length > 0 && this.timezone) {\n this.openHoursToSchedule(newValue);\n }\n }\n\n @Watch('selectedConfiguration')\n configChangedHandler(newConfig: Configuration) {\n const defaultOpenHours = newConfig?.availability?.availability_rules?.default_open_hours ?? DEFAULT_OPEN_HOURS;\n // If the name is `availability`, we are setting the default open hours. If the name is `participant-****`, we are setting the participant's custom availability.\n // Set the timezone accordingly.\n const defaultOpenHoursTimezone = newConfig?.event_booking?.timezone || this.defaultTimezone;\n this.timezone = this.name === 'availability' ? defaultOpenHoursTimezone : this.defaultTimezone;\n\n // Process openHours if available, otherwise fall back to defaultOpenHours\n // The openHours watcher will handle openHours changes separately to avoid redundant calls\n if (this.openHours && this.openHours.length > 0) {\n this.openHoursToSchedule(this.openHours);\n } else if (defaultOpenHours) {\n this.openHoursToSchedule(defaultOpenHours);\n }\n }\n\n /**\n * Normalize time format to ensure consistent parsing across languages\n */\n private normalizeTimeFormat(timeStr: string): string {\n // Normalize Spanish AM/PM formats (a.m./p.m.) to English am/pm\n return timeStr.replace(/a\\.?m\\.?/gi, 'am').replace(/p\\.?m\\.?/gi, 'pm');\n }\n\n scheduleChanged(newValue: Schedule, valueChanged: boolean = true) {\n const overlapDays: { [key: string]: number[] } = {};\n Object.keys(newValue).forEach(key => {\n const dayTimeRanges = newValue[key];\n if (dayTimeRanges.length > 0) {\n // Normalize time formats before checking overlaps\n const normalizedTimeRanges = dayTimeRanges.map(range => ({\n start: this.normalizeTimeFormat(range.start),\n end: this.normalizeTimeFormat(range.end),\n }));\n const overlaps = this.getOverlaps(normalizedTimeRanges);\n if (overlaps.length > 0) {\n overlapDays[key] = overlaps;\n }\n }\n });\n this.overlapDays = overlapDays;\n\n // Clean up timeWindowErrors for non-existent time ranges\n this.cleanupTimeWindowErrors(newValue);\n\n this.updateFormValidity();\n\n if (valueChanged) {\n this.valueChanged.emit({\n value: JSON.stringify({\n openHours: this.scheduleToOpenHours(newValue),\n timezone: this.timezone,\n }),\n name: this.name,\n });\n }\n }\n\n /**\n * Clean up timeWindowErrors for time ranges that no longer exist in the schedule\n */\n private cleanupTimeWindowErrors(schedule: Schedule) {\n const newTimeWindowErrors = { ...this.timeWindowErrors };\n let hasChanges = false;\n\n // Get all valid time range keys from current schedule\n const validKeys = new Set<string>();\n Object.keys(schedule).forEach(day => {\n const timeRanges = schedule[day];\n timeRanges.forEach((_, index) => {\n validKeys.add(`${day}:${index}_start`);\n validKeys.add(`${day}:${index}_end`);\n });\n });\n\n // Remove errors for keys that no longer exist\n Object.keys(newTimeWindowErrors).forEach(errorKey => {\n if (!validKeys.has(errorKey)) {\n delete newTimeWindowErrors[errorKey];\n hasChanges = true;\n }\n });\n\n if (hasChanges) {\n this.timeWindowErrors = newTimeWindowErrors;\n }\n }\n\n /**\n * Updates form validity based on both overlap errors and time window errors\n */\n updateFormValidity() {\n const hasOverlapErrors = Object.keys(this.overlapDays).length > 0;\n const hasTimeWindowErrors = Object.keys(this.timeWindowErrors).filter(key => this.timeWindowErrors[key]).length > 0;\n\n if (hasOverlapErrors) {\n const element = this.host.shadowRoot?.getElementById(Object.keys(this.overlapDays)[0]) as HTMLInputElement;\n if (element) {\n debug('nylas-availability-picker', 'The time ranges are overlapping. Overlap: ', this.overlapDays);\n this.isInternalsAvailable && this.internals.setValidity({ customError: true }, 'Overlapping time ranges found', element);\n }\n } else if (hasTimeWindowErrors) {\n const firstErrorKey = Object.keys(this.timeWindowErrors).find(key => this.timeWindowErrors[key]);\n const element = this.host.shadowRoot?.getElementById(firstErrorKey!) as HTMLInputElement;\n const errorMessage = this.timeWindowErrors[firstErrorKey!];\n if (element) {\n this.isInternalsAvailable && this.internals.setValidity({ customError: true }, errorMessage, element);\n }\n } else {\n this.isInternalsAvailable && this.internals.setValidity({ customError: false });\n this.isInternalsAvailable &&\n this.internals.setFormValue(\n JSON.stringify({\n openHours: this.scheduleToOpenHours(this.schedule),\n timezone: this.timezone,\n }),\n this.name,\n );\n }\n }\n\n @Watch('selectedLanguage')\n selectedLanguageChangedHandler(newVal: LANGUAGE_CODE, oldVal: LANGUAGE_CODE) {\n if (newVal === oldVal) return;\n i18next.changeLanguage(newVal);\n }\n\n @Listen('nylasFormDropdownChanged')\n nylasFormDropdownChangedHandler(\n event: CustomEvent<{\n value: string;\n name: string;\n }>,\n ) {\n const { name, value } = event.detail;\n if (name === 'timezone') {\n this.timezone = value;\n const updateValue = {\n openHours: this.scheduleToOpenHours(this.schedule),\n timezone: this.timezone,\n };\n this.isInternalsAvailable && this.internals.setFormValue(JSON.stringify(updateValue), this.name);\n this.valueChanged.emit({\n value: JSON.stringify(updateValue),\n name: this.name,\n });\n }\n }\n\n @Watch('themeConfig')\n themeConfigChangedHandler(newVal: ThemeConfig, oldVal: ThemeConfig) {\n if (newVal === oldVal) return;\n this.applyThemeConfig(newVal);\n }\n\n connectedCallback() {\n debug('nylas-availability-picker', 'connectedCallback');\n // Use queueMicrotask to defer theme application until after React has set props.\n // This fixes the timing issue where connectedCallback fires before React sets themeConfig.\n queueMicrotask(() => {\n if (this.themeConfig) {\n this.applyThemeConfig(this.themeConfig);\n this.host.setAttribute('data-themed', '');\n }\n });\n }\n\n disconnectedCallback() {\n debug('nylas-availability-picker', 'disconnectedCallback');\n }\n\n componentWillLoad() {\n debug('nylas-availability-picker', 'componentWillLoad');\n this.host.setAttribute('name', this.name);\n }\n\n componentDidLoad() {\n debug('nylas-availability-picker', 'componentDidLoad');\n\n if (this.selectedConfiguration) {\n this.configChangedHandler(this.selectedConfiguration);\n } else {\n this.timezone = this.defaultTimezone;\n if (this.openHours && this.openHours.length > 0) {\n this.openHoursToSchedule(this.openHours);\n }\n }\n\n const updateValue = {\n openHours: this.scheduleToOpenHours(this.schedule),\n timezone: this.timezone,\n };\n this.isInternalsAvailable && this.internals.setFormValue(JSON.stringify(updateValue), this.name);\n\n // Set initial form validity\n this.updateFormValidity();\n this.hasLoaded = true;\n }\n\n get isInternalsAvailable() {\n return typeof this.internals.setFormValue === 'function';\n }\n\n getOverlaps(timeRanges) {\n // Convert times to minutes and add to the array\n const timeRangesInMinutes = timeRanges.map((range, index) => ({\n start: timeToMinutes(range.start),\n end: timeToMinutes(range.end),\n originalIndex: index,\n }));\n\n // Sort by start time\n timeRangesInMinutes.sort((a, b) => a.start - b.start);\n const overlaps: number[] = [];\n // Check for overlap\n for (let i = 1; i < timeRangesInMinutes.length; i++) {\n if (timeRangesInMinutes[i].start < timeRangesInMinutes[i - 1].end) {\n // Add both overlapping time range indices if they are not already included\n if (!overlaps.includes(timeRangesInMinutes[i].originalIndex)) {\n overlaps.push(timeRangesInMinutes[i].originalIndex);\n }\n if (!overlaps.includes(timeRangesInMinutes[i - 1].originalIndex)) {\n overlaps.push(timeRangesInMinutes[i - 1].originalIndex);\n }\n }\n }\n return overlaps.sort((a, b) => a - b); // Return sorted list of indices\n }\n\n addTimeRange(day) {\n const currentTimeRanges = this.schedule[day];\n\n // Default working hours are from 00:00 to 23:45 for calculation purposes\n const dayStart = 0; // Start of the day in minutes (00:00)\n const dayEnd = 1425; // End of the day in minutes (23:45)\n\n if (currentTimeRanges.length === 0) {\n // If there are no existing time ranges, add one at the start of the day\n this.schedule[day] = [{ start: '09:00am', end: '05:00pm' }]; // Example range\n } else {\n // Convert all time ranges to minutes for comparison\n const timeRangesInMinutes = currentTimeRanges\n .map(range => ({\n start: timeToMinutes(range.start),\n end: timeToMinutes(range.end),\n }))\n .sort((a, b) => a.start - b.start); // Sort by start time\n\n // Attempt to add a new time range at the end of the day\n const lastRangeEnd = timeRangesInMinutes[timeRangesInMinutes.length - 1].end;\n if (lastRangeEnd + 60 <= dayEnd) {\n // There's room at the end of the day\n this.schedule[day].push({\n start: convertTo12HourFormat(minutesToTime(lastRangeEnd)),\n end: convertTo12HourFormat(minutesToTime(lastRangeEnd + 60)),\n });\n } else {\n // No room at the end, look for gaps at the beginning of the day\n let gapFound = false;\n if (timeRangesInMinutes[0].start > dayStart + 60) {\n // There's room for at least a 1-hour meeting at the beginning of the day\n this.schedule[day].push({\n start: convertTo12HourFormat(minutesToTime(dayStart)),\n end: convertTo12HourFormat(minutesToTime(dayStart + 60)),\n });\n gapFound = true;\n }\n\n if (!gapFound) {\n // Search for gaps between scheduled time ranges\n for (let i = 0; i < timeRangesInMinutes.length - 1; i++) {\n const currentEnd = timeRangesInMinutes[i].end;\n const nextStart = timeRangesInMinutes[i + 1].start;\n\n if (nextStart - currentEnd >= 60) {\n // Found a gap\n this.schedule[day].push({\n start: convertTo12HourFormat(minutesToTime(currentEnd)),\n end: convertTo12HourFormat(minutesToTime(currentEnd + 60)),\n });\n break; // Exit the loop after adding a time range\n }\n }\n }\n }\n }\n\n // Sort the updated schedule to maintain order\n this.schedule[day].sort((a, b) => timeToMinutes(a.start) - timeToMinutes(b.start));\n\n this.schedule = { ...this.schedule };\n this.scheduleChanged(this.schedule);\n }\n\n removeTimeRange(day, index) {\n // Clear any time window errors for the removed time range\n const startKey = `${day}:${index}_start`;\n const endKey = `${day}:${index}_end`;\n\n const newTimeWindowErrors = { ...this.timeWindowErrors };\n delete newTimeWindowErrors[startKey];\n delete newTimeWindowErrors[endKey];\n this.timeWindowErrors = newTimeWindowErrors;\n\n this.schedule[day].splice(index, 1);\n this.schedule = { ...this.schedule };\n this.scheduleChanged(this.schedule);\n }\n\n @Listen('timeChange')\n setTime(event: CustomEvent<{ key: string; value: string }>) {\n const { key, value } = event.detail;\n const [dayIndex, timeType] = key.split('_');\n const [day, index] = dayIndex.split(':');\n\n if (timeType === 'start') {\n this.schedule[day][index].start = value;\n } else if (timeType === 'end') {\n this.schedule[day][index].end = value;\n }\n\n // Clear any existing time window error for this specific key\n if (this.timeWindowErrors[key]) {\n const newErrors = { ...this.timeWindowErrors };\n delete newErrors[key];\n this.timeWindowErrors = newErrors;\n }\n\n this.schedule = { ...this.schedule };\n this.scheduleChanged(this.schedule);\n }\n\n @Listen('timeWindowFormError')\n setFormError(event: CustomEvent<{ key: string; message: string }>) {\n const { key, message } = event.detail;\n\n if (message) {\n // Set the error for this specific time input\n this.timeWindowErrors = {\n ...this.timeWindowErrors,\n [key]: message,\n };\n } else {\n // Clear the error for this specific time input\n const newErrors = { ...this.timeWindowErrors };\n delete newErrors[key];\n this.timeWindowErrors = newErrors;\n }\n\n // Update overall form validity\n this.updateFormValidity();\n }\n\n openHoursToSchedule(openHours: OpenHours[]) {\n const newSchedule = {\n SUN: [],\n MON: [],\n TUE: [],\n WED: [],\n THU: [],\n FRI: [],\n SAT: [],\n };\n openHours.forEach(openHour => {\n if (!openHour.days) return;\n openHour.days.forEach(day => {\n const dayKey = this.getDayKey(day);\n const start12hr = this.normalizeTimeFormat(convertTo12HourFormat(openHour.start));\n const end12hr = this.normalizeTimeFormat(convertTo12HourFormat(openHour.end));\n const timeRange = { start: start12hr, end: end12hr };\n\n // Check if the time range already exists for the day\n let timeRangeExists = false;\n if (newSchedule[dayKey]) {\n // Search for an existing time range that matches the current one\n timeRangeExists = newSchedule[dayKey].some(range => range.start === timeRange.start && range.end === timeRange.end);\n }\n\n if (!timeRangeExists) {\n if (newSchedule[dayKey]) {\n newSchedule[dayKey].push(timeRange);\n } else {\n newSchedule[dayKey] = [timeRange];\n }\n }\n });\n });\n\n this.schedule = newSchedule;\n this.scheduleChanged(this.schedule, false);\n }\n\n getDayKey(dayIndex: number): string {\n const days = ['SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT'];\n return days[dayIndex];\n }\n\n scheduleToOpenHours(schedule: Schedule): OpenHours[] {\n const dayKeys = ['SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT'];\n const openHoursMap: Map<string, { days: number[]; start: string; end: string }> = new Map();\n\n dayKeys.forEach((dayKey, index) => {\n if (schedule[dayKey]) {\n // Check if schedule for the day exists\n schedule[dayKey].forEach(timeRange => {\n const start24hr = convertTo24HourFormat(timeRange.start);\n const end24hr = convertTo24HourFormat(timeRange.end);\n const key = `${start24hr}-${end24hr}`;\n\n if (!openHoursMap.has(key)) {\n openHoursMap.set(key, { days: [index], start: start24hr, end: end24hr });\n } else {\n const entry = openHoursMap.get(key);\n if (entry) {\n entry.days.push(index);\n openHoursMap.set(key, entry);\n }\n }\n });\n }\n });\n\n const selectedOpenHours: OpenHours[] = [];\n openHoursMap.forEach((value, _key) => {\n selectedOpenHours.push({\n days: value.days,\n start: value.start,\n end: value.end,\n timezone: this.timezone,\n });\n });\n\n return selectedOpenHours;\n }\n\n applyThemeConfig(themeConfig?: ThemeConfig) {\n if (themeConfig) {\n for (const [key, value] of Object.entries(themeConfig)) {\n this.host.style.setProperty(`${key}`, value);\n }\n }\n }\n\n @RegisterComponent<NylasAvailabilityPicker, NylasSchedulerConfigConnector, Exclude<NylasSchedulerEditor['stores'], undefined>>({\n name: 'nylas-availability-picker',\n stateToProps: new Map([\n ['schedulerConfig.selectedConfiguration', 'selectedConfiguration'],\n ['schedulerConfig.selectedLanguage', 'selectedLanguage'],\n ['schedulerConfig.themeConfig', 'themeConfig'],\n ]),\n fireRegisterEvent: true,\n })\n render() {\n const timezoneOptions = Object.keys(TIMEZONE_MAP).map(key => ({\n label: TIMEZONE_MAP[key],\n value: key,\n }));\n const selectedTimezoneOption = timezoneOptions.find(i => i.value === this.timezone);\n\n return (\n <Host>\n <div class=\"nylas-availability-picker\" part=\"nap\">\n {!this.hideHeader && (\n <div class=\"header\" part=\"nap__header\">\n <h3>{i18next.t('nylasAvailabilityPicker.headerTitle')}</h3>\n <p>\n {i18next.t('nylasAvailabilityPicker.headerSubTitle')}\n <tooltip-component>\n <info-icon slot=\"tooltip-icon\" />\n <span slot=\"tooltip-content\">{i18next.t('nylasAvailabilityPicker.tooltip.desc')}</span>\n </tooltip-component>\n </p>\n </div>\n )}\n <div class=\"content\">\n <div class=\"select-timezone\" part=\"nap__select-timezone\">\n <h4 class=\"sub-header\">{i18next.t('nylasAvailabilityPicker.selectTimezone')}</h4>\n {selectedTimezoneOption?.label && (\n <select-dropdown\n name=\"timezone\"\n searchPlaceholder={i18next.t('search')}\n exportparts=\"sd_dropdown: nap__timezone-container, sd_dropdown-button: nap__timezone-button, sd_dropdown-content: nap__timezone-dropdown-content\"\n options={timezoneOptions}\n defaultSelectedOption={selectedTimezoneOption}\n themeConfig={this.themeConfig}\n >\n <span slot=\"select-icon\">\n <globe-icon width=\"20\" height=\"20\" />\n </span>\n </select-dropdown>\n )}\n </div>\n <div class=\"availability\" part=\"nap__availability\">\n {Object.keys(this.schedule).map(key => {\n const day = key;\n const timeRanges = this.schedule[key] as { start: string; end: string }[];\n return (\n <div class=\"availability-day\">\n <div class=\"day\" part=\"nap__day\">\n <input\n type=\"checkbox\"\n name={day}\n id={day}\n checked={timeRanges.length > 0}\n onClick={() => {\n if (timeRanges.length > 0) {\n // Clear any time window errors for this day when toggling off\n const newTimeWindowErrors = { ...this.timeWindowErrors };\n Object.keys(newTimeWindowErrors).forEach(errorKey => {\n if (errorKey.startsWith(`${day}:`)) {\n delete newTimeWindowErrors[errorKey];\n }\n });\n this.timeWindowErrors = newTimeWindowErrors;\n\n this.schedule[day] = [];\n } else {\n this.schedule[day] = [{ start: '09:00am', end: '05:00pm' }];\n }\n this.schedule = { ...this.schedule };\n this.scheduleChanged(this.schedule);\n }}\n />\n <label htmlFor={day} aria-label=\"Select day\">\n {i18next.t(`nylasAvailabilityPicker.days.${day}`)}\n </label>\n </div>\n <div class=\"time-ranges\" part=\"nap__time-ranges\">\n {timeRanges.length ? null : <span class=\"unavailable\">{i18next.t('nylasAvailabilityPicker.unavailable')}</span>}\n {timeRanges.length > 0 &&\n timeRanges.map((timeRange, timeRangeIndex) => {\n const startKey = `${key}:${timeRangeIndex}_start`;\n const endKey = `${key}:${timeRangeIndex}_end`;\n return (\n <div class=\"time-range\" part=\"nap__time-range\">\n <div class=\"pickers\">\n <nylas-time-window-picker\n id={startKey}\n hasError={this.overlapDays[day]?.includes(timeRangeIndex) || !!this.timeWindowErrors[startKey]}\n time={timeRange.start}\n name={startKey}\n key={startKey}\n language={this.selectedLanguage}\n themeConfig={this.themeConfig}\n exportparts=\"time-picker: nap__time-picker-container, time-input: nap__time-picker-input, times: nap__time-picker-times\"\n />\n <span> - </span>\n <nylas-time-window-picker\n id={endKey}\n hasError={this.overlapDays[day]?.includes(timeRangeIndex) || !!this.timeWindowErrors[endKey]}\n time={timeRange.end}\n name={endKey}\n key={endKey}\n minimumStartTime={timeRange.start}\n language={this.selectedLanguage}\n themeConfig={this.themeConfig}\n exportparts=\"time-picker: nap__time-picker-container, time-input: nap__time-picker-input, times: nap__time-picker-times\"\n />\n </div>\n <button onClick={() => this.removeTimeRange(day, timeRangeIndex)}>\n <close-icon />\n </button>\n </div>\n );\n })}\n {(this.overlapDays[day] || Object.keys(this.timeWindowErrors).find(key => key.startsWith(`${day}:`) && this.timeWindowErrors[key])) && (\n <div class=\"error-message\" part=\"nap__error-message\">\n {this.overlapDays[day] ? i18next.t('nylasAvailabilityPicker.errors.overlappingTimeRanges') : ''}\n {!this.overlapDays[day] && Object.keys(this.timeWindowErrors).find(key => key.startsWith(`${day}:`) && this.timeWindowErrors[key])\n ? this.timeWindowErrors[Object.keys(this.timeWindowErrors).find(key => key.startsWith(`${day}:`) && this.timeWindowErrors[key])!]\n : ''}\n </div>\n )}\n </div>\n <div>\n {timeRanges.length > 0 ? (\n <button onClick={() => this.addTimeRange(day)} part=\"nap__add-time-range\">\n <add-circle-icon />\n </button>\n ) : null}\n </div>\n </div>\n );\n })}\n </div>\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
|
|
@@ -2,10 +2,10 @@ import { p as proxyCustomElement, H, e as createEvent, h, i as Host } from './p-
|
|
|
2
2
|
import { R as RegisterComponent } from './p-CwtW7XIp.js';
|
|
3
3
|
import { a as debug, b as instance, s as sanitize, G as isNonPrintableKey, H as getBrowser } from './p-B5ZLsN-l.js';
|
|
4
4
|
import { E as EVENT_TITLE_TOKENS } from './p-DUCeQ1R4.js';
|
|
5
|
-
import { d as defineCustomElement$4 } from './p-
|
|
6
|
-
import { d as defineCustomElement$3 } from './p-
|
|
7
|
-
import { d as defineCustomElement$2 } from './p-
|
|
8
|
-
import { d as defineCustomElement$1 } from './p-
|
|
5
|
+
import { d as defineCustomElement$4 } from './p-BVH0Klhu.js';
|
|
6
|
+
import { d as defineCustomElement$3 } from './p-d3kelm3z.js';
|
|
7
|
+
import { d as defineCustomElement$2 } from './p-C7ZpwRD0.js';
|
|
8
|
+
import { d as defineCustomElement$1 } from './p-DxDoo-4C.js';
|
|
9
9
|
|
|
10
10
|
const nylasEventDescriptionCss = ":host{display:block;height:auto;--nylas-primary:#2563eb;--nylas-error:#cc4841;--nylas-error-50:#ffeae8;--nylas-error-100:#ffc5bf;--nylas-error-200:#fecaca;--nylas-error-pressed:#992222;--nylas-wraning:#f06c00;--nylas-success:#16a392;--nylas-info:#2b8fc2;--nylas-base-0:#ffffff;--nylas-base-25:#fcfcfd;--nylas-base-50:#f8f9fc;--nylas-base-100:#eaecf5;--nylas-base-200:#d5d9eb;--nylas-base-300:#b3b8d8;--nylas-base-400:#717bbc;--nylas-base-500:#4e5ba6;--nylas-base-600:#3e4784;--nylas-base-700:#263f72;--nylas-base-800:#293056;--nylas-base-900:#101323;--nylas-base-950:#0e101b;--nylas-color-blue-100:#e0e6f9;--nylas-border-radius:0.25rem;--nylas-border-radius-2x:0.5rem;--nylas-border-radius-3x:0.75rem;--nylas-font-family:\"Inter\", sans-serif;--nylas-color-black:#000000;--nylas-color-grey-900:#2c2c2c;--nylas-color-grey-800:#4b4b4b;--nylas-color-grey-700:#6e6e6e;--nylas-color-grey-600:#8e8e8e;--nylas-color-grey-500:#b3b3b3;--nylas-color-grey-400:#cacaca;--nylas-color-grey-300:#e1e1e1;--nylas-color-grey-200:#eaeaea;--nylas-color-grey-100:#f5f5f5;--nylas-color-grey-50:#fbfcfe;--nylas-color-white:#ffffff;--nylas-color-red-900:#992222;--nylas-color-red-700:#cc4841;--nylas-color-red-500:#ff786a;--nylas-color-red-300:#ffa79e;--nylas-color-red-100:#ffc5bf;--nylas-color-red-50:#ffeae8;--nylas-color-blue-900:#213571;--nylas-color-blue-700:#314fa9;--nylas-color-blue-500:#4169e1;--nylas-color-blue-300:#bdccf9;--nylas-color-blue-100:#e0e6f9;--nylas-color-blue-50:#f6f8fd;--nylas-color-yellow-900:#7c6506;--nylas-color-yellow-700:#c29f09;--nylas-color-yellow-500:#f7c90b;--nylas-color-yellow-300:#f9de70;--nylas-color-yellow-100:#fceba9;--nylas-color-yellow-50:#fdf4ce;--nylas-color-green-900:#0e6b60;--nylas-color-green-700:#16a392;--nylas-color-green-500:#17c3b2;--nylas-color-green-300:#74dbd1;--nylas-color-green-100:#a2e7e0;--nylas-color-green-50:#d1f3f0;--nylas-color-purple-900:#643554;--nylas-color-purple-700:#954f7d;--nylas-color-purple-500:#c769a7;--nylas-color-purple-300:#dda5ca;--nylas-color-purple-100:#e0bdd6;--nylas-color-purple-50:#e9dde5;--nylas-color-sky-900:#20698f;--nylas-color-sky-700:#2b8fc2;--nylas-color-sky-500:#6dceff;--nylas-color-sky-300:#8fdaff;--nylas-color-sky-100:#b8e7ff;--nylas-color-sky-50:#d9f2ff;width:100%}.nylas-event-description{display:flex;flex-direction:column;gap:4px;position:relative;color:var(--nylas-base-900)}.nylas-event-description label{display:flex;color:var(--nylas-base-800, #293056);font-size:14px;font-style:normal;font-weight:400;line-height:150%;word-break:break-word;overflow-wrap:break-word;flex-direction:column;gap:4px;font-family:var(--nylas-font-family)}.nylas-event-description label.error{color:var(--nylas-error)}.nylas-event-description label span.required{color:var(--nylas-error);padding:0 0.25rem}.nylas-event-description label p{margin:0;display:flex;align-items:center}.nylas-event-description label span.label-icon{margin-left:4px}.nylas-event-description label span.label-icon tooltip-component{display:flex}.nylas-event-description textarea{padding:12px 16px;border-width:1;resize:vertical;border-radius:8px;font-family:var(--nylas-font-family);font-size:16px;line-height:24px;border:1px solid var(--nylas-base-200)}.nylas-event-description textarea::-webkit-resizer{display:none}.nylas-event-description div.event-description{border-radius:var(--nylas-border-radius-2x);border:1px solid var(--nylas-base-300);background:var(--nylas-base-0);width:-webkit-fill-available;min-height:50px;padding:12px 16px;overflow-y:auto;white-space:pre-wrap;line-height:1.5;scrollbar-width:thin;color:var(--nylas-base-900);font-family:var(--nylas-font-family);font-size:16px;font-style:normal;font-weight:400;-webkit-text-fill-color:var(--nylas-base-900);display:block;}.nylas-event-description div.event-description::-webkit-scrollbar{width:6px;height:6px}.nylas-event-description div.event-description:focus{color:var(--nylas-base-900);-webkit-text-fill-color:var(--nylas-base-900);outline:2px solid var(--nylas-primary);outline-offset:2px}.nylas-event-description div.event-description:focus-visible{color:var(--nylas-base-900);-webkit-text-fill-color:var(--nylas-base-900);outline:2px solid var(--nylas-primary);outline-offset:2px}.nylas-event-description div.event-description.error{border-color:var(--nylas-error);border-width:2px}.nylas-event-description span.add-additional-fields{display:flex;align-items:center;gap:8px}.nylas-event-description span.add-additional-fields button-component button{height:35px;background-color:var(--nylas-base-0)}.nylas-event-description span.help-text{display:inline-flex;align-items:center;gap:4px;color:var(--nylas-base-500);font-size:14px;font-style:normal;font-weight:400;line-height:21px;position:relative}.nylas-event-description span.help-text span.label-icon{display:inline-flex;align-items:center;flex-shrink:0}.nylas-event-description span.help-text span.label-icon tooltip-component{display:flex}.nylas-event-description span.help-text span.label-icon tooltip-component::part(tc__container){position:unset}.nylas-event-description span.help-text span.label-icon tooltip-component::part(tc__content){position:absolute;top:4px;left:50%;transform:translateX(-50%)}.nylas-event-description .highlighted-tag{background-color:var(--nylas-base-200);border-radius:var(--nylas-border-radius);padding:2px 5px;margin-left:4px;margin-bottom:4px;display:inline-block;vertical-align:baseline}.nylas-event-description .token-options{display:block;background-color:var(--nylas-base-0);width:100%;max-height:336px;margin-top:28px;overflow:auto;z-index:1;border-radius:4px;position:absolute;bottom:108px;box-shadow:0px 4px 6px -2px rgba(0, 0, 0, 0.0509803922);box-shadow:0px 10px 15px -3px rgba(0, 0, 0, 0.1019607843)}@media screen and (max-width: 768px){.nylas-event-description .token-options{right:0;width:325px;max-width:unset}}.nylas-event-description .token-options ul{padding:0;list-style-type:none;color:var(--nylas-base-900);max-height:336px;margin:0}.nylas-event-description .token-options ul li{padding:16px, 12px, 16px, 12px;color:var(--nylas-base-900);padding:12px 16px;text-decoration:none;display:block;font-family:inherit;font-size:14px;font-weight:400;line-height:20px;letter-spacing:0px;text-align:left;cursor:pointer}.nylas-event-description .token-options ul li .token-label{display:flex;flex-direction:column;font-weight:400}.nylas-event-description .token-options ul li .token-label .token{color:var(--nylas-abse-900);font-size:16px;line-height:24px}.nylas-event-description .token-options ul li .token-label .description{color:var(--nylas-base-600);font-size:14px;line-height:21px}.nylas-event-description .token-options ul li:hover,.nylas-event-description .token-options ul li:focus,.nylas-event-description .token-options ul li:active,.nylas-event-description .token-options ul li.active{background-color:var(--nylas-base-100)}.nylas-event-description .token-options ul li:hover .token-label .token,.nylas-event-description .token-options ul li:focus .token-label .token,.nylas-event-description .token-options ul li:active .token-label .token,.nylas-event-description .token-options ul li.active .token-label .token{color:var(--nylas-primary)}.nylas-event-description .token-options .selected{background-color:var(--nylas-base-100)}";
|
|
11
11
|
|
|
@@ -511,6 +511,6 @@ function defineCustomElement() {
|
|
|
511
511
|
}
|
|
512
512
|
|
|
513
513
|
export { NylasEventDescription as N, defineCustomElement as d };
|
|
514
|
-
//# sourceMappingURL=p-
|
|
514
|
+
//# sourceMappingURL=p-BmBJwWDS.js.map
|
|
515
515
|
|
|
516
|
-
//# sourceMappingURL=p-
|
|
516
|
+
//# sourceMappingURL=p-BmBJwWDS.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"p-BBKmpMW8.js","mappings":"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","names":["__stencil_proxyCustomElement","HTMLElement","eventDescriptionTokens","i18next"],"sources":["src/components/scheduler-editor/nylas-event-description/nylas-event-description.scss?tag=nylas-event-description&encapsulation=shadow","src/components/scheduler-editor/nylas-event-description/nylas-event-description.tsx"],"sourcesContent":["@use '../../../common/styles/variables' as *;\n@use '../../../common/mixins/inputs' as *;\n\n:host {\n display: block;\n height: auto;\n @include default-css-variables;\n width: 100%;\n}\n\n.nylas-event-description {\n display: flex;\n flex-direction: column;\n gap: 4px;\n position: relative;\n color: var(--nylas-base-900);\n\n label {\n @include input-label;\n flex-direction: column;\n gap: 4px;\n font-family: var(--nylas-font-family);\n\n p {\n margin: 0;\n display: flex;\n align-items: center;\n }\n\n span.label-icon {\n margin-left: 4px;\n\n tooltip-component {\n display: flex;\n }\n }\n }\n\n textarea {\n padding: 12px 16px;\n border-width: 1;\n resize: vertical;\n border-radius: 8px;\n font-family: var(--nylas-font-family);\n font-size: 16px;\n line-height: 24px;\n border: 1px solid var(--nylas-base-200);\n\n &::-webkit-resizer {\n display: none;\n }\n }\n\n div.event-description {\n // Apply textfield styles but override display and alignment for contentEditable\n border-radius: var(--nylas-border-radius-2x);\n border: 1px solid var(--nylas-base-300);\n background: var(--nylas-base-0);\n width: -webkit-fill-available;\n min-height: 50px;\n padding: 12px 16px;\n overflow-y: auto;\n white-space: pre-wrap;\n line-height: 1.5;\n scrollbar-width: thin;\n color: var(--nylas-base-900);\n font-family: var(--nylas-font-family);\n font-size: 16px;\n font-style: normal;\n font-weight: 400;\n -webkit-text-fill-color: var(--nylas-base-900);\n display: block;\n /* Preserves line breaks */\n &::-webkit-scrollbar {\n width: 6px;\n height: 6px;\n }\n\n &:focus {\n color: var(--nylas-base-900);\n -webkit-text-fill-color: var(--nylas-base-900);\n outline: 2px solid var(--nylas-primary);\n outline-offset: 2px;\n }\n\n &:focus-visible {\n color: var(--nylas-base-900);\n -webkit-text-fill-color: var(--nylas-base-900);\n outline: 2px solid var(--nylas-primary);\n outline-offset: 2px;\n }\n\n &.error {\n border-color: var(--nylas-error);\n border-width: 2px;\n }\n }\n\n span.add-additional-fields {\n display: flex;\n align-items: center;\n gap: 8px;\n\n button-component {\n button {\n height: 35px;\n background-color: var(--nylas-base-0);\n }\n }\n }\n\n span.help-text {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n color: var(--nylas-base-500);\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 21px;\n position: relative;\n\n span.label-icon {\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n\n tooltip-component {\n display: flex;\n &::part(tc__container) {\n position: unset;\n }\n\n &::part(tc__content) {\n position: absolute;\n top: 4px;\n left: 50%;\n transform: translateX(-50%);\n }\n }\n }\n }\n\n .highlighted-tag {\n background-color: var(--nylas-base-200);\n border-radius: var(--nylas-border-radius);\n padding: 2px 5px;\n margin-left: 4px;\n margin-bottom: 4px;\n display: inline-block;\n vertical-align: baseline;\n }\n\n .token-options {\n display: block;\n background-color: var(--nylas-base-0);\n width: 100%;\n max-height: 336px;\n margin-top: 28px;\n overflow: auto;\n z-index: 1;\n border-radius: 4px;\n position: absolute;\n bottom: 108px;\n\n box-shadow: 0px 4px 6px -2px #0000000d;\n box-shadow: 0px 10px 15px -3px #0000001a;\n\n @media #{$mobile} {\n right: 0;\n width: 325px;\n max-width: unset;\n }\n\n ul {\n padding: 0;\n list-style-type: none;\n color: var(--nylas-base-900);\n max-height: 336px;\n margin: 0;\n\n li {\n padding: 16px, 12px, 16px, 12px;\n color: var(--nylas-base-900);\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\n .token-label {\n display: flex;\n flex-direction: column;\n font-weight: 400;\n\n .token {\n color: var(--nylas-abse-900);\n font-size: 16px;\n line-height: 24px;\n }\n\n .description {\n color: var(--nylas-base-600);\n font-size: 14px;\n line-height: 21px;\n }\n }\n\n &:hover,\n &:focus,\n &:active,\n &.active {\n background-color: var(--nylas-base-100);\n\n .token-label {\n .token {\n color: var(--nylas-primary);\n }\n }\n }\n }\n }\n\n .selected {\n background-color: var(--nylas-base-100);\n }\n }\n}\n","import { RegisterComponent } from '@/common/register-component';\nimport { NylasSchedulerConfigConnector } from '@/connector/nylas-scheduler-config-connector';\nimport { debug, getBrowser, isNonPrintableKey, sanitize } from '@/utils/utils';\nimport { AttachInternals, Component, Host, State, h, Element, Prop, Watch, Event, EventEmitter, Listen } from '@stencil/core';\nimport { NylasSchedulerEditor } from '../nylas-scheduler-editor/nylas-scheduler-editor';\nimport { Configuration } from '@nylas/core';\nimport i18next from '@/utils/i18n';\nimport { LANGUAGE_CODE } from '@/common/constants';\nimport { EVENT_TITLE_TOKENS as eventDescriptionTokens } from '@/common/constants';\nimport { ThemeConfig } from '@nylas/core';\ninterface CustomShadowRoot extends ShadowRoot {\n getSelection: () => Selection | null;\n}\n\ntype Token = {\n token: string;\n value: string;\n description: string;\n};\n\n/**\n * The `nylas-event-description` component is a form input for the description of an event.\n * @part nedesc - The event description container\n * @part nedesc__textarea - The event description textarea\n */\n@Component({\n tag: 'nylas-event-description',\n styleUrl: 'nylas-event-description.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class NylasEventDescription {\n /**\n * The host element <nylas-event-description>\n */\n @Element() host!: HTMLElement;\n /**\n * @standalone\n * The selected config\n */\n @Prop() selectedConfiguration?: Configuration;\n\n /**\n * @standalone\n * The event description stored in the configuration\n */\n @Prop() eventDescription?: string = this.selectedConfiguration?.event_booking?.description;\n\n /**\n * @standalone\n * The name of the event description input.\n */\n @Prop() name: string = 'description';\n\n /**\n * The selected language.\n */\n @Prop() selectedLanguage?: LANGUAGE_CODE;\n\n /**\n * Hide the auto popolate button\n */\n @Prop() hideAutoPopulateButton: boolean = false;\n\n /**\n * Whether to show the tokens dropdown.\n */\n @Prop() noTemplates: boolean = false;\n /**\n * @standalone\n * The theme configuration.\n */\n @Prop({ attribute: 'theme-config' }) readonly themeConfig?: ThemeConfig;\n\n /**\n * The selected event description state. This defaults to the event description from the configuration or an empty string.\n */\n @State() description: string = this.eventDescription || this.selectedConfiguration?.event_booking?.description || '';\n @State() showTokens: boolean = false;\n /**\n * The available token options for the dropdown.\n */\n @State() availableTokens: { label: string; value: string; labelHTML: Token }[] = eventDescriptionTokens.map(token => ({\n label: token.token,\n value: token.value,\n labelHTML: token,\n }));\n /**\n * The filtered token options for the dropdown based on the current query.\n */\n @State() filteredTokens: { label: string; value: string; labelHTML: Token }[] = this.availableTokens;\n /**\n * The aria-activedescendant attribute value. This is used to indicate the\n * currently active descendant in the tokens dropdown.\n */\n @State() ariaActivedescendant: string = '';\n /**\n * Stores the reference to the current word being typed.\n * This is used to update the event description with the selected token tag when\n * an option is selected from the dropdown by clicking on it.\n */\n @State() currentWord: {\n $value: string;\n fullText: string;\n index: number;\n focusOffset: number;\n } = { $value: '', fullText: '', index: -1, focusOffset: -1 };\n\n @State() validationError: string = '';\n\n @State() additionalFieldTokens: Token[] = [];\n // Reference to the description textarea element\n private descriptionRef!: HTMLDivElement;\n\n /**\n * The element internals.\n */\n @AttachInternals() internals!: ElementInternals;\n\n /**\n * When a name prop is passed, stencil does not automatically set the name attribute on the host element.\n * Since this component is form-associated, the name attribute is required for form submission.\n * This is a workaround to ensure that the name attribute is set on the host element.\n */\n @Watch('name')\n elementNameChangedHandler(newValue: string) {\n debug('nylas-event-description', 'elementNameChangedHandler', newValue);\n this.host.setAttribute('name', newValue);\n }\n\n @Watch('selectedConfiguration')\n selectedConfigurationChangedHandler(newValue: Configuration) {\n debug('nylas-custom-booking-flow', 'selectedConfigurationChangedHandler', newValue);\n const description = newValue?.event_booking?.description || this.eventDescription || '';\n const additionalFields = newValue?.scheduler?.additional_fields || {};\n const newKeys = Object.keys(additionalFields) || [];\n const newTokens = newKeys.map(key => {\n return {\n token: `$${key}`,\n value: `\\${${key}}`,\n description: additionalFields[key].label || '',\n };\n });\n this.additionalFieldTokens = [...newTokens];\n this.availableTokens = [...eventDescriptionTokens, ...newTokens].map(token => ({\n label: token.token,\n value: token.value,\n labelHTML: token,\n }));\n this.filteredTokens = [...this.availableTokens];\n this.description = description;\n if (description) {\n this.updateEventDescriptionFromProp(description);\n }\n }\n\n @Watch('selectedLanguage')\n selectedLanguageChangedHandler(newVal: LANGUAGE_CODE, oldVal: LANGUAGE_CODE) {\n if (newVal === oldVal) return;\n i18next.changeLanguage(newVal);\n const titleTokens = {\n $invitee: 'invitee',\n $invitee_email: 'inviteeEmail',\n $duration: 'duration',\n };\n this.availableTokens = this.availableTokens.map(token => {\n if (titleTokens[token.label]) {\n token.labelHTML.description = i18next.t(`nylasEventTitle.eventTitleTokenDescription.${titleTokens[token.label]}`);\n }\n return token;\n });\n this.filteredTokens = [...this.availableTokens];\n }\n\n @Watch('themeConfig')\n themeConfigChangedHandler(newVal: ThemeConfig, oldVal: ThemeConfig) {\n if (newVal === oldVal) return;\n this.applyThemeConfig(newVal);\n }\n\n applyThemeConfig(themeConfig?: ThemeConfig) {\n if (themeConfig) {\n for (const [key, value] of Object.entries(themeConfig)) {\n this.host.style.setProperty(`${key}`, value);\n }\n }\n }\n\n /**\n * Event emitted when the event description changes.\n */\n @Event() valueChanged!: EventEmitter<{\n value: string;\n name: string;\n }>;\n\n connectedCallback() {\n debug('nylas-event-description', 'connectedCallback');\n // Use queueMicrotask to defer theme application until after React has set props.\n // This fixes the timing issue where connectedCallback fires before React sets themeConfig.\n queueMicrotask(() => {\n if (this.themeConfig) {\n this.applyThemeConfig(this.themeConfig);\n this.host.setAttribute('data-themed', '');\n }\n });\n }\n\n componentWillLoad() {\n debug('nylas-event-description', 'componentWillLoad');\n this.host.setAttribute('name', this.name);\n // Theme already applied in connectedCallback via queueMicrotask\n }\n\n componentDidLoad() {\n debug('nylas-event-description', 'componentDidLoad');\n if (this.selectedConfiguration) {\n this.selectedConfigurationChangedHandler(this.selectedConfiguration);\n } else {\n this.description = this.eventDescription || '';\n this.updateEventDescriptionFromProp(this.description);\n }\n }\n\n disconnectedCallback() {\n debug('nylas-event-description', 'disconnectedCallback');\n }\n\n @Listen('valueChanged', { target: 'document' })\n valueChangedHandler(event: CustomEvent<{ value: string; name: string }>) {\n const { name, value } = event.detail;\n if (name === 'additional-fields') {\n const additionalFields = JSON.parse(value.toString());\n const newKeys = Object.keys(additionalFields) || [];\n const newTokens = newKeys.map(key => {\n return {\n token: `$${key}`,\n value: `\\${${key}}`,\n description: additionalFields[key].label || '',\n };\n });\n this.additionalFieldTokens = [...newTokens];\n this.availableTokens = [...eventDescriptionTokens, ...newTokens].map(token => ({\n label: token.token,\n value: token.value,\n labelHTML: token,\n }));\n this.filteredTokens = [...this.availableTokens];\n }\n }\n\n updateEventDescriptionFromProp(newValue: string) {\n debug('nylas-event-description', 'updateEventDescriptionFromProp', newValue);\n const description = newValue || this.description;\n if (this.descriptionRef) {\n this.descriptionRef.innerHTML = this.highlightTokens(description);\n }\n }\n\n highlightTokens(description: string) {\n let outputHtml = description;\n [...eventDescriptionTokens, ...this.additionalFieldTokens].forEach(tokenObj => {\n const token = tokenObj.value;\n // Create a regular expression that matches the token as a whole word\n const regex = new RegExp(`(\\\\${token})(?!\\\\w)`, 'g');\n // Replace the token with a span element\n outputHtml = outputHtml?.replace(regex, '<span class=\"highlighted-tag\">$1</span>') || '';\n });\n return outputHtml;\n }\n\n getCurrentSelectionForBrowser() {\n const getSelectionTextData = (nodeValue, offset, node, allSelected) => {\n // Remove zero-width space characters from the text, because they are not visible and cause issues with the selection\n const text = nodeValue.replace(/[\\u200B-\\u200D\\uFEFF]/g, '');\n const dollarIndex = text.lastIndexOf('$');\n const lastWord = text.substring(dollarIndex).split(' ')[0];\n return {\n focusOffset: offset,\n dollarIndex,\n lastWord,\n currentText: text,\n node,\n allSelected,\n };\n };\n\n // Check if the selection has selected all the text in the node, we need this to handle the case where the user selects all the text and then types or deletes\n const isAllSelected = (selection: Selection) => selection.anchorOffset === 0 && selection.focusOffset === selection.focusNode?.nodeValue?.length;\n\n const currentBrowser = getBrowser();\n switch (currentBrowser) {\n case 'Chrome': {\n const shadowRootSelection = (this.host.shadowRoot as CustomShadowRoot)?.getSelection();\n const focusNode = shadowRootSelection?.focusNode;\n const focusNodeValue = focusNode?.nodeValue || '';\n const allSelected = shadowRootSelection && isAllSelected(shadowRootSelection);\n return getSelectionTextData(focusNodeValue, shadowRootSelection?.focusOffset || -1, focusNode, allSelected);\n }\n case 'Firefox': {\n const selection = document.getSelection();\n const anchorNodeValue = selection?.anchorNode?.nodeValue || '';\n const allSelectedFirefox = selection && isAllSelected(selection);\n return getSelectionTextData(anchorNodeValue, selection?.focusOffset || -1, selection?.anchorNode, allSelectedFirefox);\n }\n case 'Safari': {\n const windowSelection = window.getSelection();\n const anchorNode = (windowSelection as any)?.getComposedRanges(this.host.shadowRoot as CustomShadowRoot)[0];\n const currentText = anchorNode?.startContainer?.nodeValue || '';\n const allSelectedSafari = windowSelection && isAllSelected(windowSelection);\n return getSelectionTextData(currentText, anchorNode?.endOffset || -1, anchorNode?.startContainer, allSelectedSafari);\n }\n default: {\n debug('Browser not supported');\n return null;\n }\n }\n }\n\n handleChange(event: Event) {\n let textContent = (event.target as HTMLDivElement).textContent || '';\n textContent = sanitize(textContent);\n // All browsers handle Selection within Shadow DOM differently, so get the current selection based on the browser\n const currentSelection = this.getCurrentSelectionForBrowser();\n if (!currentSelection) {\n this.updateEventDescription(textContent);\n this.resetDropdown();\n return;\n }\n const { focusOffset, dollarIndex, lastWord, currentText } = currentSelection;\n\n if (dollarIndex === -1 || focusOffset < dollarIndex) {\n this.updateEventDescription(textContent);\n this.resetDropdown();\n return;\n }\n if (lastWord.startsWith('$')) {\n this.showTokens = true;\n // Update the current word being typed, we need this reference to update the event description with the selected token\n // because the user can select an option from the dropdown by clicking on it, which will not trigger the input event.\n this.currentWord = {\n $value: lastWord,\n fullText: currentText,\n index: dollarIndex,\n focusOffset,\n };\n this.populateSuggestionsDropdown(lastWord);\n } else {\n this.resetDropdown();\n }\n this.updateEventDescription(textContent);\n }\n\n handleInputKeyDown(event) {\n const selection = this.getCurrentSelectionForBrowser();\n\n // If no text is remaining in the description, reset the description to an empty string\n if (selection?.allSelected && !isNonPrintableKey(event)) {\n this.descriptionRef.innerHTML = '';\n }\n\n if (event.key === 'Enter') {\n event.preventDefault();\n const activeOption = this.host.shadowRoot?.getElementById(this.ariaActivedescendant);\n if (activeOption) {\n activeOption.click();\n this.ariaActivedescendant = '';\n } else {\n const textNode = selection?.node;\n const offset = selection?.focusOffset || 0;\n\n if (!textNode || offset === -1 || this.descriptionRef.childNodes.length === 0) {\n // If no text node exists or invalid selection, create new line at start\n const newTextNode = document.createTextNode('\\n');\n this.descriptionRef.insertBefore(newTextNode, this.descriptionRef.firstChild);\n\n // Set cursor after newline\n const range = document.createRange();\n range.setStart(newTextNode, 1);\n range.collapse(true);\n const sel = window.getSelection();\n sel?.removeAllRanges();\n sel?.addRange(range);\n } else if (textNode.nodeType === Node.TEXT_NODE) {\n const text = textNode.nodeValue || '';\n // Insert newline at cursor position\n const newText = text.slice(0, offset) + '\\n' + text.slice(offset);\n textNode.nodeValue = newText;\n\n // Move cursor after the newline\n const range = document.createRange();\n range.setStart(textNode, offset + 1);\n range.collapse(true);\n const sel = window.getSelection();\n sel?.removeAllRanges();\n sel?.addRange(range);\n }\n this.descriptionRef.focus();\n }\n } else if (event.key === 'ArrowDown') {\n if (this.showTokens) {\n event.preventDefault();\n }\n const activeOption = this.host.shadowRoot?.getElementById(this.ariaActivedescendant);\n if (activeOption) {\n const nextOption = activeOption.nextElementSibling;\n if (nextOption) {\n this.ariaActivedescendant = nextOption.id;\n } else {\n this.ariaActivedescendant = this.filteredTokens[0].label;\n }\n } else {\n this.ariaActivedescendant = this.filteredTokens[0].label;\n }\n } else if (event.key === 'ArrowUp') {\n if (this.showTokens) {\n event.preventDefault();\n }\n const activeOption = this.host.shadowRoot?.getElementById(this.ariaActivedescendant);\n if (activeOption) {\n const prevOption = activeOption.previousElementSibling;\n if (prevOption) {\n this.ariaActivedescendant = prevOption.id;\n } else {\n this.ariaActivedescendant = this.filteredTokens[this.filteredTokens.length - 1].label;\n }\n } else {\n this.ariaActivedescendant = this.filteredTokens[this.filteredTokens.length - 1].label;\n }\n } else if (event.key === 'Escape') {\n event.preventDefault();\n this.resetDropdown();\n } else if (event.key === 'Backspace' || event.key === 'Delete') {\n const parentNode = selection?.node?.parentNode;\n if (selection?.currentText.startsWith('${') && parentNode && parentNode.nodeName === 'SPAN') {\n event.preventDefault();\n parentNode.removeChild(selection.node);\n parentNode.remove();\n this.resetDropdown();\n }\n if (this.descriptionRef.textContent === '' || selection?.allSelected) {\n this.descriptionRef.innerHTML = '';\n this.updateEventDescription('');\n }\n }\n }\n\n selectOption(e: Event, option: { label: string; value: string; labelHTML: Token }) {\n e.preventDefault();\n const word = this.currentWord.fullText;\n const dollarWord = this.currentWord.$value;\n\n // Traverse the DOM to find the text node that contains the current word fullText\n let currentNode = this.descriptionRef.firstChild;\n let textNode: ChildNode | null = null;\n\n while (currentNode) {\n if (currentNode.nodeType === 3) {\n const currentNodeText = currentNode.textContent?.replace(/[\\u200B-\\u200D\\uFEFF]/g, '') || '';\n const wordText = word.replace(/[\\u200B-\\u200D\\uFEFF]/g, '');\n if (currentNodeText.includes(wordText)) {\n textNode = currentNode;\n break;\n }\n }\n currentNode = currentNode.nextSibling;\n }\n\n if (!textNode) {\n return;\n }\n // Split the text node into three parts: text before the token, the token, and text after the token\n const text = textNode.textContent || '';\n const index = text.indexOf(dollarWord);\n const textBefore = text.substring(0, index);\n const textAfter = text.substring(index + dollarWord.length);\n const newTextNode = document.createTextNode(textBefore);\n const newRange = document.createRange();\n\n // Create a new span element to replace the text node\n const tagSpan = document.createElement('span');\n tagSpan.classList.add('highlighted-tag');\n tagSpan.textContent = `${option.value}`;\n const newTextNodeAfter = document.createTextNode(textAfter);\n\n if (textAfter !== '') {\n // If there is text after the token, add it to the new span element\n textNode.replaceWith(newTextNode, tagSpan, newTextNodeAfter);\n newRange.setStart(newTextNodeAfter, 1);\n } else {\n // If there is no text after the token, add a zero-width space character (Without this, the cursor will not move outside the highlighted span element)\n const afterNode = document.createTextNode('\\u200B');\n textNode.replaceWith(newTextNode, tagSpan, afterNode);\n newRange.setStart(afterNode, 1);\n }\n\n // Hide the dropdown\n this.resetDropdown();\n this.descriptionRef.focus();\n\n // Set the focus to the new span element\n const sel = window.getSelection();\n newRange.collapse(true);\n sel?.removeAllRanges();\n sel?.addRange(newRange);\n\n // Update the event description with the selected token\n this.updateEventDescription(this.descriptionRef.textContent || '');\n }\n\n populateSuggestionsDropdown(query: string = '') {\n this.filteredTokens = this.availableTokens.filter(obj => {\n return obj.label.startsWith(query.toString()) || obj.value.startsWith(query.toString());\n });\n\n // Set the first option as the active descendant\n if (this.filteredTokens.length > 0) {\n this.ariaActivedescendant = this.filteredTokens[0].label;\n }\n }\n\n get isInternalsAvailable() {\n return typeof this.internals !== 'undefined' && typeof this.internals.setValidity === 'function' && typeof this.internals.setFormValue === 'function';\n }\n\n updateEventDescription(text: string) {\n const value = text.replace(/ +/g, ' ');\n this.isInternalsAvailable && this.internals?.setFormValue(value, this.name);\n this.valueChanged.emit({ value: value, name: this.name });\n }\n\n resetDropdown() {\n this.showTokens = false;\n this.ariaActivedescendant = '';\n }\n\n getLabelHTML(token: { token: string; description: string }) {\n return (\n <div class=\"token-label\">\n <span class=\"token\">{token.token}</span>\n <span class=\"description\">{token.description}</span>\n </div>\n );\n }\n\n handleAddAdditionalFields() {\n if (this.additionalFieldTokens.length === 0) {\n return;\n }\n\n // Remove any existing additional fields section while preserving content before and after\n const baseDescription = this.descriptionRef.innerHTML;\n const startMarker = '--- Additional Fields ---';\n const endMarker = '--- End Additional Fields ---';\n\n const startIndex = baseDescription.indexOf(startMarker);\n const endIndex = baseDescription.indexOf(endMarker);\n\n // Add the additional fields block with start and end markers\n let additionalFieldsBlock = startMarker + '\\n';\n this.additionalFieldTokens.forEach(token => {\n additionalFieldsBlock += `${token.description}: ${token.value}\\n`;\n });\n additionalFieldsBlock += endMarker;\n\n let description;\n if (startIndex !== -1 && endIndex !== -1) {\n // Replace existing block while maintaining text positions\n description = baseDescription.substring(0, startIndex) + additionalFieldsBlock + baseDescription.substring(endIndex + endMarker.length);\n } else {\n // First time adding the block\n description = baseDescription + additionalFieldsBlock;\n }\n\n this.updateEventDescriptionFromProp(description);\n this.updateEventDescription(description);\n }\n\n @RegisterComponent<NylasEventDescription, NylasSchedulerConfigConnector, Exclude<NylasSchedulerEditor['stores'], undefined>>({\n name: 'nylas-event-description',\n stateToProps: new Map([\n ['schedulerConfig.selectedConfiguration', 'selectedConfiguration'],\n ['schedulerConfig.selectedLanguage', 'selectedLanguage'],\n ['schedulerConfig.themeConfig', 'themeConfig'],\n ]),\n eventToProps: {},\n fireRegisterEvent: true,\n })\n render() {\n return (\n <Host>\n <div class=\"nylas-event-description\" part=\"nedesc\">\n <label htmlFor=\"description\">\n <p>\n {i18next.t('nylasEventDescription.headerTitle')}\n <span class=\"label-icon\">\n <tooltip-component>\n <info-icon slot=\"tooltip-icon\" />\n <span slot=\"tooltip-content\">{i18next.t('nylasEventDescription.tooltip.desc')}</span>\n </tooltip-component>\n </span>\n </p>\n </label>\n <div\n id=\"event-description\"\n class={{ 'event-description': true }}\n part=\"nedesc__textarea\"\n contentEditable=\"true\"\n onInput={e => this.handleChange(e)}\n onKeyDown={event => this.handleInputKeyDown(event)}\n ref={el => (this.descriptionRef = el as HTMLDivElement)}\n ></div>\n {!this.noTemplates && this.showTokens && this.filteredTokens?.length > 0 && (\n <div class=\"token-options\" part=\"nedesc__dropdown-content\">\n <ul tabindex=\"-1\" role=\"listbox\" aria-label={this.name} aria-activedescendant={this.ariaActivedescendant}>\n {this.filteredTokens.map(option => (\n <li\n tabindex=\"0\"\n key={option.label}\n id={option.label}\n class={{ active: this.ariaActivedescendant === option.label }}\n onClick={e => this.selectOption(e, option)}\n role=\"option\"\n >\n {this.getLabelHTML(option.labelHTML)}\n </li>\n ))}\n </ul>\n </div>\n )}\n {!this.noTemplates && (\n <span class=\"help-text\">\n {i18next.t('nylasEventTitle.helpText', { context: 'start', field: i18next.t('nylasEventTitle.description') })} <code>$</code>{' '}\n {i18next.t('nylasEventTitle.helpText', { context: 'end' })}\n <span class=\"label-icon\">\n <tooltip-component>\n <info-icon slot=\"tooltip-icon\" width=\"13\" height=\"13\" />\n <span slot=\"tooltip-content\">\n {i18next.t('nylasEventTitle.tooltip.desc')} <code>{'${invitee}'}</code>\n </span>\n </tooltip-component>\n </span>\n </span>\n )}\n {!this.noTemplates && !this.hideAutoPopulateButton && (\n <span class=\"add-additional-fields\">\n <button-component variant=\"basic\" onClick={() => this.handleAddAdditionalFields()}>\n {i18next.t('nylasEventDescription.addAdditionalFields.buttonText')}\n </button-component>\n <span class=\"label-icon\">\n <tooltip-component>\n <info-icon slot=\"tooltip-icon\" />\n <span slot=\"tooltip-content\">\n {i18next.t('nylasEventDescription.addAdditionalFields.tooltip.desc')} <code>{'${invitee}'}</code>\n </span>\n </tooltip-component>\n </span>\n </span>\n )}\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
|
|
1
|
+
{"file":"p-BmBJwWDS.js","mappings":"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","names":["__stencil_proxyCustomElement","HTMLElement","eventDescriptionTokens","i18next"],"sources":["src/components/scheduler-editor/nylas-event-description/nylas-event-description.scss?tag=nylas-event-description&encapsulation=shadow","src/components/scheduler-editor/nylas-event-description/nylas-event-description.tsx"],"sourcesContent":["@use '../../../common/styles/variables' as *;\n@use '../../../common/mixins/inputs' as *;\n\n:host {\n display: block;\n height: auto;\n @include default-css-variables;\n width: 100%;\n}\n\n.nylas-event-description {\n display: flex;\n flex-direction: column;\n gap: 4px;\n position: relative;\n color: var(--nylas-base-900);\n\n label {\n @include input-label;\n flex-direction: column;\n gap: 4px;\n font-family: var(--nylas-font-family);\n\n p {\n margin: 0;\n display: flex;\n align-items: center;\n }\n\n span.label-icon {\n margin-left: 4px;\n\n tooltip-component {\n display: flex;\n }\n }\n }\n\n textarea {\n padding: 12px 16px;\n border-width: 1;\n resize: vertical;\n border-radius: 8px;\n font-family: var(--nylas-font-family);\n font-size: 16px;\n line-height: 24px;\n border: 1px solid var(--nylas-base-200);\n\n &::-webkit-resizer {\n display: none;\n }\n }\n\n div.event-description {\n // Apply textfield styles but override display and alignment for contentEditable\n border-radius: var(--nylas-border-radius-2x);\n border: 1px solid var(--nylas-base-300);\n background: var(--nylas-base-0);\n width: -webkit-fill-available;\n min-height: 50px;\n padding: 12px 16px;\n overflow-y: auto;\n white-space: pre-wrap;\n line-height: 1.5;\n scrollbar-width: thin;\n color: var(--nylas-base-900);\n font-family: var(--nylas-font-family);\n font-size: 16px;\n font-style: normal;\n font-weight: 400;\n -webkit-text-fill-color: var(--nylas-base-900);\n display: block;\n /* Preserves line breaks */\n &::-webkit-scrollbar {\n width: 6px;\n height: 6px;\n }\n\n &:focus {\n color: var(--nylas-base-900);\n -webkit-text-fill-color: var(--nylas-base-900);\n outline: 2px solid var(--nylas-primary);\n outline-offset: 2px;\n }\n\n &:focus-visible {\n color: var(--nylas-base-900);\n -webkit-text-fill-color: var(--nylas-base-900);\n outline: 2px solid var(--nylas-primary);\n outline-offset: 2px;\n }\n\n &.error {\n border-color: var(--nylas-error);\n border-width: 2px;\n }\n }\n\n span.add-additional-fields {\n display: flex;\n align-items: center;\n gap: 8px;\n\n button-component {\n button {\n height: 35px;\n background-color: var(--nylas-base-0);\n }\n }\n }\n\n span.help-text {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n color: var(--nylas-base-500);\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 21px;\n position: relative;\n\n span.label-icon {\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n\n tooltip-component {\n display: flex;\n &::part(tc__container) {\n position: unset;\n }\n\n &::part(tc__content) {\n position: absolute;\n top: 4px;\n left: 50%;\n transform: translateX(-50%);\n }\n }\n }\n }\n\n .highlighted-tag {\n background-color: var(--nylas-base-200);\n border-radius: var(--nylas-border-radius);\n padding: 2px 5px;\n margin-left: 4px;\n margin-bottom: 4px;\n display: inline-block;\n vertical-align: baseline;\n }\n\n .token-options {\n display: block;\n background-color: var(--nylas-base-0);\n width: 100%;\n max-height: 336px;\n margin-top: 28px;\n overflow: auto;\n z-index: 1;\n border-radius: 4px;\n position: absolute;\n bottom: 108px;\n\n box-shadow: 0px 4px 6px -2px #0000000d;\n box-shadow: 0px 10px 15px -3px #0000001a;\n\n @media #{$mobile} {\n right: 0;\n width: 325px;\n max-width: unset;\n }\n\n ul {\n padding: 0;\n list-style-type: none;\n color: var(--nylas-base-900);\n max-height: 336px;\n margin: 0;\n\n li {\n padding: 16px, 12px, 16px, 12px;\n color: var(--nylas-base-900);\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\n .token-label {\n display: flex;\n flex-direction: column;\n font-weight: 400;\n\n .token {\n color: var(--nylas-abse-900);\n font-size: 16px;\n line-height: 24px;\n }\n\n .description {\n color: var(--nylas-base-600);\n font-size: 14px;\n line-height: 21px;\n }\n }\n\n &:hover,\n &:focus,\n &:active,\n &.active {\n background-color: var(--nylas-base-100);\n\n .token-label {\n .token {\n color: var(--nylas-primary);\n }\n }\n }\n }\n }\n\n .selected {\n background-color: var(--nylas-base-100);\n }\n }\n}\n","import { RegisterComponent } from '@/common/register-component';\nimport { NylasSchedulerConfigConnector } from '@/connector/nylas-scheduler-config-connector';\nimport { debug, getBrowser, isNonPrintableKey, sanitize } from '@/utils/utils';\nimport { AttachInternals, Component, Host, State, h, Element, Prop, Watch, Event, EventEmitter, Listen } from '@stencil/core';\nimport { NylasSchedulerEditor } from '../nylas-scheduler-editor/nylas-scheduler-editor';\nimport { Configuration } from '@nylas/core';\nimport i18next from '@/utils/i18n';\nimport { LANGUAGE_CODE } from '@/common/constants';\nimport { EVENT_TITLE_TOKENS as eventDescriptionTokens } from '@/common/constants';\nimport { ThemeConfig } from '@nylas/core';\ninterface CustomShadowRoot extends ShadowRoot {\n getSelection: () => Selection | null;\n}\n\ntype Token = {\n token: string;\n value: string;\n description: string;\n};\n\n/**\n * The `nylas-event-description` component is a form input for the description of an event.\n * @part nedesc - The event description container\n * @part nedesc__textarea - The event description textarea\n */\n@Component({\n tag: 'nylas-event-description',\n styleUrl: 'nylas-event-description.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class NylasEventDescription {\n /**\n * The host element <nylas-event-description>\n */\n @Element() host!: HTMLElement;\n /**\n * @standalone\n * The selected config\n */\n @Prop() selectedConfiguration?: Configuration;\n\n /**\n * @standalone\n * The event description stored in the configuration\n */\n @Prop() eventDescription?: string = this.selectedConfiguration?.event_booking?.description;\n\n /**\n * @standalone\n * The name of the event description input.\n */\n @Prop() name: string = 'description';\n\n /**\n * The selected language.\n */\n @Prop() selectedLanguage?: LANGUAGE_CODE;\n\n /**\n * Hide the auto popolate button\n */\n @Prop() hideAutoPopulateButton: boolean = false;\n\n /**\n * Whether to show the tokens dropdown.\n */\n @Prop() noTemplates: boolean = false;\n /**\n * @standalone\n * The theme configuration.\n */\n @Prop({ attribute: 'theme-config' }) readonly themeConfig?: ThemeConfig;\n\n /**\n * The selected event description state. This defaults to the event description from the configuration or an empty string.\n */\n @State() description: string = this.eventDescription || this.selectedConfiguration?.event_booking?.description || '';\n @State() showTokens: boolean = false;\n /**\n * The available token options for the dropdown.\n */\n @State() availableTokens: { label: string; value: string; labelHTML: Token }[] = eventDescriptionTokens.map(token => ({\n label: token.token,\n value: token.value,\n labelHTML: token,\n }));\n /**\n * The filtered token options for the dropdown based on the current query.\n */\n @State() filteredTokens: { label: string; value: string; labelHTML: Token }[] = this.availableTokens;\n /**\n * The aria-activedescendant attribute value. This is used to indicate the\n * currently active descendant in the tokens dropdown.\n */\n @State() ariaActivedescendant: string = '';\n /**\n * Stores the reference to the current word being typed.\n * This is used to update the event description with the selected token tag when\n * an option is selected from the dropdown by clicking on it.\n */\n @State() currentWord: {\n $value: string;\n fullText: string;\n index: number;\n focusOffset: number;\n } = { $value: '', fullText: '', index: -1, focusOffset: -1 };\n\n @State() validationError: string = '';\n\n @State() additionalFieldTokens: Token[] = [];\n // Reference to the description textarea element\n private descriptionRef!: HTMLDivElement;\n\n /**\n * The element internals.\n */\n @AttachInternals() internals!: ElementInternals;\n\n /**\n * When a name prop is passed, stencil does not automatically set the name attribute on the host element.\n * Since this component is form-associated, the name attribute is required for form submission.\n * This is a workaround to ensure that the name attribute is set on the host element.\n */\n @Watch('name')\n elementNameChangedHandler(newValue: string) {\n debug('nylas-event-description', 'elementNameChangedHandler', newValue);\n this.host.setAttribute('name', newValue);\n }\n\n @Watch('selectedConfiguration')\n selectedConfigurationChangedHandler(newValue: Configuration) {\n debug('nylas-custom-booking-flow', 'selectedConfigurationChangedHandler', newValue);\n const description = newValue?.event_booking?.description || this.eventDescription || '';\n const additionalFields = newValue?.scheduler?.additional_fields || {};\n const newKeys = Object.keys(additionalFields) || [];\n const newTokens = newKeys.map(key => {\n return {\n token: `$${key}`,\n value: `\\${${key}}`,\n description: additionalFields[key].label || '',\n };\n });\n this.additionalFieldTokens = [...newTokens];\n this.availableTokens = [...eventDescriptionTokens, ...newTokens].map(token => ({\n label: token.token,\n value: token.value,\n labelHTML: token,\n }));\n this.filteredTokens = [...this.availableTokens];\n this.description = description;\n if (description) {\n this.updateEventDescriptionFromProp(description);\n }\n }\n\n @Watch('selectedLanguage')\n selectedLanguageChangedHandler(newVal: LANGUAGE_CODE, oldVal: LANGUAGE_CODE) {\n if (newVal === oldVal) return;\n i18next.changeLanguage(newVal);\n const titleTokens = {\n $invitee: 'invitee',\n $invitee_email: 'inviteeEmail',\n $duration: 'duration',\n };\n this.availableTokens = this.availableTokens.map(token => {\n if (titleTokens[token.label]) {\n token.labelHTML.description = i18next.t(`nylasEventTitle.eventTitleTokenDescription.${titleTokens[token.label]}`);\n }\n return token;\n });\n this.filteredTokens = [...this.availableTokens];\n }\n\n @Watch('themeConfig')\n themeConfigChangedHandler(newVal: ThemeConfig, oldVal: ThemeConfig) {\n if (newVal === oldVal) return;\n this.applyThemeConfig(newVal);\n }\n\n applyThemeConfig(themeConfig?: ThemeConfig) {\n if (themeConfig) {\n for (const [key, value] of Object.entries(themeConfig)) {\n this.host.style.setProperty(`${key}`, value);\n }\n }\n }\n\n /**\n * Event emitted when the event description changes.\n */\n @Event() valueChanged!: EventEmitter<{\n value: string;\n name: string;\n }>;\n\n connectedCallback() {\n debug('nylas-event-description', 'connectedCallback');\n // Use queueMicrotask to defer theme application until after React has set props.\n // This fixes the timing issue where connectedCallback fires before React sets themeConfig.\n queueMicrotask(() => {\n if (this.themeConfig) {\n this.applyThemeConfig(this.themeConfig);\n this.host.setAttribute('data-themed', '');\n }\n });\n }\n\n componentWillLoad() {\n debug('nylas-event-description', 'componentWillLoad');\n this.host.setAttribute('name', this.name);\n // Theme already applied in connectedCallback via queueMicrotask\n }\n\n componentDidLoad() {\n debug('nylas-event-description', 'componentDidLoad');\n if (this.selectedConfiguration) {\n this.selectedConfigurationChangedHandler(this.selectedConfiguration);\n } else {\n this.description = this.eventDescription || '';\n this.updateEventDescriptionFromProp(this.description);\n }\n }\n\n disconnectedCallback() {\n debug('nylas-event-description', 'disconnectedCallback');\n }\n\n @Listen('valueChanged', { target: 'document' })\n valueChangedHandler(event: CustomEvent<{ value: string; name: string }>) {\n const { name, value } = event.detail;\n if (name === 'additional-fields') {\n const additionalFields = JSON.parse(value.toString());\n const newKeys = Object.keys(additionalFields) || [];\n const newTokens = newKeys.map(key => {\n return {\n token: `$${key}`,\n value: `\\${${key}}`,\n description: additionalFields[key].label || '',\n };\n });\n this.additionalFieldTokens = [...newTokens];\n this.availableTokens = [...eventDescriptionTokens, ...newTokens].map(token => ({\n label: token.token,\n value: token.value,\n labelHTML: token,\n }));\n this.filteredTokens = [...this.availableTokens];\n }\n }\n\n updateEventDescriptionFromProp(newValue: string) {\n debug('nylas-event-description', 'updateEventDescriptionFromProp', newValue);\n const description = newValue || this.description;\n if (this.descriptionRef) {\n this.descriptionRef.innerHTML = this.highlightTokens(description);\n }\n }\n\n highlightTokens(description: string) {\n let outputHtml = description;\n [...eventDescriptionTokens, ...this.additionalFieldTokens].forEach(tokenObj => {\n const token = tokenObj.value;\n // Create a regular expression that matches the token as a whole word\n const regex = new RegExp(`(\\\\${token})(?!\\\\w)`, 'g');\n // Replace the token with a span element\n outputHtml = outputHtml?.replace(regex, '<span class=\"highlighted-tag\">$1</span>') || '';\n });\n return outputHtml;\n }\n\n getCurrentSelectionForBrowser() {\n const getSelectionTextData = (nodeValue, offset, node, allSelected) => {\n // Remove zero-width space characters from the text, because they are not visible and cause issues with the selection\n const text = nodeValue.replace(/[\\u200B-\\u200D\\uFEFF]/g, '');\n const dollarIndex = text.lastIndexOf('$');\n const lastWord = text.substring(dollarIndex).split(' ')[0];\n return {\n focusOffset: offset,\n dollarIndex,\n lastWord,\n currentText: text,\n node,\n allSelected,\n };\n };\n\n // Check if the selection has selected all the text in the node, we need this to handle the case where the user selects all the text and then types or deletes\n const isAllSelected = (selection: Selection) => selection.anchorOffset === 0 && selection.focusOffset === selection.focusNode?.nodeValue?.length;\n\n const currentBrowser = getBrowser();\n switch (currentBrowser) {\n case 'Chrome': {\n const shadowRootSelection = (this.host.shadowRoot as CustomShadowRoot)?.getSelection();\n const focusNode = shadowRootSelection?.focusNode;\n const focusNodeValue = focusNode?.nodeValue || '';\n const allSelected = shadowRootSelection && isAllSelected(shadowRootSelection);\n return getSelectionTextData(focusNodeValue, shadowRootSelection?.focusOffset || -1, focusNode, allSelected);\n }\n case 'Firefox': {\n const selection = document.getSelection();\n const anchorNodeValue = selection?.anchorNode?.nodeValue || '';\n const allSelectedFirefox = selection && isAllSelected(selection);\n return getSelectionTextData(anchorNodeValue, selection?.focusOffset || -1, selection?.anchorNode, allSelectedFirefox);\n }\n case 'Safari': {\n const windowSelection = window.getSelection();\n const anchorNode = (windowSelection as any)?.getComposedRanges(this.host.shadowRoot as CustomShadowRoot)[0];\n const currentText = anchorNode?.startContainer?.nodeValue || '';\n const allSelectedSafari = windowSelection && isAllSelected(windowSelection);\n return getSelectionTextData(currentText, anchorNode?.endOffset || -1, anchorNode?.startContainer, allSelectedSafari);\n }\n default: {\n debug('Browser not supported');\n return null;\n }\n }\n }\n\n handleChange(event: Event) {\n let textContent = (event.target as HTMLDivElement).textContent || '';\n textContent = sanitize(textContent);\n // All browsers handle Selection within Shadow DOM differently, so get the current selection based on the browser\n const currentSelection = this.getCurrentSelectionForBrowser();\n if (!currentSelection) {\n this.updateEventDescription(textContent);\n this.resetDropdown();\n return;\n }\n const { focusOffset, dollarIndex, lastWord, currentText } = currentSelection;\n\n if (dollarIndex === -1 || focusOffset < dollarIndex) {\n this.updateEventDescription(textContent);\n this.resetDropdown();\n return;\n }\n if (lastWord.startsWith('$')) {\n this.showTokens = true;\n // Update the current word being typed, we need this reference to update the event description with the selected token\n // because the user can select an option from the dropdown by clicking on it, which will not trigger the input event.\n this.currentWord = {\n $value: lastWord,\n fullText: currentText,\n index: dollarIndex,\n focusOffset,\n };\n this.populateSuggestionsDropdown(lastWord);\n } else {\n this.resetDropdown();\n }\n this.updateEventDescription(textContent);\n }\n\n handleInputKeyDown(event) {\n const selection = this.getCurrentSelectionForBrowser();\n\n // If no text is remaining in the description, reset the description to an empty string\n if (selection?.allSelected && !isNonPrintableKey(event)) {\n this.descriptionRef.innerHTML = '';\n }\n\n if (event.key === 'Enter') {\n event.preventDefault();\n const activeOption = this.host.shadowRoot?.getElementById(this.ariaActivedescendant);\n if (activeOption) {\n activeOption.click();\n this.ariaActivedescendant = '';\n } else {\n const textNode = selection?.node;\n const offset = selection?.focusOffset || 0;\n\n if (!textNode || offset === -1 || this.descriptionRef.childNodes.length === 0) {\n // If no text node exists or invalid selection, create new line at start\n const newTextNode = document.createTextNode('\\n');\n this.descriptionRef.insertBefore(newTextNode, this.descriptionRef.firstChild);\n\n // Set cursor after newline\n const range = document.createRange();\n range.setStart(newTextNode, 1);\n range.collapse(true);\n const sel = window.getSelection();\n sel?.removeAllRanges();\n sel?.addRange(range);\n } else if (textNode.nodeType === Node.TEXT_NODE) {\n const text = textNode.nodeValue || '';\n // Insert newline at cursor position\n const newText = text.slice(0, offset) + '\\n' + text.slice(offset);\n textNode.nodeValue = newText;\n\n // Move cursor after the newline\n const range = document.createRange();\n range.setStart(textNode, offset + 1);\n range.collapse(true);\n const sel = window.getSelection();\n sel?.removeAllRanges();\n sel?.addRange(range);\n }\n this.descriptionRef.focus();\n }\n } else if (event.key === 'ArrowDown') {\n if (this.showTokens) {\n event.preventDefault();\n }\n const activeOption = this.host.shadowRoot?.getElementById(this.ariaActivedescendant);\n if (activeOption) {\n const nextOption = activeOption.nextElementSibling;\n if (nextOption) {\n this.ariaActivedescendant = nextOption.id;\n } else {\n this.ariaActivedescendant = this.filteredTokens[0].label;\n }\n } else {\n this.ariaActivedescendant = this.filteredTokens[0].label;\n }\n } else if (event.key === 'ArrowUp') {\n if (this.showTokens) {\n event.preventDefault();\n }\n const activeOption = this.host.shadowRoot?.getElementById(this.ariaActivedescendant);\n if (activeOption) {\n const prevOption = activeOption.previousElementSibling;\n if (prevOption) {\n this.ariaActivedescendant = prevOption.id;\n } else {\n this.ariaActivedescendant = this.filteredTokens[this.filteredTokens.length - 1].label;\n }\n } else {\n this.ariaActivedescendant = this.filteredTokens[this.filteredTokens.length - 1].label;\n }\n } else if (event.key === 'Escape') {\n event.preventDefault();\n this.resetDropdown();\n } else if (event.key === 'Backspace' || event.key === 'Delete') {\n const parentNode = selection?.node?.parentNode;\n if (selection?.currentText.startsWith('${') && parentNode && parentNode.nodeName === 'SPAN') {\n event.preventDefault();\n parentNode.removeChild(selection.node);\n parentNode.remove();\n this.resetDropdown();\n }\n if (this.descriptionRef.textContent === '' || selection?.allSelected) {\n this.descriptionRef.innerHTML = '';\n this.updateEventDescription('');\n }\n }\n }\n\n selectOption(e: Event, option: { label: string; value: string; labelHTML: Token }) {\n e.preventDefault();\n const word = this.currentWord.fullText;\n const dollarWord = this.currentWord.$value;\n\n // Traverse the DOM to find the text node that contains the current word fullText\n let currentNode = this.descriptionRef.firstChild;\n let textNode: ChildNode | null = null;\n\n while (currentNode) {\n if (currentNode.nodeType === 3) {\n const currentNodeText = currentNode.textContent?.replace(/[\\u200B-\\u200D\\uFEFF]/g, '') || '';\n const wordText = word.replace(/[\\u200B-\\u200D\\uFEFF]/g, '');\n if (currentNodeText.includes(wordText)) {\n textNode = currentNode;\n break;\n }\n }\n currentNode = currentNode.nextSibling;\n }\n\n if (!textNode) {\n return;\n }\n // Split the text node into three parts: text before the token, the token, and text after the token\n const text = textNode.textContent || '';\n const index = text.indexOf(dollarWord);\n const textBefore = text.substring(0, index);\n const textAfter = text.substring(index + dollarWord.length);\n const newTextNode = document.createTextNode(textBefore);\n const newRange = document.createRange();\n\n // Create a new span element to replace the text node\n const tagSpan = document.createElement('span');\n tagSpan.classList.add('highlighted-tag');\n tagSpan.textContent = `${option.value}`;\n const newTextNodeAfter = document.createTextNode(textAfter);\n\n if (textAfter !== '') {\n // If there is text after the token, add it to the new span element\n textNode.replaceWith(newTextNode, tagSpan, newTextNodeAfter);\n newRange.setStart(newTextNodeAfter, 1);\n } else {\n // If there is no text after the token, add a zero-width space character (Without this, the cursor will not move outside the highlighted span element)\n const afterNode = document.createTextNode('\\u200B');\n textNode.replaceWith(newTextNode, tagSpan, afterNode);\n newRange.setStart(afterNode, 1);\n }\n\n // Hide the dropdown\n this.resetDropdown();\n this.descriptionRef.focus();\n\n // Set the focus to the new span element\n const sel = window.getSelection();\n newRange.collapse(true);\n sel?.removeAllRanges();\n sel?.addRange(newRange);\n\n // Update the event description with the selected token\n this.updateEventDescription(this.descriptionRef.textContent || '');\n }\n\n populateSuggestionsDropdown(query: string = '') {\n this.filteredTokens = this.availableTokens.filter(obj => {\n return obj.label.startsWith(query.toString()) || obj.value.startsWith(query.toString());\n });\n\n // Set the first option as the active descendant\n if (this.filteredTokens.length > 0) {\n this.ariaActivedescendant = this.filteredTokens[0].label;\n }\n }\n\n get isInternalsAvailable() {\n return typeof this.internals !== 'undefined' && typeof this.internals.setValidity === 'function' && typeof this.internals.setFormValue === 'function';\n }\n\n updateEventDescription(text: string) {\n const value = text.replace(/ +/g, ' ');\n this.isInternalsAvailable && this.internals?.setFormValue(value, this.name);\n this.valueChanged.emit({ value: value, name: this.name });\n }\n\n resetDropdown() {\n this.showTokens = false;\n this.ariaActivedescendant = '';\n }\n\n getLabelHTML(token: { token: string; description: string }) {\n return (\n <div class=\"token-label\">\n <span class=\"token\">{token.token}</span>\n <span class=\"description\">{token.description}</span>\n </div>\n );\n }\n\n handleAddAdditionalFields() {\n if (this.additionalFieldTokens.length === 0) {\n return;\n }\n\n // Remove any existing additional fields section while preserving content before and after\n const baseDescription = this.descriptionRef.innerHTML;\n const startMarker = '--- Additional Fields ---';\n const endMarker = '--- End Additional Fields ---';\n\n const startIndex = baseDescription.indexOf(startMarker);\n const endIndex = baseDescription.indexOf(endMarker);\n\n // Add the additional fields block with start and end markers\n let additionalFieldsBlock = startMarker + '\\n';\n this.additionalFieldTokens.forEach(token => {\n additionalFieldsBlock += `${token.description}: ${token.value}\\n`;\n });\n additionalFieldsBlock += endMarker;\n\n let description;\n if (startIndex !== -1 && endIndex !== -1) {\n // Replace existing block while maintaining text positions\n description = baseDescription.substring(0, startIndex) + additionalFieldsBlock + baseDescription.substring(endIndex + endMarker.length);\n } else {\n // First time adding the block\n description = baseDescription + additionalFieldsBlock;\n }\n\n this.updateEventDescriptionFromProp(description);\n this.updateEventDescription(description);\n }\n\n @RegisterComponent<NylasEventDescription, NylasSchedulerConfigConnector, Exclude<NylasSchedulerEditor['stores'], undefined>>({\n name: 'nylas-event-description',\n stateToProps: new Map([\n ['schedulerConfig.selectedConfiguration', 'selectedConfiguration'],\n ['schedulerConfig.selectedLanguage', 'selectedLanguage'],\n ['schedulerConfig.themeConfig', 'themeConfig'],\n ]),\n eventToProps: {},\n fireRegisterEvent: true,\n })\n render() {\n return (\n <Host>\n <div class=\"nylas-event-description\" part=\"nedesc\">\n <label htmlFor=\"description\">\n <p>\n {i18next.t('nylasEventDescription.headerTitle')}\n <span class=\"label-icon\">\n <tooltip-component>\n <info-icon slot=\"tooltip-icon\" />\n <span slot=\"tooltip-content\">{i18next.t('nylasEventDescription.tooltip.desc')}</span>\n </tooltip-component>\n </span>\n </p>\n </label>\n <div\n id=\"event-description\"\n class={{ 'event-description': true }}\n part=\"nedesc__textarea\"\n contentEditable=\"true\"\n onInput={e => this.handleChange(e)}\n onKeyDown={event => this.handleInputKeyDown(event)}\n ref={el => (this.descriptionRef = el as HTMLDivElement)}\n ></div>\n {!this.noTemplates && this.showTokens && this.filteredTokens?.length > 0 && (\n <div class=\"token-options\" part=\"nedesc__dropdown-content\">\n <ul tabindex=\"-1\" role=\"listbox\" aria-label={this.name} aria-activedescendant={this.ariaActivedescendant}>\n {this.filteredTokens.map(option => (\n <li\n tabindex=\"0\"\n key={option.label}\n id={option.label}\n class={{ active: this.ariaActivedescendant === option.label }}\n onClick={e => this.selectOption(e, option)}\n role=\"option\"\n >\n {this.getLabelHTML(option.labelHTML)}\n </li>\n ))}\n </ul>\n </div>\n )}\n {!this.noTemplates && (\n <span class=\"help-text\">\n {i18next.t('nylasEventTitle.helpText', { context: 'start', field: i18next.t('nylasEventTitle.description') })} <code>$</code>{' '}\n {i18next.t('nylasEventTitle.helpText', { context: 'end' })}\n <span class=\"label-icon\">\n <tooltip-component>\n <info-icon slot=\"tooltip-icon\" width=\"13\" height=\"13\" />\n <span slot=\"tooltip-content\">\n {i18next.t('nylasEventTitle.tooltip.desc')} <code>{'${invitee}'}</code>\n </span>\n </tooltip-component>\n </span>\n </span>\n )}\n {!this.noTemplates && !this.hideAutoPopulateButton && (\n <span class=\"add-additional-fields\">\n <button-component variant=\"basic\" onClick={() => this.handleAddAdditionalFields()}>\n {i18next.t('nylasEventDescription.addAdditionalFields.buttonText')}\n </button-component>\n <span class=\"label-icon\">\n <tooltip-component>\n <info-icon slot=\"tooltip-icon\" />\n <span slot=\"tooltip-content\">\n {i18next.t('nylasEventDescription.addAdditionalFields.tooltip.desc')} <code>{'${invitee}'}</code>\n </span>\n </tooltip-component>\n </span>\n </span>\n )}\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
|