@nylas/web-elements 2.0.6 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (164) hide show
  1. package/dist/cdn/nylas-scheduler-editor/nylas-scheduler-editor.es.js +212 -212
  2. package/dist/cdn/nylas-scheduling/nylas-scheduling.es.js +1044 -1044
  3. package/dist/cjs/{abstract-provider-b37458c4.js → abstract-provider-85a616a9.js} +2 -2
  4. package/dist/cjs/{abstract-provider-b37458c4.js.map → abstract-provider-85a616a9.js.map} +1 -1
  5. package/dist/cjs/calendar-agenda-fill-icon_37.cjs.entry.js +55 -55
  6. package/dist/cjs/calendar-agenda-fill-icon_37.cjs.entry.js.map +1 -1
  7. package/dist/cjs/checkbox-group_4.cjs.entry.js +3 -3
  8. package/dist/cjs/checkmark-icon_15.cjs.entry.js +2 -2
  9. package/dist/cjs/{customParseFormat-61a3a302.js → customParseFormat-dc3b45aa.js} +2 -2
  10. package/dist/cjs/{customParseFormat-61a3a302.js.map → customParseFormat-dc3b45aa.js.map} +1 -1
  11. package/dist/cjs/{feedbackSync-2c4d37fe.js → feedbackSync-eaa01d21.js} +2 -2
  12. package/dist/cjs/feedbackSync-eaa01d21.js.map +1 -0
  13. package/dist/cjs/google-logo-icon_6.cjs.entry.js +18 -18
  14. package/dist/cjs/google-logo-icon_6.cjs.entry.js.map +1 -1
  15. package/dist/cjs/index.cjs.js +2 -2
  16. package/dist/cjs/{index.es-e4fc6d92.js → index.es-a962dedb.js} +2 -2
  17. package/dist/cjs/{index.es-e4fc6d92.js.map → index.es-a962dedb.js.map} +1 -1
  18. package/dist/cjs/input-component.cjs.entry.js +1 -1
  19. package/dist/cjs/input-dropdown_2.cjs.entry.js +1 -1
  20. package/dist/cjs/loader.cjs.js +1 -1
  21. package/dist/cjs/multi-select-dropdown.cjs.entry.js +1 -1
  22. package/dist/cjs/{nylas-api-request-5b2f7ec0.js → nylas-api-request-d263af93.js} +2 -2
  23. package/dist/cjs/{nylas-api-request-5b2f7ec0.js.map → nylas-api-request-d263af93.js.map} +1 -1
  24. package/dist/cjs/nylas-booked-event-card_11.cjs.entry.js +2 -2
  25. package/dist/cjs/nylas-date-component_2.cjs.entry.js +2 -2
  26. package/dist/cjs/nylas-form-card.cjs.entry.js +2 -2
  27. package/dist/cjs/nylas-notification_2.cjs.entry.js +1 -1
  28. package/dist/cjs/nylas-scheduler-editor.cjs.entry.js +6 -6
  29. package/dist/cjs/nylas-scheduling.cjs.entry.js +8 -8
  30. package/dist/cjs/nylas-scheduling.cjs.entry.js.map +1 -1
  31. package/dist/cjs/nylas-web-elements.cjs.js +1 -1
  32. package/dist/cjs/{register-component-8a9c40ee.js → register-component-2eefbf66.js} +2 -2
  33. package/dist/cjs/{register-component-8a9c40ee.js.map → register-component-2eefbf66.js.map} +1 -1
  34. package/dist/cjs/textarea-component.cjs.entry.js +1 -1
  35. package/dist/cjs/{utils-c923f1a8.js → utils-e37da320.js} +113 -113
  36. package/dist/cjs/{utils-c923f1a8.js.map → utils-e37da320.js.map} +1 -1
  37. package/dist/collection/collection-manifest.json +1 -1
  38. package/dist/collection/components/scheduler/nylas-scheduling/nylas-scheduling.js +1 -1
  39. package/dist/collection/components/scheduler/nylas-scheduling/nylas-scheduling.js.map +1 -1
  40. package/dist/collection/components/scheduler-editor/nylas-editor-tabs/nylas-editor-tabs.js +10 -10
  41. package/dist/collection/components/scheduler-editor/nylas-editor-tabs/nylas-editor-tabs.js.map +1 -1
  42. package/dist/collection/components/scheduler-editor/nylas-editor-tabs/test/nylas-editor-tabs.spec.js +1 -1
  43. package/dist/collection/components/scheduler-editor/nylas-editor-tabs/test/nylas-editor-tabs.spec.js.map +1 -1
  44. package/dist/collection/components/scheduler-editor/nylas-participants-custom-availability/nylas-participants-custom-availability.js +18 -18
  45. package/dist/collection/components/scheduler-editor/nylas-participants-custom-availability/nylas-participants-custom-availability.js.map +1 -1
  46. package/dist/collection/components/scheduler-editor/{nylas-specific-date-availability-picker/nylas-specific-date-availability-picker.css → nylas-specific-time-availability-picker/nylas-specific-time-availability-picker.css} +46 -46
  47. package/dist/collection/components/scheduler-editor/{nylas-specific-date-availability-picker/nylas-specific-date-availability-picker.js → nylas-specific-time-availability-picker/nylas-specific-time-availability-picker.js} +41 -41
  48. package/dist/collection/components/scheduler-editor/nylas-specific-time-availability-picker/nylas-specific-time-availability-picker.js.map +1 -0
  49. package/dist/collection/components/scheduler-editor/{nylas-specific-date-availability-picker/test/nylas-specific-date-availability-picker.spec.js → nylas-specific-time-availability-picker/test/nylas-specific-time-availability-picker.spec.js} +48 -48
  50. package/dist/collection/components/scheduler-editor/nylas-specific-time-availability-picker/test/nylas-specific-time-availability-picker.spec.js.map +1 -0
  51. package/dist/collection/types/index.js.map +1 -1
  52. package/dist/components/index3.js.map +1 -1
  53. package/dist/components/nylas-editor-tabs-group2.js +2 -2
  54. package/dist/components/nylas-editor-tabs2.js +15 -15
  55. package/dist/components/nylas-editor-tabs2.js.map +1 -1
  56. package/dist/components/nylas-participants-custom-availability2.js +21 -21
  57. package/dist/components/nylas-participants-custom-availability2.js.map +1 -1
  58. package/dist/components/nylas-scheduler-editor.js +5 -5
  59. package/dist/components/nylas-scheduling.js +4 -4
  60. package/dist/components/nylas-scheduling.js.map +1 -1
  61. package/dist/components/nylas-specific-time-availability-picker.d.ts +11 -0
  62. package/dist/components/nylas-specific-time-availability-picker.js +8 -0
  63. package/dist/components/nylas-specific-time-availability-picker.js.map +1 -0
  64. package/dist/components/{nylas-specific-date-availability-picker2.js → nylas-specific-time-availability-picker2.js} +41 -41
  65. package/dist/components/nylas-specific-time-availability-picker2.js.map +1 -0
  66. package/dist/components/utils.js +112 -112
  67. package/dist/esm/{abstract-provider-45ada3b4.js → abstract-provider-a502b54d.js} +2 -2
  68. package/dist/esm/{abstract-provider-45ada3b4.js.map → abstract-provider-a502b54d.js.map} +1 -1
  69. package/dist/esm/calendar-agenda-fill-icon_37.entry.js +55 -55
  70. package/dist/esm/calendar-agenda-fill-icon_37.entry.js.map +1 -1
  71. package/dist/esm/checkbox-group_4.entry.js +3 -3
  72. package/dist/esm/checkmark-icon_15.entry.js +2 -2
  73. package/dist/esm/{customParseFormat-eeec04f5.js → customParseFormat-b5d95b34.js} +2 -2
  74. package/dist/esm/{customParseFormat-eeec04f5.js.map → customParseFormat-b5d95b34.js.map} +1 -1
  75. package/dist/esm/{feedbackSync-0ebd0eda.js → feedbackSync-92220b42.js} +2 -2
  76. package/dist/esm/feedbackSync-92220b42.js.map +1 -0
  77. package/dist/esm/google-logo-icon_6.entry.js +18 -18
  78. package/dist/esm/google-logo-icon_6.entry.js.map +1 -1
  79. package/dist/esm/{index.es-57d4a08f.js → index.es-488bc919.js} +2 -2
  80. package/dist/esm/{index.es-57d4a08f.js.map → index.es-488bc919.js.map} +1 -1
  81. package/dist/esm/index.js +2 -2
  82. package/dist/esm/input-component.entry.js +1 -1
  83. package/dist/esm/input-dropdown_2.entry.js +1 -1
  84. package/dist/esm/loader.js +1 -1
  85. package/dist/esm/multi-select-dropdown.entry.js +1 -1
  86. package/dist/esm/{nylas-api-request-ad1909c6.js → nylas-api-request-9f7ac6c5.js} +2 -2
  87. package/dist/esm/{nylas-api-request-ad1909c6.js.map → nylas-api-request-9f7ac6c5.js.map} +1 -1
  88. package/dist/esm/nylas-booked-event-card_11.entry.js +2 -2
  89. package/dist/esm/nylas-date-component_2.entry.js +2 -2
  90. package/dist/esm/nylas-form-card.entry.js +2 -2
  91. package/dist/esm/nylas-notification_2.entry.js +1 -1
  92. package/dist/esm/nylas-scheduler-editor.entry.js +6 -6
  93. package/dist/esm/nylas-scheduling.entry.js +8 -8
  94. package/dist/esm/nylas-scheduling.entry.js.map +1 -1
  95. package/dist/esm/nylas-web-elements.js +1 -1
  96. package/dist/esm/{register-component-0aad9e3d.js → register-component-3acd57e7.js} +2 -2
  97. package/dist/esm/{register-component-0aad9e3d.js.map → register-component-3acd57e7.js.map} +1 -1
  98. package/dist/esm/textarea-component.entry.js +1 -1
  99. package/dist/esm/{utils-d3c0b941.js → utils-31933f5d.js} +113 -113
  100. package/dist/esm/{utils-d3c0b941.js.map → utils-31933f5d.js.map} +1 -1
  101. package/dist/nylas-web-elements/index.esm.js +1 -1
  102. package/dist/nylas-web-elements/nylas-web-elements.esm.js +1 -1
  103. package/dist/nylas-web-elements/nylas-web-elements.esm.js.map +1 -1
  104. package/dist/nylas-web-elements/{p-3216af1e.entry.js → p-20f50696.entry.js} +2 -2
  105. package/dist/nylas-web-elements/p-341f1a4c.entry.js +2 -0
  106. package/dist/nylas-web-elements/p-341f1a4c.entry.js.map +1 -0
  107. package/dist/nylas-web-elements/{p-1591deba.js → p-34c9fc7d.js} +2 -2
  108. package/dist/nylas-web-elements/{p-38fa873f.js → p-3524dab1.js} +2 -2
  109. package/dist/nylas-web-elements/p-3524dab1.js.map +1 -0
  110. package/dist/nylas-web-elements/{p-d45012f2.js → p-438d4542.js} +2 -2
  111. package/dist/nylas-web-elements/{p-21ab4e47.entry.js → p-536c5ef3.entry.js} +2 -2
  112. package/dist/nylas-web-elements/{p-a4678661.entry.js → p-5a6c2efd.entry.js} +2 -2
  113. package/dist/nylas-web-elements/p-66a89e65.js +14 -0
  114. package/dist/nylas-web-elements/{p-17c5fb16.js.map → p-66a89e65.js.map} +1 -1
  115. package/dist/nylas-web-elements/{p-88e68e14.entry.js → p-6adb19cf.entry.js} +2 -2
  116. package/dist/nylas-web-elements/{p-8937a53f.entry.js → p-6bda61cf.entry.js} +3 -3
  117. package/dist/nylas-web-elements/p-6bda61cf.entry.js.map +1 -0
  118. package/dist/nylas-web-elements/{p-30d92734.entry.js → p-7c02e476.entry.js} +2 -2
  119. package/dist/nylas-web-elements/{p-8072aa07.js → p-803a1695.js} +2 -2
  120. package/dist/nylas-web-elements/{p-186bbd43.entry.js → p-81925b89.entry.js} +2 -2
  121. package/dist/nylas-web-elements/{p-186bbd43.entry.js.map → p-81925b89.entry.js.map} +1 -1
  122. package/dist/nylas-web-elements/{p-855fe5b3.entry.js → p-83d2ff21.entry.js} +2 -2
  123. package/dist/nylas-web-elements/{p-f83aa456.entry.js → p-8673dcf1.entry.js} +2 -2
  124. package/dist/nylas-web-elements/{p-24c390bd.js → p-86e217f4.js} +2 -2
  125. package/dist/nylas-web-elements/{p-d0f51520.entry.js → p-8d5efa5e.entry.js} +2 -2
  126. package/dist/nylas-web-elements/{p-0271cef3.entry.js → p-d7323440.entry.js} +3 -3
  127. package/dist/nylas-web-elements/{p-59ff0231.entry.js → p-da25d877.entry.js} +2 -2
  128. package/dist/nylas-web-elements/{p-f0e1688e.js → p-e42db60f.js} +2 -2
  129. package/dist/nylas-web-elements/{p-c11e1016.entry.js → p-ff122d1e.entry.js} +2 -2
  130. package/dist/types/components/scheduler-editor/nylas-editor-tabs/nylas-editor-tabs.d.ts +5 -5
  131. package/dist/types/components/scheduler-editor/nylas-participants-custom-availability/nylas-participants-custom-availability.d.ts +3 -3
  132. package/dist/types/components/scheduler-editor/{nylas-specific-date-availability-picker/nylas-specific-date-availability-picker.d.ts → nylas-specific-time-availability-picker/nylas-specific-time-availability-picker.d.ts} +7 -7
  133. package/dist/types/components.d.ts +19 -19
  134. package/dist/types/types/index.d.ts +2 -2
  135. package/package.json +2 -2
  136. package/dist/cjs/feedbackSync-2c4d37fe.js.map +0 -1
  137. package/dist/collection/components/scheduler-editor/nylas-specific-date-availability-picker/nylas-specific-date-availability-picker.js.map +0 -1
  138. package/dist/collection/components/scheduler-editor/nylas-specific-date-availability-picker/test/nylas-specific-date-availability-picker.spec.js.map +0 -1
  139. package/dist/components/nylas-specific-date-availability-picker.d.ts +0 -11
  140. package/dist/components/nylas-specific-date-availability-picker.js +0 -8
  141. package/dist/components/nylas-specific-date-availability-picker.js.map +0 -1
  142. package/dist/components/nylas-specific-date-availability-picker2.js.map +0 -1
  143. package/dist/esm/feedbackSync-0ebd0eda.js.map +0 -1
  144. package/dist/nylas-web-elements/p-17c5fb16.js +0 -14
  145. package/dist/nylas-web-elements/p-38fa873f.js.map +0 -1
  146. package/dist/nylas-web-elements/p-3ddcb355.entry.js +0 -2
  147. package/dist/nylas-web-elements/p-3ddcb355.entry.js.map +0 -1
  148. package/dist/nylas-web-elements/p-8937a53f.entry.js.map +0 -1
  149. /package/dist/nylas-web-elements/{p-3216af1e.entry.js.map → p-20f50696.entry.js.map} +0 -0
  150. /package/dist/nylas-web-elements/{p-1591deba.js.map → p-34c9fc7d.js.map} +0 -0
  151. /package/dist/nylas-web-elements/{p-d45012f2.js.map → p-438d4542.js.map} +0 -0
  152. /package/dist/nylas-web-elements/{p-21ab4e47.entry.js.map → p-536c5ef3.entry.js.map} +0 -0
  153. /package/dist/nylas-web-elements/{p-a4678661.entry.js.map → p-5a6c2efd.entry.js.map} +0 -0
  154. /package/dist/nylas-web-elements/{p-88e68e14.entry.js.map → p-6adb19cf.entry.js.map} +0 -0
  155. /package/dist/nylas-web-elements/{p-30d92734.entry.js.map → p-7c02e476.entry.js.map} +0 -0
  156. /package/dist/nylas-web-elements/{p-8072aa07.js.map → p-803a1695.js.map} +0 -0
  157. /package/dist/nylas-web-elements/{p-855fe5b3.entry.js.map → p-83d2ff21.entry.js.map} +0 -0
  158. /package/dist/nylas-web-elements/{p-f83aa456.entry.js.map → p-8673dcf1.entry.js.map} +0 -0
  159. /package/dist/nylas-web-elements/{p-24c390bd.js.map → p-86e217f4.js.map} +0 -0
  160. /package/dist/nylas-web-elements/{p-d0f51520.entry.js.map → p-8d5efa5e.entry.js.map} +0 -0
  161. /package/dist/nylas-web-elements/{p-0271cef3.entry.js.map → p-d7323440.entry.js.map} +0 -0
  162. /package/dist/nylas-web-elements/{p-59ff0231.entry.js.map → p-da25d877.entry.js.map} +0 -0
  163. /package/dist/nylas-web-elements/{p-f0e1688e.js.map → p-e42db60f.js.map} +0 -0
  164. /package/dist/nylas-web-elements/{p-c11e1016.entry.js.map → p-ff122d1e.entry.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"nylas-editor-tabs.spec.js","sourceRoot":"","sources":["../../../../../src/components/scheduler-editor/nylas-editor-tabs/test/nylas-editor-tabs.spec.tsx"],"names":[],"mappings":"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","sourcesContent":["import { newSpecPage } from '@stencil/core/testing';\nimport { NylasEditorTabs } from '../nylas-editor-tabs';\nimport { h } from '@stencil/core';\nimport { selectedConfiguration } from '@/utils/test-utils';\nimport ExpressFlow from '../../nylas-scheduler-editor/ExpressFlow';\nimport { NylasBookingCalendarPicker } from '../../nylas-booking-calendar-picker/nylas-booking-calendar-picker';\nimport { SelectDropdown } from '../../../design-system/select-dropdown/select-dropdown';\nimport { ButtonComponent } from '../../../design-system/button-component/button-component';\nimport { CONFIGURATION_EVENT_TYPE } from '@/common/constants';\n\ndescribe('nylas-scheduler-editor', () => {\n let nylasEditorTabs: NylasEditorTabs;\n let page: any;\n beforeEach(async () => {\n page = await newSpecPage({\n autoApplyChanges: true,\n components: [NylasEditorTabs],\n template: () => {\n return (\n <nylas-editor-tabs mode=\"composable\">\n <ExpressFlow\n selectedEventType={CONFIGURATION_EVENT_TYPE.one_on_one}\n currentUser={{\n id: '123',\n email: 'johndoe@example.com',\n name: 'John Doe',\n }}\n calendars={[\n {\n id: '123',\n name: 'John Doe',\n email: 'johndoe@example.com',\n },\n ]}\n selectedConfiguration={JSON.parse(JSON.stringify(selectedConfiguration))}\n />\n </nylas-editor-tabs>\n );\n },\n });\n nylasEditorTabs = page.rootInstance as NylasEditorTabs;\n // Mocking `formRef` and its `checkValidity()` method\n const formMock = {\n checkValidity: jest.fn().mockReturnValue(true),\n acceptCharset: '',\n action: '',\n autocomplete: '',\n elements: {} as HTMLFormControlsCollection,\n encoding: '',\n enctype: '',\n length: 0,\n method: '',\n name: '',\n noValidate: false,\n target: '',\n reset: jest.fn(),\n submit: jest.fn(),\n } as unknown as HTMLFormElement;\n\n // Set the formRef on editor tabs component instance\n (nylasEditorTabs as any).formRef = formMock;\n nylasEditorTabs.updateFormState = jest.fn().mockReturnValue(JSON.parse(JSON.stringify(selectedConfiguration)));\n nylasEditorTabs.action = 'create';\n });\n\n it('renders', async () => {\n expect(page.root).toMatchSnapshot();\n });\n\n it('submit form', async () => {\n const checkErrorSpy = jest.spyOn(nylasEditorTabs, 'checkForOrganizerConfirmationError');\n const event = new Event('submit');\n await nylasEditorTabs.formSubmissionHandler(event);\n expect(checkErrorSpy).toHaveBeenCalled();\n expect(checkErrorSpy).toHaveReturnedWith(false);\n });\n});\n\ndescribe('nylas-scheduler-editor edit', () => {\n const radio_field = {\n type: 'radio_button',\n required: false,\n order: 1,\n options: ['yes', ''],\n label: 'Radio Button Label',\n };\n const dropdown = {\n type: 'dropdown',\n required: false,\n order: 1,\n options: ['yes', ''],\n label: 'Dropdown Label',\n };\n const formState = {\n title: 'no org confirm',\n description: '',\n duration: '30',\n availability: {\n openHours: [\n {\n days: [1, 2, 3, 4, 5],\n start: '09:00',\n end: '17:00',\n timezone: 'America/Toronto',\n },\n ],\n timezone: 'America/Toronto',\n },\n additionalFields: {},\n conferencing: {},\n calendarIds: ['primary'],\n participants: [\n {\n email: 'user@nylas.com',\n is_organizer: true,\n name: '',\n availability: {\n calendar_ids: ['primary'],\n },\n booking: {\n calendar_id: 'user@nylas.com',\n },\n timezone: 'America/Toronto',\n },\n ],\n bookingCalendar: 'user@nylas.com',\n location: '',\n bookingType: 'booking',\n buffer: {\n before: 0,\n after: 0,\n },\n cancellationPolicy: '',\n availableDaysInFuture: 30,\n minCancellationNotice: 0,\n minBookingNotice: 60,\n timeslotInterval: {\n interval: 30,\n },\n additionalGuestsHidden: false,\n hideCancellationOptions: false,\n hideReschedulingOptions: false,\n participantBookingCalendars: {\n email: 'user@nylas.com',\n is_organizer: true,\n name: '',\n availability: {\n calendar_ids: ['primary'],\n },\n booking: {\n calendar_id: 'user@nylas.com',\n },\n timezone: 'America/Toronto',\n },\n participantCalendars: {\n 'user@nylas.com': ['primary'],\n },\n emailTemplate: {\n logo: '',\n booking_confirmed: {},\n },\n redirectUrl: '',\n slug: 'dyewgafhjahjerfghjaerf',\n appearance: null,\n availabilityMethod: 'collective',\n };\n\n let nylasEditorTabs: NylasEditorTabs;\n let page: any;\n beforeEach(async () => {\n page = await newSpecPage({\n autoApplyChanges: true,\n components: [NylasEditorTabs],\n template: () => {\n return <nylas-editor-tabs mode=\"app\" selectedConfiguration={JSON.parse(JSON.stringify(selectedConfiguration))}></nylas-editor-tabs>;\n },\n });\n nylasEditorTabs = page.rootInstance as NylasEditorTabs;\n // Mocking `formRef` and its `checkValidity()` method\n const formMock = {\n checkValidity: jest.fn().mockReturnValue(true),\n acceptCharset: '',\n action: '',\n autocomplete: '',\n elements: {} as HTMLFormControlsCollection,\n encoding: '',\n enctype: '',\n length: 0,\n method: '',\n name: '',\n noValidate: false,\n target: '',\n reset: jest.fn(),\n submit: jest.fn(),\n } as unknown as HTMLFormElement;\n\n // Set the formRef on editor tabs component instance\n (nylasEditorTabs as any).formRef = formMock;\n nylasEditorTabs.action = 'edit';\n });\n\n it('should give form error if radio option is not filled', async () => {\n const checkErrorSpy = jest.spyOn(nylasEditorTabs, 'checkForBookingFormErrors');\n const setErrorSpy = jest.spyOn(nylasEditorTabs, 'setError');\n const event = new Event('submit');\n\n // Radio field\n nylasEditorTabs.updateFormState = jest.fn().mockReturnValue({\n ...JSON.parse(JSON.stringify(formState)),\n additionalFields: {\n radio_field: { ...radio_field, options: ['yes', ''] },\n },\n });\n await nylasEditorTabs.setActiveTab(new Event('click'), 'bookingForm' as any);\n await nylasEditorTabs.formSubmissionHandler(event);\n expect(checkErrorSpy).toHaveBeenCalled();\n expect(checkErrorSpy).toHaveReturnedWith(true);\n expect(setErrorSpy).toHaveBeenCalled();\n\n // Dropdown field\n nylasEditorTabs.updateFormState = jest.fn().mockReturnValue({\n ...JSON.parse(JSON.stringify(formState)),\n additionalFields: {\n dropdown: { ...dropdown, options: ['yes', ''] },\n },\n });\n await nylasEditorTabs.formSubmissionHandler(event);\n expect(checkErrorSpy).toHaveBeenCalled();\n expect(checkErrorSpy).toHaveReturnedWith(true);\n expect(setErrorSpy).toHaveBeenCalled();\n });\n\n it('should not give form error if radio / dropdown options are filled', async () => {\n const checkErrorSpy = jest.spyOn(nylasEditorTabs, 'checkForBookingFormErrors');\n const event = new Event('submit');\n const setErrorSpy = jest.spyOn(nylasEditorTabs, 'setError');\n\n // Radio field\n nylasEditorTabs.updateFormState = jest.fn().mockReturnValue({\n ...JSON.parse(JSON.stringify(formState)),\n additionalFields: {\n radio_field: { ...radio_field, options: ['yes', 'no'] },\n },\n });\n await nylasEditorTabs.formSubmissionHandler(event);\n expect(checkErrorSpy).toHaveBeenCalled();\n expect(checkErrorSpy).toHaveReturnedWith(false);\n expect(setErrorSpy).not.toHaveBeenCalled();\n\n // Dropdown field\n nylasEditorTabs.updateFormState = jest.fn().mockReturnValue({\n ...JSON.parse(JSON.stringify(formState)),\n additionalFields: {\n dropdown: { ...dropdown, options: ['yes', 'no'] },\n },\n });\n await nylasEditorTabs.formSubmissionHandler(event);\n expect(checkErrorSpy).toHaveBeenCalled();\n expect(checkErrorSpy).toHaveReturnedWith(false);\n expect(setErrorSpy).not.toHaveBeenCalled();\n });\n});\n\ndescribe('nylas-scheduler-editor create flow', () => {\n let nylasEditorTabs: NylasEditorTabs;\n let page: any;\n beforeEach(async () => {\n page = await newSpecPage({\n autoApplyChanges: true,\n components: [SelectDropdown, ButtonComponent, NylasBookingCalendarPicker, NylasEditorTabs],\n template: () => {\n return (\n <nylas-editor-tabs\n mode=\"composable\"\n selectedConfiguration={JSON.parse(\n JSON.stringify({\n ...selectedConfiguration,\n id: undefined,\n availability: {\n availability_rules: {\n availability_method: 'max-availability',\n },\n },\n }),\n )}\n >\n <ExpressFlow\n selectedEventType={CONFIGURATION_EVENT_TYPE.one_on_one}\n currentUser={{\n id: 'abc',\n email: 'johndoe@example.com',\n name: 'John Doe',\n }}\n calendars={[\n {\n id: '123',\n name: 'John Doe calendar',\n email: 'johndoe@example.com',\n },\n {\n id: '456',\n name: 'Jane Doe',\n email: 'janedoe@example.com',\n },\n ]}\n selectedConfiguration={JSON.parse(\n JSON.stringify({\n requires_session_auth: false,\n scheduler: {\n rescheduling_url: 'https://book.nylas.com/us/reschedule/:booking_ref',\n cancellation_url: 'https://book.nylas.com/us/cancel/:booking_ref',\n organizer_confirmation_url: 'https://book.nylas.com/us/confirm/:booking_ref',\n },\n }),\n )}\n />\n </nylas-editor-tabs>\n );\n },\n });\n nylasEditorTabs = page.rootInstance as NylasEditorTabs;\n // Mocking `formRef` and its `checkValidity()` method\n const formMock = {\n checkValidity: jest.fn().mockReturnValue(true),\n acceptCharset: '',\n action: '',\n autocomplete: '',\n elements: {} as HTMLFormControlsCollection,\n encoding: '',\n enctype: '',\n length: 0,\n method: '',\n name: '',\n noValidate: false,\n target: '',\n reset: jest.fn(),\n submit: jest.fn(),\n } as unknown as HTMLFormElement;\n\n // Set the formRef on editor tabs component instance\n (nylasEditorTabs as any).formRef = formMock;\n nylasEditorTabs.updateFormState = jest.fn().mockReturnValue(\n JSON.parse(\n JSON.stringify({\n event_booking: {\n title: 'test',\n },\n slug: 'dyewgafhjahjerfghjaerf',\n }),\n ),\n );\n nylasEditorTabs.action = 'create';\n });\n\n it('renders', async () => {\n expect(page.root).toMatchSnapshot();\n });\n\n it('selects the first calendar if no primary calendar is available', async () => {\n const calendarPicker = page.root.querySelector('nylas-booking-calendar-picker');\n const calendarDropdown = calendarPicker.shadowRoot.querySelector('select-dropdown');\n const calendarDropdownButton = calendarDropdown.shadowRoot.querySelector('button');\n expect(calendarDropdownButton.textContent).toBe('John Doe calendar');\n });\n\n it('should set the availability method to max-availability', async () => {\n const event = new Event('submit');\n const emitSpy = jest.spyOn(nylasEditorTabs.schedulerConfigChanged, 'emit');\n await nylasEditorTabs.formSubmissionHandler(event);\n const finalConfig = emitSpy.mock.calls[0] && emitSpy.mock.calls[0][0] ? emitSpy.mock.calls[0][0].config : undefined;\n expect(finalConfig?.availability?.availability_rules).toEqual(\n expect.objectContaining({\n availability_method: 'max-availability',\n }),\n );\n });\n});\n\ndescribe('nylas-scheduler-editor test config merging', () => {\n let nylasEditorTabs: NylasEditorTabs;\n let page: any;\n\n beforeEach(async () => {\n page = await newSpecPage({\n autoApplyChanges: true,\n components: [NylasEditorTabs],\n template: () => {\n return <nylas-editor-tabs mode=\"app\" selectedConfiguration={JSON.parse(JSON.stringify(selectedConfiguration))}></nylas-editor-tabs>;\n },\n });\n nylasEditorTabs = page.rootInstance as NylasEditorTabs;\n // Mocking `formRef` and its `checkValidity()` method\n const formMock = {\n checkValidity: jest.fn().mockReturnValue(true),\n acceptCharset: '',\n action: '',\n autocomplete: '',\n elements: {} as HTMLFormControlsCollection,\n encoding: '',\n enctype: '',\n length: 0,\n method: '',\n name: '',\n noValidate: false,\n target: '',\n reset: jest.fn(),\n submit: jest.fn(),\n } as unknown as HTMLFormElement;\n\n // Set the formRef on editor tabs component instance\n (nylasEditorTabs as any).formRef = formMock;\n nylasEditorTabs.action = 'edit';\n nylasEditorTabs.selectedConfiguration = selectedConfiguration;\n });\n\n it('should merge selectedConfiguration into configObject', async () => {\n const formState = {\n ...selectedConfiguration,\n slug: 'dyewgafhjahjerfghjaerf',\n };\n\n nylasEditorTabs.updateFormState = jest.fn().mockReturnValue(formState);\n const event = new Event('submit');\n // await nylasEditorTabs.formSubmissionHandler(event);\n\n const emitSpy = jest.spyOn(nylasEditorTabs.schedulerConfigChanged, 'emit');\n await nylasEditorTabs.formSubmissionHandler(event);\n const finalConfig = emitSpy.mock.calls[0] && emitSpy.mock.calls[0][0] ? emitSpy.mock.calls[0][0].config : undefined;\n expect(finalConfig).toEqual(\n expect.objectContaining({\n slug: 'dyewgafhjahjerfghjaerf',\n }),\n );\n });\n});\n\ndescribe('nylas-scheduler-editor test default timezone', () => {\n let nylasEditorTabs: NylasEditorTabs;\n let page: any;\n\n beforeEach(async () => {\n page = await newSpecPage({\n autoApplyChanges: true,\n components: [NylasEditorTabs],\n template: () => {\n return <nylas-editor-tabs mode=\"app\" selectedConfiguration={JSON.parse(JSON.stringify(selectedConfiguration))}></nylas-editor-tabs>;\n },\n });\n nylasEditorTabs = page.rootInstance as NylasEditorTabs;\n // Mocking `formRef` and its `checkValidity()` method\n const formMock = {\n checkValidity: jest.fn().mockReturnValue(true),\n acceptCharset: '',\n action: '',\n autocomplete: '',\n elements: {} as HTMLFormControlsCollection,\n encoding: '',\n enctype: '',\n length: 0,\n method: '',\n name: '',\n noValidate: false,\n target: '',\n reset: jest.fn(),\n submit: jest.fn(),\n } as unknown as HTMLFormElement;\n\n // Set the formRef on editor tabs component instance\n (nylasEditorTabs as any).formRef = formMock;\n nylasEditorTabs.action = 'edit';\n nylasEditorTabs.selectedConfiguration = selectedConfiguration;\n });\n\n it('should set default participant timezone from the selected configuration if no openhours are present', async () => {\n // When participants are defined but without openhours, then the timezone submitted for each\n // participant should equal the timezone of the selected configuration's availability availability_rules.\n const formState = {\n ...selectedConfiguration,\n availability: {\n timezone: 'America/Toronto',\n },\n participants: [\n {\n email: 'test@test.com',\n is_organizer: true,\n name: '',\n availability: {\n calendar_ids: ['user@nylas.com'],\n },\n booking: {\n calendar_id: 'user@nylas.com',\n },\n },\n ],\n };\n\n nylasEditorTabs.updateFormState = jest.fn().mockReturnValue(formState);\n const event = new Event('submit');\n\n await nylasEditorTabs.formSubmissionHandler(event);\n\n const emitSpy = jest.spyOn(nylasEditorTabs.schedulerConfigChanged, 'emit');\n await nylasEditorTabs.formSubmissionHandler(new Event('submit'));\n\n const finalConfig = emitSpy.mock.calls[0] && emitSpy.mock.calls[0][0] ? emitSpy.mock.calls[0][0].config : undefined;\n expect(finalConfig?.participants).toEqual(\n expect.arrayContaining([\n {\n availability: { calendar_ids: ['user@nylas.com'], open_hours: [] },\n booking: { calendar_id: 'user@nylas.com' },\n email: 'test@test.com',\n is_organizer: true,\n name: '',\n specific_date_open_hours: [],\n timezone: 'America/Toronto',\n },\n ]),\n );\n });\n});\n"]}
