@nylas/web-elements 0.0.0-test-20250319204140 → 0.0.0-test-20250320184617
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 +26 -26
- package/dist/cdn/nylas-scheduling/nylas-scheduling.es.js +4813 -4805
- package/dist/cjs/button-component_2.cjs.entry.js +1 -1
- package/dist/cjs/button-component_2.cjs.entry.js.map +1 -1
- package/dist/cjs/calendar-agenda-fill-icon_36.cjs.entry.js +17 -18
- package/dist/cjs/calendar-agenda-fill-icon_36.cjs.entry.js.map +1 -1
- package/dist/cjs/chevron-icon_3.cjs.entry.js +1 -1
- package/dist/cjs/chevron-icon_3.cjs.entry.js.map +1 -1
- package/dist/cjs/google-logo-icon_6.cjs.entry.js +5 -5
- package/dist/cjs/google-logo-icon_6.cjs.entry.js.map +1 -1
- package/dist/cjs/input-dropdown_2.cjs.entry.js +2 -2
- package/dist/cjs/input-dropdown_2.cjs.entry.js.map +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/multi-select-dropdown_2.cjs.entry.js +2 -2
- package/dist/cjs/multi-select-dropdown_2.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-booked-event-card_12.cjs.entry.js +14 -10
- package/dist/cjs/nylas-booked-event-card_12.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-key-points.cjs.entry.js +1 -1
- package/dist/cjs/nylas-key-points.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-provider.cjs.entry.js +1 -1
- package/dist/cjs/nylas-provider.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-scheduling.cjs.entry.js +1 -1
- package/dist/cjs/nylas-scheduling.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-web-elements.cjs.js +1 -1
- package/dist/cjs/{scheduler-store-c1fc5cf3.js → scheduler-store-df3a9a3a.js} +9 -1
- package/dist/cjs/scheduler-store-df3a9a3a.js.map +1 -0
- package/dist/collection/components/design-system/button-component/button-component.js +4 -3
- package/dist/collection/components/design-system/button-component/button-component.js.map +1 -1
- package/dist/collection/components/design-system/input-dropdown/input-dropdown.js +10 -7
- package/dist/collection/components/design-system/input-dropdown/input-dropdown.js.map +1 -1
- package/dist/collection/components/design-system/multi-select-dropdown/multi-select-dropdown.js +5 -4
- package/dist/collection/components/design-system/multi-select-dropdown/multi-select-dropdown.js.map +1 -1
- package/dist/collection/components/design-system/select-dropdown/select-dropdown.js +13 -9
- package/dist/collection/components/design-system/select-dropdown/select-dropdown.js.map +1 -1
- package/dist/collection/components/design-system/time-period-selector/time-period-selector.js +3 -3
- package/dist/collection/components/design-system/time-period-selector/time-period-selector.js.map +1 -1
- package/dist/collection/components/nylas-notebook/nylas-key-points/nylas-key-points.js +4 -3
- package/dist/collection/components/nylas-notebook/nylas-key-points/nylas-key-points.js.map +1 -1
- package/dist/collection/components/nylas-provider/nylas-provider.js +1 -1
- package/dist/collection/components/scheduler/nylas-booked-event-card/nylas-booked-event-card.js +13 -11
- 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 +3 -3
- 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 +8 -6
- package/dist/collection/components/scheduler/nylas-booking-form/test/nylas-booking-form.spec.js.map +1 -1
- package/dist/collection/components/scheduler/nylas-organizer-confirmation-card/nylas-organizer-confirmation-card.js +8 -10
- 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.js +2 -2
- package/dist/collection/components/scheduler/nylas-scheduling/nylas-scheduling.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-buffer-time/nylas-buffer-time.js +2 -2
- package/dist/collection/components/scheduler-editor/nylas-buffer-time/nylas-buffer-time.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-editor-tabs-group/nylas-editor-tabs-group.js +36 -21
- package/dist/collection/components/scheduler-editor/nylas-editor-tabs-group/nylas-editor-tabs-group.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-event-duration/nylas-event-duration.js +15 -16
- package/dist/collection/components/scheduler-editor/nylas-event-duration/nylas-event-duration.js.map +1 -1
- package/dist/collection/connector/nylas-scheduler-connector/errors/index.js +1 -29
- package/dist/collection/connector/nylas-scheduler-connector/errors/index.js.map +1 -1
- package/dist/collection/connector/shared/api/auth.js.map +1 -1
- package/dist/collection/connector/shared/api/scheduler.js.map +1 -1
- package/dist/collection/types/index.js +29 -0
- package/dist/collection/types/index.js.map +1 -1
- package/dist/components/button-component2.js +1 -1
- package/dist/components/button-component2.js.map +1 -1
- package/dist/components/input-dropdown2.js +1 -1
- package/dist/components/input-dropdown2.js.map +1 -1
- package/dist/components/multi-select-dropdown2.js +2 -2
- package/dist/components/multi-select-dropdown2.js.map +1 -1
- package/dist/components/nylas-booked-event-card2.js +9 -5
- package/dist/components/nylas-booked-event-card2.js.map +1 -1
- package/dist/components/nylas-booking-form2.js +3 -3
- package/dist/components/nylas-booking-form2.js.map +1 -1
- package/dist/components/nylas-buffer-time2.js +2 -2
- package/dist/components/nylas-buffer-time2.js.map +1 -1
- package/dist/components/nylas-editor-tabs-group2.js +5 -5
- package/dist/components/nylas-editor-tabs-group2.js.map +1 -1
- package/dist/components/nylas-event-duration2.js +15 -16
- package/dist/components/nylas-event-duration2.js.map +1 -1
- package/dist/components/nylas-key-points.js +1 -1
- package/dist/components/nylas-key-points.js.map +1 -1
- package/dist/components/nylas-organizer-confirmation-card2.js +4 -4
- package/dist/components/nylas-organizer-confirmation-card2.js.map +1 -1
- package/dist/components/nylas-provider.js.map +1 -1
- package/dist/components/nylas-scheduling.js.map +1 -1
- package/dist/components/scheduler-store.js +8 -0
- package/dist/components/scheduler-store.js.map +1 -1
- package/dist/components/select-dropdown2.js +1 -1
- package/dist/components/select-dropdown2.js.map +1 -1
- package/dist/components/time-period-selector2.js +1 -1
- package/dist/components/time-period-selector2.js.map +1 -1
- package/dist/esm/button-component_2.entry.js +1 -1
- package/dist/esm/button-component_2.entry.js.map +1 -1
- package/dist/esm/calendar-agenda-fill-icon_36.entry.js +17 -18
- package/dist/esm/calendar-agenda-fill-icon_36.entry.js.map +1 -1
- package/dist/esm/chevron-icon_3.entry.js +1 -1
- package/dist/esm/chevron-icon_3.entry.js.map +1 -1
- package/dist/esm/google-logo-icon_6.entry.js +5 -5
- package/dist/esm/google-logo-icon_6.entry.js.map +1 -1
- package/dist/esm/input-dropdown_2.entry.js +2 -2
- package/dist/esm/input-dropdown_2.entry.js.map +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/multi-select-dropdown_2.entry.js +2 -2
- package/dist/esm/multi-select-dropdown_2.entry.js.map +1 -1
- package/dist/esm/nylas-booked-event-card_12.entry.js +14 -10
- package/dist/esm/nylas-booked-event-card_12.entry.js.map +1 -1
- package/dist/esm/nylas-key-points.entry.js +1 -1
- package/dist/esm/nylas-key-points.entry.js.map +1 -1
- package/dist/esm/nylas-provider.entry.js +1 -1
- package/dist/esm/nylas-provider.entry.js.map +1 -1
- package/dist/esm/nylas-scheduling.entry.js +1 -1
- package/dist/esm/nylas-scheduling.entry.js.map +1 -1
- package/dist/esm/nylas-web-elements.js +1 -1
- package/dist/esm/{scheduler-store-bbb4cf8d.js → scheduler-store-ef022be9.js} +9 -1
- package/dist/esm/scheduler-store-ef022be9.js.map +1 -0
- 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-c3cfe486.entry.js → p-09bbd467.entry.js} +2 -2
- package/dist/nylas-web-elements/p-09bbd467.entry.js.map +1 -0
- package/dist/nylas-web-elements/{p-6371e0a3.entry.js → p-0d80f50b.entry.js} +2 -2
- package/dist/nylas-web-elements/p-0d80f50b.entry.js.map +1 -0
- package/dist/nylas-web-elements/p-13a6c977.entry.js +2 -0
- package/dist/nylas-web-elements/p-13a6c977.entry.js.map +1 -0
- package/dist/nylas-web-elements/{p-14569ed8.entry.js → p-1fb32e0e.entry.js} +2 -2
- package/dist/nylas-web-elements/p-1fb32e0e.entry.js.map +1 -0
- package/dist/nylas-web-elements/{p-19f6fcf8.entry.js → p-3ca36162.entry.js} +2 -2
- package/dist/nylas-web-elements/p-3ca36162.entry.js.map +1 -0
- package/dist/nylas-web-elements/{p-78bd1f85.entry.js → p-51434e4a.entry.js} +2 -2
- package/dist/nylas-web-elements/p-51434e4a.entry.js.map +1 -0
- package/dist/nylas-web-elements/p-731a856b.js +2 -0
- package/dist/nylas-web-elements/p-731a856b.js.map +1 -0
- package/dist/nylas-web-elements/p-7b787c73.entry.js +8 -0
- package/dist/nylas-web-elements/p-7b787c73.entry.js.map +1 -0
- package/dist/nylas-web-elements/{p-f7ea608d.entry.js → p-a906d005.entry.js} +2 -2
- package/dist/nylas-web-elements/p-a906d005.entry.js.map +1 -0
- package/dist/nylas-web-elements/p-ab3ba8dc.entry.js +2 -0
- package/dist/nylas-web-elements/p-ab3ba8dc.entry.js.map +1 -0
- package/dist/nylas-web-elements/{p-91bc630c.entry.js → p-b1c57792.entry.js} +2 -2
- package/dist/nylas-web-elements/p-b1c57792.entry.js.map +1 -0
- package/dist/types/components/design-system/button-component/button-component.d.ts +1 -2
- package/dist/types/components/design-system/input-dropdown/input-dropdown.d.ts +1 -6
- package/dist/types/components/design-system/multi-select-dropdown/multi-select-dropdown.d.ts +1 -7
- package/dist/types/components/design-system/select-dropdown/select-dropdown.d.ts +1 -6
- package/dist/types/components/design-system/time-period-selector/time-period-selector.d.ts +1 -1
- package/dist/types/components/nylas-notebook/nylas-key-points/nylas-key-points.d.ts +1 -6
- package/dist/types/components/scheduler/nylas-booked-event-card/nylas-booked-event-card.d.ts +2 -1
- package/dist/types/components/scheduler/nylas-booking-form/nylas-booking-form.d.ts +1 -1
- package/dist/types/components/scheduler/nylas-organizer-confirmation-card/nylas-organizer-confirmation-card.d.ts +1 -1
- package/dist/types/components/scheduler-editor/nylas-editor-tabs-group/nylas-editor-tabs-group.d.ts +17 -16
- package/dist/types/components/scheduler-editor/nylas-event-duration/nylas-event-duration.d.ts +2 -2
- package/dist/types/components.d.ts +17 -17
- package/dist/types/connector/nylas-connector/index.d.ts +1 -1
- package/dist/types/connector/nylas-scheduler-connector/errors/index.d.ts +1 -31
- package/dist/types/connector/shared/api/auth.d.ts +1 -1
- package/dist/types/connector/shared/api/scheduler.d.ts +1 -1
- package/dist/types/types/index.d.ts +36 -0
- package/package.json +2 -2
- package/dist/cjs/scheduler-store-c1fc5cf3.js.map +0 -1
- package/dist/esm/scheduler-store-bbb4cf8d.js.map +0 -1
- package/dist/nylas-web-elements/p-14569ed8.entry.js.map +0 -1
- package/dist/nylas-web-elements/p-19f6fcf8.entry.js.map +0 -1
- package/dist/nylas-web-elements/p-463d9c42.entry.js +0 -8
- package/dist/nylas-web-elements/p-463d9c42.entry.js.map +0 -1
- package/dist/nylas-web-elements/p-6371e0a3.entry.js.map +0 -1
- package/dist/nylas-web-elements/p-78bd1f85.entry.js.map +0 -1
- package/dist/nylas-web-elements/p-91bc630c.entry.js.map +0 -1
- package/dist/nylas-web-elements/p-ac757a7b.entry.js +0 -2
- package/dist/nylas-web-elements/p-ac757a7b.entry.js.map +0 -1
- package/dist/nylas-web-elements/p-b0f18064.entry.js +0 -2
- package/dist/nylas-web-elements/p-b0f18064.entry.js.map +0 -1
- package/dist/nylas-web-elements/p-c3cfe486.entry.js.map +0 -1
- package/dist/nylas-web-elements/p-f0c25e38.js +0 -2
- package/dist/nylas-web-elements/p-f0c25e38.js.map +0 -1
- package/dist/nylas-web-elements/p-f7ea608d.entry.js.map +0 -1
package/dist/collection/components/scheduler/nylas-booking-form/test/nylas-booking-form.spec.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nylas-booking-form.spec.js","sourceRoot":"","sources":["../../../../../src/components/scheduler/nylas-booking-form/test/nylas-booking-form.spec.tsx"],"names":[],"mappings":"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","sourcesContent":["import { newSpecPage } from '@stencil/core/testing';\nimport { NylasBookingForm } from '../nylas-booking-form';\nimport { InputComponent } from '../../../design-system/input-component/input-component';\nimport { h } from '@stencil/core';\nimport { RadioButtonGroup } from '../../../design-system/radio-button-group/radio-button-group';\nimport { CheckboxComponent } from '../../../design-system/checkbox-component/checkbox-component';\nimport { TextareaComponent } from '../../../design-system/textarea-component/textarea-component';\nimport { SelectDropdown } from '../../../design-system/select-dropdown/select-dropdown';\n\nconst configSettings = {\n scheduler: {\n available_days_in_future: 30,\n min_cancellation_notice: 0,\n min_booking_notice: 60,\n hide_rescheduling_options: false,\n hide_cancellation_options: false,\n hide_additional_guests: false,\n additional_fields: {\n additional_email: {\n label: 'Additional email',\n type: 'email',\n required: false,\n order: 2,\n default: 'additional_email@example.com',\n },\n checkbox: {\n label: 'Checkbox Label',\n type: 'checkbox',\n required: false,\n order: 6,\n },\n dropdown: {\n label: 'Dropdown Label',\n type: 'dropdown',\n required: false,\n order: 3,\n options: ['Yes', 'No'],\n },\n long_text: {\n label: 'Long text Label',\n type: 'multi_line_text',\n required: false,\n order: 5,\n },\n phone_number: {\n label: 'Phone Number',\n type: 'phone_number',\n required: false,\n order: 1,\n },\n radio_button: {\n label: 'Radio Button Label',\n type: 'radio_button',\n required: false,\n order: 7,\n options: ['Yes', 'No'],\n },\n short_text: {\n label: 'Short Text Label',\n type: 'text',\n required: false,\n order: 4,\n },\n },\n email_template: {\n booking_confirmed: {},\n },\n },\n organizer: {\n email: 'test@nylas.com',\n name: 'Test User',\n },\n};\n\ndescribe('nylas-booking-form', () => {\n beforeEach(() => {\n // Clear and reset the mock before each test if needed\n jest.clearAllMocks();\n });\n let consoleErrorSpy;\n\n beforeEach(() => {\n // Spy on console.error before each test\n consoleErrorSpy = jest.spyOn(console, 'error').mockImplementation(() => {});\n });\n\n afterEach(() => {\n // Restore the original console.error after each test\n consoleErrorSpy.mockRestore();\n });\n\n it('renders correctly with initial props', async () => {\n const bookingInfo = {\n primaryParticipant: {\n name: 'John Doe',\n email: 'john.doe@example.com',\n },\n };\n const page = await newSpecPage({\n components: [NylasBookingForm, InputComponent],\n html: `<nylas-booking-form></nylas-booking-form>`,\n });\n\n if (!page.root) {\n throw new Error('Component did not render.');\n }\n\n page.root.bookingInfo = bookingInfo;\n await page.waitForChanges();\n expect(page.rootInstance.name).toEqual('John Doe');\n expect(page.rootInstance.email).toEqual('john.doe@example.com');\n expect(page.root).toMatchSnapshot();\n });\n\n it('renders an email error message when email is invalid', async () => {\n const page = await newSpecPage({\n components: [NylasBookingForm, InputComponent],\n html: `<nylas-booking-form></nylas-booking-form>`,\n });\n\n const nameInput = page?.root?.shadowRoot?.querySelector('[part=\"nbf__input-textfield\"][id=\"name\"]')?.shadowRoot?.querySelector('input') as HTMLInputElement;\n nameInput.value = 'John Doe';\n nameInput.dispatchEvent(new Event('input'));\n\n const emailInput = page?.root?.shadowRoot?.querySelector('[part=\"nbf__input-textfield\"][id=\"email\"]')?.shadowRoot?.querySelector('input') as HTMLInputElement;\n emailInput.value = 'invalid-email';\n emailInput.dispatchEvent(new Event('input'));\n\n // Submit the form to trigger validation\n const form = page?.root?.shadowRoot?.querySelector('form') as HTMLFormElement;\n form.dispatchEvent(new Event('submit'));\n\n await page.waitForChanges();\n\n const errorMessage = page?.root?.shadowRoot\n ?.querySelector('.input-wrapper:nth-child(2) [part=\"nbf__input-textfield\"][id=\"email\"]')\n ?.shadowRoot?.querySelector('.help-text') as HTMLSpanElement;\n console.debug(errorMessage.className);\n expect(errorMessage.textContent).toBe('Email has invalid format.');\n });\n\n it('renders correctly with additional fields from the config', async () => {\n const page = await newSpecPage({\n components: [NylasBookingForm, InputComponent],\n html: `<nylas-booking-form></nylas-booking-form>`,\n });\n\n if (!page.root) {\n throw new Error('Component did not render.');\n }\n\n page.root.configSettings = configSettings;\n await page.waitForChanges();\n expect(page.root).toMatchSnapshot();\n const additionalEmailInputComponent = page?.root?.shadowRoot?.querySelector('[part=\"nbf__input-textfield\"][id=\"additional_email\"]') as HTMLInputElement;\n const additionalEmailInput = additionalEmailInputComponent.shadowRoot?.querySelector('input') as HTMLInputElement;\n\n expect(additionalEmailInput.value).not.toBeNull();\n expect(additionalEmailInput.value).toEqual('additional_email@example.com');\n additionalEmailInputComponent.value = 'abcd@gmail.com';\n\n page.root?.dispatchEvent(\n new CustomEvent('nylasFormInputChanged', {\n detail: {\n value: additionalEmailInputComponent.value,\n name: 'additional_email',\n error: '',\n label: 'Additional email',\n },\n }),\n );\n\n const checkboxInput = page?.root?.shadowRoot?.querySelector('[part=\"nbf__checkbox-component\"][id=\"checkbox\"]') as HTMLInputElement;\n checkboxInput.checked = true;\n\n page.root?.dispatchEvent(\n new CustomEvent('nylasFormCheckboxToggled', {\n detail: {\n checked: checkboxInput.checked,\n name: 'checkbox',\n error: '',\n label: 'Checkbox Label',\n },\n }),\n );\n\n await page.waitForChanges();\n expect(page.rootInstance.additionalFields).toEqual({ additional_email: 'abcd@gmail.com', checkbox: 'true' });\n });\n\n it('renders the values passed in the booking info by overriding the defaults', async () => {\n const page = await newSpecPage({\n components: [NylasBookingForm, InputComponent],\n html: `<nylas-booking-form></nylas-booking-form>`,\n });\n\n if (!page.root) {\n throw new Error('Component did not render.');\n }\n\n page.root.configSettings = configSettings;\n page.root.bookingInfo = {\n primaryParticipant: {\n name: 'John Doe',\n email: 'johndoe@example.com',\n },\n additionalFields: {\n additional_email: {\n value: 'xyz@example.com',\n type: 'email',\n },\n },\n };\n\n await page.waitForChanges();\n expect(page.root).toMatchSnapshot();\n const additionalEmailInputComponent = page?.root?.shadowRoot?.querySelector('[part=\"nbf__input-textfield\"][id=\"additional_email\"]') as HTMLInputElement;\n const additionalEmailInput = additionalEmailInputComponent.shadowRoot?.querySelector('input') as HTMLInputElement;\n\n expect(additionalEmailInput.value).not.toBeNull();\n expect(additionalEmailInput.value).toEqual('xyz@example.com');\n\n await page.waitForChanges();\n });\n\n it('renders the fields as read only if bookingInfo passes readOnly additional fields', async () => {\n const page = await newSpecPage({\n components: [NylasBookingForm, InputComponent, RadioButtonGroup, CheckboxComponent, TextareaComponent, SelectDropdown],\n html: `<nylas-booking-form></nylas-booking-form>`,\n });\n\n if (!page.root) {\n throw new Error('Component did not render.');\n }\n\n page.root.configSettings = configSettings;\n page.root.bookingInfo = {\n primaryParticipant: {\n name: 'John Doe',\n email: 'johndoe@example.com',\n nameReadOnly: true,\n emailReadOnly: true,\n },\n additionalFields: {\n additional_email: {\n value: 'xyz@example.com',\n type: 'email',\n readOnly: true,\n },\n checkbox: {\n value: 'true',\n type: 'checkbox',\n readOnly: true,\n },\n dropdown: {\n value: 'No',\n type: 'dropdown',\n readOnly: true,\n },\n long_text: {\n value: 'Long text Label',\n type: 'multi_line_text',\n readOnly: true,\n },\n radio_button: {\n value: 'No',\n type: 'radio_button',\n readOnly: true,\n },\n },\n };\n\n await page.waitForChanges();\n expect(page.root).toMatchSnapshot();\n const nameInputComponent = page?.root?.shadowRoot?.querySelector('[part=\"nbf__input-textfield\"][id=\"name\"]') as HTMLInputElement;\n const nameInput = nameInputComponent.shadowRoot?.querySelector('input') as HTMLInputElement;\n expect(nameInput.value).not.toBeNull();\n expect(nameInput.value).toEqual('John Doe');\n expect(nameInput).toHaveAttribute('readOnly');\n\n const emailInputComponent = page?.root?.shadowRoot?.querySelector('[part=\"nbf__input-textfield\"][id=\"email\"]') as HTMLInputElement;\n const emailInput = emailInputComponent.shadowRoot?.querySelector('input') as HTMLInputElement;\n expect(emailInput.value).not.toBeNull();\n expect(emailInput.value).toEqual('johndoe@example.com');\n expect(emailInput).toHaveAttribute('readOnly');\n\n const additionalEmailInputComponent = page?.root?.shadowRoot?.querySelector('[part=\"nbf__input-textfield\"][id=\"additional_email\"]') as HTMLInputElement;\n const additionalEmailInput = additionalEmailInputComponent.shadowRoot?.querySelector('input') as HTMLInputElement;\n\n expect(additionalEmailInput.value).not.toBeNull();\n expect(additionalEmailInput.value).toEqual('xyz@example.com');\n expect(additionalEmailInput).toHaveAttribute('readOnly');\n\n const dropdown = page?.root?.shadowRoot?.querySelector('select-dropdown') as HTMLSelectDropdownElement;\n const dropdownButton = dropdown.shadowRoot?.querySelector('button') as HTMLButtonElement;\n expect(dropdownButton).toHaveAttribute('disabled');\n\n const checkbox = page?.root?.shadowRoot?.querySelector('checkbox-component') as HTMLCheckboxComponentElement;\n const checkboxInput = checkbox.shadowRoot?.querySelector('input') as HTMLInputElement;\n expect(checkboxInput).toHaveAttribute('disabled');\n expect(checkboxInput).toHaveAttribute('checked');\n\n const radioGroup = page?.root?.shadowRoot?.querySelector('radio-button-group') as HTMLRadioButtonGroupElement;\n const radioInput = radioGroup.shadowRoot?.querySelector('input') as HTMLInputElement;\n expect(radioInput).toHaveAttribute('disabled');\n\n const textarea = page?.root?.shadowRoot?.querySelector('textarea-component') as HTMLTextareaComponentElement;\n const textareaInput = textarea.shadowRoot?.querySelector('textarea') as HTMLTextAreaElement;\n expect(textareaInput).toHaveAttribute('readonly');\n });\n\n xit('renders guest email input on add guest button click', async () => {\n const page = await newSpecPage({\n components: [NylasBookingForm, InputComponent],\n html: `<nylas-booking-form></nylas-booking-form>`,\n });\n\n const addGuestButton = page?.root?.shadowRoot?.querySelector('.add-guest') as HTMLButtonElement;\n addGuestButton.click();\n\n await page.waitForChanges();\n\n const guestEmailInputs = page?.root?.shadowRoot?.querySelectorAll('[part=\"nbf__input-textfield\"][id^=\"guest-email-\"]') as NodeListOf<HTMLInputElement>;\n expect(guestEmailInputs.length).toEqual(1);\n });\n\n xit('allows multiple guest emails to be added', async () => {\n const page = await newSpecPage({\n components: [NylasBookingForm, InputComponent],\n html: `<nylas-booking-form></nylas-booking-form>`,\n });\n\n // Simulate clicking the 'Add Guest' button twice\n const addGuestButton = page?.root?.shadowRoot?.querySelector('.add-guest') as HTMLButtonElement;\n addGuestButton.click();\n addGuestButton.click();\n await page.waitForChanges();\n\n // Check if two guest email inputs are present\n const guestEmailInputs = page?.root?.shadowRoot?.querySelectorAll('[id^=\"guest-email-\"]') as NodeListOf<HTMLInputElement>;\n expect(guestEmailInputs.length).toBe(2);\n });\n\n xit('removes a guest email input on remove button click', async () => {\n const page = await newSpecPage({\n components: [NylasBookingForm, InputComponent],\n html: `<nylas-booking-form></nylas-booking-form>`,\n });\n\n // Add two guests then remove one\n const addGuestButton = page?.root?.shadowRoot?.querySelector('.add-guest') as HTMLButtonElement;\n addGuestButton.click();\n addGuestButton.click();\n await page.waitForChanges();\n\n const removeGuestButton = page?.root?.shadowRoot?.querySelector('.remove-guest') as HTMLButtonElement;\n removeGuestButton.click();\n await page.waitForChanges();\n\n // Check if one guest email input remains\n const guestEmailInputs = page?.root?.shadowRoot?.querySelectorAll('[id^=\"guest-email-\"]') as NodeListOf<HTMLInputElement>;\n expect(guestEmailInputs.length).toBe(1);\n });\n\n it('emits nameChanged and emailChanged events on input change', async () => {\n const page = await newSpecPage({\n components: [NylasBookingForm, InputComponent],\n html: `<nylas-booking-form></nylas-booking-form>`,\n });\n\n const nameChangedSpy = jest.fn();\n const emailChangedSpy = jest.fn();\n\n page.win.addEventListener('nameChanged', nameChangedSpy);\n page.win.addEventListener('emailChanged', emailChangedSpy);\n\n const nameInput = page?.root?.shadowRoot?.querySelector('[part=\"nbf__input-textfield\"][id=\"name\"]')?.shadowRoot?.querySelector('label input') as HTMLInputElement;\n nameInput.value = 'John Doe';\n\n page.root?.dispatchEvent(\n new CustomEvent('nylasFormInputChanged', {\n detail: {\n value: nameInput.value,\n name: 'name',\n error: '',\n },\n }),\n );\n\n const emailInput = page?.root?.shadowRoot?.querySelector('[part=\"nbf__input-textfield\"][id=\"email\"]')?.shadowRoot?.querySelector('label input') as HTMLInputElement;\n emailInput.value = 'john.doe@example.com';\n\n page.root?.dispatchEvent(\n new CustomEvent('nylasFormInputChanged', {\n detail: {\n value: emailInput.value,\n name: 'email',\n error: '',\n },\n }),\n );\n\n await page.waitForChanges();\n\n expect(nameChangedSpy.mock.calls[0][0].detail).toEqual('John Doe');\n expect(emailChangedSpy.mock.calls[0][0].detail).toEqual('john.doe@example.com');\n });\n\n it('emits backButtonClicked event on back button click', async () => {\n const page = await newSpecPage({\n components: [NylasBookingForm, InputComponent],\n html: `<nylas-booking-form></nylas-booking-form>`,\n });\n\n const backButton = page?.root?.shadowRoot?.querySelector('.back') as HTMLButtonElement;\n const backButtonClickedSpy = jest.fn();\n page.win.addEventListener('backButtonClicked', backButtonClickedSpy);\n backButton.click();\n await page.waitForChanges();\n expect(backButtonClickedSpy).toHaveBeenCalled();\n });\n\n it('on entering name input and focusing on email input there are no errors', async () => {\n const page = await newSpecPage({\n components: [NylasBookingForm, InputComponent],\n html: `<nylas-booking-form></nylas-booking-form>`,\n });\n\n // Simulate actions\n\n const nameInput = page?.root?.shadowRoot?.querySelector('[part=\"nbf__input-textfield\"][id=\"name\"]')?.shadowRoot?.querySelector('input') as HTMLInputElement;\n const emailInput = page?.root?.shadowRoot?.querySelector('[part=\"nbf__input-textfield\"][id=\"email\"]')?.shadowRoot?.querySelector('input') as HTMLInputElement;\n\n nameInput.focus();\n nameInput.value = 'text';\n emailInput.focus();\n await page.waitForChanges();\n\n expect(consoleErrorSpy).not.toHaveBeenCalled();\n });\n\n it('validates name input correctly', async () => {\n const page = await newSpecPage({\n components: [NylasBookingForm, InputComponent],\n html: `<nylas-booking-form></nylas-booking-form>`,\n });\n\n // Simulate entering a valid name\n\n const nameInput = page?.root?.shadowRoot?.querySelector('[part=\"nbf__input-textfield\"][id=\"name\"]')?.shadowRoot?.querySelector('input') as HTMLInputElement;\n nameInput.value = 'John Doe';\n nameInput.dispatchEvent(new Event('input'));\n const form = page?.root?.shadowRoot?.querySelector('form') as HTMLFormElement;\n form.dispatchEvent(new Event('submit'));\n await page.waitForChanges();\n\n // Assert no validation error message for name\n let errorMessage = page?.root?.shadowRoot?.querySelector('.input-wrapper [part=\"nbf__input-textfield\"][id=\"name\"]')?.shadowRoot?.querySelector('.help-text') as HTMLSpanElement;\n expect(errorMessage).toBeNull();\n\n // Simulate clearing the name, triggering validation error\n nameInput.value = '';\n nameInput.dispatchEvent(new Event('input'));\n\n form.dispatchEvent(new Event('submit'));\n await page.waitForChanges();\n\n // Assert validation error message is shown for name\n errorMessage = page?.root?.shadowRoot?.querySelector('.input-wrapper [part=\"nbf__input-textfield\"][id=\"name\"]')?.shadowRoot?.querySelector('.help-text') as HTMLSpanElement;\n expect(errorMessage.textContent).toBe('Name is required.');\n });\n\n it('validates email input correctly', async () => {\n const page = await newSpecPage({\n components: [NylasBookingForm, InputComponent],\n html: `<nylas-booking-form></nylas-booking-form>`,\n });\n\n const nameInput = page?.root?.shadowRoot?.querySelector('[part=\"nbf__input-textfield\"][id=\"name\"]')?.shadowRoot?.querySelector('label input[name=\"name\"]') as HTMLInputElement;\n nameInput.value = 'John Doe';\n nameInput.dispatchEvent(new Event('input'));\n\n // Simulate entering a valid email\n const emailInput = page?.root?.shadowRoot\n ?.querySelector('[part=\"nbf__input-textfield\"][id=\"email\"]')\n ?.shadowRoot?.querySelector('label input[name=\"email\"]') as HTMLInputElement;\n emailInput.value = 'john.doe@example.com';\n emailInput.dispatchEvent(new Event('input'));\n\n let form = page?.root?.shadowRoot?.querySelector('form') as HTMLFormElement;\n form.dispatchEvent(new Event('submit'));\n await page.waitForChanges();\n\n // Assert no validation error message for email\n let errorMessage = page?.root?.shadowRoot\n ?.querySelector('.input-wrapper:nth-child(2) [part=\"nbf__input-textfield\"][id=\"email\"]')\n ?.shadowRoot?.querySelector('.help-text') as HTMLSpanElement;\n await page.waitForChanges();\n\n expect(errorMessage).toBeNull();\n\n // Simulate clearing the email, triggering validation error\n emailInput.value = '';\n emailInput.dispatchEvent(new Event('input'));\n await page.waitForChanges();\n form = page?.root?.shadowRoot?.querySelector('form') as HTMLFormElement;\n form.dispatchEvent(new Event('submit'));\n await page.waitForChanges();\n\n // Assert validation error message is shown for empty email\n errorMessage = page?.root?.shadowRoot\n ?.querySelector('.input-wrapper:nth-child(2) [part=\"nbf__input-textfield\"][id=\"email\"]')\n ?.shadowRoot?.querySelector('.help-text') as HTMLSpanElement;\n expect(errorMessage.textContent).toBe('Email is required.');\n });\n\n xit('validates guest email inputs correctly', async () => {\n const page = await newSpecPage({\n components: [NylasBookingForm, InputComponent],\n html: `<nylas-booking-form></nylas-booking-form>`,\n });\n\n const nameInput = page?.root?.shadowRoot?.querySelector('[part=\"nbf__input-textfield\"][id=\"name\"]')?.shadowRoot?.querySelector('input') as HTMLInputElement;\n nameInput.value = 'John Doe';\n nameInput.dispatchEvent(new Event('input'));\n\n const emailInput = page?.root?.shadowRoot?.querySelector('[part=\"nbf__input-textfield\"][id=\"email\"]')?.shadowRoot?.querySelector('input') as HTMLInputElement;\n emailInput.value = 'john.doe@example.com';\n emailInput.dispatchEvent(new Event('input'));\n\n // Simulate adding a guest\n const addGuestButton = page?.root?.shadowRoot?.querySelector('.add-guest') as HTMLButtonElement;\n addGuestButton.click();\n await page.waitForChanges();\n\n const guestEmailInput = page?.root?.shadowRoot?.querySelector('[part=\"nbf__input-textfield\"][id^=\"guest-email-0\"]') as HTMLInputElement;\n\n // Simulate on blur event to trigger validation\n guestEmailInput.dispatchEvent(new Event('blur'));\n await page.waitForChanges();\n\n // Assert validation error message is shown for empty guest email\n const errorMessage = page?.root?.shadowRoot?.querySelector('.input-wrapper:nth-child(3) .button-wrapper .help-text') as HTMLParagraphElement;\n expect(errorMessage.textContent).toBe('Email is required.');\n\n // Simulate entering an ivalid guest email\n guestEmailInput.value = 'invalid-email';\n guestEmailInput.dispatchEvent(new Event('input'));\n const form = page?.root?.shadowRoot?.querySelector('form') as HTMLFormElement;\n form.dispatchEvent(new Event('submit'));\n await page.waitForChanges();\n\n // Assert validation error message is shown for invalid guest email\n expect(errorMessage.textContent).toBe('Invalid format. ');\n });\n\n it('prefills rescheduling form with the correct data', async () => {\n const rescheduleConfigSettings = {\n name: '',\n configuration_id: '4115ac80-d606-4b64-98b8-9c0420c8f318',\n scheduler: {\n available_days_in_future: 58,\n min_cancellation_notice: 0,\n min_booking_notice: 60,\n rescheduling_url: 'https://book.nylas.com/reschedule/:booking_ref',\n cancellation_url: 'https://book.nylas.com/cancel/:booking_ref',\n organizer_confirmation_url: 'https://book.nylas.com/confirm/:booking_ref',\n confirmation_redirect_url: '',\n hide_rescheduling_options: false,\n hide_cancellation_options: false,\n hide_additional_guests: false,\n cancellation_policy: '',\n additional_fields: {\n 'metadata_Metadata-Label_1': {\n label: 'Metadata Label',\n type: 'metadata',\n required: false,\n default: 'xyz',\n order: 1,\n },\n 'phone_number_Phone-Number-Label_1': {\n label: 'Phone Number Label',\n type: 'phone_number',\n required: false,\n default: '9964646442',\n order: 2,\n },\n 'multi-select': {\n default: 'orange',\n label: 'Select favorite fruits',\n order: 3,\n required: true,\n type: 'multi_select',\n options: ['orange', 'apple', 'banana', 'kiwi'],\n },\n 'multi_line_text_Long-text-Label_1': {\n label: 'Long text Label',\n type: 'multi_line_text',\n required: true,\n order: 4,\n },\n },\n email_template: {\n logo: '',\n booking_confirmed: {},\n },\n },\n organizer: {\n email: 'test@nylas.com',\n name: 'Test User',\n },\n booking_type: 'booking',\n booking: {\n participants: [\n {\n email: 'test@nylas.com',\n is_organizer: true,\n name: 'Test User',\n availability: {\n calendar_ids: ['test@nylas.com'],\n },\n booking: {\n calendar_id: 'test@nylas.com',\n },\n timezone: 'America/Toronto',\n },\n ],\n guest: {\n name: 'Dalmia Fanning',\n email: 'dalmia@company.com',\n },\n timezone: 'America/Toronto',\n email_language: 'en',\n cancellation_reason: '',\n additional_guests: [\n {\n email: 'dale@fur.com',\n name: 'Dale Fur',\n },\n ],\n additional_fields: {\n 'metadata_Metadata-Label_1': 'xyz',\n 'phone_number_Phone-Number-Label_1': '1234567890',\n },\n booking_ref: 'test-booking-ref',\n booking_ref_salt: '',\n event_data: {\n when: {\n start_timezone: 'America/Toronto',\n end_timezone: 'America/Toronto',\n object: 'timespan',\n start_time: 1730952000,\n end_time: 1730953800,\n },\n location: '',\n },\n event_organizer: {\n email: 'test@nylas.com',\n is_organizer: true,\n name: 'Test User',\n availability: {\n calendar_ids: ['test@nylas.com'],\n },\n booking: {\n calendar_id: 'test@nylas.com',\n },\n timezone: 'America/Toronto',\n },\n },\n appearance: null,\n };\n\n const page = await newSpecPage({\n components: [NylasBookingForm, InputComponent, TextareaComponent],\n template: () => <nylas-booking-form configSettings={rescheduleConfigSettings} />,\n });\n\n await page.waitForChanges();\n expect(page.root).toMatchSnapshot();\n\n const guestEmailInput = page?.root?.shadowRoot?.querySelector('[part=\"nbf__input-textfield\"][id=\"guest-email-0\"]') as HTMLInputElement;\n expect(guestEmailInput.value).toEqual('dale@fur.com');\n\n const inputComponent = page?.root?.shadowRoot?.querySelector('input-component#phone_number_Phone-Number-Label_1')?.shadowRoot?.querySelector('input') as HTMLInputElement;\n expect(inputComponent.value).toEqual('1234567890');\n\n const spyEvent = jest.fn();\n page.win.addEventListener('detailsConfirmed', spyEvent);\n\n const form = page?.root?.shadowRoot?.querySelector('form') as HTMLFormElement;\n form.dispatchEvent(new Event('submit'));\n\n await page.waitForChanges();\n\n const textAreaComponent = page?.root?.shadowRoot?.querySelector('textarea-component#multi_line_text_Long-text-Label_1') as HTMLTextareaComponentElement;\n const textArea = textAreaComponent.shadowRoot?.querySelector('textarea') as HTMLTextAreaElement;\n console.log('###textAreaComponent:', textArea);\n\n textArea.value = 'This is a long text';\n textArea.dispatchEvent(new Event('input'));\n\n const event = new CustomEvent('nylasFormInputChanged', {\n detail: {\n value: textArea.value,\n name: 'multi_line_text_Long-text-Label_1',\n error: '',\n label: 'Long text Label',\n },\n });\n (page.rootInstance as unknown as NylasBookingForm).nylasFormInputChangedHandler(event);\n await page.waitForChanges();\n\n form.dispatchEvent(new Event('submit'));\n\n await page.waitForChanges();\n\n expect(spyEvent).toHaveBeenCalled();\n const obj = {\n additionalFields: {\n 'metadata_Metadata-Label_1': 'xyz',\n 'phone_number_Phone-Number-Label_1': '1234567890',\n 'multi-select': 'orange',\n 'multi_line_text_Long-text-Label_1': 'This is a long text',\n },\n guests: [\n {\n email: 'dale@fur.com',\n name: 'dale@fur.com',\n },\n ],\n primaryParticipant: {\n email: 'dalmia@company.com',\n name: 'Dalmia Fanning',\n },\n };\n expect(spyEvent.mock.calls[0][0].detail).toEqual(obj);\n });\n\n it('reschedule flow: overrides the booking data from the config with the booking info passed', async () => {\n const rescheduleConfigSettings = {\n name: '',\n configuration_id: '4115ac80-d606-4b64-98b8-9c0420c8f318',\n scheduler: {\n available_days_in_future: 58,\n min_cancellation_notice: 0,\n min_booking_notice: 60,\n rescheduling_url: 'https://book.nylas.com/reschedule/:booking_ref',\n cancellation_url: 'https://book.nylas.com/cancel/:booking_ref',\n organizer_confirmation_url: 'https://book.nylas.com/confirm/:booking_ref',\n confirmation_redirect_url: '',\n hide_rescheduling_options: false,\n hide_cancellation_options: false,\n hide_additional_guests: false,\n cancellation_policy: '',\n additional_fields: {\n 'metadata_Metadata-Label_1': {\n label: 'Metadata Label',\n type: 'metadata',\n required: false,\n default: 'xyz',\n order: 1,\n },\n 'phone_number_Phone-Number-Label_1': {\n label: 'Phone Number Label',\n type: 'phone_number',\n required: false,\n default: '9964646442',\n order: 2,\n },\n 'multi-select': {\n default: 'orange',\n label: 'Select favorite fruits',\n order: 3,\n required: true,\n type: 'multi_select',\n options: ['orange', 'apple', 'banana', 'kiwi'],\n },\n 'multi_line_text_Long-text-Label_1': {\n label: 'Long text Label',\n type: 'multi_line_text',\n required: true,\n order: 4,\n },\n },\n email_template: {\n logo: '',\n booking_confirmed: {},\n },\n },\n organizer: {\n email: 'test@nylas.com',\n name: 'Test User',\n },\n booking_type: 'booking',\n booking: {\n participants: [\n {\n email: 'test@nylas.com',\n is_organizer: true,\n name: 'Test User',\n availability: {\n calendar_ids: ['test@nylas.com'],\n },\n booking: {\n calendar_id: 'test@nylas.com',\n },\n timezone: 'America/Toronto',\n },\n ],\n guest: {\n name: 'Dalmia Fanning',\n email: 'dalmia@company.com',\n },\n timezone: 'America/Toronto',\n email_language: 'en',\n cancellation_reason: '',\n additional_guests: [\n {\n email: 'dale@fur.com',\n name: 'Dale Fur',\n },\n ],\n additional_fields: {\n 'metadata_Metadata-Label_1': 'xyz',\n 'phone_number_Phone-Number-Label_1': '1234567890',\n 'multi-select': 'apple',\n },\n booking_ref: 'test-booking-ref',\n booking_ref_salt: '',\n event_data: {\n when: {\n start_timezone: 'America/Toronto',\n end_timezone: 'America/Toronto',\n object: 'timespan',\n start_time: 1730952000,\n end_time: 1730953800,\n },\n location: '',\n },\n event_organizer: {\n email: 'test@nylas.com',\n is_organizer: true,\n name: 'Test User',\n availability: {\n calendar_ids: ['test@nylas.com'],\n },\n booking: {\n calendar_id: 'test@nylas.com',\n },\n timezone: 'America/Toronto',\n },\n },\n appearance: null,\n };\n const bookingInfo = {\n primaryParticipant: {\n name: 'Dale Fur',\n email: 'dale@nylas.com',\n },\n additionalFields: {\n 'metadata_Metadata-Label_1': {\n value: 'abc',\n },\n 'phone_number_Phone-Number-Label_1': {\n value: '3111111111',\n readOnly: true,\n },\n },\n };\n const page = await newSpecPage({\n components: [NylasBookingForm, InputComponent, TextareaComponent],\n template: () => <nylas-booking-form configSettings={rescheduleConfigSettings} />,\n });\n if (!page.root) {\n throw new Error('Component did not render.');\n }\n\n page.root.bookingInfo = bookingInfo;\n await page.waitForChanges();\n expect(page.root).toMatchSnapshot();\n\n const nameInput = page?.root?.shadowRoot?.querySelector('[part=\"nbf__input-textfield\"][id=\"name\"]')?.shadowRoot?.querySelector('input') as HTMLInputElement;\n expect(nameInput.value).toEqual('Dale Fur');\n\n const emailInput = page?.root?.shadowRoot?.querySelector('[part=\"nbf__input-textfield\"][id=\"email\"]')?.shadowRoot?.querySelector('input') as HTMLInputElement;\n expect(emailInput.value).toEqual('dale@nylas.com');\n\n const guestEmailInput = page?.root?.shadowRoot?.querySelector('[part=\"nbf__input-textfield\"][id=\"guest-email-0\"]') as HTMLInputElement;\n expect(guestEmailInput.value).toEqual('dale@fur.com');\n\n const inputComponent = page?.root?.shadowRoot?.querySelector('input-component#phone_number_Phone-Number-Label_1')?.shadowRoot?.querySelector('input') as HTMLInputElement;\n expect(inputComponent.value).toEqual('3111111111');\n expect(inputComponent).toHaveAttribute('readonly');\n\n const spyEvent = jest.fn();\n page.win.addEventListener('detailsConfirmed', spyEvent);\n\n const form = page?.root?.shadowRoot?.querySelector('form') as HTMLFormElement;\n form.dispatchEvent(new Event('submit'));\n\n await page.waitForChanges();\n\n const textAreaComponent = page?.root?.shadowRoot?.querySelector('textarea-component#multi_line_text_Long-text-Label_1') as HTMLTextareaComponentElement;\n const textArea = textAreaComponent.shadowRoot?.querySelector('textarea') as HTMLTextAreaElement;\n console.log('###textAreaComponent:', textArea);\n\n textArea.value = 'This is a long text';\n textArea.dispatchEvent(new Event('input'));\n\n const event = new CustomEvent('nylasFormInputChanged', {\n detail: {\n value: textArea.value,\n name: 'multi_line_text_Long-text-Label_1',\n error: '',\n label: 'Long text Label',\n },\n });\n (page.rootInstance as unknown as NylasBookingForm).nylasFormInputChangedHandler(event);\n await page.waitForChanges();\n\n form.dispatchEvent(new Event('submit'));\n\n await page.waitForChanges();\n\n expect(spyEvent).toHaveBeenCalled();\n const obj = {\n additionalFields: {\n 'metadata_Metadata-Label_1': 'abc',\n 'phone_number_Phone-Number-Label_1': '3111111111',\n 'multi-select': 'apple',\n 'multi_line_text_Long-text-Label_1': 'This is a long text',\n },\n guests: [\n {\n email: 'dale@fur.com',\n name: 'dale@fur.com',\n },\n ],\n primaryParticipant: {\n email: 'dale@nylas.com',\n name: 'Dale Fur',\n },\n };\n expect(spyEvent.mock.calls[0][0].detail).toEqual(obj);\n });\n});\n"]}
|
|
1
|
+
{"version":3,"file":"nylas-booking-form.spec.js","sourceRoot":"","sources":["../../../../../src/components/scheduler/nylas-booking-form/test/nylas-booking-form.spec.tsx"],"names":[],"mappings":"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","sourcesContent":["import { newSpecPage } from '@stencil/core/testing';\nimport { NylasBookingForm } from '../nylas-booking-form';\nimport { InputComponent } from '../../../design-system/input-component/input-component';\nimport { h } from '@stencil/core';\nimport { RadioButtonGroup } from '../../../design-system/radio-button-group/radio-button-group';\nimport { CheckboxComponent } from '../../../design-system/checkbox-component/checkbox-component';\nimport { TextareaComponent } from '../../../design-system/textarea-component/textarea-component';\nimport { SelectDropdown } from '../../../design-system/select-dropdown/select-dropdown';\n\nconst configSettings = {\n scheduler: {\n available_days_in_future: 30,\n min_cancellation_notice: 0,\n min_booking_notice: 60,\n hide_rescheduling_options: false,\n hide_cancellation_options: false,\n hide_additional_guests: false,\n additional_fields: {\n additional_email: {\n label: 'Additional email',\n type: 'email',\n required: false,\n order: 2,\n default: 'additional_email@example.com',\n },\n checkbox: {\n label: 'Checkbox Label',\n type: 'checkbox',\n required: false,\n order: 6,\n },\n dropdown: {\n label: 'Dropdown Label',\n type: 'dropdown',\n required: false,\n order: 3,\n options: ['Yes', 'No'],\n },\n long_text: {\n label: 'Long text Label',\n type: 'multi_line_text',\n required: false,\n order: 5,\n },\n phone_number: {\n label: 'Phone Number',\n type: 'phone_number',\n required: false,\n order: 1,\n },\n radio_button: {\n label: 'Radio Button Label',\n type: 'radio_button',\n required: false,\n order: 7,\n options: ['Yes', 'No'],\n },\n short_text: {\n label: 'Short Text Label',\n type: 'text',\n required: false,\n order: 4,\n },\n },\n email_template: {\n booking_confirmed: {},\n },\n },\n organizer: {\n email: 'test@nylas.com',\n name: 'Test User',\n },\n};\n\ndescribe('nylas-booking-form', () => {\n beforeEach(() => {\n // Clear and reset the mock before each test if needed\n jest.clearAllMocks();\n });\n let consoleErrorSpy;\n\n beforeEach(() => {\n // Spy on console.error before each test\n consoleErrorSpy = jest.spyOn(console, 'error').mockImplementation(() => {});\n });\n\n afterEach(() => {\n // Restore the original console.error after each test\n consoleErrorSpy.mockRestore();\n });\n\n it('renders correctly with initial props', async () => {\n const bookingInfo = {\n primaryParticipant: {\n name: 'John Doe',\n email: 'john.doe@example.com',\n },\n };\n const page = await newSpecPage({\n components: [NylasBookingForm, InputComponent],\n html: `<nylas-booking-form></nylas-booking-form>`,\n });\n\n if (!page.root) {\n throw new Error('Component did not render.');\n }\n\n page.root.bookingInfo = bookingInfo;\n await page.waitForChanges();\n expect(page.rootInstance.name).toEqual('John Doe');\n expect(page.rootInstance.email).toEqual('john.doe@example.com');\n expect(page.root).toMatchSnapshot();\n });\n\n it('renders an email error message when email is invalid', async () => {\n const page = await newSpecPage({\n components: [NylasBookingForm, InputComponent],\n html: `<nylas-booking-form></nylas-booking-form>`,\n });\n\n const nameInput = page?.root?.shadowRoot?.querySelector('[part=\"nbf__input-textfield\"][id=\"name\"]')?.shadowRoot?.querySelector('input') as HTMLInputElement;\n nameInput.value = 'John Doe';\n nameInput.dispatchEvent(new Event('input'));\n\n const emailInput = page?.root?.shadowRoot?.querySelector('[part=\"nbf__input-textfield\"][id=\"email\"]')?.shadowRoot?.querySelector('input') as HTMLInputElement;\n emailInput.value = 'invalid-email';\n emailInput.dispatchEvent(new Event('input'));\n\n // Submit the form to trigger validation\n const form = page?.root?.shadowRoot?.querySelector('form') as HTMLFormElement;\n form.dispatchEvent(new Event('submit'));\n\n await page.waitForChanges();\n\n const errorMessage = page?.root?.shadowRoot\n ?.querySelector('.input-wrapper:nth-child(2) [part=\"nbf__input-textfield\"][id=\"email\"]')\n ?.shadowRoot?.querySelector('.help-text') as HTMLSpanElement;\n console.debug(errorMessage.className);\n expect(errorMessage.textContent).toBe('Email has invalid format.');\n });\n\n it('renders correctly with additional fields from the config', async () => {\n const page = await newSpecPage({\n components: [NylasBookingForm, InputComponent],\n html: `<nylas-booking-form></nylas-booking-form>`,\n });\n\n if (!page.root) {\n throw new Error('Component did not render.');\n }\n\n page.root.configSettings = configSettings;\n await page.waitForChanges();\n expect(page.root).toMatchSnapshot();\n const additionalEmailInputComponent = page?.root?.shadowRoot?.querySelector('[part=\"nbf__input-textfield\"][id=\"additional_email\"]') as HTMLInputElement;\n const additionalEmailInput = additionalEmailInputComponent.shadowRoot?.querySelector('input') as HTMLInputElement;\n\n expect(additionalEmailInput.value).not.toBeNull();\n expect(additionalEmailInput.value).toEqual('additional_email@example.com');\n additionalEmailInputComponent.value = 'abcd@gmail.com';\n\n page.root?.dispatchEvent(\n new CustomEvent('nylasFormInputChanged', {\n detail: {\n value: additionalEmailInputComponent.value,\n name: 'additional_email',\n error: '',\n label: 'Additional email',\n },\n }),\n );\n\n const checkboxInput = page?.root?.shadowRoot?.querySelector('[part=\"nbf__checkbox-component\"][id=\"checkbox\"]') as HTMLInputElement;\n checkboxInput.checked = true;\n\n page.root?.dispatchEvent(\n new CustomEvent('nylasFormCheckboxToggled', {\n detail: {\n checked: checkboxInput.checked,\n name: 'checkbox',\n error: '',\n label: 'Checkbox Label',\n },\n }),\n );\n\n await page.waitForChanges();\n expect(page.rootInstance.additionalFields).toEqual({ additional_email: 'abcd@gmail.com', checkbox: 'true' });\n });\n\n it('renders the values passed in the booking info by overriding the defaults', async () => {\n const page = await newSpecPage({\n components: [NylasBookingForm, InputComponent],\n html: `<nylas-booking-form></nylas-booking-form>`,\n });\n\n if (!page.root) {\n throw new Error('Component did not render.');\n }\n\n page.root.configSettings = configSettings;\n page.root.bookingInfo = {\n primaryParticipant: {\n name: 'John Doe',\n email: 'johndoe@example.com',\n },\n additionalFields: {\n additional_email: {\n value: 'xyz@example.com',\n type: 'email',\n },\n },\n };\n\n await page.waitForChanges();\n expect(page.root).toMatchSnapshot();\n const additionalEmailInputComponent = page?.root?.shadowRoot?.querySelector('[part=\"nbf__input-textfield\"][id=\"additional_email\"]') as HTMLInputElement;\n const additionalEmailInput = additionalEmailInputComponent.shadowRoot?.querySelector('input') as HTMLInputElement;\n\n expect(additionalEmailInput.value).not.toBeNull();\n expect(additionalEmailInput.value).toEqual('xyz@example.com');\n\n await page.waitForChanges();\n });\n\n it('renders the fields as read only if bookingInfo passes readOnly additional fields', async () => {\n const page = await newSpecPage({\n components: [NylasBookingForm, InputComponent, RadioButtonGroup, CheckboxComponent, TextareaComponent, SelectDropdown],\n html: `<nylas-booking-form></nylas-booking-form>`,\n });\n\n if (!page.root) {\n throw new Error('Component did not render.');\n }\n\n page.root.configSettings = configSettings;\n page.root.bookingInfo = {\n primaryParticipant: {\n name: 'John Doe',\n email: 'johndoe@example.com',\n nameReadOnly: true,\n emailReadOnly: true,\n },\n additionalFields: {\n additional_email: {\n value: 'xyz@example.com',\n type: 'email',\n readOnly: true,\n },\n checkbox: {\n value: 'true',\n type: 'checkbox',\n readOnly: true,\n },\n dropdown: {\n value: 'No',\n type: 'dropdown',\n readOnly: true,\n },\n long_text: {\n value: 'Long text Label',\n type: 'multi_line_text',\n readOnly: true,\n },\n radio_button: {\n value: 'No',\n type: 'radio_button',\n readOnly: true,\n },\n },\n };\n\n await page.waitForChanges();\n expect(page.root).toMatchSnapshot();\n const nameInputComponent = page?.root?.shadowRoot?.querySelector('[part=\"nbf__input-textfield\"][id=\"name\"]') as HTMLInputElement;\n const nameInput = nameInputComponent.shadowRoot?.querySelector('input') as HTMLInputElement;\n expect(nameInput.value).not.toBeNull();\n expect(nameInput.value).toEqual('John Doe');\n expect(nameInput).toHaveAttribute('readOnly');\n\n const emailInputComponent = page?.root?.shadowRoot?.querySelector('[part=\"nbf__input-textfield\"][id=\"email\"]') as HTMLInputElement;\n const emailInput = emailInputComponent.shadowRoot?.querySelector('input') as HTMLInputElement;\n expect(emailInput.value).not.toBeNull();\n expect(emailInput.value).toEqual('johndoe@example.com');\n expect(emailInput).toHaveAttribute('readOnly');\n\n const additionalEmailInputComponent = page?.root?.shadowRoot?.querySelector('[part=\"nbf__input-textfield\"][id=\"additional_email\"]') as HTMLInputElement;\n const additionalEmailInput = additionalEmailInputComponent.shadowRoot?.querySelector('input') as HTMLInputElement;\n\n expect(additionalEmailInput.value).not.toBeNull();\n expect(additionalEmailInput.value).toEqual('xyz@example.com');\n expect(additionalEmailInput).toHaveAttribute('readOnly');\n\n const dropdown = page?.root?.shadowRoot?.querySelector('select-dropdown') as HTMLSelectDropdownElement;\n const dropdownButton = dropdown.shadowRoot?.querySelector('button') as HTMLButtonElement;\n expect(dropdownButton).toHaveAttribute('disabled');\n\n const checkbox = page?.root?.shadowRoot?.querySelector('checkbox-component') as HTMLCheckboxComponentElement;\n const checkboxInput = checkbox.shadowRoot?.querySelector('input') as HTMLInputElement;\n expect(checkboxInput).toHaveAttribute('disabled');\n expect(checkboxInput).toHaveAttribute('checked');\n\n const radioGroup = page?.root?.shadowRoot?.querySelector('radio-button-group') as HTMLRadioButtonGroupElement;\n const radioInput = radioGroup.shadowRoot?.querySelector('input') as HTMLInputElement;\n expect(radioInput).toHaveAttribute('disabled');\n\n const textarea = page?.root?.shadowRoot?.querySelector('textarea-component') as HTMLTextareaComponentElement;\n const textareaInput = textarea.shadowRoot?.querySelector('textarea') as HTMLTextAreaElement;\n expect(textareaInput).toHaveAttribute('readonly');\n });\n\n xit('renders guest email input on add guest button click', async () => {\n const page = await newSpecPage({\n components: [NylasBookingForm, InputComponent],\n html: `<nylas-booking-form></nylas-booking-form>`,\n });\n\n const addGuestButton = page?.root?.shadowRoot?.querySelector('.add-guest') as HTMLButtonElement;\n addGuestButton.click();\n\n await page.waitForChanges();\n\n const guestEmailInputs = page?.root?.shadowRoot?.querySelectorAll('[part=\"nbf__input-textfield\"][id^=\"guest-email-\"]') as NodeListOf<HTMLInputElement>;\n expect(guestEmailInputs.length).toEqual(1);\n });\n\n xit('allows multiple guest emails to be added', async () => {\n const page = await newSpecPage({\n components: [NylasBookingForm, InputComponent],\n html: `<nylas-booking-form></nylas-booking-form>`,\n });\n\n // Simulate clicking the 'Add Guest' button twice\n const addGuestButton = page?.root?.shadowRoot?.querySelector('.add-guest') as HTMLButtonElement;\n addGuestButton.click();\n addGuestButton.click();\n await page.waitForChanges();\n\n // Check if two guest email inputs are present\n const guestEmailInputs = page?.root?.shadowRoot?.querySelectorAll('[id^=\"guest-email-\"]') as NodeListOf<HTMLInputElement>;\n expect(guestEmailInputs.length).toBe(2);\n });\n\n xit('removes a guest email input on remove button click', async () => {\n const page = await newSpecPage({\n components: [NylasBookingForm, InputComponent],\n html: `<nylas-booking-form></nylas-booking-form>`,\n });\n\n // Add two guests then remove one\n const addGuestButton = page?.root?.shadowRoot?.querySelector('.add-guest') as HTMLButtonElement;\n addGuestButton.click();\n addGuestButton.click();\n await page.waitForChanges();\n\n const removeGuestButton = page?.root?.shadowRoot?.querySelector('.remove-guest') as HTMLButtonElement;\n removeGuestButton.click();\n await page.waitForChanges();\n\n // Check if one guest email input remains\n const guestEmailInputs = page?.root?.shadowRoot?.querySelectorAll('[id^=\"guest-email-\"]') as NodeListOf<HTMLInputElement>;\n expect(guestEmailInputs.length).toBe(1);\n });\n\n it('emits nameChanged and emailChanged events on input change', async () => {\n const page = await newSpecPage({\n components: [NylasBookingForm, InputComponent],\n html: `<nylas-booking-form></nylas-booking-form>`,\n });\n\n const nameChangedSpy = jest.fn();\n const emailChangedSpy = jest.fn();\n\n page.win.addEventListener('nameChanged', nameChangedSpy);\n page.win.addEventListener('emailChanged', emailChangedSpy);\n\n const nameInput = page?.root?.shadowRoot?.querySelector('[part=\"nbf__input-textfield\"][id=\"name\"]')?.shadowRoot?.querySelector('label input') as HTMLInputElement;\n nameInput.value = 'John Doe';\n\n page.root?.dispatchEvent(\n new CustomEvent('nylasFormInputChanged', {\n detail: {\n value: nameInput.value,\n name: 'name',\n error: '',\n },\n }),\n );\n\n const emailInput = page?.root?.shadowRoot?.querySelector('[part=\"nbf__input-textfield\"][id=\"email\"]')?.shadowRoot?.querySelector('label input') as HTMLInputElement;\n emailInput.value = 'john.doe@example.com';\n\n page.root?.dispatchEvent(\n new CustomEvent('nylasFormInputChanged', {\n detail: {\n value: emailInput.value,\n name: 'email',\n error: '',\n },\n }),\n );\n\n await page.waitForChanges();\n\n expect(nameChangedSpy.mock.calls[0][0].detail).toEqual('John Doe');\n expect(emailChangedSpy.mock.calls[0][0].detail).toEqual('john.doe@example.com');\n });\n\n it('emits backButtonClicked event on back button click', async () => {\n const page = await newSpecPage({\n components: [NylasBookingForm, InputComponent],\n html: `<nylas-booking-form></nylas-booking-form>`,\n });\n\n const backButton = page?.root?.shadowRoot?.querySelector('.back') as HTMLButtonElement;\n const backButtonClickedSpy = jest.fn();\n page.win.addEventListener('backButtonClicked', backButtonClickedSpy);\n backButton.click();\n await page.waitForChanges();\n expect(backButtonClickedSpy).toHaveBeenCalled();\n });\n\n it('on entering name input and focusing on email input there are no errors', async () => {\n const page = await newSpecPage({\n components: [NylasBookingForm, InputComponent],\n html: `<nylas-booking-form></nylas-booking-form>`,\n });\n\n // Simulate actions\n\n const nameInput = page?.root?.shadowRoot?.querySelector('[part=\"nbf__input-textfield\"][id=\"name\"]')?.shadowRoot?.querySelector('input') as HTMLInputElement;\n const emailInput = page?.root?.shadowRoot?.querySelector('[part=\"nbf__input-textfield\"][id=\"email\"]')?.shadowRoot?.querySelector('input') as HTMLInputElement;\n\n nameInput.focus();\n nameInput.value = 'text';\n emailInput.focus();\n await page.waitForChanges();\n\n expect(consoleErrorSpy).not.toHaveBeenCalled();\n });\n\n it('validates name input correctly', async () => {\n const page = await newSpecPage({\n components: [NylasBookingForm, InputComponent],\n html: `<nylas-booking-form></nylas-booking-form>`,\n });\n\n // Simulate entering a valid name\n\n const nameInput = page?.root?.shadowRoot?.querySelector('[part=\"nbf__input-textfield\"][id=\"name\"]')?.shadowRoot?.querySelector('input') as HTMLInputElement;\n nameInput.value = 'John Doe';\n nameInput.dispatchEvent(new Event('input'));\n const form = page?.root?.shadowRoot?.querySelector('form') as HTMLFormElement;\n form.dispatchEvent(new Event('submit'));\n await page.waitForChanges();\n\n // Assert no validation error message for name\n let errorMessage = page?.root?.shadowRoot?.querySelector('.input-wrapper [part=\"nbf__input-textfield\"][id=\"name\"]')?.shadowRoot?.querySelector('.help-text') as HTMLSpanElement;\n expect(errorMessage).toBeNull();\n\n // Simulate clearing the name, triggering validation error\n nameInput.value = '';\n nameInput.dispatchEvent(new Event('input'));\n\n form.dispatchEvent(new Event('submit'));\n await page.waitForChanges();\n\n // Assert validation error message is shown for name\n errorMessage = page?.root?.shadowRoot?.querySelector('.input-wrapper [part=\"nbf__input-textfield\"][id=\"name\"]')?.shadowRoot?.querySelector('.help-text') as HTMLSpanElement;\n expect(errorMessage.textContent).toBe('Name is required.');\n });\n\n it('validates email input correctly', async () => {\n const page = await newSpecPage({\n components: [NylasBookingForm, InputComponent],\n html: `<nylas-booking-form></nylas-booking-form>`,\n });\n\n const nameInput = page?.root?.shadowRoot?.querySelector('[part=\"nbf__input-textfield\"][id=\"name\"]')?.shadowRoot?.querySelector('label input[name=\"name\"]') as HTMLInputElement;\n nameInput.value = 'John Doe';\n nameInput.dispatchEvent(new Event('input'));\n\n // Simulate entering a valid email\n const emailInput = page?.root?.shadowRoot\n ?.querySelector('[part=\"nbf__input-textfield\"][id=\"email\"]')\n ?.shadowRoot?.querySelector('label input[name=\"email\"]') as HTMLInputElement;\n emailInput.value = 'john.doe@example.com';\n emailInput.dispatchEvent(new Event('input'));\n\n let form = page?.root?.shadowRoot?.querySelector('form') as HTMLFormElement;\n form.dispatchEvent(new Event('submit'));\n await page.waitForChanges();\n\n // Assert no validation error message for email\n let errorMessage = page?.root?.shadowRoot\n ?.querySelector('.input-wrapper:nth-child(2) [part=\"nbf__input-textfield\"][id=\"email\"]')\n ?.shadowRoot?.querySelector('.help-text') as HTMLSpanElement;\n await page.waitForChanges();\n\n expect(errorMessage).toBeNull();\n\n // Simulate clearing the email, triggering validation error\n emailInput.value = '';\n emailInput.dispatchEvent(new Event('input'));\n await page.waitForChanges();\n form = page?.root?.shadowRoot?.querySelector('form') as HTMLFormElement;\n form.dispatchEvent(new Event('submit'));\n await page.waitForChanges();\n\n // Assert validation error message is shown for empty email\n errorMessage = page?.root?.shadowRoot\n ?.querySelector('.input-wrapper:nth-child(2) [part=\"nbf__input-textfield\"][id=\"email\"]')\n ?.shadowRoot?.querySelector('.help-text') as HTMLSpanElement;\n expect(errorMessage.textContent).toBe('Email is required.');\n });\n\n xit('validates guest email inputs correctly', async () => {\n const page = await newSpecPage({\n components: [NylasBookingForm, InputComponent],\n html: `<nylas-booking-form></nylas-booking-form>`,\n });\n\n const nameInput = page?.root?.shadowRoot?.querySelector('[part=\"nbf__input-textfield\"][id=\"name\"]')?.shadowRoot?.querySelector('input') as HTMLInputElement;\n nameInput.value = 'John Doe';\n nameInput.dispatchEvent(new Event('input'));\n\n const emailInput = page?.root?.shadowRoot?.querySelector('[part=\"nbf__input-textfield\"][id=\"email\"]')?.shadowRoot?.querySelector('input') as HTMLInputElement;\n emailInput.value = 'john.doe@example.com';\n emailInput.dispatchEvent(new Event('input'));\n\n // Simulate adding a guest\n const addGuestButton = page?.root?.shadowRoot?.querySelector('.add-guest') as HTMLButtonElement;\n addGuestButton.click();\n await page.waitForChanges();\n\n const guestEmailInput = page?.root?.shadowRoot?.querySelector('[part=\"nbf__input-textfield\"][id^=\"guest-email-0\"]') as HTMLInputElement;\n\n // Simulate on blur event to trigger validation\n guestEmailInput.dispatchEvent(new Event('blur'));\n await page.waitForChanges();\n\n // Assert validation error message is shown for empty guest email\n const errorMessage = page?.root?.shadowRoot?.querySelector('.input-wrapper:nth-child(3) .button-wrapper .help-text') as HTMLParagraphElement;\n expect(errorMessage.textContent).toBe('Email is required.');\n\n // Simulate entering an ivalid guest email\n guestEmailInput.value = 'invalid-email';\n guestEmailInput.dispatchEvent(new Event('input'));\n const form = page?.root?.shadowRoot?.querySelector('form') as HTMLFormElement;\n form.dispatchEvent(new Event('submit'));\n await page.waitForChanges();\n\n // Assert validation error message is shown for invalid guest email\n expect(errorMessage.textContent).toBe('Invalid format. ');\n });\n\n it('prefills rescheduling form with the correct data', async () => {\n const rescheduleConfigSettings = {\n name: '',\n configuration_id: '4115ac80-d606-4b64-98b8-9c0420c8f318',\n slug: 'test-slug',\n scheduler: {\n available_days_in_future: 58,\n min_cancellation_notice: 0,\n min_booking_notice: 60,\n rescheduling_url: 'https://book.nylas.com/reschedule/:booking_ref',\n cancellation_url: 'https://book.nylas.com/cancel/:booking_ref',\n organizer_confirmation_url: 'https://book.nylas.com/confirm/:booking_ref',\n confirmation_redirect_url: '',\n hide_rescheduling_options: false,\n hide_cancellation_options: false,\n hide_additional_guests: false,\n cancellation_policy: '',\n additional_fields: {\n 'metadata_Metadata-Label_1': {\n label: 'Metadata Label',\n type: 'metadata',\n required: false,\n default: 'xyz',\n order: 1,\n },\n 'phone_number_Phone-Number-Label_1': {\n label: 'Phone Number Label',\n type: 'phone_number',\n required: false,\n default: '9964646442',\n order: 2,\n },\n 'multi-select': {\n default: 'orange',\n label: 'Select favorite fruits',\n order: 3,\n required: true,\n type: 'multi_select',\n options: ['orange', 'apple', 'banana', 'kiwi'],\n },\n 'multi_line_text_Long-text-Label_1': {\n label: 'Long text Label',\n type: 'multi_line_text',\n required: true,\n order: 4,\n },\n },\n email_template: {\n logo: '',\n booking_confirmed: {},\n },\n },\n organizer: {\n email: 'test@nylas.com',\n name: 'Test User',\n },\n booking_type: 'booking',\n booking: {\n participants: [\n {\n email: 'test@nylas.com',\n is_organizer: true,\n name: 'Test User',\n availability: {\n calendar_ids: ['test@nylas.com'],\n },\n booking: {\n calendar_id: 'test@nylas.com',\n },\n timezone: 'America/Toronto',\n },\n ],\n guest: {\n name: 'Dalmia Fanning',\n email: 'dalmia@company.com',\n },\n timezone: 'America/Toronto',\n email_language: 'en',\n cancellation_reason: '',\n additional_guests: [\n {\n email: 'dale@fur.com',\n name: 'Dale Fur',\n },\n ],\n additional_fields: {\n 'metadata_Metadata-Label_1': 'xyz',\n 'phone_number_Phone-Number-Label_1': '1234567890',\n },\n booking_ref: 'test-booking-ref',\n booking_ref_salt: '',\n event_data: {\n when: {\n start_timezone: 'America/Toronto',\n end_timezone: 'America/Toronto',\n object: 'timespan',\n start_time: new Date(1730952000 * 1000),\n end_time: new Date(1730953800 * 1000),\n },\n location: '',\n },\n event_organizer: {\n email: 'test@nylas.com',\n is_organizer: true,\n name: 'Test User',\n availability: {\n calendar_ids: ['test@nylas.com'],\n },\n booking: {\n calendar_id: 'test@nylas.com',\n },\n timezone: 'America/Toronto',\n },\n },\n appearance: {},\n };\n\n const page = await newSpecPage({\n components: [NylasBookingForm, InputComponent, TextareaComponent],\n template: () => <nylas-booking-form configSettings={rescheduleConfigSettings} />,\n });\n\n await page.waitForChanges();\n expect(page.root).toMatchSnapshot();\n\n const guestEmailInput = page?.root?.shadowRoot?.querySelector('[part=\"nbf__input-textfield\"][id=\"guest-email-0\"]') as HTMLInputElement;\n expect(guestEmailInput.value).toEqual('dale@fur.com');\n\n const inputComponent = page?.root?.shadowRoot?.querySelector('input-component#phone_number_Phone-Number-Label_1')?.shadowRoot?.querySelector('input') as HTMLInputElement;\n expect(inputComponent.value).toEqual('1234567890');\n\n const spyEvent = jest.fn();\n page.win.addEventListener('detailsConfirmed', spyEvent);\n\n const form = page?.root?.shadowRoot?.querySelector('form') as HTMLFormElement;\n form.dispatchEvent(new Event('submit'));\n\n await page.waitForChanges();\n\n const textAreaComponent = page?.root?.shadowRoot?.querySelector('textarea-component#multi_line_text_Long-text-Label_1') as HTMLTextareaComponentElement;\n const textArea = textAreaComponent.shadowRoot?.querySelector('textarea') as HTMLTextAreaElement;\n console.log('###textAreaComponent:', textArea);\n\n textArea.value = 'This is a long text';\n textArea.dispatchEvent(new Event('input'));\n\n const event = new CustomEvent('nylasFormInputChanged', {\n detail: {\n value: textArea.value,\n name: 'multi_line_text_Long-text-Label_1',\n error: '',\n label: 'Long text Label',\n },\n });\n (page.rootInstance as unknown as NylasBookingForm).nylasFormInputChangedHandler(event);\n await page.waitForChanges();\n\n form.dispatchEvent(new Event('submit'));\n\n await page.waitForChanges();\n\n expect(spyEvent).toHaveBeenCalled();\n const obj = {\n additionalFields: {\n 'metadata_Metadata-Label_1': 'xyz',\n 'phone_number_Phone-Number-Label_1': '1234567890',\n 'multi-select': 'orange',\n 'multi_line_text_Long-text-Label_1': 'This is a long text',\n },\n guests: [\n {\n email: 'dale@fur.com',\n name: 'dale@fur.com',\n },\n ],\n primaryParticipant: {\n email: 'dalmia@company.com',\n name: 'Dalmia Fanning',\n },\n };\n expect(spyEvent.mock.calls[0][0].detail).toEqual(obj);\n });\n\n it('reschedule flow: overrides the booking data from the config with the booking info passed', async () => {\n const rescheduleConfigSettings = {\n name: '',\n configuration_id: '4115ac80-d606-4b64-98b8-9c0420c8f318',\n slug: 'test-slug',\n scheduler: {\n available_days_in_future: 58,\n min_cancellation_notice: 0,\n min_booking_notice: 60,\n rescheduling_url: 'https://book.nylas.com/reschedule/:booking_ref',\n cancellation_url: 'https://book.nylas.com/cancel/:booking_ref',\n organizer_confirmation_url: 'https://book.nylas.com/confirm/:booking_ref',\n confirmation_redirect_url: '',\n hide_rescheduling_options: false,\n hide_cancellation_options: false,\n hide_additional_guests: false,\n cancellation_policy: '',\n additional_fields: {\n 'metadata_Metadata-Label_1': {\n label: 'Metadata Label',\n type: 'metadata',\n required: false,\n default: 'xyz',\n order: 1,\n },\n 'phone_number_Phone-Number-Label_1': {\n label: 'Phone Number Label',\n type: 'phone_number',\n required: false,\n default: '9964646442',\n order: 2,\n },\n 'multi-select': {\n default: 'orange',\n label: 'Select favorite fruits',\n order: 3,\n required: true,\n type: 'multi_select',\n options: ['orange', 'apple', 'banana', 'kiwi'],\n },\n 'multi_line_text_Long-text-Label_1': {\n label: 'Long text Label',\n type: 'multi_line_text',\n required: true,\n order: 4,\n },\n },\n email_template: {\n logo: '',\n booking_confirmed: {},\n },\n },\n organizer: {\n email: 'test@nylas.com',\n name: 'Test User',\n },\n booking_type: 'booking',\n booking: {\n participants: [\n {\n email: 'test@nylas.com',\n is_organizer: true,\n name: 'Test User',\n availability: {\n calendar_ids: ['test@nylas.com'],\n },\n booking: {\n calendar_id: 'test@nylas.com',\n },\n timezone: 'America/Toronto',\n },\n ],\n guest: {\n name: 'Dalmia Fanning',\n email: 'dalmia@company.com',\n },\n timezone: 'America/Toronto',\n email_language: 'en',\n cancellation_reason: '',\n additional_guests: [\n {\n email: 'dale@fur.com',\n name: 'Dale Fur',\n },\n ],\n additional_fields: {\n 'metadata_Metadata-Label_1': 'xyz',\n 'phone_number_Phone-Number-Label_1': '1234567890',\n 'multi-select': 'apple',\n },\n booking_ref: 'test-booking-ref',\n booking_ref_salt: '',\n event_data: {\n when: {\n start_timezone: 'America/Toronto',\n end_timezone: 'America/Toronto',\n object: 'timespan',\n start_time: new Date(1730952000 * 1000),\n end_time: new Date(1730953800 * 1000),\n },\n location: '',\n },\n event_organizer: {\n email: 'test@nylas.com',\n is_organizer: true,\n name: 'Test User',\n availability: {\n calendar_ids: ['test@nylas.com'],\n },\n booking: {\n calendar_id: 'test@nylas.com',\n },\n timezone: 'America/Toronto',\n },\n },\n appearance: {},\n };\n const bookingInfo = {\n primaryParticipant: {\n name: 'Dale Fur',\n email: 'dale@nylas.com',\n },\n additionalFields: {\n 'metadata_Metadata-Label_1': {\n value: 'abc',\n },\n 'phone_number_Phone-Number-Label_1': {\n value: '3111111111',\n readOnly: true,\n },\n },\n };\n const page = await newSpecPage({\n components: [NylasBookingForm, InputComponent, TextareaComponent],\n template: () => <nylas-booking-form configSettings={rescheduleConfigSettings} />,\n });\n if (!page.root) {\n throw new Error('Component did not render.');\n }\n\n page.root.bookingInfo = bookingInfo;\n await page.waitForChanges();\n expect(page.root).toMatchSnapshot();\n\n const nameInput = page?.root?.shadowRoot?.querySelector('[part=\"nbf__input-textfield\"][id=\"name\"]')?.shadowRoot?.querySelector('input') as HTMLInputElement;\n expect(nameInput.value).toEqual('Dale Fur');\n\n const emailInput = page?.root?.shadowRoot?.querySelector('[part=\"nbf__input-textfield\"][id=\"email\"]')?.shadowRoot?.querySelector('input') as HTMLInputElement;\n expect(emailInput.value).toEqual('dale@nylas.com');\n\n const guestEmailInput = page?.root?.shadowRoot?.querySelector('[part=\"nbf__input-textfield\"][id=\"guest-email-0\"]') as HTMLInputElement;\n expect(guestEmailInput.value).toEqual('dale@fur.com');\n\n const inputComponent = page?.root?.shadowRoot?.querySelector('input-component#phone_number_Phone-Number-Label_1')?.shadowRoot?.querySelector('input') as HTMLInputElement;\n expect(inputComponent.value).toEqual('3111111111');\n expect(inputComponent).toHaveAttribute('readonly');\n\n const spyEvent = jest.fn();\n page.win.addEventListener('detailsConfirmed', spyEvent);\n\n const form = page?.root?.shadowRoot?.querySelector('form') as HTMLFormElement;\n form.dispatchEvent(new Event('submit'));\n\n await page.waitForChanges();\n\n const textAreaComponent = page?.root?.shadowRoot?.querySelector('textarea-component#multi_line_text_Long-text-Label_1') as HTMLTextareaComponentElement;\n const textArea = textAreaComponent.shadowRoot?.querySelector('textarea') as HTMLTextAreaElement;\n console.log('###textAreaComponent:', textArea);\n\n textArea.value = 'This is a long text';\n textArea.dispatchEvent(new Event('input'));\n\n const event = new CustomEvent('nylasFormInputChanged', {\n detail: {\n value: textArea.value,\n name: 'multi_line_text_Long-text-Label_1',\n error: '',\n label: 'Long text Label',\n },\n });\n (page.rootInstance as unknown as NylasBookingForm).nylasFormInputChangedHandler(event);\n await page.waitForChanges();\n\n form.dispatchEvent(new Event('submit'));\n\n await page.waitForChanges();\n\n expect(spyEvent).toHaveBeenCalled();\n const obj = {\n additionalFields: {\n 'metadata_Metadata-Label_1': 'abc',\n 'phone_number_Phone-Number-Label_1': '3111111111',\n 'multi-select': 'apple',\n 'multi_line_text_Long-text-Label_1': 'This is a long text',\n },\n guests: [\n {\n email: 'dale@fur.com',\n name: 'dale@fur.com',\n },\n ],\n primaryParticipant: {\n email: 'dale@nylas.com',\n name: 'Dale Fur',\n },\n };\n expect(spyEvent.mock.calls[0][0].detail).toEqual(obj);\n });\n});\n"]}
|
|
@@ -63,10 +63,10 @@ export class NylasOrganizerConfirmationCard {
|
|
|
63
63
|
this.action = null;
|
|
64
64
|
}
|
|
65
65
|
render() {
|
|
66
|
-
return (h(Host, { key: '
|
|
66
|
+
return (h(Host, { key: '222871895768a9e8125bf2c7332200e65872b475', part: "nmcc" }, h("div", { key: '4838e6be84dab176c13230870f3d0094f1054da9', class: "event-card-wrapper", part: "nmccc__card" }, h("div", { key: '004ce2abb9cc4654dd4278e6c7002b34b7346968', class: "calendar-icon" }, h("calendar-check-icon", { key: '6202df706f78fcd592738a33b1e052e94f88d6ff' })), h("div", { key: '5a1f583617511c35a29fa65f026820996941b707', class: "booked-event-header" }, h("h2", { key: '62b88591f4432538d3c57fa6af4142f0cd2c997f', slot: "card-title", part: "nmcc__title" }, !!this.organizerConfirmationBookingId && `${i18next.t('bookingPendingTitle')}!`)), h("div", { key: '838b6df023be444c1b1ce1dfc7df21cab18756e1', class: "manage-booking-description" }, h("p", { key: 'dc119292e92c4565fb84939284fb57f1fb2ec1f6' }, i18next.t('bookingPendingnDescription'))), h("div", { key: '31cadc6bfc0ae9f0adf93d159cff2261631e2281', class: {
|
|
67
67
|
'footer': true,
|
|
68
|
-
'no-footer': this.configSettings?.scheduler?.hide_cancellation_options && this.configSettings?.scheduler?.hide_rescheduling_options,
|
|
69
|
-
'no-template-cols': this.configSettings?.scheduler?.hide_cancellation_options || this.configSettings?.scheduler?.hide_rescheduling_options,
|
|
68
|
+
'no-footer': !!this.configSettings?.scheduler?.hide_cancellation_options && !!this.configSettings?.scheduler?.hide_rescheduling_options,
|
|
69
|
+
'no-template-cols': !!this.configSettings?.scheduler?.hide_cancellation_options || !!this.configSettings?.scheduler?.hide_rescheduling_options,
|
|
70
70
|
} }, !this.configSettings?.scheduler?.hide_cancellation_options && (h("button-component", { variant: 'destructive', onClick: this.handleRejectBookingButtonClicked, isLoading: this.isLoading && this.action === 'reject', part: "nmcc__button-outline nmcc__cancel-cta" }, `${i18next.t('rejectBookingButton')}`)), !this.configSettings?.scheduler?.hide_rescheduling_options && (h("button-component", { variant: 'basic', onClick: this.handleConfirmBookingButtonClicked, isLoading: this.isLoading && this.action === 'confirm', part: "nmcc__button-outline nmcc__reschedule-cta" }, `${i18next.t('confirmBookingButton')}`))))));
|
|
71
71
|
}
|
|
72
72
|
static get is() { return "nylas-organizer-confirmation-card"; }
|
|
@@ -84,16 +84,16 @@ export class NylasOrganizerConfirmationCard {
|
|
|
84
84
|
static get properties() {
|
|
85
85
|
return {
|
|
86
86
|
"configSettings": {
|
|
87
|
-
"type": "
|
|
87
|
+
"type": "unknown",
|
|
88
88
|
"mutable": false,
|
|
89
89
|
"complexType": {
|
|
90
90
|
"original": "ConfigSettings",
|
|
91
|
-
"resolved": "
|
|
91
|
+
"resolved": "undefined | { configuration_id: string; booking?: { additional_fields: Record<string, string>; additional_guests: { email: string; name: string; }[]; booking_ref: string; booking_ref_salt: string; guest: { email: string; name: string; }; timezone: string; email_language: string; event_data: { location: string; when: { start_time: Date; end_time: Date; end_timezone: string; start_timezone: string; object: string; }; }; event_organizer: { name: string; email: string; is_organizer: boolean; }; } | undefined; scheduler: { available_days_in_future: number; min_cancellation_notice: number; min_booking_notice: number; rescheduling_url?: string | undefined; cancellation_url?: string | undefined; cancellation_policy?: string | undefined; hide_additional_guests?: boolean | undefined; hide_cancellation_options?: boolean | undefined; hide_rescheduling_options?: boolean | undefined; additional_fields?: Record<string, AdditionalFields> | undefined; confirmation_redirect_url?: string | undefined; organizer_confirmation_url?: string | undefined; }; organizer: { name: string; email: string; }; slug: string; appearance: Appearance; booking_type: string; name: string; }",
|
|
92
92
|
"references": {
|
|
93
93
|
"ConfigSettings": {
|
|
94
94
|
"location": "import",
|
|
95
|
-
"path": "
|
|
96
|
-
"id": "src/
|
|
95
|
+
"path": "@/stores/scheduler-store",
|
|
96
|
+
"id": "src/stores/scheduler-store.ts::ConfigSettings"
|
|
97
97
|
}
|
|
98
98
|
}
|
|
99
99
|
},
|
|
@@ -105,9 +105,7 @@ export class NylasOrganizerConfirmationCard {
|
|
|
105
105
|
"text": "The config settings for the scheduler."
|
|
106
106
|
}],
|
|
107
107
|
"text": ""
|
|
108
|
-
}
|
|
109
|
-
"attribute": "config-settings",
|
|
110
|
-
"reflect": false
|
|
108
|
+
}
|
|
111
109
|
},
|
|
112
110
|
"isLoading": {
|
|
113
111
|
"type": "boolean",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nylas-organizer-confirmation-card.js","sourceRoot":"","sources":["../../../../src/components/scheduler/nylas-organizer-confirmation-card/nylas-organizer-confirmation-card.tsx"],"names":[],"mappings":"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","sourcesContent":["import { RegisterComponent } from '@/common/register-component';\nimport { Component, Element, EventEmitter, h, Host, Method, Prop, State, Watch } from '@stencil/core';\nimport { ConfigSettings, NylasSchedulerConnector } from '../../..';\nimport { NylasScheduling } from '../nylas-scheduling/nylas-scheduling';\nimport { debug } from '@/utils/utils';\nimport { Event } from '@stencil/core';\nimport { NylasSchedulerErrorResponse, ThemeConfig } from '@nylas/core';\nimport i18next from '@/utils/i18n';\n\n/**\n * The `nylas-organizer-confirmation-card` component is a UI component that displays the booked event card.\n *\n * @part nmcc - The booked event card host.\n * @part nmcc__card - The booked event card.\n * @part nmcc__title - The title of the booked event card.\n * @part nmcc__description - The description of the booked event card.\n * @part nmcc__button-outline - The cancel & reschedule button CTA.\n * @part nmcc__cancel-cta - The cancel button CTA.\n * @part nmcc__reschedule-cta - The reschedule button CTA.\n */\n@Component({\n tag: 'nylas-organizer-confirmation-card',\n styleUrl: 'nylas-organizer-confirmation-card.scss',\n shadow: true,\n})\nexport class NylasOrganizerConfirmationCard {\n /**\n * The host element.\n */\n @Element() host!: HTMLNylasOrganizerConfirmationCardElement;\n\n /**\n * @standalone\n * The config settings for the scheduler.\n */\n @Prop() readonly configSettings?: ConfigSettings;\n\n /**\n * @standalone\n * The loading state prop. Used to display loading state when fetching availability.\n */\n @Prop() readonly isLoading?: boolean;\n\n /**\n * @standalone\n * The theme configuration.\n */\n @Prop({ attribute: 'theme-config' }) readonly themeConfig?: any;\n\n /**\n * Booking flow type.\n */\n @Prop() readonly organizerConfirmationBookingId?: string;\n\n /**\n * The selected language.\n */\n @Prop({ attribute: 'selected-language' }) readonly selectedLanguage: string = navigator.language;\n\n /**\n * The state to identify which action is being performed.\n */\n @State() action: 'confirm' | 'reject' | null = null;\n\n /**\n * Reject booking button clicked event.\n */\n @Event() readonly rejectBookingButtonClicked!: EventEmitter<{ bookingId: string; host: HTMLNylasOrganizerConfirmationCardElement }>;\n\n /**\n * Reschedule button clicked event.\n * */\n @Event() readonly confirmBookingButtonClicked!: EventEmitter<{\n bookingId: string;\n host: HTMLNylasOrganizerConfirmationCardElement;\n errorHandler?: (error: NylasSchedulerErrorResponse) => void;\n }>;\n\n /**\n * This event is fired when an error occurs while rescheduling the booking.\n */\n @Event() readonly confirmBookingError!: EventEmitter<NylasSchedulerErrorResponse>;\n\n @Watch('themeConfig')\n themeConfigChanged(newThemeConfig: ThemeConfig) {\n this.applyThemeConfig(newThemeConfig);\n }\n\n connectedCallback() {}\n\n disconnectedCallback() {}\n\n async componentWillLoad() {\n debug(`[nylas-organizer-confirmation-card] Component will load`);\n }\n\n async componentDidLoad() {\n debug(`[nylas-organizer-confirmation-card] Component did load`);\n this.applyThemeConfig(this.themeConfig);\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 handleConfirmBookingButtonClicked = () => {\n this.action = 'confirm';\n const errorHandler = (error: NylasSchedulerErrorResponse) => {\n this.confirmBookingError.emit(error);\n };\n if (this.organizerConfirmationBookingId && !this.isLoading) {\n this.confirmBookingButtonClicked.emit({ bookingId: this.organizerConfirmationBookingId, host: this.host, errorHandler });\n }\n };\n\n private handleRejectBookingButtonClicked = () => {\n this.action = 'reject';\n if (this.organizerConfirmationBookingId && !this.isLoading) {\n this.rejectBookingButtonClicked.emit({ bookingId: this.organizerConfirmationBookingId, host: this.host });\n }\n };\n\n @Method()\n async resetAction() {\n this.action = null;\n }\n\n @RegisterComponent<NylasOrganizerConfirmationCard, NylasSchedulerConnector, Exclude<NylasScheduling['stores'], undefined>>({\n name: 'nylas-organizer-confirmation-card',\n stateToProps: new Map([\n ['scheduler.organizerConfirmationBookingId', 'organizerConfirmationBookingId'],\n ['scheduler.configSettings', 'configSettings'],\n ['scheduler.isLoading', 'isLoading'],\n ['scheduler.selectedLanguage', 'selectedLanguage'],\n ['scheduler.themeConfig', 'themeConfig'],\n ]),\n eventToProps: {\n rejectBookingButtonClicked: async (\n event: CustomEvent<{ bookingId: string; host: HTMLNylasOrganizerConfirmationCardElement }>,\n nylasSchedulerConnector: NylasSchedulerConnector,\n ) => {\n nylasSchedulerConnector.scheduler.setReject(event.detail.bookingId);\n },\n confirmBookingButtonClicked: async (\n event: CustomEvent<{ bookingId: string; host: HTMLNylasOrganizerConfirmationCardElement; errorHandler?: (error: NylasSchedulerErrorResponse) => void }>,\n nylasSchedulerConnector: NylasSchedulerConnector,\n ) => {\n const { host } = event.detail;\n const result = await nylasSchedulerConnector.scheduler.updateBooking({\n bookingId: event.detail.bookingId,\n status: 'confirmed',\n });\n const { errorHandler } = event.detail;\n if (errorHandler && (!result || 'error' in result)) {\n errorHandler(result);\n }\n await host.resetAction();\n },\n },\n fireRegisterEvent: true,\n })\n render() {\n return (\n <Host part=\"nmcc\">\n <div class=\"event-card-wrapper\" part=\"nmccc__card\">\n <div class=\"calendar-icon\">\n <calendar-check-icon />\n </div>\n <div class=\"booked-event-header\">\n <h2 slot=\"card-title\" part=\"nmcc__title\">\n {!!this.organizerConfirmationBookingId && `${i18next.t('bookingPendingTitle')}!`}\n </h2>\n </div>\n <div class=\"manage-booking-description\">\n <p>{i18next.t('bookingPendingnDescription')}</p>\n </div>\n <div\n class={{\n 'footer': true,\n 'no-footer': this.configSettings?.scheduler?.hide_cancellation_options && this.configSettings?.scheduler?.hide_rescheduling_options,\n 'no-template-cols': this.configSettings?.scheduler?.hide_cancellation_options || this.configSettings?.scheduler?.hide_rescheduling_options,\n }}\n >\n {!this.configSettings?.scheduler?.hide_cancellation_options && (\n <button-component\n variant={'destructive'}\n onClick={this.handleRejectBookingButtonClicked}\n isLoading={this.isLoading && this.action === 'reject'}\n part=\"nmcc__button-outline nmcc__cancel-cta\"\n >\n {`${i18next.t('rejectBookingButton')}`}\n </button-component>\n )}\n {!this.configSettings?.scheduler?.hide_rescheduling_options && (\n <button-component\n variant={'basic'}\n onClick={this.handleConfirmBookingButtonClicked}\n isLoading={this.isLoading && this.action === 'confirm'}\n part=\"nmcc__button-outline nmcc__reschedule-cta\"\n >\n {`${i18next.t('confirmBookingButton')}`}\n </button-component>\n )}\n </div>\n </div>\n </Host>\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"nylas-organizer-confirmation-card.js","sourceRoot":"","sources":["../../../../src/components/scheduler/nylas-organizer-confirmation-card/nylas-organizer-confirmation-card.tsx"],"names":[],"mappings":"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","sourcesContent":["import { RegisterComponent } from '@/common/register-component';\nimport { Component, Element, EventEmitter, h, Host, Method, Prop, State, Watch } from '@stencil/core';\nimport { NylasSchedulerConnector } from '../../..';\nimport { ConfigSettings } from '@/stores/scheduler-store';\nimport { NylasScheduling } from '../nylas-scheduling/nylas-scheduling';\nimport { debug } from '@/utils/utils';\nimport { Event } from '@stencil/core';\nimport { NylasSchedulerErrorResponse, ThemeConfig } from '@nylas/core';\nimport i18next from '@/utils/i18n';\n\n/**\n * The `nylas-organizer-confirmation-card` component is a UI component that displays the booked event card.\n *\n * @part nmcc - The booked event card host.\n * @part nmcc__card - The booked event card.\n * @part nmcc__title - The title of the booked event card.\n * @part nmcc__description - The description of the booked event card.\n * @part nmcc__button-outline - The cancel & reschedule button CTA.\n * @part nmcc__cancel-cta - The cancel button CTA.\n * @part nmcc__reschedule-cta - The reschedule button CTA.\n */\n@Component({\n tag: 'nylas-organizer-confirmation-card',\n styleUrl: 'nylas-organizer-confirmation-card.scss',\n shadow: true,\n})\nexport class NylasOrganizerConfirmationCard {\n /**\n * The host element.\n */\n @Element() host!: HTMLNylasOrganizerConfirmationCardElement;\n\n /**\n * @standalone\n * The config settings for the scheduler.\n */\n @Prop() readonly configSettings?: ConfigSettings;\n\n /**\n * @standalone\n * The loading state prop. Used to display loading state when fetching availability.\n */\n @Prop() readonly isLoading?: boolean;\n\n /**\n * @standalone\n * The theme configuration.\n */\n @Prop({ attribute: 'theme-config' }) readonly themeConfig?: any;\n\n /**\n * Booking flow type.\n */\n @Prop() readonly organizerConfirmationBookingId?: string;\n\n /**\n * The selected language.\n */\n @Prop({ attribute: 'selected-language' }) readonly selectedLanguage: string = navigator.language;\n\n /**\n * The state to identify which action is being performed.\n */\n @State() action: 'confirm' | 'reject' | null = null;\n\n /**\n * Reject booking button clicked event.\n */\n @Event() readonly rejectBookingButtonClicked!: EventEmitter<{ bookingId: string; host: HTMLNylasOrganizerConfirmationCardElement }>;\n\n /**\n * Reschedule button clicked event.\n * */\n @Event() readonly confirmBookingButtonClicked!: EventEmitter<{\n bookingId: string;\n host: HTMLNylasOrganizerConfirmationCardElement;\n errorHandler?: (error: NylasSchedulerErrorResponse) => void;\n }>;\n\n /**\n * This event is fired when an error occurs while rescheduling the booking.\n */\n @Event() readonly confirmBookingError!: EventEmitter<NylasSchedulerErrorResponse>;\n\n @Watch('themeConfig')\n themeConfigChanged(newThemeConfig: ThemeConfig) {\n this.applyThemeConfig(newThemeConfig);\n }\n\n connectedCallback() {}\n\n disconnectedCallback() {}\n\n async componentWillLoad() {\n debug(`[nylas-organizer-confirmation-card] Component will load`);\n }\n\n async componentDidLoad() {\n debug(`[nylas-organizer-confirmation-card] Component did load`);\n this.applyThemeConfig(this.themeConfig);\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 handleConfirmBookingButtonClicked = () => {\n this.action = 'confirm';\n const errorHandler = (error: NylasSchedulerErrorResponse) => {\n this.confirmBookingError.emit(error);\n };\n if (this.organizerConfirmationBookingId && !this.isLoading) {\n this.confirmBookingButtonClicked.emit({ bookingId: this.organizerConfirmationBookingId, host: this.host, errorHandler });\n }\n };\n\n private handleRejectBookingButtonClicked = () => {\n this.action = 'reject';\n if (this.organizerConfirmationBookingId && !this.isLoading) {\n this.rejectBookingButtonClicked.emit({ bookingId: this.organizerConfirmationBookingId, host: this.host });\n }\n };\n\n @Method()\n async resetAction() {\n this.action = null;\n }\n\n @RegisterComponent<NylasOrganizerConfirmationCard, NylasSchedulerConnector, Exclude<NylasScheduling['stores'], undefined>>({\n name: 'nylas-organizer-confirmation-card',\n stateToProps: new Map([\n ['scheduler.organizerConfirmationBookingId', 'organizerConfirmationBookingId'],\n ['scheduler.configSettings', 'configSettings'],\n ['scheduler.isLoading', 'isLoading'],\n ['scheduler.selectedLanguage', 'selectedLanguage'],\n ['scheduler.themeConfig', 'themeConfig'],\n ]),\n eventToProps: {\n rejectBookingButtonClicked: async (\n event: CustomEvent<{ bookingId: string; host: HTMLNylasOrganizerConfirmationCardElement }>,\n nylasSchedulerConnector: NylasSchedulerConnector,\n ) => {\n nylasSchedulerConnector.scheduler.setReject(event.detail.bookingId);\n },\n confirmBookingButtonClicked: async (\n event: CustomEvent<{ bookingId: string; host: HTMLNylasOrganizerConfirmationCardElement; errorHandler?: (error: NylasSchedulerErrorResponse) => void }>,\n nylasSchedulerConnector: NylasSchedulerConnector,\n ) => {\n const { host } = event.detail;\n const result = await nylasSchedulerConnector.scheduler.updateBooking({\n bookingId: event.detail.bookingId,\n status: 'confirmed',\n });\n const { errorHandler } = event.detail;\n if (errorHandler && (!result || 'error' in result)) {\n errorHandler(result);\n }\n await host.resetAction();\n },\n },\n fireRegisterEvent: true,\n })\n render() {\n return (\n <Host part=\"nmcc\">\n <div class=\"event-card-wrapper\" part=\"nmccc__card\">\n <div class=\"calendar-icon\">\n <calendar-check-icon />\n </div>\n <div class=\"booked-event-header\">\n <h2 slot=\"card-title\" part=\"nmcc__title\">\n {!!this.organizerConfirmationBookingId && `${i18next.t('bookingPendingTitle')}!`}\n </h2>\n </div>\n <div class=\"manage-booking-description\">\n <p>{i18next.t('bookingPendingnDescription')}</p>\n </div>\n <div\n class={{\n 'footer': true,\n 'no-footer': !!this.configSettings?.scheduler?.hide_cancellation_options && !!this.configSettings?.scheduler?.hide_rescheduling_options,\n 'no-template-cols': !!this.configSettings?.scheduler?.hide_cancellation_options || !!this.configSettings?.scheduler?.hide_rescheduling_options,\n }}\n >\n {!this.configSettings?.scheduler?.hide_cancellation_options && (\n <button-component\n variant={'destructive'}\n onClick={this.handleRejectBookingButtonClicked}\n isLoading={this.isLoading && this.action === 'reject'}\n part=\"nmcc__button-outline nmcc__cancel-cta\"\n >\n {`${i18next.t('rejectBookingButton')}`}\n </button-component>\n )}\n {!this.configSettings?.scheduler?.hide_rescheduling_options && (\n <button-component\n variant={'basic'}\n onClick={this.handleConfirmBookingButtonClicked}\n isLoading={this.isLoading && this.action === 'confirm'}\n part=\"nmcc__button-outline nmcc__reschedule-cta\"\n >\n {`${i18next.t('confirmBookingButton')}`}\n </button-component>\n )}\n </div>\n </div>\n </Host>\n );\n }\n}\n"]}
|
|
@@ -5,11 +5,11 @@ import { NotificationType, } from "@nylas/core";
|
|
|
5
5
|
import { Host, h } from "@stencil/core";
|
|
6
6
|
import { addDaysToCurrentDate, capitalizeFirstLetter, compactStringToUUIDs, debug } from "../../../utils/utils";
|
|
7
7
|
import { SchedulerView } from "./scheduler-view";
|
|
8
|
-
import { ErrorCategory } from "../../../connector/nylas-scheduler-connector/errors/index";
|
|
9
8
|
import { MessageBanner } from "./message-banner";
|
|
10
9
|
import i18next from "../../../utils/i18n";
|
|
11
10
|
import { LANGUAGE_CODE, LANGUAGE_CODE_MAP } from "../../../common/constants";
|
|
12
11
|
import * as Sentry from "@sentry/browser";
|
|
12
|
+
import { ErrorCategory } from "../../../types/index";
|
|
13
13
|
const genericError = { title: i18next.t('genericErrorTitle'), type: NotificationType.Error, category: ErrorCategory.Component };
|
|
14
14
|
export class NylasScheduling {
|
|
15
15
|
constructor() {
|
|
@@ -789,7 +789,7 @@ export class NylasScheduling {
|
|
|
789
789
|
"mutable": false,
|
|
790
790
|
"complexType": {
|
|
791
791
|
"original": "SchedulerEventOverride",
|
|
792
|
-
"resolved": "Partial<{ themeConfig: (event: CustomEvent<unknown>, connector?: NylasSchedulerConnectorInterface | undefined) => Promise<void>; timeslotSelected: (event: CustomEvent<Timeslot>, connector?: NylasSchedulerConnectorInterface | undefined) => Promise<void>; timeslotConfirmed: (event: CustomEvent<{ timeslot: Timeslot; host: HTMLNylasTimeslotPickerElement; }>, connector?: NylasSchedulerConnectorInterface | undefined) => Promise<void>; validateTimeslotError: (event: CustomEvent<{ error: string; type: \"error\" | \"info\"; }>, connector?: NylasSchedulerConnectorInterface | undefined) => Promise<void>; dateSelected: (event: CustomEvent<Date>, connector?: NylasSchedulerConnectorInterface | undefined) => Promise<void>; monthChanged: (event: CustomEvent<Date>, connector?: NylasSchedulerConnectorInterface | undefined) => Promise<void>; timezoneChanged: (event: CustomEvent<string>, connector?: NylasSchedulerConnectorInterface | undefined) => Promise<void>; languageChanged: (event: CustomEvent<string>, connector?: NylasSchedulerConnectorInterface | undefined) => Promise<void>; nameChanged: (event: CustomEvent<string>, connector?: NylasSchedulerConnectorInterface | undefined) => Promise<void>; emailChanged: (event: CustomEvent<string>, connector?: NylasSchedulerConnectorInterface | undefined) => Promise<void>; backButtonClicked: (event: CustomEvent<boolean>, connector?: NylasSchedulerConnectorInterface | undefined) => Promise<void>; detailsConfirmed: (event: CustomEvent<NylasSchedulerBookingDataWithFlatFields>, connector?: NylasSchedulerConnectorInterface | undefined) => Promise<void>; bookingFormError: (event: CustomEvent<Partial<Notification>>, connector?: NylasSchedulerConnectorInterface | undefined) => Promise<void>; bookingFormSubmitted: (event: CustomEvent<void>, connector?: NylasSchedulerConnectorInterface | undefined) => Promise<void>; bookingInfo: (event: CustomEvent<unknown>, connector?: NylasSchedulerConnectorInterface | undefined) => Promise<void>;
|
|
792
|
+
"resolved": "Partial<{ themeConfig: (event: CustomEvent<unknown>, connector?: NylasSchedulerConnectorInterface | undefined) => Promise<void>; timeslotSelected: (event: CustomEvent<Timeslot>, connector?: NylasSchedulerConnectorInterface | undefined) => Promise<void>; timeslotConfirmed: (event: CustomEvent<{ timeslot: Timeslot; host: HTMLNylasTimeslotPickerElement; }>, connector?: NylasSchedulerConnectorInterface | undefined) => Promise<void>; validateTimeslotError: (event: CustomEvent<{ error: string; type: \"error\" | \"info\"; }>, connector?: NylasSchedulerConnectorInterface | undefined) => Promise<void>; dateSelected: (event: CustomEvent<Date>, connector?: NylasSchedulerConnectorInterface | undefined) => Promise<void>; monthChanged: (event: CustomEvent<Date>, connector?: NylasSchedulerConnectorInterface | undefined) => Promise<void>; timezoneChanged: (event: CustomEvent<string>, connector?: NylasSchedulerConnectorInterface | undefined) => Promise<void>; languageChanged: (event: CustomEvent<string>, connector?: NylasSchedulerConnectorInterface | undefined) => Promise<void>; nameChanged: (event: CustomEvent<string>, connector?: NylasSchedulerConnectorInterface | undefined) => Promise<void>; emailChanged: (event: CustomEvent<string>, connector?: NylasSchedulerConnectorInterface | undefined) => Promise<void>; backButtonClicked: (event: CustomEvent<boolean>, connector?: NylasSchedulerConnectorInterface | undefined) => Promise<void>; detailsConfirmed: (event: CustomEvent<NylasSchedulerBookingDataWithFlatFields>, connector?: NylasSchedulerConnectorInterface | undefined) => Promise<void>; bookingFormError: (event: CustomEvent<Partial<Notification>>, connector?: NylasSchedulerConnectorInterface | undefined) => Promise<void>; bookingFormSubmitted: (event: CustomEvent<void>, connector?: NylasSchedulerConnectorInterface | undefined) => Promise<void>; bookingInfo: (event: CustomEvent<unknown>, connector?: NylasSchedulerConnectorInterface | undefined) => Promise<void>; cancelBookingButtonClicked: (event: CustomEvent<{ bookingId: string; }>, connector?: NylasSchedulerConnectorInterface | undefined) => Promise<void>; rescheduleButtonClicked: (event: CustomEvent<{ bookingId: string; errorHandler?: ((error: NylasSchedulerErrorResponse) => void) | undefined; }>, connector?: NylasSchedulerConnectorInterface | undefined) => Promise<void>; rescheduleBookedEventError: (event: CustomEvent<NylasSchedulerErrorResponse>, connector?: NylasSchedulerConnectorInterface | undefined) => Promise<void>; cancelBookedEventValidationError: (event: CustomEvent<{ error: { title: string; message: string; }; }>, connector?: NylasSchedulerConnectorInterface | undefined) => Promise<void>; goBackButtonClicked: (event: CustomEvent<void>, connector?: NylasSchedulerConnectorInterface | undefined) => Promise<void>; cancelBookingFormSubmitted: (event: CustomEvent<{ bookingId: string; action: \"cancel\" | \"reject\"; reason: string; errorHandler?: ((error: NylasSchedulerErrorResponse) => void) | undefined; }>, connector?: NylasSchedulerConnectorInterface | undefined) => Promise<void>; triggerValidation: (event: CustomEvent<{}>, connector?: NylasSchedulerConnectorInterface | undefined) => Promise<void>; cancelBookedEventError: (event: CustomEvent<NylasSchedulerErrorResponse>, connector?: NylasSchedulerConnectorInterface | undefined) => Promise<void>; cancelBookingFormError: (event: CustomEvent<Partial<Notification>>, connector?: NylasSchedulerConnectorInterface | undefined) => Promise<void>; closeCancelEventCardClicked: (event: CustomEvent<{ errorHandler?: ((error: NylasSchedulerErrorResponse) => void) | undefined; }>, connector?: NylasSchedulerConnectorInterface | undefined) => Promise<void>; cancelledEventCardError: (event: CustomEvent<NylasSchedulerErrorResponse>, connector?: NylasSchedulerConnectorInterface | undefined) => Promise<void>; }> & EventOverride<NylasSchedulerConnectorInterface>",
|
|
793
793
|
"references": {
|
|
794
794
|
"SchedulerEventOverride": {
|
|
795
795
|
"location": "import",
|