@nylas/web-elements 2.0.1 → 2.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cdn/nylas-scheduler-editor/nylas-scheduler-editor.es.js +191 -95
- package/dist/cdn/nylas-scheduling/nylas-scheduling.es.js +10418 -10260
- package/dist/cjs/{abstract-provider-ca4f7e4f.js → abstract-provider-f84a6735.js} +2 -2
- package/dist/cjs/{abstract-provider-ca4f7e4f.js.map → abstract-provider-f84a6735.js.map} +1 -1
- package/dist/cjs/app-globals-ee500b74.js.map +1 -1
- package/dist/cjs/calendar-agenda-fill-icon_36.cjs.entry.js +36 -21
- package/dist/cjs/calendar-agenda-fill-icon_36.cjs.entry.js.map +1 -1
- package/dist/cjs/{calendar-check-icon_2.cjs.entry.js → calendar-check-icon.cjs.entry.js} +3 -19
- package/dist/cjs/calendar-check-icon.cjs.entry.js.map +1 -0
- package/dist/cjs/checkbox-component_2.cjs.entry.js +1 -1
- package/dist/cjs/checkbox-group_4.cjs.entry.js +3 -3
- package/dist/cjs/checkmark-circle-icon.cjs.entry.js +24 -0
- package/dist/cjs/checkmark-circle-icon.cjs.entry.js.map +1 -0
- package/dist/cjs/checkmark-icon_15.cjs.entry.js +11 -7
- package/dist/cjs/checkmark-icon_15.cjs.entry.js.map +1 -1
- package/dist/cjs/{customParseFormat-bb3a23c5.js → customParseFormat-95790293.js} +2 -2
- package/dist/cjs/{customParseFormat-bb3a23c5.js.map → customParseFormat-95790293.js.map} +1 -1
- package/dist/cjs/{feedbackSync-1c5ec9aa.js → feedbackSync-4ed99749.js} +2 -2
- package/dist/cjs/{feedbackSync-1c5ec9aa.js.map → feedbackSync-4ed99749.js.map} +1 -1
- package/dist/cjs/globe-icon_2.cjs.entry.js +2 -2
- package/dist/cjs/google-logo-icon_6.cjs.entry.js +8 -8
- package/dist/cjs/index-e07e3a7e.js +6 -2
- package/dist/cjs/index.cjs.js +2 -2
- package/dist/cjs/{index.es-c563f3ba.js → index.es-62161daa.js} +2 -2
- package/dist/cjs/{index.es-c563f3ba.js.map → index.es-62161daa.js.map} +1 -1
- package/dist/cjs/input-component.cjs.entry.js +1 -1
- package/dist/cjs/input-dropdown_2.cjs.entry.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/multi-select-dropdown.cjs.entry.js +1 -1
- package/dist/cjs/{nylas-api-request-4d148ff1.js → nylas-api-request-03d7f604.js} +2 -2
- package/dist/cjs/{nylas-api-request-4d148ff1.js.map → nylas-api-request-03d7f604.js.map} +1 -1
- package/dist/cjs/nylas-booked-event-card_11.cjs.entry.js +82 -25
- package/dist/cjs/nylas-booked-event-card_11.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-form-card.cjs.entry.js +2 -2
- package/dist/cjs/nylas-notification_2.cjs.entry.js +1 -1
- package/dist/cjs/nylas-scheduler-editor.cjs.entry.js +6 -6
- package/dist/cjs/nylas-scheduling.cjs.entry.js +42 -14
- package/dist/cjs/nylas-scheduling.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-web-elements.cjs.js +1 -1
- package/dist/cjs/{register-component-70744713.js → register-component-f4ad9751.js} +2 -2
- package/dist/cjs/{register-component-70744713.js.map → register-component-f4ad9751.js.map} +1 -1
- package/dist/cjs/textarea-component.cjs.entry.js +1 -1
- package/dist/cjs/{utils-dd3b6f4c.js → utils-03b13826.js} +154 -55
- package/dist/cjs/utils-03b13826.js.map +1 -0
- package/dist/collection/components/scheduler/nylas-booked-event-card/nylas-booked-event-card.js +11 -3
- package/dist/collection/components/scheduler/nylas-booked-event-card/nylas-booked-event-card.js.map +1 -1
- package/dist/collection/components/scheduler/nylas-booking-form/nylas-booking-form.js +49 -4
- package/dist/collection/components/scheduler/nylas-booking-form/nylas-booking-form.js.map +1 -1
- package/dist/collection/components/scheduler/nylas-booking-form/test/nylas-booking-form.spec.js +3 -3
- package/dist/collection/components/scheduler/nylas-booking-form/test/nylas-booking-form.spec.js.map +1 -1
- package/dist/collection/components/scheduler/nylas-cancel-booking-form/nylas-cancel-booking-form.js +37 -1
- package/dist/collection/components/scheduler/nylas-cancel-booking-form/nylas-cancel-booking-form.js.map +1 -1
- package/dist/collection/components/scheduler/nylas-cancelled-event-card/nylas-cancelled-event-card.js +34 -2
- package/dist/collection/components/scheduler/nylas-cancelled-event-card/nylas-cancelled-event-card.js.map +1 -1
- package/dist/collection/components/scheduler/nylas-confirmed-event-card/nylas-confirmed-event-card.css +1 -1
- package/dist/collection/components/scheduler/nylas-confirmed-event-card/nylas-confirmed-event-card.js +34 -1
- package/dist/collection/components/scheduler/nylas-confirmed-event-card/nylas-confirmed-event-card.js.map +1 -1
- package/dist/collection/components/scheduler/nylas-date-picker/nylas-date-picker.js +10 -4
- package/dist/collection/components/scheduler/nylas-date-picker/nylas-date-picker.js.map +1 -1
- package/dist/collection/components/scheduler/nylas-organizer-confirmation-card/nylas-organizer-confirmation-card.js +10 -2
- package/dist/collection/components/scheduler/nylas-organizer-confirmation-card/nylas-organizer-confirmation-card.js.map +1 -1
- package/dist/collection/components/scheduler/nylas-scheduling/nylas-scheduling.css +13 -0
- package/dist/collection/components/scheduler/nylas-scheduling/nylas-scheduling.js +66 -7
- package/dist/collection/components/scheduler/nylas-scheduling/nylas-scheduling.js.map +1 -1
- package/dist/collection/components/scheduler/nylas-scheduling/test/nylas-scheduling.spec.js +33 -0
- package/dist/collection/components/scheduler/nylas-scheduling/test/nylas-scheduling.spec.js.map +1 -1
- package/dist/collection/components/scheduler/nylas-selected-event-card/nylas-selected-event-card.js +20 -5
- package/dist/collection/components/scheduler/nylas-selected-event-card/nylas-selected-event-card.js.map +1 -1
- package/dist/collection/components/scheduler/nylas-timeslot-picker/nylas-timeslot-picker.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-additional-participants/nylas-additional-participants.js +12 -6
- 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 +12 -6
- package/dist/collection/components/scheduler-editor/nylas-booking-confirmation-redirect/nylas-booking-confirmation-redirect.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-confirmation-email/nylas-confirmation-email.js +6 -3
- package/dist/collection/components/scheduler-editor/nylas-confirmation-email/nylas-confirmation-email.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-custom-event-slug/nylas-custom-event-slug.js +14 -8
- package/dist/collection/components/scheduler-editor/nylas-custom-event-slug/nylas-custom-event-slug.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-editor-tabs/nylas-editor-tabs.js +3 -3
- package/dist/collection/components/scheduler-editor/nylas-event-calendar/nylas-event-calendar.js +1 -1
- package/dist/collection/components/scheduler-editor/nylas-reminder-emails/nylas-reminder-emails.js +8 -4
- package/dist/collection/components/scheduler-editor/nylas-reminder-emails/nylas-reminder-emails.js.map +1 -1
- package/dist/components/index.js.map +1 -1
- package/dist/components/nylas-additional-participants2.js +12 -6
- package/dist/components/nylas-additional-participants2.js.map +1 -1
- package/dist/components/nylas-booked-event-card2.js +13 -6
- package/dist/components/nylas-booked-event-card2.js.map +1 -1
- package/dist/components/nylas-booking-confirmation-redirect2.js +12 -6
- package/dist/components/nylas-booking-confirmation-redirect2.js.map +1 -1
- package/dist/components/nylas-booking-form2.js +28 -6
- package/dist/components/nylas-booking-form2.js.map +1 -1
- package/dist/components/nylas-cancel-booking-form2.js +13 -3
- package/dist/components/nylas-cancel-booking-form2.js.map +1 -1
- package/dist/components/nylas-cancelled-event-card2.js +12 -3
- package/dist/components/nylas-cancelled-event-card2.js.map +1 -1
- package/dist/components/nylas-confirmation-email2.js +6 -3
- package/dist/components/nylas-confirmation-email2.js.map +1 -1
- package/dist/components/nylas-confirmed-event-card2.js +18 -8
- package/dist/components/nylas-confirmed-event-card2.js.map +1 -1
- package/dist/components/nylas-custom-event-slug2.js +15 -9
- package/dist/components/nylas-custom-event-slug2.js.map +1 -1
- package/dist/components/nylas-date-picker2.js +1 -1
- package/dist/components/nylas-date-picker2.js.map +1 -1
- package/dist/components/nylas-editor-tabs-group2.js +2 -2
- package/dist/components/nylas-editor-tabs2.js +2 -2
- package/dist/components/nylas-organizer-confirmation-card2.js +12 -5
- package/dist/components/nylas-organizer-confirmation-card2.js.map +1 -1
- package/dist/components/nylas-reminder-emails2.js +8 -4
- package/dist/components/nylas-reminder-emails2.js.map +1 -1
- package/dist/components/nylas-scheduler-editor.js +2 -2
- package/dist/components/nylas-scheduling.js +42 -12
- package/dist/components/nylas-scheduling.js.map +1 -1
- package/dist/components/nylas-selected-event-card2.js +12 -5
- package/dist/components/nylas-selected-event-card2.js.map +1 -1
- package/dist/components/nylas-timeslot-picker2.js.map +1 -1
- package/dist/components/utils.js +153 -54
- package/dist/components/utils.js.map +1 -1
- package/dist/esm/{abstract-provider-efe136bd.js → abstract-provider-bdb7d9b4.js} +2 -2
- package/dist/esm/{abstract-provider-efe136bd.js.map → abstract-provider-bdb7d9b4.js.map} +1 -1
- package/dist/esm/app-globals-295a87be.js.map +1 -1
- package/dist/esm/calendar-agenda-fill-icon_36.entry.js +36 -21
- package/dist/esm/calendar-agenda-fill-icon_36.entry.js.map +1 -1
- package/dist/esm/{calendar-check-icon_2.entry.js → calendar-check-icon.entry.js} +4 -19
- package/dist/esm/calendar-check-icon.entry.js.map +1 -0
- package/dist/esm/checkbox-component_2.entry.js +1 -1
- package/dist/esm/checkbox-group_4.entry.js +3 -3
- package/dist/esm/checkmark-circle-icon.entry.js +20 -0
- package/dist/esm/checkmark-circle-icon.entry.js.map +1 -0
- package/dist/esm/checkmark-icon_15.entry.js +11 -7
- package/dist/esm/checkmark-icon_15.entry.js.map +1 -1
- package/dist/esm/{customParseFormat-edc38d83.js → customParseFormat-f0d21eb3.js} +2 -2
- package/dist/esm/{customParseFormat-edc38d83.js.map → customParseFormat-f0d21eb3.js.map} +1 -1
- package/dist/esm/{feedbackSync-e4378c0b.js → feedbackSync-b9c9e719.js} +2 -2
- package/dist/esm/{feedbackSync-e4378c0b.js.map → feedbackSync-b9c9e719.js.map} +1 -1
- package/dist/esm/globe-icon_2.entry.js +2 -2
- package/dist/esm/google-logo-icon_6.entry.js +8 -8
- package/dist/esm/index-091600eb.js +6 -2
- package/dist/esm/{index.es-6a9d55cf.js → index.es-ccb2a286.js} +2 -2
- package/dist/esm/{index.es-6a9d55cf.js.map → index.es-ccb2a286.js.map} +1 -1
- package/dist/esm/index.js +2 -2
- package/dist/esm/input-component.entry.js +1 -1
- package/dist/esm/input-dropdown_2.entry.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/multi-select-dropdown.entry.js +1 -1
- package/dist/esm/{nylas-api-request-f2e4e9b6.js → nylas-api-request-7d702661.js} +2 -2
- package/dist/esm/{nylas-api-request-f2e4e9b6.js.map → nylas-api-request-7d702661.js.map} +1 -1
- package/dist/esm/nylas-booked-event-card_11.entry.js +82 -25
- package/dist/esm/nylas-booked-event-card_11.entry.js.map +1 -1
- package/dist/esm/nylas-form-card.entry.js +2 -2
- package/dist/esm/nylas-notification_2.entry.js +1 -1
- package/dist/esm/nylas-scheduler-editor.entry.js +6 -6
- package/dist/esm/nylas-scheduling.entry.js +43 -15
- package/dist/esm/nylas-scheduling.entry.js.map +1 -1
- package/dist/esm/nylas-web-elements.js +1 -1
- package/dist/esm/{register-component-a1c3d7b4.js → register-component-9d4ceee5.js} +2 -2
- package/dist/esm/{register-component-a1c3d7b4.js.map → register-component-9d4ceee5.js.map} +1 -1
- package/dist/esm/textarea-component.entry.js +1 -1
- package/dist/esm/{utils-b7f9cbcc.js → utils-fb8a9ce4.js} +154 -55
- package/dist/esm/utils-fb8a9ce4.js.map +1 -0
- package/dist/nylas-web-elements/index.esm.js +1 -1
- package/dist/nylas-web-elements/nylas-web-elements.esm.js +1 -1
- package/dist/nylas-web-elements/nylas-web-elements.esm.js.map +1 -1
- package/dist/nylas-web-elements/{p-3ce8e281.js → p-094be30f.js} +2 -2
- package/dist/nylas-web-elements/p-18c58ea1.entry.js +2 -0
- package/dist/nylas-web-elements/p-18c58ea1.entry.js.map +1 -0
- package/dist/nylas-web-elements/{p-c12c18b2.entry.js → p-1dbaf879.entry.js} +2 -2
- package/dist/nylas-web-elements/p-2830522f.entry.js +2 -0
- package/dist/nylas-web-elements/p-2830522f.entry.js.map +1 -0
- package/dist/nylas-web-elements/{p-35297f33.entry.js → p-3b56d656.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-8e7882a1.js → p-3c8b7ba1.js} +2 -2
- package/dist/nylas-web-elements/{p-3204882f.entry.js → p-3f5e1e6b.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-5aae729f.js → p-4c1fafb4.js} +2 -2
- package/dist/nylas-web-elements/p-522270a2.entry.js +2 -0
- package/dist/nylas-web-elements/p-522270a2.entry.js.map +1 -0
- package/dist/nylas-web-elements/p-67e936ce.entry.js +2 -0
- package/dist/nylas-web-elements/p-67e936ce.entry.js.map +1 -0
- package/dist/nylas-web-elements/{p-9e11eb2c.js → p-6d8e2c6b.js} +2 -2
- package/dist/nylas-web-elements/{p-3362cf82.entry.js → p-8f82f281.entry.js} +2 -2
- package/dist/nylas-web-elements/p-920812bd.entry.js +8 -0
- package/dist/nylas-web-elements/p-920812bd.entry.js.map +1 -0
- package/dist/nylas-web-elements/{p-b40f7a77.entry.js → p-a42f41f7.entry.js} +2 -2
- package/dist/nylas-web-elements/p-a6e2e49c.js.map +1 -1
- package/dist/nylas-web-elements/{p-8340d845.entry.js → p-aad611b4.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-6e56eb3f.js → p-ab88518b.js} +2 -2
- package/dist/nylas-web-elements/{p-5cf6301e.entry.js → p-b3500bf1.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-4d8f9740.entry.js → p-b6d863e0.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-50c255fa.entry.js → p-b8cf836f.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-996c827d.entry.js → p-bf37be06.entry.js} +2 -2
- package/dist/nylas-web-elements/p-de4b01ac.entry.js +2 -0
- package/dist/nylas-web-elements/p-de4b01ac.entry.js.map +1 -0
- package/dist/nylas-web-elements/{p-308e7adb.entry.js → p-f42e87c6.entry.js} +3 -3
- package/dist/nylas-web-elements/{p-dea32251.js → p-f4825eb1.js} +2 -2
- package/dist/nylas-web-elements/p-faa30369.js +14 -0
- package/dist/nylas-web-elements/{p-59e4ab2d.js.map → p-faa30369.js.map} +1 -1
- package/dist/types/components/scheduler/nylas-booked-event-card/nylas-booked-event-card.d.ts +2 -0
- package/dist/types/components/scheduler/nylas-booking-form/nylas-booking-form.d.ts +7 -0
- package/dist/types/components/scheduler/nylas-cancel-booking-form/nylas-cancel-booking-form.d.ts +3 -0
- package/dist/types/components/scheduler/nylas-cancelled-event-card/nylas-cancelled-event-card.d.ts +3 -1
- package/dist/types/components/scheduler/nylas-confirmed-event-card/nylas-confirmed-event-card.d.ts +3 -1
- package/dist/types/components/scheduler/nylas-date-picker/nylas-date-picker.d.ts +2 -1
- package/dist/types/components/scheduler/nylas-organizer-confirmation-card/nylas-organizer-confirmation-card.d.ts +2 -0
- package/dist/types/components/scheduler/nylas-scheduling/nylas-scheduling.d.ts +6 -0
- package/dist/types/components/scheduler/nylas-selected-event-card/nylas-selected-event-card.d.ts +3 -1
- package/dist/types/components/scheduler/nylas-timeslot-picker/nylas-timeslot-picker.d.ts +2 -1
- package/dist/types/components/scheduler-editor/nylas-additional-participants/nylas-additional-participants.d.ts +2 -0
- package/dist/types/components/scheduler-editor/nylas-booking-confirmation-redirect/nylas-booking-confirmation-redirect.d.ts +2 -0
- package/dist/types/components/scheduler-editor/nylas-custom-event-slug/nylas-custom-event-slug.d.ts +2 -0
- package/dist/types/components.d.ts +46 -6
- package/package.json +3 -5
- package/dist/cjs/calendar-check-icon_2.cjs.entry.js.map +0 -1
- package/dist/cjs/utils-dd3b6f4c.js.map +0 -1
- package/dist/esm/calendar-check-icon_2.entry.js.map +0 -1
- package/dist/esm/utils-b7f9cbcc.js.map +0 -1
- package/dist/nylas-web-elements/p-2b52b854.entry.js +0 -2
- package/dist/nylas-web-elements/p-2b52b854.entry.js.map +0 -1
- package/dist/nylas-web-elements/p-59e4ab2d.js +0 -14
- package/dist/nylas-web-elements/p-8a3965ba.entry.js +0 -2
- package/dist/nylas-web-elements/p-8a3965ba.entry.js.map +0 -1
- package/dist/nylas-web-elements/p-97128be4.entry.js +0 -8
- package/dist/nylas-web-elements/p-97128be4.entry.js.map +0 -1
- package/dist/nylas-web-elements/p-d69f9d47.entry.js +0 -2
- package/dist/nylas-web-elements/p-d69f9d47.entry.js.map +0 -1
- package/dist/nylas-web-elements/p-dcc8ca35.entry.js +0 -2
- package/dist/nylas-web-elements/p-dcc8ca35.entry.js.map +0 -1
- /package/dist/nylas-web-elements/{p-3ce8e281.js.map → p-094be30f.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-c12c18b2.entry.js.map → p-1dbaf879.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-35297f33.entry.js.map → p-3b56d656.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-8e7882a1.js.map → p-3c8b7ba1.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-3204882f.entry.js.map → p-3f5e1e6b.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-5aae729f.js.map → p-4c1fafb4.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-9e11eb2c.js.map → p-6d8e2c6b.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-3362cf82.entry.js.map → p-8f82f281.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-b40f7a77.entry.js.map → p-a42f41f7.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-8340d845.entry.js.map → p-aad611b4.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-6e56eb3f.js.map → p-ab88518b.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-5cf6301e.entry.js.map → p-b3500bf1.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-4d8f9740.entry.js.map → p-b6d863e0.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-50c255fa.entry.js.map → p-b8cf836f.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-996c827d.entry.js.map → p-bf37be06.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-308e7adb.entry.js.map → p-f42e87c6.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-dea32251.js.map → p-f4825eb1.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"nylas-booking-form2.js","mappings":"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","names":["i18next"],"sources":["src/components/scheduler/nylas-booking-form/nylas-booking-form.scss?tag=nylas-booking-form&encapsulation=shadow","src/components/scheduler/nylas-booking-form/nylas-booking-form.tsx"],"sourcesContent":["@import '../../../common/mixins/inputs.scss';\n@import '../../../common/styles/variables.scss';\n\n:host {\n display: block;\n height: 100%;\n @include default-css-variables;\n}\n\n.nylas-booking-form {\n width: 100%;\n padding: 1.5rem;\n box-sizing: border-box;\n height: 450px;\n overflow-y: auto;\n height: 100%;\n}\n\nform {\n height: 100%;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n align-items: center;\n}\n\n.cta {\n width: 100%;\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 0.5rem;\n\n @media #{$mobile} {\n grid-template-columns: 1fr;\n }\n\n align-items: flex-start;\n justify-content: space-between;\n gap: 0.5rem;\n padding: 14px;\n box-sizing: border-box;\n border-top: 1px solid var(--nylas-base-200);\n}\n\n.input-wrapper {\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 4px;\n margin-bottom: 1rem;\n\n input::placeholder {\n color: var(--nylas-base-300);\n }\n\n label,\n input {\n font-family: var(--nylas-font-family);\n font-size: 16px;\n }\n\n .help-text {\n margin: 0;\n color: var(--nylas-error);\n }\n}\n\n.button-wrapper {\n width: 100%;\n align-items: flex-start;\n height: max-content;\n position: relative;\n}\n\n.button-content {\n display: flex;\n gap: 4px;\n align-items: center;\n}\n\ninput[type='text'],\ninput[type='email'] {\n @include textfield;\n\n &.guest-email {\n color: var(--nylas-base-900);\n padding-right: 52px; // Infield button width\n }\n}\n\nlabel {\n @include input-label;\n}\n\nbutton-component.remove-guest {\n position: absolute;\n height: 51px;\n right: 0;\n\n &.error {\n button {\n border-color: var(--nylas-error);\n }\n }\n\n button {\n height: inherit;\n border-top-left-radius: initial;\n border-bottom-left-radius: initial;\n border: none !important;\n border-left: 1px solid var(--nylas-base-300) !important;\n\n &:hover,\n &:focus {\n outline: 1px solid var(--nylas-primary) !important;\n color: var(--nylas-primary);\n }\n }\n}\n\nbutton-component.back {\n button {\n --dot-color: var(--nylas-base-800);\n }\n}\n\n.guest-email-input {\n position: relative;\n display: flex;\n width: 100%;\n}\n\nmulti-select-dropdown {\n &::part(msd_dropdown-label) {\n margin-bottom: 4px;\n }\n\n &::part(msd_dropdown_error) {\n font-size: 16px;\n }\n\n &::part(msd_dropdown-button) {\n height: 52px;\n border-color: var(--nylas-base-300);\n }\n\n &::part(msd_dropdown-button--error) {\n border-width: 2px;\n border-color: var(--nylas-error);\n }\n}\n","import { Component, Element, Event, EventEmitter, Host, Listen, Prop, State, Watch, h } from '@stencil/core';\nimport { RegisterComponent } from '@/common/register-component';\nimport { NylasSchedulerConnector } from '@/connector/nylas-scheduler-connector';\nimport { ConfigSettings } from '@/stores/scheduler-store';\nimport type { NylasSchedulerBookingDataWithFlatFields, NylasSchedulerBookingData, NylasEvent } from '@/common/types';\nimport { NylasScheduling } from '../nylas-scheduling/nylas-scheduling';\nimport { debug, sanitize } from '@/utils/utils';\nimport { Notification, NylasSchedulerBookingParticipant, ThemeConfig, Timeslot } from '@nylas/core';\nimport sanitizeHtml from 'sanitize-html';\nimport i18next from '@/utils/i18n';\n\nconst emailRegex = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n\n/**\n * The `nylas-booking-form` component is a UI component that allows users to book an event.\n *\n * The booking form component.\n * @part nbf - The booking form host.\n * @part nbf__input-textfield - The input textfield.\n * @part nbf__button-ghost - The ghost button.\n * @part nbf__button-outline - The outline button.\n * @part nbf__button-primary - The primary button.\n * @part nbf__input-wrapper - The input wrapper.\n * @part nbf__checkbox-component - The checkbox component.\n * @part nbf__radio-button-group - The radio button group.\n * @part nbf__textarea-component - The textarea component.\n * @part nbf__dropdown - The dropdown component.\n * @part nbf__dropdown-button - The dropdown button.\n * @part nbf__dropdown-content - The dropdown content.\n *\n */\n@Component({\n tag: 'nylas-booking-form',\n styleUrl: 'nylas-booking-form.scss',\n shadow: true,\n})\nexport class NylasBookingForm {\n private formRef?: HTMLFormElement;\n /**\n * The host element\n */\n @Element() readonly host!: HTMLNylasBookingFormElement;\n\n /**\n * @standalone\n * The loading state.\n */\n @Prop() readonly isLoading?: boolean;\n\n /**\n * @standalone\n * The booking info.\n */\n @Prop() readonly bookingInfo?: NylasSchedulerBookingData;\n\n /**\n * @standalone\n * The booked event (Used to track if a booking is created in an eventOverride).\n */\n @Prop() readonly eventInfo?: NylasEvent;\n\n /**\n * @standalone\n * The config settings for the scheduler.\n */\n @Prop() readonly configSettings?: ConfigSettings;\n\n /**\n * @standalone\n * The theme configuration.\n */\n @Prop({ attribute: 'theme-config' }) readonly themeConfig?: any;\n\n /**\n * The selected time.\n */\n @Prop({ attribute: 'selected-timeslot' }) readonly selectedTimeslot?: Timeslot;\n\n /**\n * This event is fired when the name is changed.\n */\n @Event() nameChanged!: EventEmitter<string>;\n\n /**\n * This event is fired when the email is changed.\n */\n @Event() emailChanged!: EventEmitter<string>;\n\n /**\n * This event is fired when the cancel button is clicked.\n */\n @Event() backButtonClicked!: EventEmitter<boolean>;\n\n /**\n * This event is fired when the book button is clicked and the form validation is complete and successful.\n * This event is fired before the booking request is sent.\n */\n @Event() detailsConfirmed!: EventEmitter<NylasSchedulerBookingDataWithFlatFields>;\n\n /**\n * This event is fired when an error occurs in the booking form validation.\n */\n @Event() bookingFormError!: EventEmitter<Partial<Notification>>;\n\n /**\n * This event is fired immediately after the book button is clicked.\n * The booking form validation is not complete at this point.\n */\n @Event() bookingFormSubmitted!: EventEmitter<void>;\n\n /**\n * The name of the user.\n */\n @State() name: string = '';\n\n /**\n * The email address of the user.\n */\n @State() email: string = '';\n\n /**\n * The guests of the user.\n */\n @State() guestEmails: string[] = [];\n\n /**\n * Guest email input errors.\n */\n @State() guestEmailErrors: { [key: number]: string } = {};\n\n /**\n * State to check if name is valid.\n */\n @State() isNameValid: boolean = true;\n\n /**\n * State to check if email is valid.\n */\n @State() isEmailValid: boolean = true;\n\n @State() additionalFields?: Record<string, string> = {};\n\n /**\n * Error message state.\n */\n @State() validationError: { name: string; email: string } = { name: '', email: '' };\n\n @State() backButtonLoading: boolean = false;\n\n @State() firstRender: boolean = true;\n\n connectedCallback() {}\n\n disconnectedCallback() {}\n\n componentWillLoad() {\n debug('nylas-booking-form', 'componentWillLoad', this.bookingInfo);\n }\n\n componentDidLoad() {\n debug('nylas-booking-form', 'componentDidLoad', this.bookingInfo);\n // Set the name and email from the bookingInfo if it exists,\n // otherwise set it from the config settings.\n if (this.configSettings?.booking) {\n this.configSettingsChangedHandler(this.configSettings);\n } else if (this.bookingInfo) {\n this.bookingInfoChangedHandler(this.bookingInfo);\n }\n\n this.applyThemeConfig(this.themeConfig);\n }\n\n componentDidRender() {\n if (this.firstRender) {\n this.applyThemeConfig(this.themeConfig);\n }\n }\n\n @Watch('bookingInfo')\n bookingInfoChangedHandler(newValue: NylasSchedulerBookingData | undefined) {\n if (newValue && newValue.primaryParticipant) {\n this.name = newValue.primaryParticipant.name || this.name;\n this.email = newValue.primaryParticipant.email || this.email;\n }\n if (newValue?.guests && Array.isArray(newValue.guests)) {\n this.guestEmails = newValue.guests.map(guest => guest.email);\n }\n }\n\n @Watch('configSettings')\n configSettingsChangedHandler(newValue: ConfigSettings | undefined) {\n if (!this.bookingInfo?.primaryParticipant?.name && newValue && newValue.booking?.guest?.name) {\n this.name = newValue.booking.guest.name || this.name;\n }\n if (!this.bookingInfo?.primaryParticipant?.email && newValue && newValue.booking?.guest?.email) {\n this.email = newValue.booking.guest.email || this.email;\n }\n\n if (!this.bookingInfo?.guests && newValue?.booking?.additional_guests && Array.isArray(newValue.booking.additional_guests)) {\n this.guestEmails = newValue.booking.additional_guests.map(guest => guest.email);\n }\n }\n\n @Watch('themeConfig')\n themeConfigChanged(newThemeConfig: ThemeConfig) {\n this.applyThemeConfig(newThemeConfig);\n }\n\n iterateFormComponents() {\n // Select the form element\n const form = this.formRef;\n const customComponentsList = [\n 'input-component',\n 'button-component',\n 'select-dropdown',\n 'checkbox-component',\n 'radio-button-group',\n 'textarea-component',\n 'nylas-date-component',\n 'multi-select-dropdown',\n ];\n\n const customComponents: unknown[] = [];\n if (form) {\n // Recursive function to traverse all children\n const traverseElements = (element: HTMLElement) => {\n Array.from(element.children).forEach(child => {\n const tagName = child.tagName.toLowerCase();\n if (customComponentsList.includes(tagName)) {\n customComponents.push(child as HTMLElement);\n }\n // Recursively traverse child elements\n traverseElements(child as HTMLElement);\n });\n };\n\n // Start traversal from the form\n traverseElements(form);\n }\n return customComponents;\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 const customComponents = this.iterateFormComponents();\n customComponents.forEach(component => {\n (component as any).style.setProperty(`${key}`, value);\n (component as any).shadowRoot?.host.style.setProperty(`${key}`, value);\n });\n }\n }\n }\n\n /**\n * Change the name.\n * @param name The name to select.\n */\n changeName(name: string) {\n // Reset the validation error\n this.isNameValid = true;\n this.validationError.name = '';\n\n this.name = sanitize(name);\n this.nameChanged.emit(name);\n }\n\n /**\n * Change the email.\n * @param email The email to select.\n */\n changeEmail(email: string) {\n // Reset the validation error\n this.isEmailValid = true;\n this.validationError.email = '';\n\n this.email = sanitizeHtml(email);\n this.emailChanged.emit(email);\n }\n\n resetGuestEmailError(guestIndex: number) {\n const errors = { ...this.guestEmailErrors };\n delete errors[guestIndex];\n this.guestEmailErrors = { ...errors };\n }\n\n /**\n * Handle guest emails changed.\n */\n handleGuestChange = (guestIndex: number, email: string) => {\n // Reset the validation error\n this.resetGuestEmailError(guestIndex);\n const guests = [...this.guestEmails];\n guests[guestIndex] = sanitizeHtml(email);\n this.guestEmails = [...guests];\n };\n\n /**\n * Handle guest input blur.\n */\n handleGuestBlur = (guestIndex: number, email: string) => {\n this.resetGuestEmailError(guestIndex);\n\n if (email === '') {\n this.guestEmailErrors[guestIndex] = i18next.t('fieldRequired', { field: i18next.t('email') });\n return;\n }\n if (!emailRegex.test(email)) {\n this.guestEmailErrors[guestIndex] = i18next.t('invalidInputFormat', { field: i18next.t('email') });\n return;\n }\n this.handleGuestChange(guestIndex, email);\n };\n\n /**\n * Handle add guest button clicked.\n */\n addGuestButtonClickedHandler = e => {\n e.preventDefault();\n this.guestEmails = [...this.guestEmails, ''];\n };\n\n /**\n * Handle remove guest button clicked.\n */\n removeGuestButtonClickHandler = (e: Event, guestIndex: number) => {\n e.preventDefault();\n this.resetGuestEmailError(guestIndex);\n\n const guests = [...this.guestEmails];\n guests.splice(guestIndex, 1);\n this.guestEmails = [...guests];\n };\n\n /**\n * Handle back button clicked.\n */\n handleBackButtonClicked = e => {\n e.preventDefault();\n this.backButtonLoading = true;\n this.backButtonClicked.emit();\n };\n\n /**\n * Handle book button clicked.\n */\n bookButtonClickedHandler = async (e: Event) => {\n e.preventDefault();\n const formSubmittedEvent = this.bookingFormSubmitted.emit();\n if (formSubmittedEvent.defaultPrevented) {\n return;\n }\n\n debug('nylas-booking-form', 'bookButtonClickedHandler', this.bookingInfo);\n const name = this.name;\n const email = this.email;\n\n if (!name || name === '') {\n this.isNameValid = false;\n this.validationError.name = i18next.t('fieldRequired', { field: i18next.t('name') }) || 'Name is required';\n this.bookingFormError.emit({\n title: 'Booking form error',\n description: 'Name is required',\n });\n return;\n }\n if (!email || email === '') {\n this.isEmailValid = false;\n this.validationError.email = i18next.t('fieldRequired', { field: i18next.t('email') }) || 'Email is required';\n this.bookingFormError.emit({\n title: 'Booking form error',\n description: 'Email is required',\n });\n return;\n }\n if (!emailRegex.test(email)) {\n this.isEmailValid = false;\n this.validationError.email = i18next.t('invalidInputFormat', { field: i18next.t('email') });\n this.bookingFormError.emit({\n title: 'Booking form error',\n description: i18next.t('invalidInputFormat', { field: i18next.t('email') }) || 'Invalid email',\n });\n return;\n }\n\n let guests: NylasSchedulerBookingParticipant[] = [];\n if (this.guestEmails.length > 0) {\n let hasError = false;\n this.guestEmails.forEach((email: string, i: number) => {\n if (email === '') {\n hasError = true;\n this.guestEmailErrors = { ...this.guestEmailErrors, [i]: i18next.t('fieldRequired', { field: i18next.t('email') }) };\n } else if (!emailRegex.test(email)) {\n hasError = true;\n this.guestEmailErrors = { ...this.guestEmailErrors, [i]: i18next.t('invalidInputFormat', { field: i18next.t('email') }) };\n }\n });\n if (hasError) {\n this.bookingFormError.emit({\n title: 'Booking form error',\n description: i18next.t('invalidInputFormat', { field: i18next.t('guestEmail') }) || 'Invalid guest email',\n });\n return;\n }\n guests = this.guestEmails.map((email: string) => ({ name: email.trim(), email: email.trim() }));\n }\n\n const bookingInfoAdditionalFields = {};\n const configAdditionalFields = this.configSettings?.scheduler?.additional_fields || {};\n const configSettingsBookingAdditionalFields = this.configSettings?.booking?.additional_fields || {};\n if (this.bookingInfo?.additionalFields) {\n Object.entries(this.bookingInfo.additionalFields).forEach(([key, obj]) => {\n if (key in configAdditionalFields && typeof obj.value !== 'undefined') {\n bookingInfoAdditionalFields[key] = obj.value;\n }\n });\n }\n // If the additional field is not passed in the bookingInfo, set it to the default value if it exists\n Object.entries(configAdditionalFields).forEach(([key, obj]) => {\n if (!(key in bookingInfoAdditionalFields)) {\n const value = configSettingsBookingAdditionalFields[key] || obj.default || '';\n bookingInfoAdditionalFields[key] = value;\n }\n });\n\n this.detailsConfirmed.emit({\n primaryParticipant: {\n name: name,\n email: email,\n },\n guests: guests,\n additionalFields: { ...bookingInfoAdditionalFields, ...this.additionalFields },\n });\n };\n\n updateAdditionalFields = (name: string, value: string) => {\n if (this.additionalFields) {\n this.additionalFields[name] = value;\n }\n };\n\n @Listen('nylasFormInputChanged')\n nylasFormInputChangedHandler(event: CustomEvent<{ value: string; name: string; error: string; label: string; type?: string }>) {\n switch (event.detail.name) {\n case 'name':\n this.changeName(event.detail.value);\n break;\n case 'email':\n this.changeEmail(event.detail.value);\n break;\n default:\n if (event.detail.error) {\n this.bookingFormError.emit({\n title: 'Booking form error',\n description: event.detail.error,\n });\n return;\n }\n this.updateAdditionalFields(event.detail.name, event.detail.value);\n break;\n }\n }\n\n @Listen('nylasFormDropdownChanged')\n selectOptionChangedHandler(event: CustomEvent<{ value: string; name: string; label: string; error?: string }>) {\n if (event.detail.error) {\n this.bookingFormError.emit({\n title: 'Booking form error',\n description: event.detail.error,\n });\n return;\n }\n this.updateAdditionalFields(event.detail.name, event.detail.value);\n }\n\n @Listen('selectedOptionsChanged')\n selecedOptionsChangedHandler(event: CustomEvent<{ value: string; name: string; label: string; error?: string }>) {\n if (event.detail.error) {\n this.bookingFormError.emit({\n title: 'Booking form error',\n description: event.detail.error,\n });\n return;\n }\n const values = event.detail.value.toString();\n this.updateAdditionalFields(event.detail.name, values);\n }\n\n @Listen('nylasFormSwitchToggled')\n switchToggledHandler(event: CustomEvent<{ checked: boolean; name: string; label: string }>) {\n this.updateAdditionalFields(event.detail.name, event.detail.checked ? 'true' : 'false');\n }\n\n @Listen('nylasFormCheckboxToggled')\n checkboxToggledHandler(event: CustomEvent<{ checked: boolean; name: string; label: string }>) {\n this.updateAdditionalFields(event.detail.name, event.detail.checked ? 'true' : 'false');\n }\n\n @Listen('nylasFormRadioChanged')\n radioChangedHandler(event: CustomEvent<{ value: string; name: string; label: string; type: string }>) {\n this.updateAdditionalFields(event.detail.name, event.detail.value);\n }\n\n @Listen('nylasFormDropdownDefaultSelected')\n dropdownDefaultSelectedHandler(event: CustomEvent<{ value: string; name: string; label: string; error?: string }>) {\n this.updateAdditionalFields(event.detail.name, event.detail.value);\n }\n\n @RegisterComponent<NylasBookingForm, NylasSchedulerConnector, Exclude<NylasScheduling['stores'], undefined>>({\n name: 'nylas-booking-form',\n stateToProps: new Map([\n ['scheduler.isLoading', 'isLoading'],\n ['scheduler.bookingInfo', 'bookingInfo'],\n ['scheduler.eventInfo', 'eventInfo'],\n ['scheduler.configSettings', 'configSettings'],\n ['scheduler.themeConfig', 'themeConfig'],\n ['scheduler.selectedTimeslot', 'selectedTimeslot'],\n ]),\n eventToProps: {\n backButtonClicked: async (_event: CustomEvent<boolean>, nylasSchedulerConnector: NylasSchedulerConnector) => {\n nylasSchedulerConnector.scheduler.toggleAdditionalData(false);\n },\n nameChanged: async (event: CustomEvent<string>, nylasSchedulerConnector: NylasSchedulerConnector) => {\n nylasSchedulerConnector.scheduler.setParticipantName(event.detail);\n },\n emailChanged: async (event: CustomEvent<string>, nylasSchedulerConnector: NylasSchedulerConnector) => {\n nylasSchedulerConnector.scheduler.setParticipantEmail(event.detail);\n },\n detailsConfirmed: async (event: CustomEvent<NylasSchedulerBookingDataWithFlatFields>, _nylasSchedulerConnector: NylasSchedulerConnector) => {\n debug('nylas-booking-form', 'detailsConfirmed', event.detail);\n },\n bookingFormSubmitted: async (event: CustomEvent<void>, _nylasSchedulerConnector: NylasSchedulerConnector) => {\n debug('nylas-booking-form', 'bookingFormSubmitted', event.detail);\n },\n bookingFormError: async (event: CustomEvent<Partial<Notification>>, _nylasSchedulerConnector: NylasSchedulerConnector) => {\n debug('nylas-booking-form', 'bookingFormError', event.detail);\n },\n },\n fireRegisterEvent: true,\n })\n render() {\n const isGroupEvent = !!this.selectedTimeslot?.event_id && !!this.selectedTimeslot?.capacity;\n return (\n <Host>\n <form onSubmit={e => this.bookButtonClickedHandler(e)} ref={el => (this.formRef = el)} noValidate>\n <div class=\"nylas-booking-form\" part=\"nbf\">\n <div class=\"input-wrapper\" part=\"nbf__input-wrapper\">\n <input-component\n label={i18next.t('name')}\n name=\"name\"\n id=\"name\"\n defaultValue={this.bookingInfo?.primaryParticipant?.name || this.configSettings?.booking?.guest?.name || this.name}\n placeholder={i18next.t('namePlaceholder')}\n type=\"text\"\n readOnly={this.bookingInfo?.primaryParticipant?.nameReadOnly || false}\n required={true}\n requiredError={i18next.t('fieldRequired', { field: i18next.t('name') })}\n patternError={i18next.t('invalidInputFormat', { field: i18next.t('name') })}\n part=\"nbf__input-textfield\"\n />\n </div>\n <div class=\"input-wrapper\" part=\"nbf__input-wrapper\">\n <input-component\n label={i18next.t('email')}\n name=\"email\"\n id=\"email\"\n pattern={emailRegex}\n defaultValue={this.bookingInfo?.primaryParticipant?.email || this.configSettings?.booking?.guest?.email || this.email}\n placeholder={i18next.t('emailPlaceholder')}\n type=\"email\"\n readOnly={this.bookingInfo?.primaryParticipant?.emailReadOnly || false}\n required={true}\n requiredError={i18next.t('fieldRequired', { field: i18next.t('email') })}\n patternError={i18next.t('invalidInputFormat', { field: i18next.t('email') })}\n part=\"nbf__input-textfield\"\n />\n </div>\n {this.configSettings?.scheduler?.hide_additional_guests !== true && (\n <div class=\"input-wrapper\" part=\"nbf__input-wrapper\">\n {this.guestEmails.map((email, index) => (\n <div class=\"input-wrapper button-wrapper\">\n <label\n class={{\n error: !!this.guestEmailErrors[index],\n }}\n >\n {i18next.t('guestEmail')}\n </label>\n <div class=\"guest-email-input\">\n <input\n type=\"email\"\n id={`guest-email-${index}`}\n maxLength={100}\n class={{\n 'guest-email': true,\n 'error': !!this.guestEmailErrors[index],\n }}\n placeholder={i18next.t('guestEmailPlaceholder')}\n value={email}\n data-index={index}\n part=\"nbf__input-textfield\"\n onBlur={(e: Event) => this.handleGuestBlur(index, (e.target as HTMLInputElement)?.value)}\n onInput={(e: Event) => this.handleGuestChange(index, (e.target as HTMLInputElement)?.value)}\n ></input>\n <button-component\n variant=\"basic\"\n tooltip=\"Remove guest\"\n onClick={(e: Event) => this.removeGuestButtonClickHandler(e, index)}\n class={{\n 'remove-guest': true,\n 'error': !!this.guestEmailErrors[index],\n }}\n >\n <close-icon />\n </button-component>\n </div>\n <p class=\"help-text\">{this.guestEmailErrors[index]}</p>\n </div>\n ))}\n {!isGroupEvent && (\n <button-component class=\"add-guest\" variant=\"invisible\" part=\"nbf__button-ghost\" onClick={e => this.addGuestButtonClickedHandler(e)}>\n <div class=\"button-content\">\n <add-circle-icon slot=\"icon\"></add-circle-icon>\n {this.guestEmails.length > 0 ? `${i18next.t('addAnotherGuest')}` : `${i18next.t('addGuest')}`}\n </div>\n </button-component>\n )}\n </div>\n )}\n {Object.entries(\n (this.configSettings?.scheduler?.additional_fields || {}) as Record<\n string,\n {\n required: boolean;\n type: 'email' | 'text' | 'phone_number' | 'dropdown' | 'checkbox' | 'radio_button' | 'multi_line_text' | 'metadata' | 'date' | 'multi_select';\n order: number;\n options?: string[];\n label: string;\n default?: string;\n }\n >,\n )\n ?.sort((a, b) => a[1].order - b[1].order)\n .map(x => {\n const field = x[1];\n const label = field.label;\n const key = x[0];\n const defaultValue = this.bookingInfo?.additionalFields?.[key]?.value || this.configSettings?.booking?.additional_fields?.[key] || field.default || '';\n const fieldReadOnly = this.bookingInfo?.additionalFields?.[key]?.readOnly || false;\n\n switch (field.type) {\n case 'dropdown':\n return (\n <div class=\"input-wrapper\" part=\"nbf__input-wrapper\">\n <select-dropdown\n label={label}\n name={key}\n id={key}\n readOnly={fieldReadOnly}\n withSearch={false}\n emptyValue={i18next.t('nylasBookingCalendarPicker.selectOptionLabel')}\n defaultSelectedOption={defaultValue ? { value: defaultValue, label: defaultValue } : undefined}\n options={[\n { value: '', label: i18next.t('nylasBookingCalendarPicker.selectOptionLabel') },\n ...(field.options?.map(option => ({ value: option, label: option })) || []),\n ]}\n required={field.required}\n exportparts=\"sd_dropdown: nbf__dropdown, sd_dropdown-button: nbf__dropdown-button, sd_dropdown-content: nbf__dropdown-content\"\n />\n </div>\n );\n case 'checkbox':\n return (\n <div class=\"input-wrapper\" part=\"nbf__input-wrapper\">\n <checkbox-component\n readOnly={fieldReadOnly}\n label={label}\n name={key}\n id={key}\n checked={defaultValue === 'true'}\n required={field.required}\n part=\"nbf__checkbox-component\"\n />\n </div>\n );\n case 'radio_button':\n return (\n <div class=\"input-wrapper\" part=\"nbf__input-wrapper\">\n <radio-button-group\n label={label}\n name={key}\n id={key}\n readOnly={fieldReadOnly}\n defaultSelectedValue={defaultValue && field.options?.includes(defaultValue) ? defaultValue : field.options?.[0] || ''}\n options={field.options?.map(option => ({ value: option, label: option }))}\n required={field.required}\n part=\"nbf__radio-button-group\"\n />\n </div>\n );\n case 'multi_line_text':\n return (\n <div class=\"input-wrapper\" part=\"nbf__input-wrapper\">\n <textarea-component\n readOnly={fieldReadOnly}\n label={label}\n defaultValue={defaultValue}\n name={key}\n id={key}\n required={field.required}\n part=\"nbf__textarea-component\"\n />\n </div>\n );\n case 'date':\n return (\n <div class=\"input-wrapper\" part=\"nbf__input-wrapper\">\n <nylas-date-component\n readOnly={fieldReadOnly}\n label={label}\n defaultValue={defaultValue}\n name={key}\n id={key}\n required={field.required}\n part=\"nbf__date-component\"\n />\n </div>\n );\n case 'multi_select': {\n const defaultValues = defaultValue?.split(',').map(item => item.trim()) || [];\n return (\n <div>\n <multi-select-dropdown\n label={label}\n name={key}\n id={key}\n readOnly={fieldReadOnly}\n selectAtLeastOneOptionLabel={i18next.t('selectOneOrMoreOptions')}\n multipleOptionsSelectedLabel={i18next.t('multipleOptionsSelected')}\n options={field.options?.map(option => ({ value: option, label: option, selected: defaultValues.includes(option) }))}\n required={field.required}\n exportparts=\"msd_dropdown: nbf__ms_dropdown, msd_dropdown-label: nbf__ms_dropdown-label, msd_dropdown-button: nbf__ms_dropdown-button, msd_dropdown-content: nbf__ms_dropdown-content, msd_dropdown_error: nbf__ms_dropdown_error, msd_dropdown-button--error: nbf__ms_dropdown-button--error\"\n ></multi-select-dropdown>\n </div>\n );\n }\n case 'metadata':\n return null;\n default:\n return (\n <div class=\"input-wrapper\" part=\"nbf__input-wrapper\">\n <input-component\n label={label}\n name={key}\n id={key}\n type={field.type}\n readOnly={fieldReadOnly}\n defaultValue={defaultValue || ''}\n requiredError={i18next.t('fieldRequired', { field: label })}\n required={field.required}\n part=\"nbf__input-textfield\"\n />\n </div>\n );\n }\n })}\n {/* <slot name=\"custom-booking-form\"></slot> */}\n </div>\n <div class=\"cta\">\n <button-component variant={'basic'} class=\"back\" part=\"nbf__button-outline\" isLoading={this.backButtonLoading && this.isLoading} onClick={this.handleBackButtonClicked}>\n <slot name=\"booking-form-back-label\">{`${i18next.t('backButton')}`}</slot>\n </button-component>\n <button-component variant={'primary'} isLoading={!this.backButtonLoading && this.isLoading} disabled={this.isLoading} part=\"nbf__button-primary\" type=\"submit\">\n <slot name=\"booking-form-book-label\">{`${i18next.t('bookNowButton')}`}</slot>\n </button-component>\n </div>\n </form>\n </Host>\n );\n }\n}\n"],"version":3}
|
|
1
|
+
{"file":"nylas-booking-form2.js","mappings":"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","names":["i18next"],"sources":["src/components/scheduler/nylas-booking-form/nylas-booking-form.scss?tag=nylas-booking-form&encapsulation=shadow","src/components/scheduler/nylas-booking-form/nylas-booking-form.tsx"],"sourcesContent":["@import '../../../common/mixins/inputs.scss';\n@import '../../../common/styles/variables.scss';\n\n:host {\n display: block;\n height: 100%;\n @include default-css-variables;\n}\n\n.nylas-booking-form {\n width: 100%;\n padding: 1.5rem;\n box-sizing: border-box;\n height: 450px;\n overflow-y: auto;\n height: 100%;\n}\n\nform {\n height: 100%;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n align-items: center;\n}\n\n.cta {\n width: 100%;\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 0.5rem;\n\n @media #{$mobile} {\n grid-template-columns: 1fr;\n }\n\n align-items: flex-start;\n justify-content: space-between;\n gap: 0.5rem;\n padding: 14px;\n box-sizing: border-box;\n border-top: 1px solid var(--nylas-base-200);\n}\n\n.input-wrapper {\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 4px;\n margin-bottom: 1rem;\n\n input::placeholder {\n color: var(--nylas-base-300);\n }\n\n label,\n input {\n font-family: var(--nylas-font-family);\n font-size: 16px;\n }\n\n .help-text {\n margin: 0;\n color: var(--nylas-error);\n }\n}\n\n.button-wrapper {\n width: 100%;\n align-items: flex-start;\n height: max-content;\n position: relative;\n}\n\n.button-content {\n display: flex;\n gap: 4px;\n align-items: center;\n}\n\ninput[type='text'],\ninput[type='email'] {\n @include textfield;\n\n &.guest-email {\n color: var(--nylas-base-900);\n padding-right: 52px; // Infield button width\n }\n}\n\nlabel {\n @include input-label;\n}\n\nbutton-component.remove-guest {\n position: absolute;\n height: 51px;\n right: 0;\n\n &.error {\n button {\n border-color: var(--nylas-error);\n }\n }\n\n button {\n height: inherit;\n border-top-left-radius: initial;\n border-bottom-left-radius: initial;\n border: none !important;\n border-left: 1px solid var(--nylas-base-300) !important;\n\n &:hover,\n &:focus {\n outline: 1px solid var(--nylas-primary) !important;\n color: var(--nylas-primary);\n }\n }\n}\n\nbutton-component.back {\n button {\n --dot-color: var(--nylas-base-800);\n }\n}\n\n.guest-email-input {\n position: relative;\n display: flex;\n width: 100%;\n}\n\nmulti-select-dropdown {\n &::part(msd_dropdown-label) {\n margin-bottom: 4px;\n }\n\n &::part(msd_dropdown_error) {\n font-size: 16px;\n }\n\n &::part(msd_dropdown-button) {\n height: 52px;\n border-color: var(--nylas-base-300);\n }\n\n &::part(msd_dropdown-button--error) {\n border-width: 2px;\n border-color: var(--nylas-error);\n }\n}\n","import { Component, Element, Event, EventEmitter, Host, Listen, Prop, State, Watch, h } from '@stencil/core';\nimport { RegisterComponent } from '@/common/register-component';\nimport { NylasSchedulerConnector } from '@/connector/nylas-scheduler-connector';\nimport { ConfigSettings } from '@/stores/scheduler-store';\nimport type { NylasSchedulerBookingDataWithFlatFields, NylasSchedulerBookingData, NylasEvent } from '@/common/types';\nimport { NylasScheduling } from '../nylas-scheduling/nylas-scheduling';\nimport { debug, sanitize } from '@/utils/utils';\nimport { Notification, NylasSchedulerBookingParticipant, ThemeConfig, Timeslot } from '@nylas/core';\nimport sanitizeHtml from 'sanitize-html';\nimport i18next from '@/utils/i18n';\nimport { LANGUAGE_CODE } from '@/common/constants';\n\nconst emailRegex = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n\n/**\n * The `nylas-booking-form` component is a UI component that allows users to book an event.\n *\n * The booking form component.\n * @part nbf - The booking form host.\n * @part nbf__input-textfield - The input textfield.\n * @part nbf__button-ghost - The ghost button.\n * @part nbf__button-outline - The outline button.\n * @part nbf__button-primary - The primary button.\n * @part nbf__input-wrapper - The input wrapper.\n * @part nbf__checkbox-component - The checkbox component.\n * @part nbf__radio-button-group - The radio button group.\n * @part nbf__textarea-component - The textarea component.\n * @part nbf__dropdown - The dropdown component.\n * @part nbf__dropdown-button - The dropdown button.\n * @part nbf__dropdown-content - The dropdown content.\n *\n */\n@Component({\n tag: 'nylas-booking-form',\n styleUrl: 'nylas-booking-form.scss',\n shadow: true,\n})\nexport class NylasBookingForm {\n private formRef?: HTMLFormElement;\n /**\n * The host element\n */\n @Element() readonly host!: HTMLNylasBookingFormElement;\n\n /**\n * @standalone\n * The loading state.\n */\n @Prop() readonly isLoading?: boolean;\n\n /**\n * @standalone\n * The booking info.\n */\n @Prop() readonly bookingInfo?: NylasSchedulerBookingData;\n\n /**\n * @standalone\n * The booked event (Used to track if a booking is created in an eventOverride).\n */\n @Prop() readonly eventInfo?: NylasEvent;\n\n /**\n * @standalone\n * The config settings for the scheduler.\n */\n @Prop() readonly configSettings?: ConfigSettings;\n\n /**\n * @standalone\n * The theme configuration.\n */\n @Prop({ attribute: 'theme-config' }) readonly themeConfig?: any;\n\n /**\n * The selected time.\n */\n @Prop({ attribute: 'selected-timeslot' }) readonly selectedTimeslot?: Timeslot;\n\n /**\n * The selected language.\n */\n @Prop({ attribute: 'selected-language' }) readonly selectedLanguage?: LANGUAGE_CODE;\n\n /**\n * This event is fired when the name is changed.\n */\n @Event() nameChanged!: EventEmitter<string>;\n\n /**\n * This event is fired when the email is changed.\n */\n @Event() emailChanged!: EventEmitter<string>;\n\n /**\n * This event is fired when the cancel button is clicked.\n */\n @Event() backButtonClicked!: EventEmitter<boolean>;\n\n /**\n * This event is fired when the book button is clicked and the form validation is complete and successful.\n * This event is fired before the booking request is sent.\n */\n @Event() detailsConfirmed!: EventEmitter<NylasSchedulerBookingDataWithFlatFields>;\n\n /**\n * This event is fired when an error occurs in the booking form validation.\n */\n @Event() bookingFormError!: EventEmitter<Partial<Notification>>;\n\n /**\n * This event is fired immediately after the book button is clicked.\n * The booking form validation is not complete at this point.\n */\n @Event() bookingFormSubmitted!: EventEmitter<void>;\n\n /**\n * The name of the user.\n */\n @State() name: string = '';\n\n /**\n * The email address of the user.\n */\n @State() email: string = '';\n\n /**\n * The guests of the user.\n */\n @State() guestEmails: string[] = [];\n\n /**\n * Guest email input errors.\n */\n @State() guestEmailErrors: { [key: number]: string } = {};\n\n /**\n * State to check if name is valid.\n */\n @State() isNameValid: boolean = true;\n\n /**\n * State to check if email is valid.\n */\n @State() isEmailValid: boolean = true;\n\n @State() additionalFields?: Record<string, string> = {};\n\n @State() namePatternError: string = '';\n\n @State() nameRequiredError: string = '';\n\n @State() emailPatternError: string = '';\n\n @State() emailRequiredError: string = '';\n\n /**\n * Error message state.\n */\n @State() validationError: { name: string; email: string } = { name: '', email: '' };\n\n @State() backButtonLoading: boolean = false;\n\n @State() firstRender: boolean = true;\n\n connectedCallback() {}\n\n disconnectedCallback() {}\n\n componentWillLoad() {\n debug('nylas-booking-form', 'componentWillLoad', this.bookingInfo);\n }\n\n componentDidLoad() {\n debug('nylas-booking-form', 'componentDidLoad', this.bookingInfo);\n // Set the name and email from the bookingInfo if it exists,\n // otherwise set it from the config settings.\n if (this.configSettings?.booking) {\n this.configSettingsChangedHandler(this.configSettings);\n } else if (this.bookingInfo) {\n this.bookingInfoChangedHandler(this.bookingInfo);\n }\n\n this.applyThemeConfig(this.themeConfig);\n }\n\n componentDidRender() {\n if (this.firstRender) {\n this.applyThemeConfig(this.themeConfig);\n }\n }\n\n @Watch('bookingInfo')\n bookingInfoChangedHandler(newValue: NylasSchedulerBookingData | undefined) {\n if (newValue && newValue.primaryParticipant) {\n this.name = newValue.primaryParticipant.name || this.name;\n this.email = newValue.primaryParticipant.email || this.email;\n }\n if (newValue?.guests && Array.isArray(newValue.guests)) {\n this.guestEmails = newValue.guests.map(guest => guest.email);\n }\n }\n\n @Watch('configSettings')\n configSettingsChangedHandler(newValue: ConfigSettings | undefined) {\n if (!this.bookingInfo?.primaryParticipant?.name && newValue && newValue.booking?.guest?.name) {\n this.name = newValue.booking.guest.name || this.name;\n }\n if (!this.bookingInfo?.primaryParticipant?.email && newValue && newValue.booking?.guest?.email) {\n this.email = newValue.booking.guest.email || this.email;\n }\n\n if (!this.bookingInfo?.guests && newValue?.booking?.additional_guests && Array.isArray(newValue.booking.additional_guests)) {\n this.guestEmails = newValue.booking.additional_guests.map(guest => guest.email);\n }\n }\n\n @Watch('themeConfig')\n themeConfigChanged(newThemeConfig: ThemeConfig) {\n this.applyThemeConfig(newThemeConfig);\n }\n\n @Watch('selectedLanguage')\n selectedLanguageChangedHandler(newVal: LANGUAGE_CODE, oldVal: LANGUAGE_CODE) {\n if (newVal === oldVal) return;\n i18next.changeLanguage(newVal);\n this.namePatternError = i18next.t('invalidInputFormat', { field: i18next.t('name') });\n this.nameRequiredError = i18next.t('fieldRequired', { field: i18next.t('name') });\n this.emailPatternError = i18next.t('invalidInputFormat', { field: i18next.t('email') });\n this.emailRequiredError = i18next.t('fieldRequired', { field: i18next.t('email') });\n }\n\n iterateFormComponents() {\n // Select the form element\n const form = this.formRef;\n const customComponentsList = [\n 'input-component',\n 'button-component',\n 'select-dropdown',\n 'checkbox-component',\n 'radio-button-group',\n 'textarea-component',\n 'nylas-date-component',\n 'multi-select-dropdown',\n ];\n\n const customComponents: unknown[] = [];\n if (form) {\n // Recursive function to traverse all children\n const traverseElements = (element: HTMLElement) => {\n Array.from(element.children).forEach(child => {\n const tagName = child.tagName.toLowerCase();\n if (customComponentsList.includes(tagName)) {\n customComponents.push(child as HTMLElement);\n }\n // Recursively traverse child elements\n traverseElements(child as HTMLElement);\n });\n };\n\n // Start traversal from the form\n traverseElements(form);\n }\n return customComponents;\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 const customComponents = this.iterateFormComponents();\n customComponents.forEach(component => {\n (component as any).style.setProperty(`${key}`, value);\n (component as any).shadowRoot?.host.style.setProperty(`${key}`, value);\n });\n }\n }\n }\n\n /**\n * Change the name.\n * @param name The name to select.\n */\n changeName(name: string) {\n // Reset the validation error\n this.isNameValid = true;\n this.validationError.name = '';\n\n this.name = sanitize(name);\n this.nameChanged.emit(name);\n }\n\n /**\n * Change the email.\n * @param email The email to select.\n */\n changeEmail(email: string) {\n // Reset the validation error\n this.isEmailValid = true;\n this.validationError.email = '';\n\n this.email = sanitizeHtml(email);\n this.emailChanged.emit(email);\n }\n\n resetGuestEmailError(guestIndex: number) {\n const errors = { ...this.guestEmailErrors };\n delete errors[guestIndex];\n this.guestEmailErrors = { ...errors };\n }\n\n /**\n * Handle guest emails changed.\n */\n handleGuestChange = (guestIndex: number, email: string) => {\n // Reset the validation error\n this.resetGuestEmailError(guestIndex);\n const guests = [...this.guestEmails];\n guests[guestIndex] = sanitizeHtml(email);\n this.guestEmails = [...guests];\n };\n\n /**\n * Handle guest input blur.\n */\n handleGuestBlur = (guestIndex: number, email: string) => {\n this.resetGuestEmailError(guestIndex);\n\n if (email === '') {\n this.guestEmailErrors[guestIndex] = i18next.t('fieldRequired', { field: i18next.t('email') });\n return;\n }\n if (!emailRegex.test(email)) {\n this.guestEmailErrors[guestIndex] = i18next.t('invalidInputFormat', { field: i18next.t('email') });\n return;\n }\n this.handleGuestChange(guestIndex, email);\n };\n\n /**\n * Handle add guest button clicked.\n */\n addGuestButtonClickedHandler = e => {\n e.preventDefault();\n this.guestEmails = [...this.guestEmails, ''];\n };\n\n /**\n * Handle remove guest button clicked.\n */\n removeGuestButtonClickHandler = (e: Event, guestIndex: number) => {\n e.preventDefault();\n this.resetGuestEmailError(guestIndex);\n\n const guests = [...this.guestEmails];\n guests.splice(guestIndex, 1);\n this.guestEmails = [...guests];\n };\n\n /**\n * Handle back button clicked.\n */\n handleBackButtonClicked = e => {\n e.preventDefault();\n this.backButtonLoading = true;\n this.backButtonClicked.emit();\n };\n\n /**\n * Handle book button clicked.\n */\n bookButtonClickedHandler = async (e: Event) => {\n e.preventDefault();\n const formSubmittedEvent = this.bookingFormSubmitted.emit();\n if (formSubmittedEvent.defaultPrevented) {\n return;\n }\n\n debug('nylas-booking-form', 'bookButtonClickedHandler', this.bookingInfo);\n const name = this.name;\n const email = this.email;\n\n if (!name || name === '') {\n this.isNameValid = false;\n this.validationError.name = i18next.t('fieldRequired', { field: i18next.t('name') }) || 'Name is required';\n this.bookingFormError.emit({\n title: 'Booking form error',\n description: 'Name is required',\n });\n return;\n }\n if (!email || email === '') {\n this.isEmailValid = false;\n this.validationError.email = i18next.t('fieldRequired', { field: i18next.t('email') }) || 'Email is required';\n this.bookingFormError.emit({\n title: 'Booking form error',\n description: 'Email is required',\n });\n return;\n }\n if (!emailRegex.test(email)) {\n this.isEmailValid = false;\n this.validationError.email = i18next.t('invalidInputFormat', { field: i18next.t('email') });\n this.bookingFormError.emit({\n title: 'Booking form error',\n description: i18next.t('invalidInputFormat', { field: i18next.t('email') }) || 'Invalid email',\n });\n return;\n }\n\n let guests: NylasSchedulerBookingParticipant[] = [];\n if (this.guestEmails.length > 0) {\n let hasError = false;\n this.guestEmails.forEach((email: string, i: number) => {\n if (email === '') {\n hasError = true;\n this.guestEmailErrors = { ...this.guestEmailErrors, [i]: i18next.t('fieldRequired', { field: i18next.t('email') }) };\n } else if (!emailRegex.test(email)) {\n hasError = true;\n this.guestEmailErrors = { ...this.guestEmailErrors, [i]: i18next.t('invalidInputFormat', { field: i18next.t('email') }) };\n }\n });\n if (hasError) {\n this.bookingFormError.emit({\n title: 'Booking form error',\n description: i18next.t('invalidInputFormat', { field: i18next.t('guestEmail') }) || 'Invalid guest email',\n });\n return;\n }\n guests = this.guestEmails.map((email: string) => ({ name: email.trim(), email: email.trim() }));\n }\n\n const bookingInfoAdditionalFields = {};\n const configAdditionalFields = this.configSettings?.scheduler?.additional_fields || {};\n const configSettingsBookingAdditionalFields = this.configSettings?.booking?.additional_fields || {};\n if (this.bookingInfo?.additionalFields) {\n Object.entries(this.bookingInfo.additionalFields).forEach(([key, obj]) => {\n if (key in configAdditionalFields && typeof obj.value !== 'undefined') {\n bookingInfoAdditionalFields[key] = obj.value;\n }\n });\n }\n // If the additional field is not passed in the bookingInfo, set it to the default value if it exists\n Object.entries(configAdditionalFields).forEach(([key, obj]) => {\n if (!(key in bookingInfoAdditionalFields)) {\n const value = configSettingsBookingAdditionalFields[key] || obj.default || '';\n bookingInfoAdditionalFields[key] = value;\n }\n });\n\n this.detailsConfirmed.emit({\n primaryParticipant: {\n name: name,\n email: email,\n },\n guests: guests,\n additionalFields: { ...bookingInfoAdditionalFields, ...this.additionalFields },\n });\n };\n\n updateAdditionalFields = (name: string, value: string) => {\n if (this.additionalFields) {\n this.additionalFields[name] = value;\n }\n };\n\n @Listen('nylasFormInputChanged')\n nylasFormInputChangedHandler(event: CustomEvent<{ value: string; name: string; error: string; label: string; type?: string }>) {\n switch (event.detail.name) {\n case 'name':\n this.changeName(event.detail.value);\n break;\n case 'email':\n this.changeEmail(event.detail.value);\n break;\n default:\n if (event.detail.error) {\n this.bookingFormError.emit({\n title: 'Booking form error',\n description: event.detail.error,\n });\n return;\n }\n this.updateAdditionalFields(event.detail.name, event.detail.value);\n break;\n }\n }\n\n @Listen('nylasFormDropdownChanged')\n selectOptionChangedHandler(event: CustomEvent<{ value: string; name: string; label: string; error?: string }>) {\n if (event.detail.error) {\n this.bookingFormError.emit({\n title: 'Booking form error',\n description: event.detail.error,\n });\n return;\n }\n this.updateAdditionalFields(event.detail.name, event.detail.value);\n }\n\n @Listen('selectedOptionsChanged')\n selecedOptionsChangedHandler(event: CustomEvent<{ value: string; name: string; label: string; error?: string }>) {\n if (event.detail.error) {\n this.bookingFormError.emit({\n title: 'Booking form error',\n description: event.detail.error,\n });\n return;\n }\n const values = event.detail.value.toString();\n this.updateAdditionalFields(event.detail.name, values);\n }\n\n @Listen('nylasFormSwitchToggled')\n switchToggledHandler(event: CustomEvent<{ checked: boolean; name: string; label: string }>) {\n this.updateAdditionalFields(event.detail.name, event.detail.checked ? 'true' : 'false');\n }\n\n @Listen('nylasFormCheckboxToggled')\n checkboxToggledHandler(event: CustomEvent<{ checked: boolean; name: string; label: string }>) {\n this.updateAdditionalFields(event.detail.name, event.detail.checked ? 'true' : 'false');\n }\n\n @Listen('nylasFormRadioChanged')\n radioChangedHandler(event: CustomEvent<{ value: string; name: string; label: string; type: string }>) {\n this.updateAdditionalFields(event.detail.name, event.detail.value);\n }\n\n @Listen('nylasFormDropdownDefaultSelected')\n dropdownDefaultSelectedHandler(event: CustomEvent<{ value: string; name: string; label: string; error?: string }>) {\n this.updateAdditionalFields(event.detail.name, event.detail.value);\n }\n\n @RegisterComponent<NylasBookingForm, NylasSchedulerConnector, Exclude<NylasScheduling['stores'], undefined>>({\n name: 'nylas-booking-form',\n stateToProps: new Map([\n ['scheduler.isLoading', 'isLoading'],\n ['scheduler.bookingInfo', 'bookingInfo'],\n ['scheduler.eventInfo', 'eventInfo'],\n ['scheduler.configSettings', 'configSettings'],\n ['scheduler.themeConfig', 'themeConfig'],\n ['scheduler.selectedTimeslot', 'selectedTimeslot'],\n ['scheduler.selectedLanguage', 'selectedLanguage'],\n ]),\n eventToProps: {\n backButtonClicked: async (_event: CustomEvent<boolean>, nylasSchedulerConnector: NylasSchedulerConnector) => {\n nylasSchedulerConnector.scheduler.toggleAdditionalData(false);\n },\n nameChanged: async (event: CustomEvent<string>, nylasSchedulerConnector: NylasSchedulerConnector) => {\n nylasSchedulerConnector.scheduler.setParticipantName(event.detail);\n },\n emailChanged: async (event: CustomEvent<string>, nylasSchedulerConnector: NylasSchedulerConnector) => {\n nylasSchedulerConnector.scheduler.setParticipantEmail(event.detail);\n },\n detailsConfirmed: async (event: CustomEvent<NylasSchedulerBookingDataWithFlatFields>, _nylasSchedulerConnector: NylasSchedulerConnector) => {\n debug('nylas-booking-form', 'detailsConfirmed', event.detail);\n },\n bookingFormSubmitted: async (event: CustomEvent<void>, _nylasSchedulerConnector: NylasSchedulerConnector) => {\n debug('nylas-booking-form', 'bookingFormSubmitted', event.detail);\n },\n bookingFormError: async (event: CustomEvent<Partial<Notification>>, _nylasSchedulerConnector: NylasSchedulerConnector) => {\n debug('nylas-booking-form', 'bookingFormError', event.detail);\n },\n },\n fireRegisterEvent: true,\n })\n render() {\n const isGroupEvent = !!this.selectedTimeslot?.event_id && !!this.selectedTimeslot?.capacity;\n return (\n <Host>\n <form onSubmit={e => this.bookButtonClickedHandler(e)} ref={el => (this.formRef = el)} noValidate>\n <div class=\"nylas-booking-form\" part=\"nbf\">\n <div class=\"input-wrapper\" part=\"nbf__input-wrapper\">\n <input-component\n label={i18next.t('name')}\n name=\"name\"\n id=\"name\"\n defaultValue={this.bookingInfo?.primaryParticipant?.name || this.configSettings?.booking?.guest?.name || this.name}\n placeholder={i18next.t('namePlaceholder')}\n type=\"text\"\n readOnly={this.bookingInfo?.primaryParticipant?.nameReadOnly || false}\n required={true}\n requiredError={this.nameRequiredError}\n patternError={this.namePatternError}\n part=\"nbf__input-textfield\"\n />\n </div>\n <div class=\"input-wrapper\" part=\"nbf__input-wrapper\">\n <input-component\n label={i18next.t('email')}\n name=\"email\"\n id=\"email\"\n pattern={emailRegex}\n defaultValue={this.bookingInfo?.primaryParticipant?.email || this.configSettings?.booking?.guest?.email || this.email}\n placeholder={i18next.t('emailPlaceholder')}\n type=\"email\"\n readOnly={this.bookingInfo?.primaryParticipant?.emailReadOnly || false}\n required={true}\n requiredError={this.emailRequiredError}\n patternError={this.emailPatternError}\n part=\"nbf__input-textfield\"\n />\n </div>\n {this.configSettings?.scheduler?.hide_additional_guests !== true && (\n <div class=\"input-wrapper\" part=\"nbf__input-wrapper\">\n {this.guestEmails.map((email, index) => (\n <div class=\"input-wrapper button-wrapper\">\n <label\n class={{\n error: !!this.guestEmailErrors[index],\n }}\n >\n {i18next.t('guestEmail')}\n </label>\n <div class=\"guest-email-input\">\n <input\n type=\"email\"\n id={`guest-email-${index}`}\n maxLength={100}\n class={{\n 'guest-email': true,\n 'error': !!this.guestEmailErrors[index],\n }}\n placeholder={i18next.t('guestEmailPlaceholder')}\n value={email}\n data-index={index}\n part=\"nbf__input-textfield\"\n onBlur={(e: Event) => this.handleGuestBlur(index, (e.target as HTMLInputElement)?.value)}\n onInput={(e: Event) => this.handleGuestChange(index, (e.target as HTMLInputElement)?.value)}\n ></input>\n <button-component\n variant=\"basic\"\n tooltip=\"Remove guest\"\n onClick={(e: Event) => this.removeGuestButtonClickHandler(e, index)}\n class={{\n 'remove-guest': true,\n 'error': !!this.guestEmailErrors[index],\n }}\n >\n <close-icon />\n </button-component>\n </div>\n <p class=\"help-text\">{this.guestEmailErrors[index]}</p>\n </div>\n ))}\n {!isGroupEvent && (\n <button-component class=\"add-guest\" variant=\"invisible\" part=\"nbf__button-ghost\" onClick={e => this.addGuestButtonClickedHandler(e)}>\n <div class=\"button-content\">\n <add-circle-icon slot=\"icon\"></add-circle-icon>\n {this.guestEmails.length > 0 ? `${i18next.t('addAnotherGuest')}` : `${i18next.t('addGuest')}`}\n </div>\n </button-component>\n )}\n </div>\n )}\n {Object.entries(\n (this.configSettings?.scheduler?.additional_fields || {}) as Record<\n string,\n {\n required: boolean;\n type: 'email' | 'text' | 'phone_number' | 'dropdown' | 'checkbox' | 'radio_button' | 'multi_line_text' | 'metadata' | 'date' | 'multi_select';\n order: number;\n options?: string[];\n label: string;\n default?: string;\n }\n >,\n )\n ?.sort((a, b) => a[1].order - b[1].order)\n .map(x => {\n const field = x[1];\n const label = field.label;\n const key = x[0];\n const defaultValue = this.bookingInfo?.additionalFields?.[key]?.value || this.configSettings?.booking?.additional_fields?.[key] || field.default || '';\n const fieldReadOnly = this.bookingInfo?.additionalFields?.[key]?.readOnly || false;\n\n switch (field.type) {\n case 'dropdown':\n return (\n <div class=\"input-wrapper\" part=\"nbf__input-wrapper\">\n <select-dropdown\n label={label}\n name={key}\n id={key}\n readOnly={fieldReadOnly}\n withSearch={false}\n emptyValue={i18next.t('nylasBookingCalendarPicker.selectOptionLabel')}\n defaultSelectedOption={defaultValue ? { value: defaultValue, label: defaultValue } : undefined}\n options={[\n { value: '', label: i18next.t('nylasBookingCalendarPicker.selectOptionLabel') },\n ...(field.options?.map(option => ({ value: option, label: option })) || []),\n ]}\n required={field.required}\n errorMessage={i18next.t('fieldRequired', { field: label })}\n exportparts=\"sd_dropdown: nbf__dropdown, sd_dropdown-button: nbf__dropdown-button, sd_dropdown-content: nbf__dropdown-content\"\n />\n </div>\n );\n case 'checkbox':\n return (\n <div class=\"input-wrapper\" part=\"nbf__input-wrapper\">\n <checkbox-component\n readOnly={fieldReadOnly}\n label={label}\n name={key}\n id={key}\n checked={defaultValue === 'true'}\n required={field.required}\n part=\"nbf__checkbox-component\"\n />\n </div>\n );\n case 'radio_button':\n return (\n <div class=\"input-wrapper\" part=\"nbf__input-wrapper\">\n <radio-button-group\n label={label}\n name={key}\n id={key}\n readOnly={fieldReadOnly}\n defaultSelectedValue={defaultValue && field.options?.includes(defaultValue) ? defaultValue : field.options?.[0] || ''}\n options={field.options?.map(option => ({ value: option, label: option }))}\n required={field.required}\n part=\"nbf__radio-button-group\"\n />\n </div>\n );\n case 'multi_line_text':\n return (\n <div class=\"input-wrapper\" part=\"nbf__input-wrapper\">\n <textarea-component\n readOnly={fieldReadOnly}\n label={label}\n defaultValue={defaultValue}\n name={key}\n id={key}\n required={field.required}\n part=\"nbf__textarea-component\"\n />\n </div>\n );\n case 'date':\n return (\n <div class=\"input-wrapper\" part=\"nbf__input-wrapper\">\n <nylas-date-component\n readOnly={fieldReadOnly}\n label={label}\n defaultValue={defaultValue}\n name={key}\n id={key}\n required={field.required}\n part=\"nbf__date-component\"\n />\n </div>\n );\n case 'multi_select': {\n const defaultValues = defaultValue?.split(',').map(item => item.trim()) || [];\n return (\n <div>\n <multi-select-dropdown\n label={label}\n name={key}\n id={key}\n readOnly={fieldReadOnly}\n selectAtLeastOneOptionLabel={i18next.t('selectOneOrMoreOptions')}\n multipleOptionsSelectedLabel={i18next.t('multipleOptionsSelected')}\n options={field.options?.map(option => ({ value: option, label: option, selected: defaultValues.includes(option) }))}\n required={field.required}\n exportparts=\"msd_dropdown: nbf__ms_dropdown, msd_dropdown-label: nbf__ms_dropdown-label, msd_dropdown-button: nbf__ms_dropdown-button, msd_dropdown-content: nbf__ms_dropdown-content, msd_dropdown_error: nbf__ms_dropdown_error, msd_dropdown-button--error: nbf__ms_dropdown-button--error\"\n ></multi-select-dropdown>\n </div>\n );\n }\n case 'metadata':\n return null;\n default:\n return (\n <div class=\"input-wrapper\" part=\"nbf__input-wrapper\">\n <input-component\n label={label}\n name={key}\n id={key}\n type={field.type}\n readOnly={fieldReadOnly}\n defaultValue={defaultValue || ''}\n requiredError={i18next.t('fieldRequired', { field: label })}\n patternError={i18next.t('invalidInputFormat', { field: label })}\n required={field.required}\n part=\"nbf__input-textfield\"\n />\n </div>\n );\n }\n })}\n {/* <slot name=\"custom-booking-form\"></slot> */}\n </div>\n <div class=\"cta\">\n <button-component variant={'basic'} class=\"back\" part=\"nbf__button-outline\" isLoading={this.backButtonLoading && this.isLoading} onClick={this.handleBackButtonClicked}>\n <slot name=\"booking-form-back-label\">{`${i18next.t('backButton')}`}</slot>\n </button-component>\n <button-component variant={'primary'} isLoading={!this.backButtonLoading && this.isLoading} disabled={this.isLoading} part=\"nbf__button-primary\" type=\"submit\">\n <slot name=\"booking-form-book-label\">{`${i18next.t('bookNowButton')}`}</slot>\n </button-component>\n </div>\n </form>\n </Host>\n );\n }\n}\n"],"version":3}
|
|
@@ -78,6 +78,7 @@ const NylasCancelBookingForm = proxyCustomElement(class NylasCancelBookingForm e
|
|
|
78
78
|
this.eventInfo = undefined;
|
|
79
79
|
this.isLoading = undefined;
|
|
80
80
|
this.themeConfig = undefined;
|
|
81
|
+
this.selectedLanguage = undefined;
|
|
81
82
|
this.cancellationReason = '';
|
|
82
83
|
this.cancellationError = '';
|
|
83
84
|
this.cancellationPolicy = this.configSettings?.scheduler?.cancellation_policy || 'Your current timeslot will become available to others.';
|
|
@@ -88,6 +89,11 @@ const NylasCancelBookingForm = proxyCustomElement(class NylasCancelBookingForm e
|
|
|
88
89
|
themeConfigChanged(newThemeConfig) {
|
|
89
90
|
this.applyThemeConfig(newThemeConfig);
|
|
90
91
|
}
|
|
92
|
+
selectedLanguageChangedHandler(newVal, oldVal) {
|
|
93
|
+
if (newVal === oldVal)
|
|
94
|
+
return;
|
|
95
|
+
instance.changeLanguage(newVal);
|
|
96
|
+
}
|
|
91
97
|
connectedCallback() {
|
|
92
98
|
debug(`[nylas-cancel-booking-form] Component connected`);
|
|
93
99
|
}
|
|
@@ -120,12 +126,13 @@ const NylasCancelBookingForm = proxyCustomElement(class NylasCancelBookingForm e
|
|
|
120
126
|
}
|
|
121
127
|
}
|
|
122
128
|
render() {
|
|
123
|
-
return (h(Host, { key: '
|
|
129
|
+
return (h(Host, { key: '3b22e6567ab54d6f2cb568d75fee896a643da4c8', part: "ncbf" }, h("div", { key: 'f046c04a7e3960a64e7da64c9a65a76566224f7d', class: "nylas-cancel-booking-form", part: "ncbf__card" }, h("div", { key: 'a979e7bea8d4ec498f52d06843d81f48720a0c8c', class: "nylas-cancel-booking-form__calendar-icon", part: "ncbf__icon" }, h("calendar-cancel-icon", { key: '85015b6f8078d9159f348ddf323f31dec8f705d4' })), h("h3", { key: '78ecd8321eb0a3c12abef90033d8244ffbfee674', class: "nylas-cancel-booking-form__title", part: "ncbf__title" }, instance.t('cancelBookingTitle')), h("div", { key: '524ca54afd1054d39d732fc17af3d75ce7586eae', class: "nylas-cancel-booking-form__description", part: "ncbf__description" }, !this.configSettings?.scheduler?.cancellation_policy ? `${instance.t('cancelBookingMessage')}` : this.cancellationPolicy), h("form", { key: '997e3b3723ac23316214682b8f03714d22c73271', onSubmit: this.handleSubmitCancelBooking }, h("textarea-component", { key: 'dd909a7998a66404c9ca4a0a880c65b8f38274d6', id: "cancel-reason", name: "cancel-reason", ref: el => (this.textareaRef = el), required: true, label: instance.t('reasonForCancellation'), class: this.cancellationError ? 'error' : '', part: "ncbf__reason-textarea", defaultValue: this.cancellationReason }), h("div", { key: '8a2331c8d00f1c6df904c3758fd5adcbb0a7095f', class: "footer" }, h("button-component", { key: 'dd16407657ac2e6e181a213d172364d66466d2ad', variant: 'destructive', class: "cancel", type: "submit", part: "ncbf__button-cta", disabled: this.isLoading }, instance.t('cancelBookingButton')), !!this.eventInfo && (h("button-component", { variant: 'basic', class: "back", part: "ncbf__button-outline", onClick: this.handleGoBackClicked }, instance.t('goBackButton'))))))));
|
|
124
130
|
}
|
|
125
131
|
get host() { return this; }
|
|
126
132
|
static get watchers() { return {
|
|
127
133
|
"configSettings": ["configSettingsChangedHandler"],
|
|
128
|
-
"themeConfig": ["themeConfigChanged"]
|
|
134
|
+
"themeConfig": ["themeConfigChanged"],
|
|
135
|
+
"selectedLanguage": ["selectedLanguageChangedHandler"]
|
|
129
136
|
}; }
|
|
130
137
|
static get style() { return NylasCancelBookingFormStyle0; }
|
|
131
138
|
}, [1, "nylas-cancel-booking-form", {
|
|
@@ -136,12 +143,14 @@ const NylasCancelBookingForm = proxyCustomElement(class NylasCancelBookingForm e
|
|
|
136
143
|
"eventInfo": [16],
|
|
137
144
|
"isLoading": [4, "is-loading"],
|
|
138
145
|
"themeConfig": [8, "theme-config"],
|
|
146
|
+
"selectedLanguage": [1, "selected-language"],
|
|
139
147
|
"cancellationReason": [32],
|
|
140
148
|
"cancellationError": [32],
|
|
141
149
|
"cancellationPolicy": [32]
|
|
142
150
|
}, [[0, "nylasFormInputChanged", "handleNylasFormInputChanged"]], {
|
|
143
151
|
"configSettings": ["configSettingsChangedHandler"],
|
|
144
|
-
"themeConfig": ["themeConfigChanged"]
|
|
152
|
+
"themeConfig": ["themeConfigChanged"],
|
|
153
|
+
"selectedLanguage": ["selectedLanguageChangedHandler"]
|
|
145
154
|
}]);
|
|
146
155
|
__decorate([
|
|
147
156
|
RegisterComponent({
|
|
@@ -154,6 +163,7 @@ __decorate([
|
|
|
154
163
|
['scheduler.cancelBookingId', 'cancelBookingId'],
|
|
155
164
|
['scheduler.rejectBookingId', 'rejectBookingId'],
|
|
156
165
|
['scheduler.themeConfig', 'themeConfig'],
|
|
166
|
+
['scheduler.selectedLanguage', 'selectedLanguage'],
|
|
157
167
|
]),
|
|
158
168
|
eventToProps: {
|
|
159
169
|
cancelBookingFormSubmitted: async (event, nylasSchedulerConnector) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"nylas-cancel-booking-form2.js","mappings":";;;;;;;;;;AAAA,MAAM,yBAAyB,GAAG,wsGAAwsG,CAAC;AAC3uG,qCAAe,yBAAyB;;;;;;;;;;;;;;;;MC2B3B,sBAAsB;;;;;;;;;;QA4HzB,wBAAmB,GAAG;YAC5B,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC;SACjC,CAAC;QAEM,8BAAyB,GAAG,CAAC,KAAY;YAC/C,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAChC,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;gBAC5B,IAAI,CAAC,iBAAiB,GAAGA,QAAO,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC;gBAC/D,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAEA,QAAO,CAAC,CAAC,CAAC,uBAAuB,CAAC,EAAE,WAAW,EAAEA,QAAO,CAAC,CAAC,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC;gBACpI,OAAO;aACR;YAED,MAAM,qBAAqB,GAAG,IAAI,CAAC,cAAc,EAAE,SAAS,EAAE,uBAAuB,CAAC;YACtF,IAAI,IAAI,CAAC,gBAAgB,IAAI,qBAAqB,EAAE;gBAClD,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;gBAC9D,MAAM,oBAAoB,GAAG,SAAS,CAAC,OAAO,EAAE,GAAG,qBAAqB,GAAG,EAAE,GAAG,IAAI,CAAC;gBAErF,IAAI,oBAAoB,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE;oBAC/C,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;wBAC/B,KAAK,EAAE;4BACL,KAAK,EAAEA,QAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC;4BAC1C,OAAO,EAAEA,QAAO,CAAC,CAAC,CAAC,uCAAuC,EAAE,EAAE,qBAAqB,EAAE,CAAC;yBACvF;qBACF,CAAC,CAAC;oBACH,OAAO;iBACR;aACF;YAED,KAAK,CAAC,0EAA0E,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;YAC3G,MAAM,YAAY,GAAG,CAAC,KAAkC;gBACtD,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACzC,CAAC;YACF,IAAI,IAAI,CAAC,eAAe,EAAE;gBACxB,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,kBAAkB,EAAE,YAAY,EAAE,CAAC,CAAC;aAC5I;iBAAM,IAAI,IAAI,CAAC,eAAe,EAAE;gBAC/B,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,kBAAkB,EAAE,YAAY,EAAE,CAAC,CAAC;aAC5I;SACF,CAAC;;;;;;;;kCAnFoC,EAAE;iCAEH,EAAE;kCAED,IAAI,CAAC,cAAc,EAAE,SAAS,EAAE,mBAAmB,IAAI,wDAAwD;;IAGrJ,4BAA4B,CAAC,QAAwB;QACnD,IAAI,CAAC,kBAAkB,GAAG,QAAQ,EAAE,SAAS,EAAE,mBAAmB,IAAI,wDAAwD,CAAC;KAChI;IAGD,kBAAkB,CAAC,cAA2B;QAC5C,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;KACvC;IAED,iBAAiB;QACf,KAAK,CAAC,iDAAiD,CAAC,CAAC;KAC1D;IAED,MAAM,iBAAiB;QACrB,KAAK,CAAC,iDAAiD,CAAC,CAAC;KAC1D;IAED,MAAM,gBAAgB;QACpB,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACxD,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACzB,OAAO,CAAC,IAAI,CAAC,yFAAyF,CAAC,CAAC;SACzG;QACD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACzC;IAED,oBAAoB;QAClB,KAAK,CAAC,oDAAoD,CAAC,CAAC;KAC7D;IAED,gBAAgB,CAAC,WAAyB;QACxC,IAAI,WAAW,EAAE;YACf,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;gBACtD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;gBAC7C,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC,GAAG,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;aACtD;SACF;KACF;IA2CD,2BAA2B,CAAC,KAA+F;QACzH,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,eAAe,EAAE;YACzC,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;YAC7C,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;SAC7C;KACF;IAgDD,MAAM;QACJ,QACE,EAAC,IAAI,qDAAC,IAAI,EAAC,MAAM,IACf,4DAAK,KAAK,EAAC,2BAA2B,EAAC,IAAI,EAAC,YAAY,IACtD,4DAAK,KAAK,EAAC,0CAA0C,EAAC,IAAI,EAAC,YAAY,IACrE,8EAAwB,CACpB,EACN,2DAAI,KAAK,EAAC,kCAAkC,EAAC,IAAI,EAAC,aAAa,IAC5DA,QAAO,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAC7B,EACL,4DAAK,KAAK,EAAC,wCAAwC,EAAC,IAAI,EAAC,mBAAmB,IACzE,CAAC,IAAI,CAAC,cAAc,EAAE,SAAS,EAAE,mBAAmB,GAAG,GAAGA,QAAO,CAAC,CAAC,CAAC,sBAAsB,CAAC,EAAE,GAAG,IAAI,CAAC,kBAAkB,CACpH,EACN,6DAAM,QAAQ,EAAE,IAAI,CAAC,yBAAyB,IAC5C,2EACE,EAAE,EAAC,eAAe,EAClB,IAAI,EAAC,eAAe,EACpB,GAAG,EAAE,EAAE,KAAK,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,EAClC,QAAQ,EAAE,IAAI,EACd,KAAK,EAAEA,QAAO,CAAC,CAAC,CAAC,uBAAuB,CAAC,EACzC,KAAK,EAAE,IAAI,CAAC,iBAAiB,GAAG,OAAO,GAAG,EAAE,EAC5C,IAAI,EAAC,uBAAuB,EAC5B,YAAY,EAAE,IAAI,CAAC,kBAAkB,GACjB,EACtB,4DAAK,KAAK,EAAC,QAAQ,IACjB,yEAAkB,OAAO,EAAE,aAAa,EAAE,KAAK,EAAC,QAAQ,EAAC,IAAI,EAAC,QAAQ,EAAC,IAAI,EAAC,kBAAkB,EAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,IACpHA,QAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAChB,EAClB,CAAC,CAAC,IAAI,CAAC,SAAS,KACf,wBAAkB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,sBAAsB,EAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,IAC3GA,QAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CACT,CACpB,CACG,CACD,CACH,CACD,EACP;KACH;;;;;;;;;;;;;;;;;;;;;;AAtCD;IA9CC,iBAAiB,CAAiG;QACjH,IAAI,EAAE,2BAA2B;QACjC,YAAY,EAAE,IAAI,GAAG,CAAC;YACpB,CAAC,0BAA0B,EAAE,gBAAgB,CAAC;YAC9C,CAAC,4BAA4B,EAAE,kBAAkB,CAAC;YAClD,CAAC,qBAAqB,EAAE,WAAW,CAAC;YACpC,CAAC,qBAAqB,EAAE,WAAW,CAAC;YACpC,CAAC,2BAA2B,EAAE,iBAAiB,CAAC;YAChD,CAAC,2BAA2B,EAAE,iBAAiB,CAAC;YAChD,CAAC,uBAAuB,EAAE,aAAa,CAAC;SACzC,CAAC;QACF,YAAY,EAAE;YACZ,0BAA0B,EAAE,OAC1B,KAAmJ,EACnJ,uBAAgD;gBAEhD,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC;gBAC9C,IAAI,MAAM,KAAK,QAAQ,EAAE;oBACvB,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBAClH,IAAI,YAAY,KAAK,CAAC,MAAM,IAAI,OAAO,IAAI,MAAM,CAAC,EAAE;wBAClD,YAAY,CAAC,MAAM,CAAC,CAAC;qBACtB;iBACF;qBAAM,IAAI,MAAM,KAAK,QAAQ,EAAE;oBAC9B,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,SAAS,CAAC,aAAa,CAAC;wBACnE,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS;wBACjC,MAAM,EAAE,WAAW;wBACnB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM;qBAC5B,CAAC,CAAC;oBACH,IAAI,YAAY,KAAK,CAAC,MAAM,IAAI,OAAO,IAAI,MAAM,CAAC,EAAE;wBAClD,YAAY,CAAC,MAAM,CAAC,CAAC;qBACtB;iBACF;aACF;YACD,mBAAmB,EAAE,OAAO,KAAwB,EAAE,uBAAgD;gBACpG,KAAK,CAAC,2BAA2B,EAAE,qBAAqB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;gBACxE,uBAAuB,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;aAC5C;YACD,sBAAsB,EAAE,OAAO,KAA+C,EAAE,wBAAiD;gBAC/H,KAAK,CAAC,2BAA2B,EAAE,wBAAwB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;aAC5E;YACD,sBAAsB,EAAE,OAAO,KAAyC,EAAE,wBAAiD;gBACzH,KAAK,CAAC,2BAA2B,EAAE,wBAAwB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;aAC5E;SACF;QACD,iBAAiB,EAAE,IAAI;KACxB,CAAC;;;;oDAuCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["i18next"],"sources":["src/components/scheduler/nylas-cancel-booking-form/nylas-cancel-booking-form.scss?tag=nylas-cancel-booking-form&encapsulation=shadow","src/components/scheduler/nylas-cancel-booking-form/nylas-cancel-booking-form.tsx"],"sourcesContent":["@import '../../../common/styles/variables.scss';\n\n:host {\n @include default-css-variables;\n display: block;\n width: 400px;\n font-family: var(--nylas-font-family);\n}\n\n.nylas-cancel-booking-form {\n form {\n width: 100%;\n }\n\n display: flex;\n align-items: center;\n flex-direction: column;\n background-color: var(--nylas-base-0);\n color: var(--nylas-base-800);\n border-radius: var(--nylas-border-radius-2x);\n padding: 1.5rem;\n position: relative;\n box-shadow:\n 0px 1px 4px rgba(0, 0, 0, 0.1),\n 0px 3px 6px rgba(0, 0, 0, 0.06);\n}\n\n.nylas-cancel-booking-form__title {\n font-size: 18px;\n font-weight: 600;\n margin-bottom: 0;\n color: var(--nylas-base-900);\n}\n\n.nylas-cancel-booking-form__description {\n font-size: 16px;\n font-style: normal;\n font-weight: 400;\n line-height: 140%;\n color: var(--nylas-base-600);\n padding-bottom: 1.25rem;\n}\n\n.nylas-cancel-booking-form__calendar-icon {\n width: 3rem;\n height: 3rem;\n border-radius: 50%;\n position: absolute;\n top: -1.25rem;\n left: 50%;\n transform: translateX(-50%);\n background-color: var(--nylas-base-0);\n border: 1px solid var(--nylas-base-200);\n}\n\ncalendar-cancel-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n}\n\n.footer {\n display: grid;\n grid-template-columns: 1fr 1fr;\n width: 100%;\n padding-top: 1.25rem;\n gap: 1rem;\n border-top: 1px solid var(--nylas-base-200);\n margin-top: 1.25rem;\n}\n","import { RegisterComponent } from '@/common/register-component';\nimport { Component, Element, Event, EventEmitter, h, Host, Listen, Prop, State, Watch } from '@stencil/core';\nimport { NylasSchedulerConnector } from '../../..';\nimport { NylasScheduling } from '../nylas-scheduling/nylas-scheduling';\nimport { debug } from '@/utils/utils';\nimport { Notification, NylasSchedulerErrorResponse, ThemeConfig, Timeslot } from '@nylas/core';\nimport { ConfigSettings } from '@/stores/scheduler-store';\nimport i18next from '@/utils/i18n';\nimport { NylasEvent } from '@/common/types';\n\n/**\n * The `nylas-cancel-booking-form` component is a UI component that allows users to cancel a booking (DELETE request).\n * This component is also used to reject a booking (PUT request) by the organizer, if the prop `rejectBookingId` is provided.\n *\n * @part ncbf - The cancel booking form container.\n * @part ncbf__icon - The calendar icon.\n * @part ncbf__title - The title of the cancel booking form.\n * @part ncbf__description - The description of the cancel booking form.\n * @part ncbf__reason-textarea - The reason textarea.\n * @part ncbf__button-cta - The cancel booking form CTA button.\n * @part ncbf__button-outline - The cancel booking form outline button.\n * @part ncbf__card - The cancel booking form card.\n */\n@Component({\n tag: 'nylas-cancel-booking-form',\n styleUrl: 'nylas-cancel-booking-form.scss',\n shadow: true,\n})\nexport class NylasCancelBookingForm {\n private textareaRef?: HTMLTextareaComponentElement;\n /**\n * The host element.\n * Used to manage the host element of the provider.\n */\n @Element() private host!: HTMLNylasCancelBookingFormElement;\n\n /**\n * The booking ID to cancel.\n */\n @Prop() readonly cancelBookingId?: string;\n\n /**\n * The booking ID to reject.\n */\n @Prop() readonly rejectBookingId?: string;\n\n /**\n * The selected timeslot.\n */\n @Prop() readonly selectedTimeslot!: Timeslot;\n\n /**\n * @standalone\n * The config settings.\n */\n @Prop() readonly configSettings?: ConfigSettings;\n\n /**\n * @standalone\n * The event info.\n */\n @Prop() readonly eventInfo?: NylasEvent;\n\n /**\n * @standalone\n * The loading state.\n */\n @Prop() readonly isLoading?: boolean;\n\n /**\n * @standalone\n * The theme configuration.\n */\n @Prop({ attribute: 'theme-config' }) readonly themeConfig?: any;\n\n /**\n * This event is fired when the Go back button is clicked on the cancel booking form.\n */\n @Event() readonly goBackButtonClicked!: EventEmitter<void>;\n\n /**\n * This event is fired when the cancel booking form is submitted.\n */\n @Event() readonly cancelBookingFormSubmitted!: EventEmitter<{\n bookingId: string;\n action: 'reject' | 'cancel';\n reason: string;\n errorHandler?: (error: NylasSchedulerErrorResponse) => void;\n }>;\n\n /**\n * This event is only for triggering the validation on the text area for cancellation reason. This is for internal purposes only.\n */\n @Event() readonly triggerValidation!: EventEmitter<{}>;\n /**\n * This event is fired when an error occurs while cancelling the booking.\n */\n @Event() readonly cancelBookedEventError!: EventEmitter<NylasSchedulerErrorResponse>;\n\n /**\n * This event is fired when an error occurs in the booking form.\n */\n @Event() cancelBookingFormError!: EventEmitter<Partial<Notification>>;\n\n /**\n * The reason for cancellation.\n */\n @State() cancellationReason: string = '';\n\n @State() cancellationError: string = '';\n\n @State() cancellationPolicy: string = this.configSettings?.scheduler?.cancellation_policy || 'Your current timeslot will become available to others.';\n\n @Watch('configSettings')\n configSettingsChangedHandler(newValue: ConfigSettings) {\n this.cancellationPolicy = newValue?.scheduler?.cancellation_policy || 'Your current timeslot will become available to others.';\n }\n\n @Watch('themeConfig')\n themeConfigChanged(newThemeConfig: ThemeConfig) {\n this.applyThemeConfig(newThemeConfig);\n }\n\n connectedCallback() {\n debug(`[nylas-cancel-booking-form] Component connected`);\n }\n\n async componentWillLoad() {\n debug(`[nylas-cancel-booking-form] Component will load`);\n }\n\n async componentDidLoad() {\n debug(`[nylas-cancel-booking-form] Component did load`);\n if (!this.cancelBookingId) {\n console.warn(`[nylas-cancel-booking-form] No booking ID provided, \"cancelBookingId\" prop is required.`);\n }\n this.applyThemeConfig(this.themeConfig);\n }\n\n disconnectedCallback() {\n debug(`[nylas-cancel-booking-form] Component disconnected`);\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 this.textareaRef?.style.setProperty(`${key}`, value);\n }\n }\n }\n\n private handleGoBackClicked = () => {\n this.goBackButtonClicked.emit();\n };\n\n private handleSubmitCancelBooking = (event: Event) => {\n this.triggerValidation.emit({});\n event.preventDefault();\n if (!this.cancellationReason) {\n this.cancellationError = i18next.t('cancellationErrorMessage');\n this.cancelBookingFormError.emit({ title: i18next.t('cancelBokingFormError'), description: i18next.t('cancellationErrorMessage') });\n return;\n }\n\n const minCancellationNotice = this.configSettings?.scheduler?.min_cancellation_notice;\n if (this.selectedTimeslot && minCancellationNotice) {\n const startTime = new Date(this.selectedTimeslot?.start_time);\n const dateTillCancellation = startTime.getTime() - minCancellationNotice * 60 * 1000;\n\n if (dateTillCancellation < new Date().getTime()) {\n this.cancelBookedEventError.emit({\n error: {\n title: i18next.t('cancellationErrorTitle'),\n message: i18next.t('minimumCancellationNoticeErrorMessage', { minCancellationNotice }),\n },\n });\n return;\n }\n }\n\n debug(`[nylas-cancel-booking-form] Cancel booking form submitted with reason: ${this.cancellationReason}`);\n const errorHandler = (error: NylasSchedulerErrorResponse) => {\n this.cancelBookedEventError.emit(error);\n };\n if (this.cancelBookingId) {\n this.cancelBookingFormSubmitted.emit({ bookingId: this.cancelBookingId, action: 'cancel', reason: this.cancellationReason, errorHandler });\n } else if (this.rejectBookingId) {\n this.cancelBookingFormSubmitted.emit({ bookingId: this.rejectBookingId, action: 'reject', reason: this.cancellationReason, errorHandler });\n }\n };\n\n @Listen('nylasFormInputChanged')\n handleNylasFormInputChanged(event: CustomEvent<{ value: string; name: string; error: string; label: string; type: string }>) {\n this.triggerValidation.emit({});\n if (event.detail.name === 'cancel-reason') {\n this.cancellationReason = event.detail.value;\n this.cancellationError = event.detail.error;\n }\n }\n\n @RegisterComponent<NylasCancelBookingForm, NylasSchedulerConnector, Exclude<NylasScheduling['stores'], undefined>>({\n name: 'nylas-cancel-booking-form',\n stateToProps: new Map([\n ['scheduler.configSettings', 'configSettings'],\n ['scheduler.selectedTimeslot', 'selectedTimeslot'],\n ['scheduler.eventInfo', 'eventInfo'],\n ['scheduler.isLoading', 'isLoading'],\n ['scheduler.cancelBookingId', 'cancelBookingId'],\n ['scheduler.rejectBookingId', 'rejectBookingId'],\n ['scheduler.themeConfig', 'themeConfig'],\n ]),\n eventToProps: {\n cancelBookingFormSubmitted: async (\n event: CustomEvent<{ bookingId: string; action: 'reject' | 'cancel'; reason: string; errorHandler?: (error: NylasSchedulerErrorResponse) => void }>,\n nylasSchedulerConnector: NylasSchedulerConnector,\n ) => {\n const { action, errorHandler } = event.detail;\n if (action === 'cancel') {\n const result = await nylasSchedulerConnector.scheduler.cancelBooking(event.detail.bookingId, event.detail.reason);\n if (errorHandler && (!result || 'error' in result)) {\n errorHandler(result);\n }\n } else if (action === 'reject') {\n const result = await nylasSchedulerConnector.scheduler.updateBooking({\n bookingId: event.detail.bookingId,\n status: 'cancelled',\n reason: event.detail.reason,\n });\n if (errorHandler && (!result || 'error' in result)) {\n errorHandler(result);\n }\n }\n },\n goBackButtonClicked: async (event: CustomEvent<void>, nylasSchedulerConnector: NylasSchedulerConnector) => {\n debug('nylas-cancel-booking-form', 'goBackButtonClicked', event.detail);\n nylasSchedulerConnector.scheduler.goBack();\n },\n cancelBookedEventError: async (event: CustomEvent<NylasSchedulerErrorResponse>, _nylasSchedulerConnector: NylasSchedulerConnector) => {\n debug('nylas-cancel-booking-form', 'cancelBookedEventError', event.detail);\n },\n cancelBookingFormError: async (event: CustomEvent<Partial<Notification>>, _nylasSchedulerConnector: NylasSchedulerConnector) => {\n debug('nylas-cancel-booking-form', 'cancelBookingFormError', event.detail);\n },\n },\n fireRegisterEvent: true,\n })\n render() {\n return (\n <Host part=\"ncbf\">\n <div class=\"nylas-cancel-booking-form\" part=\"ncbf__card\">\n <div class=\"nylas-cancel-booking-form__calendar-icon\" part=\"ncbf__icon\">\n <calendar-cancel-icon />\n </div>\n <h3 class=\"nylas-cancel-booking-form__title\" part=\"ncbf__title\">\n {i18next.t('cancelBookingTitle')}\n </h3>\n <div class=\"nylas-cancel-booking-form__description\" part=\"ncbf__description\">\n {!this.configSettings?.scheduler?.cancellation_policy ? `${i18next.t('cancelBookingMessage')}` : this.cancellationPolicy}\n </div>\n <form onSubmit={this.handleSubmitCancelBooking}>\n <textarea-component\n id=\"cancel-reason\"\n name=\"cancel-reason\"\n ref={el => (this.textareaRef = el)}\n required={true}\n label={i18next.t('reasonForCancellation')}\n class={this.cancellationError ? 'error' : ''}\n part=\"ncbf__reason-textarea\"\n defaultValue={this.cancellationReason}\n ></textarea-component>\n <div class=\"footer\">\n <button-component variant={'destructive'} class=\"cancel\" type=\"submit\" part=\"ncbf__button-cta\" disabled={this.isLoading}>\n {i18next.t('cancelBookingButton')}\n </button-component>\n {!!this.eventInfo && (\n <button-component variant={'basic'} class=\"back\" part=\"ncbf__button-outline\" onClick={this.handleGoBackClicked}>\n {i18next.t('goBackButton')}\n </button-component>\n )}\n </div>\n </form>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
|
|
1
|
+
{"file":"nylas-cancel-booking-form2.js","mappings":"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","names":["i18next"],"sources":["src/components/scheduler/nylas-cancel-booking-form/nylas-cancel-booking-form.scss?tag=nylas-cancel-booking-form&encapsulation=shadow","src/components/scheduler/nylas-cancel-booking-form/nylas-cancel-booking-form.tsx"],"sourcesContent":["@import '../../../common/styles/variables.scss';\n\n:host {\n @include default-css-variables;\n display: block;\n width: 400px;\n font-family: var(--nylas-font-family);\n}\n\n.nylas-cancel-booking-form {\n form {\n width: 100%;\n }\n\n display: flex;\n align-items: center;\n flex-direction: column;\n background-color: var(--nylas-base-0);\n color: var(--nylas-base-800);\n border-radius: var(--nylas-border-radius-2x);\n padding: 1.5rem;\n position: relative;\n box-shadow:\n 0px 1px 4px rgba(0, 0, 0, 0.1),\n 0px 3px 6px rgba(0, 0, 0, 0.06);\n}\n\n.nylas-cancel-booking-form__title {\n font-size: 18px;\n font-weight: 600;\n margin-bottom: 0;\n color: var(--nylas-base-900);\n}\n\n.nylas-cancel-booking-form__description {\n font-size: 16px;\n font-style: normal;\n font-weight: 400;\n line-height: 140%;\n color: var(--nylas-base-600);\n padding-bottom: 1.25rem;\n}\n\n.nylas-cancel-booking-form__calendar-icon {\n width: 3rem;\n height: 3rem;\n border-radius: 50%;\n position: absolute;\n top: -1.25rem;\n left: 50%;\n transform: translateX(-50%);\n background-color: var(--nylas-base-0);\n border: 1px solid var(--nylas-base-200);\n}\n\ncalendar-cancel-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n}\n\n.footer {\n display: grid;\n grid-template-columns: 1fr 1fr;\n width: 100%;\n padding-top: 1.25rem;\n gap: 1rem;\n border-top: 1px solid var(--nylas-base-200);\n margin-top: 1.25rem;\n}\n","import { RegisterComponent } from '@/common/register-component';\nimport { Component, Element, Event, EventEmitter, h, Host, Listen, Prop, State, Watch } from '@stencil/core';\nimport { NylasSchedulerConnector } from '../../..';\nimport { NylasScheduling } from '../nylas-scheduling/nylas-scheduling';\nimport { debug } from '@/utils/utils';\nimport { Notification, NylasSchedulerErrorResponse, ThemeConfig, Timeslot } from '@nylas/core';\nimport { ConfigSettings } from '@/stores/scheduler-store';\nimport i18next from '@/utils/i18n';\nimport { NylasEvent } from '@/common/types';\nimport { LANGUAGE_CODE } from '@/common/constants';\n\n/**\n * The `nylas-cancel-booking-form` component is a UI component that allows users to cancel a booking (DELETE request).\n * This component is also used to reject a booking (PUT request) by the organizer, if the prop `rejectBookingId` is provided.\n *\n * @part ncbf - The cancel booking form container.\n * @part ncbf__icon - The calendar icon.\n * @part ncbf__title - The title of the cancel booking form.\n * @part ncbf__description - The description of the cancel booking form.\n * @part ncbf__reason-textarea - The reason textarea.\n * @part ncbf__button-cta - The cancel booking form CTA button.\n * @part ncbf__button-outline - The cancel booking form outline button.\n * @part ncbf__card - The cancel booking form card.\n */\n@Component({\n tag: 'nylas-cancel-booking-form',\n styleUrl: 'nylas-cancel-booking-form.scss',\n shadow: true,\n})\nexport class NylasCancelBookingForm {\n private textareaRef?: HTMLTextareaComponentElement;\n /**\n * The host element.\n * Used to manage the host element of the provider.\n */\n @Element() private host!: HTMLNylasCancelBookingFormElement;\n\n /**\n * The booking ID to cancel.\n */\n @Prop() readonly cancelBookingId?: string;\n\n /**\n * The booking ID to reject.\n */\n @Prop() readonly rejectBookingId?: string;\n\n /**\n * The selected timeslot.\n */\n @Prop() readonly selectedTimeslot!: Timeslot;\n\n /**\n * @standalone\n * The config settings.\n */\n @Prop() readonly configSettings?: ConfigSettings;\n\n /**\n * @standalone\n * The event info.\n */\n @Prop() readonly eventInfo?: NylasEvent;\n\n /**\n * @standalone\n * The loading state.\n */\n @Prop() readonly isLoading?: boolean;\n\n /**\n * @standalone\n * The theme configuration.\n */\n @Prop({ attribute: 'theme-config' }) readonly themeConfig?: any;\n\n /**\n * @standalone\n * The default language.\n */\n @Prop() readonly selectedLanguage?: LANGUAGE_CODE;\n\n /**\n * This event is fired when the Go back button is clicked on the cancel booking form.\n */\n @Event() readonly goBackButtonClicked!: EventEmitter<void>;\n\n /**\n * This event is fired when the cancel booking form is submitted.\n */\n @Event() readonly cancelBookingFormSubmitted!: EventEmitter<{\n bookingId: string;\n action: 'reject' | 'cancel';\n reason: string;\n errorHandler?: (error: NylasSchedulerErrorResponse) => void;\n }>;\n\n /**\n * This event is only for triggering the validation on the text area for cancellation reason. This is for internal purposes only.\n */\n @Event() readonly triggerValidation!: EventEmitter<{}>;\n /**\n * This event is fired when an error occurs while cancelling the booking.\n */\n @Event() readonly cancelBookedEventError!: EventEmitter<NylasSchedulerErrorResponse>;\n\n /**\n * This event is fired when an error occurs in the booking form.\n */\n @Event() cancelBookingFormError!: EventEmitter<Partial<Notification>>;\n\n /**\n * The reason for cancellation.\n */\n @State() cancellationReason: string = '';\n\n @State() cancellationError: string = '';\n\n @State() cancellationPolicy: string = this.configSettings?.scheduler?.cancellation_policy || 'Your current timeslot will become available to others.';\n\n @Watch('configSettings')\n configSettingsChangedHandler(newValue: ConfigSettings) {\n this.cancellationPolicy = newValue?.scheduler?.cancellation_policy || 'Your current timeslot will become available to others.';\n }\n\n @Watch('themeConfig')\n themeConfigChanged(newThemeConfig: ThemeConfig) {\n this.applyThemeConfig(newThemeConfig);\n }\n\n @Watch('selectedLanguage')\n selectedLanguageChangedHandler(newVal: LANGUAGE_CODE, oldVal: LANGUAGE_CODE) {\n if (newVal === oldVal) return;\n i18next.changeLanguage(newVal);\n }\n\n connectedCallback() {\n debug(`[nylas-cancel-booking-form] Component connected`);\n }\n\n async componentWillLoad() {\n debug(`[nylas-cancel-booking-form] Component will load`);\n }\n\n async componentDidLoad() {\n debug(`[nylas-cancel-booking-form] Component did load`);\n if (!this.cancelBookingId) {\n console.warn(`[nylas-cancel-booking-form] No booking ID provided, \"cancelBookingId\" prop is required.`);\n }\n this.applyThemeConfig(this.themeConfig);\n }\n\n disconnectedCallback() {\n debug(`[nylas-cancel-booking-form] Component disconnected`);\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 this.textareaRef?.style.setProperty(`${key}`, value);\n }\n }\n }\n\n private handleGoBackClicked = () => {\n this.goBackButtonClicked.emit();\n };\n\n private handleSubmitCancelBooking = (event: Event) => {\n this.triggerValidation.emit({});\n event.preventDefault();\n if (!this.cancellationReason) {\n this.cancellationError = i18next.t('cancellationErrorMessage');\n this.cancelBookingFormError.emit({ title: i18next.t('cancelBokingFormError'), description: i18next.t('cancellationErrorMessage') });\n return;\n }\n\n const minCancellationNotice = this.configSettings?.scheduler?.min_cancellation_notice;\n if (this.selectedTimeslot && minCancellationNotice) {\n const startTime = new Date(this.selectedTimeslot?.start_time);\n const dateTillCancellation = startTime.getTime() - minCancellationNotice * 60 * 1000;\n\n if (dateTillCancellation < new Date().getTime()) {\n this.cancelBookedEventError.emit({\n error: {\n title: i18next.t('cancellationErrorTitle'),\n message: i18next.t('minimumCancellationNoticeErrorMessage', { minCancellationNotice }),\n },\n });\n return;\n }\n }\n\n debug(`[nylas-cancel-booking-form] Cancel booking form submitted with reason: ${this.cancellationReason}`);\n const errorHandler = (error: NylasSchedulerErrorResponse) => {\n this.cancelBookedEventError.emit(error);\n };\n if (this.cancelBookingId) {\n this.cancelBookingFormSubmitted.emit({ bookingId: this.cancelBookingId, action: 'cancel', reason: this.cancellationReason, errorHandler });\n } else if (this.rejectBookingId) {\n this.cancelBookingFormSubmitted.emit({ bookingId: this.rejectBookingId, action: 'reject', reason: this.cancellationReason, errorHandler });\n }\n };\n\n @Listen('nylasFormInputChanged')\n handleNylasFormInputChanged(event: CustomEvent<{ value: string; name: string; error: string; label: string; type: string }>) {\n this.triggerValidation.emit({});\n if (event.detail.name === 'cancel-reason') {\n this.cancellationReason = event.detail.value;\n this.cancellationError = event.detail.error;\n }\n }\n\n @RegisterComponent<NylasCancelBookingForm, NylasSchedulerConnector, Exclude<NylasScheduling['stores'], undefined>>({\n name: 'nylas-cancel-booking-form',\n stateToProps: new Map([\n ['scheduler.configSettings', 'configSettings'],\n ['scheduler.selectedTimeslot', 'selectedTimeslot'],\n ['scheduler.eventInfo', 'eventInfo'],\n ['scheduler.isLoading', 'isLoading'],\n ['scheduler.cancelBookingId', 'cancelBookingId'],\n ['scheduler.rejectBookingId', 'rejectBookingId'],\n ['scheduler.themeConfig', 'themeConfig'],\n ['scheduler.selectedLanguage', 'selectedLanguage'],\n ]),\n eventToProps: {\n cancelBookingFormSubmitted: async (\n event: CustomEvent<{ bookingId: string; action: 'reject' | 'cancel'; reason: string; errorHandler?: (error: NylasSchedulerErrorResponse) => void }>,\n nylasSchedulerConnector: NylasSchedulerConnector,\n ) => {\n const { action, errorHandler } = event.detail;\n if (action === 'cancel') {\n const result = await nylasSchedulerConnector.scheduler.cancelBooking(event.detail.bookingId, event.detail.reason);\n if (errorHandler && (!result || 'error' in result)) {\n errorHandler(result);\n }\n } else if (action === 'reject') {\n const result = await nylasSchedulerConnector.scheduler.updateBooking({\n bookingId: event.detail.bookingId,\n status: 'cancelled',\n reason: event.detail.reason,\n });\n if (errorHandler && (!result || 'error' in result)) {\n errorHandler(result);\n }\n }\n },\n goBackButtonClicked: async (event: CustomEvent<void>, nylasSchedulerConnector: NylasSchedulerConnector) => {\n debug('nylas-cancel-booking-form', 'goBackButtonClicked', event.detail);\n nylasSchedulerConnector.scheduler.goBack();\n },\n cancelBookedEventError: async (event: CustomEvent<NylasSchedulerErrorResponse>, _nylasSchedulerConnector: NylasSchedulerConnector) => {\n debug('nylas-cancel-booking-form', 'cancelBookedEventError', event.detail);\n },\n cancelBookingFormError: async (event: CustomEvent<Partial<Notification>>, _nylasSchedulerConnector: NylasSchedulerConnector) => {\n debug('nylas-cancel-booking-form', 'cancelBookingFormError', event.detail);\n },\n },\n fireRegisterEvent: true,\n })\n render() {\n return (\n <Host part=\"ncbf\">\n <div class=\"nylas-cancel-booking-form\" part=\"ncbf__card\">\n <div class=\"nylas-cancel-booking-form__calendar-icon\" part=\"ncbf__icon\">\n <calendar-cancel-icon />\n </div>\n <h3 class=\"nylas-cancel-booking-form__title\" part=\"ncbf__title\">\n {i18next.t('cancelBookingTitle')}\n </h3>\n <div class=\"nylas-cancel-booking-form__description\" part=\"ncbf__description\">\n {!this.configSettings?.scheduler?.cancellation_policy ? `${i18next.t('cancelBookingMessage')}` : this.cancellationPolicy}\n </div>\n <form onSubmit={this.handleSubmitCancelBooking}>\n <textarea-component\n id=\"cancel-reason\"\n name=\"cancel-reason\"\n ref={el => (this.textareaRef = el)}\n required={true}\n label={i18next.t('reasonForCancellation')}\n class={this.cancellationError ? 'error' : ''}\n part=\"ncbf__reason-textarea\"\n defaultValue={this.cancellationReason}\n ></textarea-component>\n <div class=\"footer\">\n <button-component variant={'destructive'} class=\"cancel\" type=\"submit\" part=\"ncbf__button-cta\" disabled={this.isLoading}>\n {i18next.t('cancelBookingButton')}\n </button-component>\n {!!this.eventInfo && (\n <button-component variant={'basic'} class=\"back\" part=\"ncbf__button-outline\" onClick={this.handleGoBackClicked}>\n {i18next.t('goBackButton')}\n </button-component>\n )}\n </div>\n </form>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
|
|
2
2
|
import { R as RegisterComponent } from './register-component.js';
|
|
3
|
-
import {
|
|
3
|
+
import { b as instance, a as debug } from './utils.js';
|
|
4
4
|
import { d as defineCustomElement$3 } from './button-component2.js';
|
|
5
5
|
import { d as defineCustomElement$2 } from './calendar-cancel.js';
|
|
6
6
|
import { d as defineCustomElement$1 } from './loading.js';
|
|
@@ -39,9 +39,15 @@ const NylasCancelledEventCard = proxyCustomElement(class NylasCancelledEventCard
|
|
|
39
39
|
};
|
|
40
40
|
this.configSettings = undefined;
|
|
41
41
|
this.themeConfig = undefined;
|
|
42
|
+
this.selectedLanguage = undefined;
|
|
42
43
|
this.cancelledEventInfo = undefined;
|
|
43
44
|
this.isClosing = false;
|
|
44
45
|
}
|
|
46
|
+
selectedLanguageChangedHandler(newVal, oldVal) {
|
|
47
|
+
if (newVal === oldVal)
|
|
48
|
+
return;
|
|
49
|
+
instance.changeLanguage(newVal);
|
|
50
|
+
}
|
|
45
51
|
themeConfigChanged(newThemeConfig) {
|
|
46
52
|
this.applyThemeConfig(newThemeConfig);
|
|
47
53
|
}
|
|
@@ -69,19 +75,22 @@ const NylasCancelledEventCard = proxyCustomElement(class NylasCancelledEventCard
|
|
|
69
75
|
}
|
|
70
76
|
}
|
|
71
77
|
render() {
|
|
72
|
-
return (h(Host, { key: '
|
|
78
|
+
return (h(Host, { key: 'bde7d46555a6f6033089f6d49f853df1a7cd0dab', part: "ncec" }, h("div", { key: 'a1be2ed4bead0b89572565d00ace39f9a3c0a50d', class: "nylas-cancelled-event-card", part: "ncec__card" }, h("div", { key: 'e963d4ab8e599fac8809b3d264602cfc2954064a', class: "nylas-cancelled-event-card__calendar-icon", part: "ncec__icon" }, h("calendar-cancel-icon", { key: '5cccb2a26d77253b99ed377366e312f114406d03' })), h("h3", { key: '9fed1c485eafff15e04d5a36c58488cc337de9e9', class: "nylas-cancelled-event-card__title", part: "ncec__title" }, instance.t('bookingCancelledTitle'), "!"), h("div", { key: '081f5d0b0615663c0e79aea7b70ea602375f9547', class: "nylas-cancelled-event-card__description", part: "ncec__description" }, instance.t('bookingCancelledMessage'), " ", this.configSettings?.organizer?.name || instance.t('bookingCancelledMessage_theParticipants'), "."), h("div", { key: '697fbb9cccb9c665d35769f44ae16ff7a2a8ad36', class: "nylas-cancelled-event-card__cta" }, h("button-component", { key: 'e4f77128ff98787aca19549e51406d5d88b6fe1a', variant: "basic", disabled: this.isClosing, part: "ncec__button-outline", onClick: this.handleCloseClicked }, this.isClosing ? `${instance.t('closingButton')}...` : `${instance.t('closeButton')}`)))));
|
|
73
79
|
}
|
|
74
80
|
get host() { return this; }
|
|
75
81
|
static get watchers() { return {
|
|
82
|
+
"selectedLanguage": ["selectedLanguageChangedHandler"],
|
|
76
83
|
"themeConfig": ["themeConfigChanged"]
|
|
77
84
|
}; }
|
|
78
85
|
static get style() { return NylasCancelledEventCardStyle0; }
|
|
79
86
|
}, [1, "nylas-cancelled-event-card", {
|
|
80
87
|
"configSettings": [16],
|
|
81
88
|
"themeConfig": [8, "theme-config"],
|
|
89
|
+
"selectedLanguage": [1, "selected-language"],
|
|
82
90
|
"cancelledEventInfo": [16],
|
|
83
91
|
"isClosing": [32]
|
|
84
92
|
}, undefined, {
|
|
93
|
+
"selectedLanguage": ["selectedLanguageChangedHandler"],
|
|
85
94
|
"themeConfig": ["themeConfigChanged"]
|
|
86
95
|
}]);
|
|
87
96
|
__decorate([
|
|
@@ -90,7 +99,7 @@ __decorate([
|
|
|
90
99
|
stateToProps: new Map([
|
|
91
100
|
['scheduler.configSettings', 'configSettings'],
|
|
92
101
|
['scheduler.themeConfig', 'themeConfig'],
|
|
93
|
-
['scheduler.
|
|
102
|
+
['scheduler.selectedLanguage', 'selectedLanguage'],
|
|
94
103
|
]),
|
|
95
104
|
eventToProps: {
|
|
96
105
|
closeCancelEventCardClicked: async (_, nylasschedulerconnector) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"nylas-cancelled-event-card2.js","mappings":"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","names":["i18next"],"sources":["src/components/scheduler/nylas-cancelled-event-card/nylas-cancelled-event-card.scss?tag=nylas-cancelled-event-card&encapsulation=shadow","src/components/scheduler/nylas-cancelled-event-card/nylas-cancelled-event-card.tsx"],"sourcesContent":["@import '../../../common/styles/variables.scss';\n\n:host {\n display: block;\n @include default-css-variables;\n}\n\n.nylas-cancelled-event-card {\n height: inherit;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n align-items: center;\n font-family: var(--nylas-font-family);\n width: 400px;\n\n @media #{$mobile} {\n width: inherit;\n }\n\n background-color: var(--nylas-base-0);\n color: var(--nylas-base-800);\n border-radius: var(--nylas-border-radius-2x);\n padding: 1.5rem;\n position: relative;\n box-shadow:\n 0px 1px 4px rgba(0, 0, 0, 0.1),\n 0px 3px 6px rgba(0, 0, 0, 0.06);\n}\n\n.nylas-cancelled-event-card__title {\n font-size: 18px;\n font-weight: 600;\n line-height: 24px;\n color: var(--nylas-base-900);\n text-align: center;\n}\n\n.nylas-cancelled-event-description {\n font-size: 16px;\n font-weight: 500;\n color: var(--nylas-base-600);\n}\n\n.nylas-cancelled-event-card__calendar-icon {\n width: 3rem;\n height: 3rem;\n border-radius: 50%;\n position: absolute;\n top: -1.25rem;\n left: 50%;\n transform: translateX(-50%);\n background-color: var(--nylas-base-0);\n border: 1px solid var(--nylas-base-200);\n}\n\n.nylas-cancelled-event-card__cta {\n width: 100%;\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n margin-top: 1rem;\n}\n\ncalendar-cancel-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n}\n\nbutton-component {\n width: 100%;\n}\n","import { RegisterComponent } from '@/common/register-component';\nimport { Component, Element, Event, EventEmitter, h, Host, Prop, State, Watch } from '@stencil/core';\nimport { NylasEvent, NylasSchedulerConnector, NylasSchedulerErrorResponse } from '../../..';\nimport { NylasScheduling } from '../nylas-scheduling/nylas-scheduling';\nimport { debug } from '@/utils/utils';\nimport { ConfigSettings } from '@/stores/scheduler-store';\nimport i18next from '@/utils/i18n';\nimport { ThemeConfig } from '@nylas/core';\n\n/**\n * The `nylas-cancelled-event-card` component is a UI component that displays the cancelled event card.\n *\n * @part ncec - The cancelled event card host.\n * @part ncec__icon - The calendar icon.\n * @part ncec__title - The title of the cancelled event card.\n * @part ncec__description - The description of the cancelled event card.\n * @part ncec__button-outline - The close button CTA.\n * @part ncec__card - The cancelled event card.\n */\n@Component({\n tag: 'nylas-cancelled-event-card',\n styleUrl: 'nylas-cancelled-event-card.scss',\n shadow: true,\n})\nexport class NylasCancelledEventCard {\n /**\n * The host element.\n * Used to manage the host element of the provider.\n */\n @Element() private host!: HTMLNylasCancelledEventCardElement;\n\n /**\n * @standalone\n * The config settings for the scheduler.\n */\n @Prop() readonly configSettings?: ConfigSettings;\n\n /**\n * @standalone\n * The theme configuration.\n */\n @Prop({ attribute: 'theme-config' }) readonly themeConfig?: any;\n\n /**\n * The participant's name who booked the event / is logged in.\n */\n @Prop() readonly cancelledEventInfo!: Partial<NylasEvent>;\n\n /**\n * Closing state of the cancelled event card button.\n */\n @State() isClosing: boolean = false;\n\n /**\n * This event is fired when the close button is clicked on the cancelled event card.\n */\n @Event() readonly closeCancelEventCardClicked!: EventEmitter<{ errorHandler?: (error: NylasSchedulerErrorResponse) => void }>;\n\n /**\n * This event is fired when an error occurs.\n */\n @Event() readonly cancelledEventCardError!: EventEmitter<NylasSchedulerErrorResponse>;\n\n @Watch('themeConfig')\n themeConfigChanged(newThemeConfig: ThemeConfig) {\n this.applyThemeConfig(newThemeConfig);\n }\n\n connectedCallback() {\n debug(`[nylas-cancelled-event-card] Component connected`);\n }\n\n async componentWillLoad() {\n debug(`[nylas-cancelled-event-card] Component will load`);\n }\n\n async componentDidLoad() {\n debug(`[nylas-cancelled-event-card] Component did load`);\n if (!this.cancelledEventInfo) {\n console.warn(`[nylas-cancelled-event-card] No cancelled event info provided, \"cancelledEventInfo\" prop is required.`);\n }\n this.applyThemeConfig(this.themeConfig);\n }\n\n disconnectedCallback() {\n debug(`[nylas-cancelled-event-card] Component disconnected`);\n }\n\n applyThemeConfig(themeConfig?: ThemeConfig) {\n if (themeConfig) {\n for (const [key, value] of Object.entries(themeConfig)) {\n this.host.style.setProperty(`${key}`, value);\n }\n }\n }\n\n private handleCloseClicked = () => {\n this.isClosing = true;\n const errorHandler = (error: NylasSchedulerErrorResponse) => {\n this.cancelledEventCardError.emit(error);\n this.isClosing = false;\n };\n this.closeCancelEventCardClicked.emit({ errorHandler });\n };\n\n @RegisterComponent<NylasCancelledEventCard, NylasSchedulerConnector, Exclude<NylasScheduling['stores'], undefined>>({\n name: 'nylas-cancelled-event-card',\n stateToProps: new Map([\n ['scheduler.configSettings', 'configSettings'],\n ['scheduler.themeConfig', 'themeConfig'],\n ['scheduler.themeConfig', 'themeConfig'],\n ]),\n eventToProps: {\n closeCancelEventCardClicked: async (_: CustomEvent<{ errorHandler?: (error: NylasSchedulerErrorResponse) => void }>, nylasschedulerconnector: NylasSchedulerConnector) => {\n const result = await nylasschedulerconnector.scheduler.resetCancel();\n\n const { errorHandler } = _.detail;\n if (errorHandler && (!result || 'error' in result)) {\n errorHandler(result);\n }\n },\n cancelledEventCardError: async (event: CustomEvent<NylasSchedulerErrorResponse>, _nylasschedulerconnector: NylasSchedulerConnector) => {\n debug('nylas-cancelled-event-card', 'cancelledEventCardError', event.detail);\n },\n },\n fireRegisterEvent: true,\n })\n render() {\n return (\n <Host part=\"ncec\">\n <div class=\"nylas-cancelled-event-card\" part=\"ncec__card\">\n <div class=\"nylas-cancelled-event-card__calendar-icon\" part=\"ncec__icon\">\n <calendar-cancel-icon />\n </div>\n <h3 class=\"nylas-cancelled-event-card__title\" part=\"ncec__title\">\n {i18next.t('bookingCancelledTitle')}!\n </h3>\n <div class=\"nylas-cancelled-event-card__description\" part=\"ncec__description\">\n {i18next.t('bookingCancelledMessage')} {this.configSettings?.organizer?.name || i18next.t('bookingCancelledMessage_theParticipants')}.\n </div>\n <div class=\"nylas-cancelled-event-card__cta\">\n <button-component variant=\"basic\" disabled={this.isClosing} part=\"ncec__button-outline\" onClick={this.handleCloseClicked}>\n {this.isClosing ? `${i18next.t('closingButton')}...` : `${i18next.t('closeButton')}`}\n </button-component>\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
|
|
1
|
+
{"file":"nylas-cancelled-event-card2.js","mappings":"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","names":["i18next"],"sources":["src/components/scheduler/nylas-cancelled-event-card/nylas-cancelled-event-card.scss?tag=nylas-cancelled-event-card&encapsulation=shadow","src/components/scheduler/nylas-cancelled-event-card/nylas-cancelled-event-card.tsx"],"sourcesContent":["@import '../../../common/styles/variables.scss';\n\n:host {\n display: block;\n @include default-css-variables;\n}\n\n.nylas-cancelled-event-card {\n height: inherit;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n align-items: center;\n font-family: var(--nylas-font-family);\n width: 400px;\n\n @media #{$mobile} {\n width: inherit;\n }\n\n background-color: var(--nylas-base-0);\n color: var(--nylas-base-800);\n border-radius: var(--nylas-border-radius-2x);\n padding: 1.5rem;\n position: relative;\n box-shadow:\n 0px 1px 4px rgba(0, 0, 0, 0.1),\n 0px 3px 6px rgba(0, 0, 0, 0.06);\n}\n\n.nylas-cancelled-event-card__title {\n font-size: 18px;\n font-weight: 600;\n line-height: 24px;\n color: var(--nylas-base-900);\n text-align: center;\n}\n\n.nylas-cancelled-event-description {\n font-size: 16px;\n font-weight: 500;\n color: var(--nylas-base-600);\n}\n\n.nylas-cancelled-event-card__calendar-icon {\n width: 3rem;\n height: 3rem;\n border-radius: 50%;\n position: absolute;\n top: -1.25rem;\n left: 50%;\n transform: translateX(-50%);\n background-color: var(--nylas-base-0);\n border: 1px solid var(--nylas-base-200);\n}\n\n.nylas-cancelled-event-card__cta {\n width: 100%;\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n margin-top: 1rem;\n}\n\ncalendar-cancel-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n}\n\nbutton-component {\n width: 100%;\n}\n","import { RegisterComponent } from '@/common/register-component';\nimport { Component, Element, Event, EventEmitter, h, Host, Prop, State, Watch } from '@stencil/core';\nimport { LANGUAGE_CODE, NylasEvent, NylasSchedulerConnector, NylasSchedulerErrorResponse } from '../../..';\nimport { NylasScheduling } from '../nylas-scheduling/nylas-scheduling';\nimport { debug } from '@/utils/utils';\nimport { ConfigSettings } from '@/stores/scheduler-store';\nimport i18next from '@/utils/i18n';\nimport { ThemeConfig } from '@nylas/core';\n\n/**\n * The `nylas-cancelled-event-card` component is a UI component that displays the cancelled event card.\n *\n * @part ncec - The cancelled event card host.\n * @part ncec__icon - The calendar icon.\n * @part ncec__title - The title of the cancelled event card.\n * @part ncec__description - The description of the cancelled event card.\n * @part ncec__button-outline - The close button CTA.\n * @part ncec__card - The cancelled event card.\n */\n@Component({\n tag: 'nylas-cancelled-event-card',\n styleUrl: 'nylas-cancelled-event-card.scss',\n shadow: true,\n})\nexport class NylasCancelledEventCard {\n /**\n * The host element.\n * Used to manage the host element of the provider.\n */\n @Element() private host!: HTMLNylasCancelledEventCardElement;\n\n /**\n * @standalone\n * The config settings for the scheduler.\n */\n @Prop() readonly configSettings?: ConfigSettings;\n\n /**\n * @standalone\n * The theme configuration.\n */\n @Prop({ attribute: 'theme-config' }) readonly themeConfig?: any;\n\n /**\n * The selected language.\n */\n @Prop({ attribute: 'selected-language' }) readonly selectedLanguage?: LANGUAGE_CODE;\n\n /**\n * The participant's name who booked the event / is logged in.\n */\n @Prop() readonly cancelledEventInfo!: Partial<NylasEvent>;\n\n /**\n * Closing state of the cancelled event card button.\n */\n @State() isClosing: boolean = false;\n\n /**\n * This event is fired when the close button is clicked on the cancelled event card.\n */\n @Event() readonly closeCancelEventCardClicked!: EventEmitter<{ errorHandler?: (error: NylasSchedulerErrorResponse) => void }>;\n\n /**\n * This event is fired when an error occurs.\n */\n @Event() readonly cancelledEventCardError!: EventEmitter<NylasSchedulerErrorResponse>;\n\n @Watch('selectedLanguage')\n selectedLanguageChangedHandler(newVal: LANGUAGE_CODE, oldVal: LANGUAGE_CODE) {\n if (newVal === oldVal) return;\n i18next.changeLanguage(newVal);\n }\n\n @Watch('themeConfig')\n themeConfigChanged(newThemeConfig: ThemeConfig) {\n this.applyThemeConfig(newThemeConfig);\n }\n\n connectedCallback() {\n debug(`[nylas-cancelled-event-card] Component connected`);\n }\n\n async componentWillLoad() {\n debug(`[nylas-cancelled-event-card] Component will load`);\n }\n\n async componentDidLoad() {\n debug(`[nylas-cancelled-event-card] Component did load`);\n if (!this.cancelledEventInfo) {\n console.warn(`[nylas-cancelled-event-card] No cancelled event info provided, \"cancelledEventInfo\" prop is required.`);\n }\n this.applyThemeConfig(this.themeConfig);\n }\n\n disconnectedCallback() {\n debug(`[nylas-cancelled-event-card] Component disconnected`);\n }\n\n applyThemeConfig(themeConfig?: ThemeConfig) {\n if (themeConfig) {\n for (const [key, value] of Object.entries(themeConfig)) {\n this.host.style.setProperty(`${key}`, value);\n }\n }\n }\n\n private handleCloseClicked = () => {\n this.isClosing = true;\n const errorHandler = (error: NylasSchedulerErrorResponse) => {\n this.cancelledEventCardError.emit(error);\n this.isClosing = false;\n };\n this.closeCancelEventCardClicked.emit({ errorHandler });\n };\n\n @RegisterComponent<NylasCancelledEventCard, NylasSchedulerConnector, Exclude<NylasScheduling['stores'], undefined>>({\n name: 'nylas-cancelled-event-card',\n stateToProps: new Map([\n ['scheduler.configSettings', 'configSettings'],\n ['scheduler.themeConfig', 'themeConfig'],\n ['scheduler.selectedLanguage', 'selectedLanguage'],\n ]),\n eventToProps: {\n closeCancelEventCardClicked: async (_: CustomEvent<{ errorHandler?: (error: NylasSchedulerErrorResponse) => void }>, nylasschedulerconnector: NylasSchedulerConnector) => {\n const result = await nylasschedulerconnector.scheduler.resetCancel();\n\n const { errorHandler } = _.detail;\n if (errorHandler && (!result || 'error' in result)) {\n errorHandler(result);\n }\n },\n cancelledEventCardError: async (event: CustomEvent<NylasSchedulerErrorResponse>, _nylasschedulerconnector: NylasSchedulerConnector) => {\n debug('nylas-cancelled-event-card', 'cancelledEventCardError', event.detail);\n },\n },\n fireRegisterEvent: true,\n })\n render() {\n return (\n <Host part=\"ncec\">\n <div class=\"nylas-cancelled-event-card\" part=\"ncec__card\">\n <div class=\"nylas-cancelled-event-card__calendar-icon\" part=\"ncec__icon\">\n <calendar-cancel-icon />\n </div>\n <h3 class=\"nylas-cancelled-event-card__title\" part=\"ncec__title\">\n {i18next.t('bookingCancelledTitle')}!\n </h3>\n <div class=\"nylas-cancelled-event-card__description\" part=\"ncec__description\">\n {i18next.t('bookingCancelledMessage')} {this.configSettings?.organizer?.name || i18next.t('bookingCancelledMessage_theParticipants')}.\n </div>\n <div class=\"nylas-cancelled-event-card__cta\">\n <button-component variant=\"basic\" disabled={this.isClosing} part=\"ncec__button-outline\" onClick={this.handleCloseClicked}>\n {this.isClosing ? `${i18next.t('closingButton')}...` : `${i18next.t('closeButton')}`}\n </button-component>\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
|
|
@@ -163,11 +163,14 @@ const NylasConfirmationEmail = proxyCustomElement(class NylasConfirmationEmail e
|
|
|
163
163
|
render() {
|
|
164
164
|
const organizer = this.participantsState.find(p => p.is_organizer);
|
|
165
165
|
const organizerName = organizer?.name || organizer?.email;
|
|
166
|
-
return (h(Host, { key: 'f97ea75387183c592ff2d7c125c1749cd5786540' }, h("div", { key: '9a28805654e4c8fb4778d821b92c45cb8c616730', class: "nylas-confirmation-email", part: "nce" }, h("div", { key: '3c9f7313a008cfbe506a211b46b361da4447a481', class: "header", part: "nce__header" }, h("div", { key: '4c980155e1b10a49b50202a6c34e45c3d8882e22' }, h("h3", { key: 'e56be66a98d11404875372d40ea1bca5564c1ba1' }, this.confirmationEmail?.booking_confirmed?.title ||
|
|
167
|
-
instance.t('nylasConfirmationEmail.
|
|
166
|
+
return (h(Host, { key: 'f97ea75387183c592ff2d7c125c1749cd5786540' }, h("div", { key: '9a28805654e4c8fb4778d821b92c45cb8c616730', class: "nylas-confirmation-email", part: "nce" }, h("div", { key: '3c9f7313a008cfbe506a211b46b361da4447a481', class: "header", part: "nce__header" }, h("div", { key: '4c980155e1b10a49b50202a6c34e45c3d8882e22' }, h("h3", { key: 'e56be66a98d11404875372d40ea1bca5564c1ba1' }, this.confirmationEmail?.booking_confirmed?.title || organizerName
|
|
167
|
+
? instance.t('nylasConfirmationEmail.headerTitle_withOrganizer', { organizerName: organizerName })
|
|
168
|
+
: instance.t('nylasConfirmationEmail.headerTitle')), h("p", { key: 'bf710ceb827923da51a2ab5e79217491d39cbc66' }, instance.t('nylasConfirmationEmail.headerSubTitle'))), this.isConfirmationEmailOpen ? (h("div", { class: "confirmation-email-toggle", part: "nce__confirmation-email-toggle--container" }, h("span", { class: `chevron ${this.isConfirmationEmailOpen ? 'open' : 'closed'} `, onClick: () => this.toggleConfirmationEmail() }, h("chevron-icon", { width: "24", height: "24" })))) : (h("button-component", { variant: 'basic', clickHandler: event => {
|
|
168
169
|
event.preventDefault();
|
|
169
170
|
this.toggleConfirmationEmail();
|
|
170
|
-
} }, h("edit-icon", { width: "16", height: "16" }), instance.t('nylasConfirmationEmail.editButtonText')))), this.isConfirmationEmailOpen ? (h("div", { class: "nylas-confirmation-email__body", part: "nce__body" }, h("div", { class: "nylas-confirmation-email__section" }, this.nylasBranding && (h("div", { class: "nylas-confirmation-email__row" }, h("label", null, instance.t('nylasConfirmationEmail.nylasBranding.label'), h("span", { class: "label-icon" }, h("tooltip-component", null, h("info-icon", { slot: "tooltip-icon" }), h("span", { slot: "tooltip-content" }, instance.t('nylasConfirmationEmail.nylasBranding.tooltip.desc'))))), h("toggle-switch", { exportparts: "ts_label: nce__toggle-label, ts_input: nce_toggle-input, ts_slider: nce_toggle-slider", name: `confirmation-email-show-branding`, checked: this.confirmationEmail?.show_nylas_branding }))), h("div", { class: "nylas-confirmation-email__row" }, h("div", { class: "subsection" }, h("div", { class: "input-container" }, h("label", null, instance.t('nylasConfirmationEmail.companyLogoUrl.label'), h("span", { class: "label-icon" }, h("tooltip-component", null, h("info-icon", { slot: "tooltip-icon" }), h("span", { slot: "tooltip-content" }, instance.t('nylasConfirmationEmail.companyLogoUrl.tooltip.desc'))))), this.confirmationEmail && (h("input-image-url", { name: "confirmation-email-logo", exportparts: "iiu__logo-input-textfield: nce__input-image-url", errorMessage: this.invalidImageErrorMessage, imageUrl: this.confirmationEmail?.logo ?? '' }))))), h("div", { class: "nylas-confirmation-email__row full-width-col" }, h("div", { class: "subsection" }, h("h3", null, instance.t('nylasConfirmationEmail.emailMessage.header')), h("div", { class: "input-container" }, h("label", { htmlFor: "title" }, instance.t('nylasConfirmationEmail.emailMessage.label'), h("span", { class: "label-icon" }, h("tooltip-component", null, h("info-icon", { slot: "tooltip-icon" }), h("span", { slot: "tooltip-content" }, instance.t('nylasConfirmationEmail.emailMessage.tooltip.desc'))))), h("input-component", { name: "confirmation-email-title", maxLength: 60, placeholder:
|
|
171
|
+
} }, h("edit-icon", { width: "16", height: "16" }), instance.t('nylasConfirmationEmail.editButtonText')))), this.isConfirmationEmailOpen ? (h("div", { class: "nylas-confirmation-email__body", part: "nce__body" }, h("div", { class: "nylas-confirmation-email__section" }, this.nylasBranding && (h("div", { class: "nylas-confirmation-email__row" }, h("label", null, instance.t('nylasConfirmationEmail.nylasBranding.label'), h("span", { class: "label-icon" }, h("tooltip-component", null, h("info-icon", { slot: "tooltip-icon" }), h("span", { slot: "tooltip-content" }, instance.t('nylasConfirmationEmail.nylasBranding.tooltip.desc'))))), h("toggle-switch", { exportparts: "ts_label: nce__toggle-label, ts_input: nce_toggle-input, ts_slider: nce_toggle-slider", name: `confirmation-email-show-branding`, checked: this.confirmationEmail?.show_nylas_branding }))), h("div", { class: "nylas-confirmation-email__row" }, h("div", { class: "subsection" }, h("div", { class: "input-container" }, h("label", null, instance.t('nylasConfirmationEmail.companyLogoUrl.label'), h("span", { class: "label-icon" }, h("tooltip-component", null, h("info-icon", { slot: "tooltip-icon" }), h("span", { slot: "tooltip-content" }, instance.t('nylasConfirmationEmail.companyLogoUrl.tooltip.desc'))))), this.confirmationEmail && (h("input-image-url", { name: "confirmation-email-logo", exportparts: "iiu__logo-input-textfield: nce__input-image-url", errorMessage: this.invalidImageErrorMessage, imageUrl: this.confirmationEmail?.logo ?? '' }))))), h("div", { class: "nylas-confirmation-email__row full-width-col" }, h("div", { class: "subsection" }, h("h3", null, instance.t('nylasConfirmationEmail.emailMessage.header')), h("div", { class: "input-container" }, h("label", { htmlFor: "title" }, instance.t('nylasConfirmationEmail.emailMessage.label'), h("span", { class: "label-icon" }, h("tooltip-component", null, h("info-icon", { slot: "tooltip-icon" }), h("span", { slot: "tooltip-content" }, instance.t('nylasConfirmationEmail.emailMessage.tooltip.desc'))))), h("input-component", { name: "confirmation-email-title", maxLength: 60, placeholder: organizerName
|
|
172
|
+
? instance.t('nylasConfirmationEmail.headerTitle_withOrganizer', { organizerName: organizerName })
|
|
173
|
+
: instance.t('nylasConfirmationEmail.headerTitle'), defaultValue: this.confirmationEmail?.booking_confirmed?.title ?? '' })), h("div", { class: "input-container" }, h("textarea-component", { label: instance.t('nylasConfirmationEmail.emailMessage.additionalInfoLabel'), name: "confirmation-email-body", id: "confirmation-email-body", placeholder: instance.t('nylasConfirmationEmail.emailMessage.additionalInfoPlaceholder'), tooltip: instance.t('nylasConfirmationEmail.emailMessage.additionalInfoTooltip'), maxLength: 500, defaultValue: this.confirmationEmail?.booking_confirmed?.body ?? '' }))))))) : (h("div", { class: "nylas-confirmation-email__summary", part: "nce__summary" }, h("p", null, h("span", { class: "summary-icon" }, h("person-clipboard-icon", null)), instance.t('nylasConfirmationEmail.allHosts')), h("p", null, h("span", { class: "summary-icon" }, h("clock-icon", null)), instance.t('nylasConfirmationEmail.immediatelyUponBooking')))))));
|
|
171
174
|
}
|
|
172
175
|
static get formAssociated() { return true; }
|
|
173
176
|
get host() { return this; }
|