1
+ {"version":3,"file":"nylas-editor-tabs.spec.js","sourceRoot":"","sources":["../../../../../src/components/scheduler-editor/nylas-editor-tabs/test/nylas-editor-tabs.spec.tsx"],"names":[],"mappings":"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","sourcesContent":["import { newSpecPage } from '@stencil/core/testing';\nimport { NylasEditorTabs } from '../nylas-editor-tabs';\nimport { h } from '@stencil/core';\nimport { selectedConfiguration } from '@/utils/test-utils';\nimport ExpressFlow from '../../nylas-scheduler-editor/ExpressFlow';\nimport { NylasBookingCalendarPicker } from '../../nylas-booking-calendar-picker/nylas-booking-calendar-picker';\nimport { SelectDropdown } from '../../../design-system/select-dropdown/select-dropdown';\nimport { ButtonComponent } from '../../../design-system/button-component/button-component';\nimport { CONFIGURATION_EVENT_TYPE } from '@/common/constants';\n\ndescribe('nylas-scheduler-editor', () => {\n let nylasEditorTabs: NylasEditorTabs;\n let page: any;\n beforeEach(async () => {\n page = await newSpecPage({\n autoApplyChanges: true,\n components: [NylasEditorTabs],\n template: () => {\n return (\n <nylas-editor-tabs mode=\"composable\">\n <ExpressFlow\n selectedEventType={CONFIGURATION_EVENT_TYPE.one_on_one}\n currentUser={{\n id: '123',\n email: 'johndoe@example.com',\n name: 'John Doe',\n }}\n calendars={[\n {\n id: '123',\n name: 'John Doe',\n email: 'johndoe@example.com',\n },\n ]}\n selectedConfiguration={JSON.parse(JSON.stringify(selectedConfiguration))}\n />\n </nylas-editor-tabs>\n );\n },\n });\n nylasEditorTabs = page.rootInstance as NylasEditorTabs;\n // Mocking `formRef` and its `checkValidity()` method\n const formMock = {\n checkValidity: jest.fn().mockReturnValue(true),\n acceptCharset: '',\n action: '',\n autocomplete: '',\n elements: {} as HTMLFormControlsCollection,\n encoding: '',\n enctype: '',\n length: 0,\n method: '',\n name: '',\n noValidate: false,\n target: '',\n reset: jest.fn(),\n submit: jest.fn(),\n } as unknown as HTMLFormElement;\n\n // Set the formRef on editor tabs component instance\n (nylasEditorTabs as any).formRef = formMock;\n nylasEditorTabs.updateFormState = jest.fn().mockReturnValue(JSON.parse(JSON.stringify(selectedConfiguration)));\n nylasEditorTabs.action = 'create';\n });\n\n it('renders', async () => {\n expect(page.root).toMatchSnapshot();\n });\n\n it('submit form', async () => {\n const checkErrorSpy = jest.spyOn(nylasEditorTabs, 'checkForOrganizerConfirmationError');\n const event = new Event('submit');\n await nylasEditorTabs.formSubmissionHandler(event);\n expect(checkErrorSpy).toHaveBeenCalled();\n expect(checkErrorSpy).toHaveReturnedWith(false);\n });\n});\n\ndescribe('nylas-scheduler-editor edit', () => {\n const radio_field = {\n type: 'radio_button',\n required: false,\n order: 1,\n options: ['yes', ''],\n label: 'Radio Button Label',\n };\n const dropdown = {\n type: 'dropdown',\n required: false,\n order: 1,\n options: ['yes', ''],\n label: 'Dropdown Label',\n };\n const formState = {\n title: 'no org confirm',\n description: '',\n duration: '30',\n availability: {\n openHours: [\n {\n days: [1, 2, 3, 4, 5],\n start: '09:00',\n end: '17:00',\n timezone: 'America/Toronto',\n },\n ],\n timezone: 'America/Toronto',\n },\n additionalFields: {},\n conferencing: {},\n calendarIds: ['primary'],\n participants: [\n {\n email: 'user@nylas.com',\n is_organizer: true,\n name: '',\n availability: {\n calendar_ids: ['primary'],\n },\n booking: {\n calendar_id: 'user@nylas.com',\n },\n timezone: 'America/Toronto',\n },\n ],\n bookingCalendar: 'user@nylas.com',\n location: '',\n bookingType: 'booking',\n buffer: {\n before: 0,\n after: 0,\n },\n cancellationPolicy: '',\n availableDaysInFuture: 30,\n minCancellationNotice: 0,\n minBookingNotice: 60,\n timeslotInterval: {\n interval: 30,\n },\n additionalGuestsHidden: false,\n hideCancellationOptions: false,\n hideReschedulingOptions: false,\n participantBookingCalendars: {\n email: 'user@nylas.com',\n is_organizer: true,\n name: '',\n availability: {\n calendar_ids: ['primary'],\n },\n booking: {\n calendar_id: 'user@nylas.com',\n },\n timezone: 'America/Toronto',\n },\n participantCalendars: {\n 'user@nylas.com': ['primary'],\n },\n emailTemplate: {\n logo: '',\n booking_confirmed: {},\n },\n redirectUrl: '',\n slug: 'dyewgafhjahjerfghjaerf',\n appearance: null,\n availabilityMethod: 'collective',\n };\n\n let nylasEditorTabs: NylasEditorTabs;\n let page: any;\n beforeEach(async () => {\n page = await newSpecPage({\n autoApplyChanges: true,\n components: [NylasEditorTabs],\n template: () => {\n return <nylas-editor-tabs mode=\"app\" selectedConfiguration={JSON.parse(JSON.stringify(selectedConfiguration))}></nylas-editor-tabs>;\n },\n });\n nylasEditorTabs = page.rootInstance as NylasEditorTabs;\n // Mocking `formRef` and its `checkValidity()` method\n const formMock = {\n checkValidity: jest.fn().mockReturnValue(true),\n acceptCharset: '',\n action: '',\n autocomplete: '',\n elements: {} as HTMLFormControlsCollection,\n encoding: '',\n enctype: '',\n length: 0,\n method: '',\n name: '',\n noValidate: false,\n target: '',\n reset: jest.fn(),\n submit: jest.fn(),\n } as unknown as HTMLFormElement;\n\n // Set the formRef on editor tabs component instance\n (nylasEditorTabs as any).formRef = formMock;\n nylasEditorTabs.action = 'edit';\n });\n\n it('should give form error if radio option is not filled', async () => {\n const checkErrorSpy = jest.spyOn(nylasEditorTabs, 'checkForBookingFormErrors');\n const setErrorSpy = jest.spyOn(nylasEditorTabs, 'setError');\n const event = new Event('submit');\n\n // Radio field\n nylasEditorTabs.updateFormState = jest.fn().mockReturnValue({\n ...JSON.parse(JSON.stringify(formState)),\n additionalFields: {\n radio_field: { ...radio_field, options: ['yes', ''] },\n },\n });\n await nylasEditorTabs.setActiveTab(new Event('click'), 'bookingForm' as any);\n await nylasEditorTabs.formSubmissionHandler(event);\n expect(checkErrorSpy).toHaveBeenCalled();\n expect(checkErrorSpy).toHaveReturnedWith(true);\n expect(setErrorSpy).toHaveBeenCalled();\n\n // Dropdown field\n nylasEditorTabs.updateFormState = jest.fn().mockReturnValue({\n ...JSON.parse(JSON.stringify(formState)),\n additionalFields: {\n dropdown: { ...dropdown, options: ['yes', ''] },\n },\n });\n await nylasEditorTabs.formSubmissionHandler(event);\n expect(checkErrorSpy).toHaveBeenCalled();\n expect(checkErrorSpy).toHaveReturnedWith(true);\n expect(setErrorSpy).toHaveBeenCalled();\n });\n\n it('should not give form error if radio / dropdown options are filled', async () => {\n const checkErrorSpy = jest.spyOn(nylasEditorTabs, 'checkForBookingFormErrors');\n const event = new Event('submit');\n const setErrorSpy = jest.spyOn(nylasEditorTabs, 'setError');\n\n // Radio field\n nylasEditorTabs.updateFormState = jest.fn().mockReturnValue({\n ...JSON.parse(JSON.stringify(formState)),\n additionalFields: {\n radio_field: { ...radio_field, options: ['yes', 'no'] },\n },\n });\n await nylasEditorTabs.formSubmissionHandler(event);\n expect(checkErrorSpy).toHaveBeenCalled();\n expect(checkErrorSpy).toHaveReturnedWith(false);\n expect(setErrorSpy).not.toHaveBeenCalled();\n\n // Dropdown field\n nylasEditorTabs.updateFormState = jest.fn().mockReturnValue({\n ...JSON.parse(JSON.stringify(formState)),\n additionalFields: {\n dropdown: { ...dropdown, options: ['yes', 'no'] },\n },\n });\n await nylasEditorTabs.formSubmissionHandler(event);\n expect(checkErrorSpy).toHaveBeenCalled();\n expect(checkErrorSpy).toHaveReturnedWith(false);\n expect(setErrorSpy).not.toHaveBeenCalled();\n });\n});\n\ndescribe('nylas-scheduler-editor create flow', () => {\n let nylasEditorTabs: NylasEditorTabs;\n let page: any;\n beforeEach(async () => {\n page = await newSpecPage({\n autoApplyChanges: true,\n components: [SelectDropdown, ButtonComponent, NylasBookingCalendarPicker, NylasEditorTabs],\n template: () => {\n return (\n <nylas-editor-tabs\n mode=\"composable\"\n selectedConfiguration={JSON.parse(\n JSON.stringify({\n ...selectedConfiguration,\n id: undefined,\n availability: {\n availability_rules: {\n availability_method: 'max-availability',\n },\n },\n }),\n )}\n >\n <ExpressFlow\n selectedEventType={CONFIGURATION_EVENT_TYPE.one_on_one}\n currentUser={{\n id: 'abc',\n email: 'johndoe@example.com',\n name: 'John Doe',\n }}\n calendars={[\n {\n id: '123',\n name: 'John Doe calendar',\n email: 'johndoe@example.com',\n },\n {\n id: '456',\n name: 'Jane Doe',\n email: 'janedoe@example.com',\n },\n ]}\n selectedConfiguration={JSON.parse(\n JSON.stringify({\n requires_session_auth: false,\n scheduler: {\n rescheduling_url: 'https://book.nylas.com/us/reschedule/:booking_ref',\n cancellation_url: 'https://book.nylas.com/us/cancel/:booking_ref',\n organizer_confirmation_url: 'https://book.nylas.com/us/confirm/:booking_ref',\n },\n }),\n )}\n />\n </nylas-editor-tabs>\n );\n },\n });\n nylasEditorTabs = page.rootInstance as NylasEditorTabs;\n // Mocking `formRef` and its `checkValidity()` method\n const formMock = {\n checkValidity: jest.fn().mockReturnValue(true),\n acceptCharset: '',\n action: '',\n autocomplete: '',\n elements: {} as HTMLFormControlsCollection,\n encoding: '',\n enctype: '',\n length: 0,\n method: '',\n name: '',\n noValidate: false,\n target: '',\n reset: jest.fn(),\n submit: jest.fn(),\n } as unknown as HTMLFormElement;\n\n // Set the formRef on editor tabs component instance\n (nylasEditorTabs as any).formRef = formMock;\n nylasEditorTabs.updateFormState = jest.fn().mockReturnValue(\n JSON.parse(\n JSON.stringify({\n event_booking: {\n title: 'test',\n },\n slug: 'dyewgafhjahjerfghjaerf',\n }),\n ),\n );\n nylasEditorTabs.action = 'create';\n });\n\n it('renders', async () => {\n expect(page.root).toMatchSnapshot();\n });\n\n it('selects the first calendar if no primary calendar is available', async () => {\n const calendarPicker = page.root.querySelector('nylas-booking-calendar-picker');\n const calendarDropdown = calendarPicker.shadowRoot.querySelector('select-dropdown');\n const calendarDropdownButton = calendarDropdown.shadowRoot.querySelector('button');\n expect(calendarDropdownButton.textContent).toBe('John Doe calendar');\n });\n\n it('should set the availability method to max-availability', async () => {\n const event = new Event('submit');\n const emitSpy = jest.spyOn(nylasEditorTabs.schedulerConfigChanged, 'emit');\n await nylasEditorTabs.formSubmissionHandler(event);\n const finalConfig = emitSpy.mock.calls[0] && emitSpy.mock.calls[0][0] ? emitSpy.mock.calls[0][0].config : undefined;\n expect(finalConfig?.availability?.availability_rules).toEqual(\n expect.objectContaining({\n availability_method: 'max-availability',\n }),\n );\n });\n});\n\ndescribe('nylas-scheduler-editor test config merging', () => {\n let nylasEditorTabs: NylasEditorTabs;\n let page: any;\n\n beforeEach(async () => {\n page = await newSpecPage({\n autoApplyChanges: true,\n components: [NylasEditorTabs],\n template: () => {\n return <nylas-editor-tabs mode=\"app\" selectedConfiguration={JSON.parse(JSON.stringify(selectedConfiguration))}></nylas-editor-tabs>;\n },\n });\n nylasEditorTabs = page.rootInstance as NylasEditorTabs;\n // Mocking `formRef` and its `checkValidity()` method\n const formMock = {\n checkValidity: jest.fn().mockReturnValue(true),\n acceptCharset: '',\n action: '',\n autocomplete: '',\n elements: {} as HTMLFormControlsCollection,\n encoding: '',\n enctype: '',\n length: 0,\n method: '',\n name: '',\n noValidate: false,\n target: '',\n reset: jest.fn(),\n submit: jest.fn(),\n } as unknown as HTMLFormElement;\n\n // Set the formRef on editor tabs component instance\n (nylasEditorTabs as any).formRef = formMock;\n nylasEditorTabs.action = 'edit';\n nylasEditorTabs.selectedConfiguration = selectedConfiguration;\n });\n\n it('should merge selectedConfiguration into configObject', async () => {\n const formState = {\n ...selectedConfiguration,\n slug: 'dyewgafhjahjerfghjaerf',\n };\n\n nylasEditorTabs.updateFormState = jest.fn().mockReturnValue(formState);\n const event = new Event('submit');\n // await nylasEditorTabs.formSubmissionHandler(event);\n\n const emitSpy = jest.spyOn(nylasEditorTabs.schedulerConfigChanged, 'emit');\n await nylasEditorTabs.formSubmissionHandler(event);\n const finalConfig = emitSpy.mock.calls[0] && emitSpy.mock.calls[0][0] ? emitSpy.mock.calls[0][0].config : undefined;\n expect(finalConfig).toEqual(\n expect.objectContaining({\n slug: 'dyewgafhjahjerfghjaerf',\n }),\n );\n });\n});\n\ndescribe('nylas-scheduler-editor test default timezone', () => {\n let nylasEditorTabs: NylasEditorTabs;\n let page: any;\n\n beforeEach(async () => {\n page = await newSpecPage({\n autoApplyChanges: true,\n components: [NylasEditorTabs],\n template: () => {\n return <nylas-editor-tabs mode=\"app\" selectedConfiguration={JSON.parse(JSON.stringify(selectedConfiguration))}></nylas-editor-tabs>;\n },\n });\n nylasEditorTabs = page.rootInstance as NylasEditorTabs;\n // Mocking `formRef` and its `checkValidity()` method\n const formMock = {\n checkValidity: jest.fn().mockReturnValue(true),\n acceptCharset: '',\n action: '',\n autocomplete: '',\n elements: {} as HTMLFormControlsCollection,\n encoding: '',\n enctype: '',\n length: 0,\n method: '',\n name: '',\n noValidate: false,\n target: '',\n reset: jest.fn(),\n submit: jest.fn(),\n } as unknown as HTMLFormElement;\n\n // Set the formRef on editor tabs component instance\n (nylasEditorTabs as any).formRef = formMock;\n nylasEditorTabs.action = 'edit';\n nylasEditorTabs.selectedConfiguration = selectedConfiguration;\n });\n\n it('should set default participant timezone from the selected configuration if no openhours are present', async () => {\n // When participants are defined but without openhours, then the timezone submitted for each\n // participant should equal the timezone of the selected configuration's availability availability_rules.\n const formState = {\n ...selectedConfiguration,\n availability: {\n timezone: 'America/Toronto',\n },\n participants: [\n {\n email: 'test@test.com',\n is_organizer: true,\n name: '',\n availability: {\n calendar_ids: ['user@nylas.com'],\n },\n booking: {\n calendar_id: 'user@nylas.com',\n },\n },\n ],\n };\n\n nylasEditorTabs.updateFormState = jest.fn().mockReturnValue(formState);\n const event = new Event('submit');\n\n await nylasEditorTabs.formSubmissionHandler(event);\n\n const emitSpy = jest.spyOn(nylasEditorTabs.schedulerConfigChanged, 'emit');\n await nylasEditorTabs.formSubmissionHandler(new Event('submit'));\n\n const finalConfig = emitSpy.mock.calls[0] && emitSpy.mock.calls[0][0] ? emitSpy.mock.calls[0][0].config : undefined;\n expect(finalConfig?.participants).toEqual(\n expect.arrayContaining([\n {\n availability: { calendar_ids: ['user@nylas.com'], open_hours: [] },\n booking: { calendar_id: 'user@nylas.com' },\n email: 'test@test.com',\n is_organizer: true,\n name: '',\n specific_time_availability: [],\n timezone: 'America/Toronto',\n },\n ]),\n );\n });\n});\n"]}
@@ -91,21 +91,21 @@ export class NylasParticipantsCustomAvailability {
91
91
  : this.selectedConfiguration?.availability?.availability_rules?.default_open_hours?.at(0)?.timezone ||
92
92
  this.selectedConfiguration?.event_booking?.timezone ||
93
93
  window.Intl.DateTimeFormat().resolvedOptions().timeZone;
94
- const existingSpecificDateOpenHours = existingParticipant?.specific_date_open_hours || [];
95
- const specificDateOpenHours = existingSpecificDateOpenHours?.length > 0 ? existingSpecificDateOpenHours : [];
94
+ const existingSpecificTimeAvailability = existingParticipant?.specific_time_availability || [];
95
+ const specificTimesAvailability = existingSpecificTimeAvailability?.length > 0 ? existingSpecificTimeAvailability : [];
96
96
  this.selectedParticipants[event.detail.name]['isOpen'] = event.detail.checked;
97
97
  this.selectedParticipants[event.detail.name]['tab'] = 'availability';
98
98
  this.selectedParticipants[event.detail.name]['setCustom'] = event.detail.checked;
99
99
  this.selectedParticipants[event.detail.name]['openHours'] = event.detail.checked ? (openHours?.length > 0 ? openHours : DEFAULT_OPEN_HOURS) : [];
100
100
  this.selectedParticipants[event.detail.name]['timezone'] = event.detail.checked ? timeZone : undefined;
101
- this.selectedParticipants[event.detail.name]['specificDateOpenHours'] = event.detail.checked ? specificDateOpenHours : [];
101
+ this.selectedParticipants[event.detail.name]['specificTimesAvailability'] = event.detail.checked ? specificTimesAvailability : [];
102
102
  this.selectedParticipants = { ...this.selectedParticipants };
103
103
  this.updateFormValue();
104
104
  }
105
105
  handleValueChanged(event) {
106
106
  debug('[nylas-editor-tabs]', 'handleValueChanged', event);
107
107
  const { name, value } = event.detail;
108
- if (!name.startsWith('participant-availability-') && !name.startsWith('participant-specific-date-availability-')) {
108
+ if (!name.startsWith('participant-availability-') && !name.startsWith('participant-specific-time-availability-')) {
109
109
  return;
110
110
  }
111
111
  let jsonValue;
@@ -139,33 +139,33 @@ export class NylasParticipantsCustomAvailability {
139
139
  this.selectedParticipants[key]['openHours'] = openHours;
140
140
  this.selectedParticipants[key]['tab'] = 'availability';
141
141
  }
142
- else if (name.startsWith('participant-specific-date-availability')) {
142
+ else if (name.startsWith('participant-specific-time-availability')) {
143
143
  const nameParts = name.split('-');
144
144
  if (nameParts.length < 6) {
145
- console.warn(`Malformed participant specific date name format: ${name}. Expected format: "participant-specific-date-availability-{index}-{uniqueKey}"`);
145
+ console.warn(`Malformed participant specific date name format: ${name}. Expected format: "participant-specific-time-availability-{index}-{uniqueKey}"`);
146
146
  return;
147
147
  }
148
148
  const key = nameParts[5];
149
149
  if (!this.selectedParticipants[key])
150
150
  return;
151
- const existingSpecificDateOpenHours = jsonValue || [];
152
- this.selectedParticipants[key]['specificDateOpenHours'] = existingSpecificDateOpenHours;
153
- this.selectedParticipants[key]['tab'] = 'specific-date-availability';
151
+ const existingSpecificTimeAvailability = jsonValue || [];
152
+ this.selectedParticipants[key]['specificTimesAvailability'] = existingSpecificTimeAvailability;
153
+ this.selectedParticipants[key]['tab'] = 'specific-time-availability';
154
154
  }
155
155
  this.selectedParticipants = { ...this.selectedParticipants };
156
156
  this.updateFormValue();
157
157
  }
158
158
  updateFormValue() {
159
159
  const participantOpenHours = {};
160
- const participantSpecificDateOpenHours = {};
160
+ const participantSpecificTimeAvailability = {};
161
161
  Object.keys(this.selectedParticipants).forEach(key => {
162
162
  participantOpenHours[key] = this.selectedParticipants[key].openHours;
163
- participantSpecificDateOpenHours[key] = this.selectedParticipants[key].specificDateOpenHours || [];
163
+ participantSpecificTimeAvailability[key] = this.selectedParticipants[key].specificTimesAvailability || [];
164
164
  });
165
165
  this.isInternalsAvailable && this.internals.setFormValue(JSON.stringify(participantOpenHours), this.name);
166
166
  this.valueChanged.emit({ value: JSON.stringify(participantOpenHours), name: this.name });
167
- this.isInternalsAvailable && this.internals.setFormValue(JSON.stringify(participantSpecificDateOpenHours), `${this.name}-specific-date`);
168
- this.valueChanged.emit({ value: JSON.stringify(participantSpecificDateOpenHours), name: `${this.name}-specific-date` });
167
+ this.isInternalsAvailable && this.internals.setFormValue(JSON.stringify(participantSpecificTimeAvailability), `${this.name}-specific-time`);
168
+ this.valueChanged.emit({ value: JSON.stringify(participantSpecificTimeAvailability), name: `${this.name}-specific-time` });
169
169
  }
170
170
  setParticipants(participants) {
171
171
  const selectedParticipants = {};
@@ -177,7 +177,7 @@ export class NylasParticipantsCustomAvailability {
177
177
  name: participant.name || participant.email,
178
178
  availability: participant.availability,
179
179
  timezone: participant.timezone,
180
- specificDateOpenHours: participant.specific_date_open_hours || [],
180
+ specificTimesAvailability: participant.specific_time_availability || [],
181
181
  };
182
182
  });
183
183
  return selectedParticipants;
@@ -186,7 +186,7 @@ export class NylasParticipantsCustomAvailability {
186
186
  return this.internals !== undefined && typeof this.internals.setFormValue === 'function' && typeof this.internals.setValidity === 'function';
187
187
  }
188
188
  render() {
189
- return (h(Host, { key: 'd1b9a07f7da68fb448cf0cd16524513670193de2' }, h("div", { key: '4e9e9846f2b54cf35b55f4e886eeae9f8f955a22', class: "nylas-participants-custom-availability", part: "npca" }, h("div", { key: 'd02fb993f8cd5f5954248468744b2aa9d4ee8919', class: "header", part: "npca__header" }, h("h3", { key: 'b96661d84f5516f30538ff81ef2fbd8f5ee74e2d' }, i18next.t('nylasParticipantCustomAvailability.headerTitle')), h("p", { key: '4751c886be9e28e4c445f194241132adc98cb0d3' }, i18next.t('nylasParticipantCustomAvailability.headerSubTitle'))), h("div", { key: '2c034d536a845e45228853032c995e3a6eb88906', class: "content", part: "npca__content" }, h("form", { key: 'dd3077bacae7ab2c10bb6ca1b3f047b7442fc8b5', ref: el => (this.participantFormRef = el) }, Object.keys(this.selectedParticipants).map((key, index) => {
189
+ return (h(Host, { key: '72278a40aca8e3e3868b2c04abf9ec7ecb5cac10' }, h("div", { key: '82a8ddedcd2a16598f5a3cf8b8ac50e082a8303b', class: "nylas-participants-custom-availability", part: "npca" }, h("div", { key: 'e2881fe998d498b865420faf97f0355fd571b702', class: "header", part: "npca__header" }, h("h3", { key: '3ca8980d00abe8001eb4ff0168c8ce249977c8da' }, i18next.t('nylasParticipantCustomAvailability.headerTitle')), h("p", { key: '5fed5465662b20ce3339f95c1fda1ce6c8b72a32' }, i18next.t('nylasParticipantCustomAvailability.headerSubTitle'))), h("div", { key: '1a3bd4ebcfc8e420674dcbbe39e7c77900bceb8e', class: "content", part: "npca__content" }, h("form", { key: '7dc0f391a4c56336bea907f2c2e78b6c17d06f0f', ref: el => (this.participantFormRef = el) }, Object.keys(this.selectedParticipants).map((key, index) => {
190
190
  const participant = this.selectedParticipants[key];
191
191
  const participantOpenHours = participant.availability?.open_hours || [];
192
192
  if (!participant || !participant.name || !participant.availability)
@@ -200,10 +200,10 @@ export class NylasParticipantsCustomAvailability {
200
200
  } }, h("chevron-icon", { width: "24", height: "24" })))), participant.isOpen && (h("div", { class: "participant-tabs", part: "npca__participant-tabs" }, h("div", { class: `participant-tab ${participant.tab === 'availability' ? 'active' : ''}`, part: "npca__participant-tab", onClick: () => {
201
201
  this.selectedParticipants[key].tab = 'availability';
202
202
  this.selectedParticipants = { ...this.selectedParticipants };
203
- } }, h("span", null, i18next.t('nylasParticipantCustomAvailability.participantAvailabilityTab'))), h("div", { class: `participant-tab ${participant.tab === 'specific-date-availability' ? 'active' : ''}`, part: "npca__participant-tab", onClick: () => {
204
- this.selectedParticipants[key].tab = 'specific-date-availability';
203
+ } }, h("span", null, i18next.t('nylasParticipantCustomAvailability.participantAvailabilityTab'))), h("div", { class: `participant-tab ${participant.tab === 'specific-time-availability' ? 'active' : ''}`, part: "npca__participant-tab", onClick: () => {
204
+ this.selectedParticipants[key].tab = 'specific-time-availability';
205
205
  this.selectedParticipants = { ...this.selectedParticipants };
206
- } }, h("span", null, i18next.t('nylasParticipantCustomAvailability.participantSpecificDateAvailabilityTab'))))), participant.tab === 'availability' && participant.isOpen && (h("nylas-availability-picker", { key: index, name: `participant-availability-${index}-${key}`, openHours: participantOpenHours, defaultTimezone: participant.timezone, hideHeader: true })), participant.tab === 'specific-date-availability' && participant.isOpen && (h("nylas-specific-date-availability-picker", { key: index, name: `participant-specific-date-availability-${index}-${key}`, specificDateOpenHours: participant.specificDateOpenHours }))));
206
+ } }, h("span", null, i18next.t('nylasParticipantCustomAvailability.participantSpecificTimeAvailabilityTab'))))), participant.tab === 'availability' && participant.isOpen && (h("nylas-availability-picker", { key: index, name: `participant-availability-${index}-${key}`, openHours: participantOpenHours, defaultTimezone: participant.timezone, hideHeader: true })), participant.tab === 'specific-time-availability' && participant.isOpen && (h("nylas-specific-time-availability-picker", { key: index, name: `participant-specific-time-availability-${index}-${key}`, specificTimesAvailability: participant.specificTimesAvailability }))));
207
207
  }))))));
208
208
  }
209
209
  static get is() { return "nylas-participants-custom-availability"; }
@@ -1 +1 @@
1
- {"version":3,"file":"nylas-participants-custom-availability.js","sourceRoot":"","sources":["../../../../src/components/scheduler-editor/nylas-participants-custom-availability/nylas-participants-custom-availability.tsx"],"names":[],"mappings":"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","sourcesContent":["import { RegisterComponent } from '@/common/register-component';\nimport { NylasSchedulerConfigConnector } from '@/connector/nylas-scheduler-config-connector';\nimport { debug } from '@/utils/utils';\nimport { AttachInternals, Component, Element, Event, EventEmitter, Host, Listen, Prop, State, Watch, h } from '@stencil/core';\nimport { NylasSchedulerEditor } from '../nylas-scheduler-editor/nylas-scheduler-editor';\nimport { Configuration, OpenHours, Participant, ParticipantAvailability, SpecificDateOpenHours, ThemeConfig } from '@nylas/core';\nimport { DEFAULT_OPEN_HOURS } from '@/common/constants';\nimport i18next from '@/utils/i18n';\nimport { LANGUAGE_CODE } from '@/common/constants';\n\n/**\n * The `nylas-participants-custom-availability` component is a form input for setting custom availability for participants.\n *\n * @part npca - The participants custom availability container\n * @part npca__header - The header of the participants custom availability\n * @part npca__content - The content of the participants custom availability\n * @part npca__participant-container - The participant container\n * @part npca__participant-title - The title of the participant\n * @part npca__participant-toggle--container - The toggle container for the participant\n * @part npca__toggle-label - The label of the toggle\n * @part npca_toggle-input - The input of the toggle\n * @part npca_toggle-slider - The slider of the toggle\n */\n@Component({\n tag: 'nylas-participants-custom-availability',\n styleUrl: 'nylas-participants-custom-availability.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class NylasParticipantsCustomAvailability {\n @Element() host!: HTMLNylasParticipantsCustomAvailabilityElement;\n private participantFormRef!: HTMLFormElement;\n /**\n * @standalone\n * The selected config\n */\n @Prop() selectedConfiguration?: Configuration;\n\n /**\n * @standalone\n * The name of the participants custom availability.\n */\n @Prop() name: string = 'participant-custom-availability';\n\n /**\n * @standalone\n * The participants selected in the add participants section.\n */\n @Prop() participants: Participant[] = this.selectedConfiguration?.participants || [];\n\n /**\n * The selected language.\n */\n @Prop() selectedLanguage?: LANGUAGE_CODE;\n\n /**\n * The theme configuration.\n */\n @Prop({ attribute: 'theme-config' }) readonly themeConfig?: ThemeConfig;\n\n /**\n * This event is fired when the participants custom availability changes.\n */\n @Event() valueChanged!: EventEmitter<{\n value: string;\n name: string;\n }>;\n\n /**\n * The element internals.\n */\n @AttachInternals() internals!: ElementInternals;\n\n /**\n * The state to store the custom availability setting for participants.\n */\n @State() selectedParticipants: {\n [key: string]: {\n setCustom: boolean;\n tab: 'availability' | 'specific-date-availability';\n isOpen: boolean;\n openHours: OpenHours[];\n specificDateOpenHours: SpecificDateOpenHours[];\n name: string;\n availability?: ParticipantAvailability;\n timezone?: string;\n };\n } = this.setParticipants(this.participants);\n\n // Watchers\n @Watch('name')\n elementNameChangedHandler(newValue: string) {\n debug('nylas-participants-custom-availability', 'elementNameChangedHandler', newValue);\n this.host.setAttribute('name', newValue);\n }\n\n @Watch('participants')\n participantsChangedHandler(newValue: Participant[], oldValue: Participant[]) {\n debug('nylas-participants-custom-availability', 'participantsChangedHandler', newValue, oldValue);\n if (!newValue || !oldValue || JSON.stringify(newValue) === JSON.stringify(oldValue)) {\n return;\n }\n this.selectedParticipants = this.setParticipants(newValue);\n }\n\n @Watch('selectedConfiguration')\n selectedConfigurationChangedHandler(newValue: Configuration, oldValue: Configuration) {\n debug('nylas-participants-custom-availability', 'selectedConfigurationChangedHandler', newValue, oldValue);\n if (!newValue || !oldValue || JSON.stringify(newValue) === JSON.stringify(oldValue)) {\n return;\n }\n if (newValue?.participants) {\n this.selectedParticipants = this.setParticipants(newValue?.participants);\n }\n }\n\n @Watch('selectedLanguage')\n selectedLanguageChangedHandler(newVal: LANGUAGE_CODE, oldVal: LANGUAGE_CODE) {\n if (newVal === oldVal) return;\n i18next.changeLanguage(newVal);\n }\n\n @Watch('themeConfig')\n themeConfigChangedHandler(newVal: ThemeConfig, oldVal: ThemeConfig) {\n if (newVal === oldVal) return;\n this.applyThemeConfig(newVal);\n }\n\n applyThemeConfig(themeConfig?: ThemeConfig) {\n if (themeConfig) {\n for (const [key, value] of Object.entries(themeConfig)) {\n this.host.style.setProperty(`${key}`, value);\n }\n }\n }\n\n // Lifecycle Methods\n connectedCallback() {\n debug('nylas-participants-custom-availability', 'connectedCallback');\n }\n\n disconnectedCallback() {\n debug('nylas-participants-custom-availability', 'disconnectedCallback');\n }\n\n componentWillLoad() {\n debug('nylas-participants-custom-availability', 'componentWillLoad');\n }\n\n componentDidLoad() {\n debug('nylas-participants-custom-availability', 'componentDidLoad');\n if (this.selectedConfiguration) {\n this.selectedParticipants = this.setParticipants(this.selectedConfiguration?.participants);\n } else {\n this.selectedParticipants = this.setParticipants(this.participants);\n }\n }\n\n // Event Handlers\n @Listen('nylasFormSwitchToggled')\n nylasFormSwitchToggledHandler(event: CustomEvent<{ checked: boolean; name: string; label: boolean }>) {\n debug('nylas-participants-custom-availability', 'nylasFormSwitchToggledHandler', event.detail);\n const existingParticipant = this.selectedConfiguration?.participants.find(participant => participant.email === event.detail.name);\n const existingOpenHours = existingParticipant?.availability?.open_hours || [];\n const openHours = existingOpenHours?.length > 0 ? existingOpenHours : this.selectedConfiguration?.availability?.availability_rules?.default_open_hours || [];\n const timeZone =\n existingOpenHours && existingOpenHours.length > 0\n ? existingParticipant?.timezone\n : this.selectedConfiguration?.availability?.availability_rules?.default_open_hours?.at(0)?.timezone ||\n this.selectedConfiguration?.event_booking?.timezone ||\n window.Intl.DateTimeFormat().resolvedOptions().timeZone;\n\n const existingSpecificDateOpenHours = existingParticipant?.specific_date_open_hours || [];\n const specificDateOpenHours = existingSpecificDateOpenHours?.length > 0 ? existingSpecificDateOpenHours : [];\n this.selectedParticipants[event.detail.name]['isOpen'] = event.detail.checked;\n this.selectedParticipants[event.detail.name]['tab'] = 'availability';\n this.selectedParticipants[event.detail.name]['setCustom'] = event.detail.checked;\n this.selectedParticipants[event.detail.name]['openHours'] = event.detail.checked ? (openHours?.length > 0 ? openHours : DEFAULT_OPEN_HOURS) : [];\n this.selectedParticipants[event.detail.name]['timezone'] = event.detail.checked ? timeZone : undefined;\n this.selectedParticipants[event.detail.name]['specificDateOpenHours'] = event.detail.checked ? specificDateOpenHours : [];\n this.selectedParticipants = { ...this.selectedParticipants };\n this.updateFormValue();\n }\n\n @Listen('valueChanged')\n handleValueChanged(event: CustomEvent) {\n debug('[nylas-editor-tabs]', 'handleValueChanged', event);\n const { name, value } = event.detail;\n if (!name.startsWith('participant-availability-') && !name.startsWith('participant-specific-date-availability-')) {\n return;\n }\n\n // Parse the JSON value once - can contain { openHours: OpenHours[], timezone: string } or SpecificDateOpenHours[]\n let jsonValue;\n try {\n jsonValue = JSON.parse(value);\n } catch (error) {\n console.error(`Failed to parse JSON for participant ${name}:`, error);\n return;\n }\n\n // Validate the form\n if (this.isInternalsAvailable) {\n if (!this.participantFormRef.checkValidity()) {\n this.internals.setValidity({ customError: true }, 'Please fix the overlapping time ranges.');\n return;\n } else {\n this.internals.setValidity({});\n }\n }\n\n if (name.startsWith('participant-availability-')) {\n // Expected name format: \"participant-availability-{participantId}-{uniqueKey}\"\n // We extract the unique key (4th segment) to identify the specific participant\n const nameParts = name.split('-');\n if (nameParts.length < 4) {\n console.warn(`Malformed participant name format: ${name}. Expected format: \"participant-availability-{participantId}-{uniqueKey}\"`);\n return;\n }\n\n const key = nameParts[3];\n if (!this.selectedParticipants[key]) return;\n const existingOpenHours = jsonValue.openHours || [];\n const openHours = existingOpenHours?.length > 0 ? existingOpenHours : this.selectedConfiguration?.availability?.availability_rules?.default_open_hours || [];\n this.selectedParticipants[key]['openHours'] = openHours;\n this.selectedParticipants[key]['tab'] = 'availability';\n } else if (name.startsWith('participant-specific-date-availability')) {\n // Expected name format: \"participant-specific-date-availability-{index}-{uniqueKey}\"\n // Extract the unique key (6th segment) to identify the specific participant\n const nameParts = name.split('-');\n if (nameParts.length < 6) {\n console.warn(`Malformed participant specific date name format: ${name}. Expected format: \"participant-specific-date-availability-{index}-{uniqueKey}\"`);\n return;\n }\n\n const key = nameParts[5];\n if (!this.selectedParticipants[key]) return;\n const existingSpecificDateOpenHours = jsonValue || [];\n this.selectedParticipants[key]['specificDateOpenHours'] = existingSpecificDateOpenHours;\n this.selectedParticipants[key]['tab'] = 'specific-date-availability';\n }\n\n this.selectedParticipants = { ...this.selectedParticipants };\n\n this.updateFormValue();\n }\n\n updateFormValue() {\n const participantOpenHours = {};\n const participantSpecificDateOpenHours = {};\n Object.keys(this.selectedParticipants).forEach(key => {\n participantOpenHours[key] = this.selectedParticipants[key].openHours;\n participantSpecificDateOpenHours[key] = this.selectedParticipants[key].specificDateOpenHours || [];\n });\n\n this.isInternalsAvailable && this.internals.setFormValue(JSON.stringify(participantOpenHours), this.name);\n this.valueChanged.emit({ value: JSON.stringify(participantOpenHours), name: this.name });\n\n this.isInternalsAvailable && this.internals.setFormValue(JSON.stringify(participantSpecificDateOpenHours), `${this.name}-specific-date`);\n this.valueChanged.emit({ value: JSON.stringify(participantSpecificDateOpenHours), name: `${this.name}-specific-date` });\n }\n\n setParticipants(participants: Participant[]) {\n const selectedParticipants = {};\n participants?.forEach(participant => {\n selectedParticipants[participant.email] = {\n isOpen: false,\n setCustom: Boolean(participant.availability?.open_hours),\n openHours: participant.availability?.open_hours || [],\n name: participant.name || participant.email,\n availability: participant.availability,\n timezone: participant.timezone,\n specificDateOpenHours: participant.specific_date_open_hours || [],\n };\n });\n return selectedParticipants;\n }\n\n /**\n * This method is essentially a workaround to check if the internals are available because\n * the unit tests in stencil do not support the internals.\n * @returns boolean\n */\n get isInternalsAvailable() {\n return this.internals !== undefined && typeof this.internals.setFormValue === 'function' && typeof this.internals.setValidity === 'function';\n }\n\n @RegisterComponent<NylasParticipantsCustomAvailability, NylasSchedulerConfigConnector, Exclude<NylasSchedulerEditor['stores'], undefined>>({\n name: 'nylas-participants-custom-availability',\n stateToProps: new Map([\n ['schedulerConfig.selectedConfiguration', 'selectedConfiguration'],\n ['schedulerConfig.selectedLanguage', 'selectedLanguage'],\n ['schedulerConfig.themeConfig', 'themeConfig'],\n ]),\n eventToProps: {},\n fireRegisterEvent: true,\n })\n render() {\n return (\n <Host>\n <div class=\"nylas-participants-custom-availability\" part=\"npca\">\n <div class=\"header\" part=\"npca__header\">\n <h3>{i18next.t('nylasParticipantCustomAvailability.headerTitle')}</h3>\n <p>{i18next.t('nylasParticipantCustomAvailability.headerSubTitle')}</p>\n </div>\n <div class=\"content\" part=\"npca__content\">\n <form ref={el => (this.participantFormRef = el as HTMLFormElement)}>\n {Object.keys(this.selectedParticipants).map((key, index) => {\n const participant = this.selectedParticipants[key];\n const participantOpenHours = participant.availability?.open_hours || [];\n if (!participant || !participant.name || !participant.availability) return;\n return (\n <div class=\"participant-container\" part=\"npca__participant-container\" key={`participant-conatiner-${index}`}>\n <div class=\"participant-title\" part=\"npca__participant-title\">\n <p>{i18next.t('nylasParticipantCustomAvailability.participantOpenHoursTitle', { participantName: participant.name })}</p>\n <div class=\"participant-toggle\" part=\"npca__participant-toggle--container\">\n <toggle-switch\n exportparts=\"ts_label: npca__toggle-label, ts_input: npca_toggle-input, ts_slider: npca_toggle-slider\"\n name={key}\n checked={!!participant?.openHours && participant?.openHours.length > 0}\n themeConfig={this.themeConfig}\n />\n <span\n class={`chevron ${participant.isOpen ? 'open' : 'closed'} ${participant.setCustom ? '' : 'disabled'}`}\n onClick={() => {\n if (!participant.setCustom) return;\n this.selectedParticipants[key].isOpen = !participant.isOpen;\n this.selectedParticipants[key].tab = 'availability';\n this.selectedParticipants = { ...this.selectedParticipants };\n }}\n >\n <chevron-icon width=\"24\" height=\"24\" />\n </span>\n </div>\n </div>\n {participant.isOpen && (\n <div class=\"participant-tabs\" part=\"npca__participant-tabs\">\n <div\n class={`participant-tab ${participant.tab === 'availability' ? 'active' : ''}`}\n part=\"npca__participant-tab\"\n onClick={() => {\n this.selectedParticipants[key].tab = 'availability';\n this.selectedParticipants = { ...this.selectedParticipants };\n }}\n >\n <span>{i18next.t('nylasParticipantCustomAvailability.participantAvailabilityTab')}</span>\n </div>\n <div\n class={`participant-tab ${participant.tab === 'specific-date-availability' ? 'active' : ''}`}\n part=\"npca__participant-tab\"\n onClick={() => {\n this.selectedParticipants[key].tab = 'specific-date-availability';\n this.selectedParticipants = { ...this.selectedParticipants };\n }}\n >\n <span>{i18next.t('nylasParticipantCustomAvailability.participantSpecificDateAvailabilityTab')}</span>\n </div>\n </div>\n )}\n {participant.tab === 'availability' && participant.isOpen && (\n <nylas-availability-picker\n key={index}\n name={`participant-availability-${index}-${key}`}\n openHours={participantOpenHours}\n defaultTimezone={participant.timezone}\n hideHeader={true}\n />\n )}\n {participant.tab === 'specific-date-availability' && participant.isOpen && (\n <nylas-specific-date-availability-picker\n key={index}\n name={`participant-specific-date-availability-${index}-${key}`}\n specificDateOpenHours={participant.specificDateOpenHours}\n />\n )}\n </div>\n );\n })}\n </form>\n </div>\n </div>\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"nylas-participants-custom-availability.js","sourceRoot":"","sources":["../../../../src/components/scheduler-editor/nylas-participants-custom-availability/nylas-participants-custom-availability.tsx"],"names":[],"mappings":"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","sourcesContent":["import { RegisterComponent } from '@/common/register-component';\nimport { NylasSchedulerConfigConnector } from '@/connector/nylas-scheduler-config-connector';\nimport { debug } from '@/utils/utils';\nimport { AttachInternals, Component, Element, Event, EventEmitter, Host, Listen, Prop, State, Watch, h } from '@stencil/core';\nimport { NylasSchedulerEditor } from '../nylas-scheduler-editor/nylas-scheduler-editor';\nimport { Configuration, OpenHours, Participant, ParticipantAvailability, SpecificTimeAvailability, ThemeConfig } from '@nylas/core';\nimport { DEFAULT_OPEN_HOURS } from '@/common/constants';\nimport i18next from '@/utils/i18n';\nimport { LANGUAGE_CODE } from '@/common/constants';\n\n/**\n * The `nylas-participants-custom-availability` component is a form input for setting custom availability for participants.\n *\n * @part npca - The participants custom availability container\n * @part npca__header - The header of the participants custom availability\n * @part npca__content - The content of the participants custom availability\n * @part npca__participant-container - The participant container\n * @part npca__participant-title - The title of the participant\n * @part npca__participant-toggle--container - The toggle container for the participant\n * @part npca__toggle-label - The label of the toggle\n * @part npca_toggle-input - The input of the toggle\n * @part npca_toggle-slider - The slider of the toggle\n */\n@Component({\n tag: 'nylas-participants-custom-availability',\n styleUrl: 'nylas-participants-custom-availability.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class NylasParticipantsCustomAvailability {\n @Element() host!: HTMLNylasParticipantsCustomAvailabilityElement;\n private participantFormRef!: HTMLFormElement;\n /**\n * @standalone\n * The selected config\n */\n @Prop() selectedConfiguration?: Configuration;\n\n /**\n * @standalone\n * The name of the participants custom availability.\n */\n @Prop() name: string = 'participant-custom-availability';\n\n /**\n * @standalone\n * The participants selected in the add participants section.\n */\n @Prop() participants: Participant[] = this.selectedConfiguration?.participants || [];\n\n /**\n * The selected language.\n */\n @Prop() selectedLanguage?: LANGUAGE_CODE;\n\n /**\n * The theme configuration.\n */\n @Prop({ attribute: 'theme-config' }) readonly themeConfig?: ThemeConfig;\n\n /**\n * This event is fired when the participants custom availability changes.\n */\n @Event() valueChanged!: EventEmitter<{\n value: string;\n name: string;\n }>;\n\n /**\n * The element internals.\n */\n @AttachInternals() internals!: ElementInternals;\n\n /**\n * The state to store the custom availability setting for participants.\n */\n @State() selectedParticipants: {\n [key: string]: {\n setCustom: boolean;\n tab: 'availability' | 'specific-time-availability';\n isOpen: boolean;\n openHours: OpenHours[];\n specificTimesAvailability: SpecificTimeAvailability[];\n name: string;\n availability?: ParticipantAvailability;\n timezone?: string;\n };\n } = this.setParticipants(this.participants);\n\n // Watchers\n @Watch('name')\n elementNameChangedHandler(newValue: string) {\n debug('nylas-participants-custom-availability', 'elementNameChangedHandler', newValue);\n this.host.setAttribute('name', newValue);\n }\n\n @Watch('participants')\n participantsChangedHandler(newValue: Participant[], oldValue: Participant[]) {\n debug('nylas-participants-custom-availability', 'participantsChangedHandler', newValue, oldValue);\n if (!newValue || !oldValue || JSON.stringify(newValue) === JSON.stringify(oldValue)) {\n return;\n }\n this.selectedParticipants = this.setParticipants(newValue);\n }\n\n @Watch('selectedConfiguration')\n selectedConfigurationChangedHandler(newValue: Configuration, oldValue: Configuration) {\n debug('nylas-participants-custom-availability', 'selectedConfigurationChangedHandler', newValue, oldValue);\n if (!newValue || !oldValue || JSON.stringify(newValue) === JSON.stringify(oldValue)) {\n return;\n }\n if (newValue?.participants) {\n this.selectedParticipants = this.setParticipants(newValue?.participants);\n }\n }\n\n @Watch('selectedLanguage')\n selectedLanguageChangedHandler(newVal: LANGUAGE_CODE, oldVal: LANGUAGE_CODE) {\n if (newVal === oldVal) return;\n i18next.changeLanguage(newVal);\n }\n\n @Watch('themeConfig')\n themeConfigChangedHandler(newVal: ThemeConfig, oldVal: ThemeConfig) {\n if (newVal === oldVal) return;\n this.applyThemeConfig(newVal);\n }\n\n applyThemeConfig(themeConfig?: ThemeConfig) {\n if (themeConfig) {\n for (const [key, value] of Object.entries(themeConfig)) {\n this.host.style.setProperty(`${key}`, value);\n }\n }\n }\n\n // Lifecycle Methods\n connectedCallback() {\n debug('nylas-participants-custom-availability', 'connectedCallback');\n }\n\n disconnectedCallback() {\n debug('nylas-participants-custom-availability', 'disconnectedCallback');\n }\n\n componentWillLoad() {\n debug('nylas-participants-custom-availability', 'componentWillLoad');\n }\n\n componentDidLoad() {\n debug('nylas-participants-custom-availability', 'componentDidLoad');\n if (this.selectedConfiguration) {\n this.selectedParticipants = this.setParticipants(this.selectedConfiguration?.participants);\n } else {\n this.selectedParticipants = this.setParticipants(this.participants);\n }\n }\n\n // Event Handlers\n @Listen('nylasFormSwitchToggled')\n nylasFormSwitchToggledHandler(event: CustomEvent<{ checked: boolean; name: string; label: boolean }>) {\n debug('nylas-participants-custom-availability', 'nylasFormSwitchToggledHandler', event.detail);\n const existingParticipant = this.selectedConfiguration?.participants.find(participant => participant.email === event.detail.name);\n const existingOpenHours = existingParticipant?.availability?.open_hours || [];\n const openHours = existingOpenHours?.length > 0 ? existingOpenHours : this.selectedConfiguration?.availability?.availability_rules?.default_open_hours || [];\n const timeZone =\n existingOpenHours && existingOpenHours.length > 0\n ? existingParticipant?.timezone\n : this.selectedConfiguration?.availability?.availability_rules?.default_open_hours?.at(0)?.timezone ||\n this.selectedConfiguration?.event_booking?.timezone ||\n window.Intl.DateTimeFormat().resolvedOptions().timeZone;\n\n const existingSpecificTimeAvailability = existingParticipant?.specific_time_availability || [];\n const specificTimesAvailability = existingSpecificTimeAvailability?.length > 0 ? existingSpecificTimeAvailability : [];\n this.selectedParticipants[event.detail.name]['isOpen'] = event.detail.checked;\n this.selectedParticipants[event.detail.name]['tab'] = 'availability';\n this.selectedParticipants[event.detail.name]['setCustom'] = event.detail.checked;\n this.selectedParticipants[event.detail.name]['openHours'] = event.detail.checked ? (openHours?.length > 0 ? openHours : DEFAULT_OPEN_HOURS) : [];\n this.selectedParticipants[event.detail.name]['timezone'] = event.detail.checked ? timeZone : undefined;\n this.selectedParticipants[event.detail.name]['specificTimesAvailability'] = event.detail.checked ? specificTimesAvailability : [];\n this.selectedParticipants = { ...this.selectedParticipants };\n this.updateFormValue();\n }\n\n @Listen('valueChanged')\n handleValueChanged(event: CustomEvent) {\n debug('[nylas-editor-tabs]', 'handleValueChanged', event);\n const { name, value } = event.detail;\n if (!name.startsWith('participant-availability-') && !name.startsWith('participant-specific-time-availability-')) {\n return;\n }\n\n // Parse the JSON value once - can contain { openHours: OpenHours[], timezone: string } or SpecificTimeAvailability[]\n let jsonValue;\n try {\n jsonValue = JSON.parse(value);\n } catch (error) {\n console.error(`Failed to parse JSON for participant ${name}:`, error);\n return;\n }\n\n // Validate the form\n if (this.isInternalsAvailable) {\n if (!this.participantFormRef.checkValidity()) {\n this.internals.setValidity({ customError: true }, 'Please fix the overlapping time ranges.');\n return;\n } else {\n this.internals.setValidity({});\n }\n }\n\n if (name.startsWith('participant-availability-')) {\n // Expected name format: \"participant-availability-{participantId}-{uniqueKey}\"\n // We extract the unique key (4th segment) to identify the specific participant\n const nameParts = name.split('-');\n if (nameParts.length < 4) {\n console.warn(`Malformed participant name format: ${name}. Expected format: \"participant-availability-{participantId}-{uniqueKey}\"`);\n return;\n }\n\n const key = nameParts[3];\n if (!this.selectedParticipants[key]) return;\n const existingOpenHours = jsonValue.openHours || [];\n const openHours = existingOpenHours?.length > 0 ? existingOpenHours : this.selectedConfiguration?.availability?.availability_rules?.default_open_hours || [];\n this.selectedParticipants[key]['openHours'] = openHours;\n this.selectedParticipants[key]['tab'] = 'availability';\n } else if (name.startsWith('participant-specific-time-availability')) {\n // Expected name format: \"participant-specific-time-availability-{index}-{uniqueKey}\"\n // Extract the unique key (6th segment) to identify the specific participant\n const nameParts = name.split('-');\n if (nameParts.length < 6) {\n console.warn(`Malformed participant specific date name format: ${name}. Expected format: \"participant-specific-time-availability-{index}-{uniqueKey}\"`);\n return;\n }\n\n const key = nameParts[5];\n if (!this.selectedParticipants[key]) return;\n const existingSpecificTimeAvailability = jsonValue || [];\n this.selectedParticipants[key]['specificTimesAvailability'] = existingSpecificTimeAvailability;\n this.selectedParticipants[key]['tab'] = 'specific-time-availability';\n }\n\n this.selectedParticipants = { ...this.selectedParticipants };\n\n this.updateFormValue();\n }\n\n updateFormValue() {\n const participantOpenHours = {};\n const participantSpecificTimeAvailability = {};\n Object.keys(this.selectedParticipants).forEach(key => {\n participantOpenHours[key] = this.selectedParticipants[key].openHours;\n participantSpecificTimeAvailability[key] = this.selectedParticipants[key].specificTimesAvailability || [];\n });\n\n this.isInternalsAvailable && this.internals.setFormValue(JSON.stringify(participantOpenHours), this.name);\n this.valueChanged.emit({ value: JSON.stringify(participantOpenHours), name: this.name });\n\n this.isInternalsAvailable && this.internals.setFormValue(JSON.stringify(participantSpecificTimeAvailability), `${this.name}-specific-time`);\n this.valueChanged.emit({ value: JSON.stringify(participantSpecificTimeAvailability), name: `${this.name}-specific-time` });\n }\n\n setParticipants(participants: Participant[]) {\n const selectedParticipants = {};\n participants?.forEach(participant => {\n selectedParticipants[participant.email] = {\n isOpen: false,\n setCustom: Boolean(participant.availability?.open_hours),\n openHours: participant.availability?.open_hours || [],\n name: participant.name || participant.email,\n availability: participant.availability,\n timezone: participant.timezone,\n specificTimesAvailability: participant.specific_time_availability || [],\n };\n });\n return selectedParticipants;\n }\n\n /**\n * This method is essentially a workaround to check if the internals are available because\n * the unit tests in stencil do not support the internals.\n * @returns boolean\n */\n get isInternalsAvailable() {\n return this.internals !== undefined && typeof this.internals.setFormValue === 'function' && typeof this.internals.setValidity === 'function';\n }\n\n @RegisterComponent<NylasParticipantsCustomAvailability, NylasSchedulerConfigConnector, Exclude<NylasSchedulerEditor['stores'], undefined>>({\n name: 'nylas-participants-custom-availability',\n stateToProps: new Map([\n ['schedulerConfig.selectedConfiguration', 'selectedConfiguration'],\n ['schedulerConfig.selectedLanguage', 'selectedLanguage'],\n ['schedulerConfig.themeConfig', 'themeConfig'],\n ]),\n eventToProps: {},\n fireRegisterEvent: true,\n })\n render() {\n return (\n <Host>\n <div class=\"nylas-participants-custom-availability\" part=\"npca\">\n <div class=\"header\" part=\"npca__header\">\n <h3>{i18next.t('nylasParticipantCustomAvailability.headerTitle')}</h3>\n <p>{i18next.t('nylasParticipantCustomAvailability.headerSubTitle')}</p>\n </div>\n <div class=\"content\" part=\"npca__content\">\n <form ref={el => (this.participantFormRef = el as HTMLFormElement)}>\n {Object.keys(this.selectedParticipants).map((key, index) => {\n const participant = this.selectedParticipants[key];\n const participantOpenHours = participant.availability?.open_hours || [];\n if (!participant || !participant.name || !participant.availability) return;\n return (\n <div class=\"participant-container\" part=\"npca__participant-container\" key={`participant-conatiner-${index}`}>\n <div class=\"participant-title\" part=\"npca__participant-title\">\n <p>{i18next.t('nylasParticipantCustomAvailability.participantOpenHoursTitle', { participantName: participant.name })}</p>\n <div class=\"participant-toggle\" part=\"npca__participant-toggle--container\">\n <toggle-switch\n exportparts=\"ts_label: npca__toggle-label, ts_input: npca_toggle-input, ts_slider: npca_toggle-slider\"\n name={key}\n checked={!!participant?.openHours && participant?.openHours.length > 0}\n themeConfig={this.themeConfig}\n />\n <span\n class={`chevron ${participant.isOpen ? 'open' : 'closed'} ${participant.setCustom ? '' : 'disabled'}`}\n onClick={() => {\n if (!participant.setCustom) return;\n this.selectedParticipants[key].isOpen = !participant.isOpen;\n this.selectedParticipants[key].tab = 'availability';\n this.selectedParticipants = { ...this.selectedParticipants };\n }}\n >\n <chevron-icon width=\"24\" height=\"24\" />\n </span>\n </div>\n </div>\n {participant.isOpen && (\n <div class=\"participant-tabs\" part=\"npca__participant-tabs\">\n <div\n class={`participant-tab ${participant.tab === 'availability' ? 'active' : ''}`}\n part=\"npca__participant-tab\"\n onClick={() => {\n this.selectedParticipants[key].tab = 'availability';\n this.selectedParticipants = { ...this.selectedParticipants };\n }}\n >\n <span>{i18next.t('nylasParticipantCustomAvailability.participantAvailabilityTab')}</span>\n </div>\n <div\n class={`participant-tab ${participant.tab === 'specific-time-availability' ? 'active' : ''}`}\n part=\"npca__participant-tab\"\n onClick={() => {\n this.selectedParticipants[key].tab = 'specific-time-availability';\n this.selectedParticipants = { ...this.selectedParticipants };\n }}\n >\n <span>{i18next.t('nylasParticipantCustomAvailability.participantSpecificTimeAvailabilityTab')}</span>\n </div>\n </div>\n )}\n {participant.tab === 'availability' && participant.isOpen && (\n <nylas-availability-picker\n key={index}\n name={`participant-availability-${index}-${key}`}\n openHours={participantOpenHours}\n defaultTimezone={participant.timezone}\n hideHeader={true}\n />\n )}\n {participant.tab === 'specific-time-availability' && participant.isOpen && (\n <nylas-specific-time-availability-picker\n key={index}\n name={`participant-specific-time-availability-${index}-${key}`}\n specificTimesAvailability={participant.specificTimesAvailability}\n />\n )}\n </div>\n );\n })}\n </form>\n </div>\n </div>\n </Host>\n );\n }\n}\n"]}