@nylas/web-elements 1.4.2 → 1.4.4
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 +56 -27
- package/dist/cdn/nylas-scheduling/nylas-scheduling.es.js +4842 -4822
- package/dist/cjs/checkmark-icon_15.cjs.entry.js +3 -3
- package/dist/cjs/checkmark-icon_15.cjs.entry.js.map +1 -1
- package/dist/cjs/google-logo-icon_6.cjs.entry.js +4 -4
- package/dist/cjs/input-component.cjs.entry.js +13 -2
- package/dist/cjs/input-component.cjs.entry.js.map +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/nylas-booked-event-card_12.cjs.entry.js +40 -11
- package/dist/cjs/nylas-booked-event-card_12.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-event-calendar_3.cjs.entry.js +53 -24
- package/dist/cjs/nylas-event-calendar_3.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-provider.cjs.entry.js +1 -1
- package/dist/cjs/nylas-scheduling.cjs.entry.js +3 -3
- package/dist/cjs/nylas-web-elements.cjs.js +1 -1
- package/dist/cjs/{scheduler-store-d6f5cff3.js → scheduler-store-5dcefe7e.js} +2 -2
- package/dist/cjs/{scheduler-store-d6f5cff3.js.map → scheduler-store-5dcefe7e.js.map} +1 -1
- package/dist/collection/components/design-system/input-component/input-component.js +13 -2
- package/dist/collection/components/design-system/input-component/input-component.js.map +1 -1
- package/dist/collection/components/scheduler/nylas-date-picker/nylas-date-picker.js +40 -6
- package/dist/collection/components/scheduler/nylas-date-picker/nylas-date-picker.js.map +1 -1
- package/dist/collection/components/scheduler/nylas-timeslot-picker/nylas-timeslot-picker.js +8 -5
- package/dist/collection/components/scheduler/nylas-timeslot-picker/nylas-timeslot-picker.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-event-calendar/nylas-event-calendar.js +28 -17
- package/dist/collection/components/scheduler-editor/nylas-event-calendar/nylas-event-calendar.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-event-capacity/nylas-event-capacity.css +15 -0
- package/dist/collection/components/scheduler-editor/nylas-event-capacity/nylas-event-capacity.js +13 -2
- package/dist/collection/components/scheduler-editor/nylas-event-capacity/nylas-event-capacity.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-event-timeslot/nylas-event-timeslot.css +1 -1
- package/dist/collection/components/scheduler-editor/nylas-event-timeslot/nylas-event-timeslot.js +12 -4
- package/dist/collection/components/scheduler-editor/nylas-event-timeslot/nylas-event-timeslot.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-event-title/nylas-event-title.js +3 -3
- package/dist/collection/components/scheduler-editor/nylas-event-title/nylas-event-title.js.map +1 -1
- package/dist/components/index.es.js +1 -1
- package/dist/components/input-component2.js +13 -2
- package/dist/components/input-component2.js.map +1 -1
- package/dist/components/nylas-date-picker2.js +38 -8
- package/dist/components/nylas-date-picker2.js.map +1 -1
- package/dist/components/nylas-editor-tabs-group2.js +2 -2
- package/dist/components/nylas-editor-tabs2.js +2 -2
- package/dist/components/nylas-event-calendar2.js +29 -18
- package/dist/components/nylas-event-calendar2.js.map +1 -1
- package/dist/components/nylas-event-capacity2.js +14 -3
- package/dist/components/nylas-event-capacity2.js.map +1 -1
- package/dist/components/nylas-event-timeslot2.js +14 -6
- package/dist/components/nylas-event-timeslot2.js.map +1 -1
- package/dist/components/nylas-event-title2.js +3 -3
- package/dist/components/nylas-event-title2.js.map +1 -1
- package/dist/components/nylas-list-configurations2.js +1 -1
- package/dist/components/nylas-locale-switch2.js +1 -1
- package/dist/components/nylas-scheduler-editor.js +1 -1
- package/dist/components/nylas-scheduling.js +3 -3
- package/dist/components/nylas-timeslot-picker2.js +9 -6
- package/dist/components/nylas-timeslot-picker2.js.map +1 -1
- package/dist/components/scheduler-store.js +2 -2
- package/dist/components/utils.js +1 -1
- package/dist/esm/calendar-agenda-fill-icon_36.entry.js +2 -2
- package/dist/esm/checkmark-icon_15.entry.js +5 -5
- package/dist/esm/checkmark-icon_15.entry.js.map +1 -1
- package/dist/esm/{feedbackSync-aa8d23d1.js → feedbackSync-57bb471a.js} +2 -2
- package/dist/esm/{feedbackSync-aa8d23d1.js.map → feedbackSync-57bb471a.js.map} +1 -1
- package/dist/esm/globe-icon_2.entry.js +1 -1
- package/dist/esm/google-logo-icon_6.entry.js +7 -7
- package/dist/esm/{index.es-6d4b50d5.js → index.es-13ff6710.js} +2 -2
- package/dist/esm/{index.es-6d4b50d5.js.map → index.es-13ff6710.js.map} +1 -1
- package/dist/esm/index.js +2 -2
- package/dist/esm/input-component.entry.js +14 -3
- package/dist/esm/input-component.entry.js.map +1 -1
- package/dist/esm/input-dropdown_2.entry.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/multi-select-dropdown_2.entry.js +1 -1
- package/dist/esm/{nylas-api-request-c5400df5.js → nylas-api-request-2e5f4c7f.js} +2 -2
- package/dist/esm/{nylas-api-request-c5400df5.js.map → nylas-api-request-2e5f4c7f.js.map} +1 -1
- package/dist/esm/nylas-booked-event-card_12.entry.js +42 -13
- package/dist/esm/nylas-booked-event-card_12.entry.js.map +1 -1
- package/dist/esm/nylas-event-calendar_3.entry.js +55 -26
- package/dist/esm/nylas-event-calendar_3.entry.js.map +1 -1
- package/dist/esm/nylas-form-card.entry.js +2 -2
- package/dist/esm/nylas-if-state.entry.js +2 -2
- package/dist/esm/nylas-login.entry.js +2 -2
- package/dist/esm/nylas-provider.entry.js +3 -3
- package/dist/esm/nylas-scheduler-editor.entry.js +3 -3
- package/dist/esm/nylas-scheduling.entry.js +6 -6
- package/dist/esm/nylas-web-elements.js +1 -1
- package/dist/esm/{register-component-238f28de.js → register-component-02a05665.js} +2 -2
- package/dist/esm/{register-component-238f28de.js.map → register-component-02a05665.js.map} +1 -1
- package/dist/esm/{scheduler-store-82bb212a.js → scheduler-store-fe9e85a4.js} +3 -3
- package/dist/esm/{scheduler-store-82bb212a.js.map → scheduler-store-fe9e85a4.js.map} +1 -1
- package/dist/esm/textarea-component.entry.js +1 -1
- package/dist/esm/{utils-7d962146.js → utils-e27d0e4b.js} +2 -2
- package/dist/esm/{utils-7d962146.js.map → utils-e27d0e4b.js.map} +1 -1
- package/dist/nylas-web-elements/index.esm.js +1 -1
- package/dist/nylas-web-elements/nylas-web-elements.esm.js +1 -1
- package/dist/nylas-web-elements/nylas-web-elements.esm.js.map +1 -1
- package/dist/nylas-web-elements/{p-12bf5148.js → p-189b24e6.js} +2 -2
- package/dist/nylas-web-elements/p-1cbe8a56.entry.js +2 -0
- package/dist/nylas-web-elements/{p-d132fbaa.entry.js.map → p-1cbe8a56.entry.js.map} +1 -1
- package/dist/nylas-web-elements/{p-fdc35ad8.entry.js → p-23971057.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-ba831977.entry.js → p-2dd05606.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-797578de.js → p-388c456c.js} +2 -2
- package/dist/nylas-web-elements/{p-cf650f4f.js → p-3ea1c7c9.js} +2 -2
- package/dist/nylas-web-elements/{p-de9d8218.entry.js → p-5f683e34.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-c2b6e0ca.entry.js → p-68ab7563.entry.js} +2 -2
- package/dist/nylas-web-elements/p-68ab7563.entry.js.map +1 -0
- package/dist/nylas-web-elements/{p-ec2c12a9.js → p-6b7fb948.js} +2 -2
- package/dist/nylas-web-elements/{p-cfd42146.js → p-7477410d.js} +2 -2
- package/dist/nylas-web-elements/{p-b62ef1be.js → p-7d9cdd23.js} +2 -2
- package/dist/nylas-web-elements/{p-00577fba.entry.js → p-8a7a6947.entry.js} +2 -2
- package/dist/nylas-web-elements/p-97f87422.entry.js +2 -0
- package/dist/nylas-web-elements/p-97f87422.entry.js.map +1 -0
- package/dist/nylas-web-elements/{p-9999c233.entry.js → p-aaf12216.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-a452d4ea.entry.js → p-b55a87fa.entry.js} +2 -2
- package/dist/nylas-web-elements/p-b55a87fa.entry.js.map +1 -0
- package/dist/nylas-web-elements/{p-888d0c66.entry.js → p-c5f86111.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-dd98c443.entry.js → p-cc6dbd73.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-b59288fd.entry.js → p-d5a2cec8.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-83216795.entry.js → p-deb33dfb.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-83216795.entry.js.map → p-deb33dfb.entry.js.map} +1 -1
- package/dist/nylas-web-elements/{p-2531d4fa.entry.js → p-e2dc32d9.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-a263330c.entry.js → p-eedabd6a.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-355b34cb.entry.js → p-f57e68b1.entry.js} +2 -2
- package/dist/types/components/scheduler/nylas-date-picker/nylas-date-picker.d.ts +4 -0
- package/dist/types/components/scheduler-editor/nylas-event-capacity/nylas-event-capacity.d.ts +1 -0
- package/package.json +4 -5
- package/CHANGELOG.md +0 -878
- package/dist/nylas-web-elements/p-203beca4.entry.js +0 -2
- package/dist/nylas-web-elements/p-203beca4.entry.js.map +0 -1
- package/dist/nylas-web-elements/p-a452d4ea.entry.js.map +0 -1
- package/dist/nylas-web-elements/p-c2b6e0ca.entry.js.map +0 -1
- package/dist/nylas-web-elements/p-d132fbaa.entry.js +0 -2
- /package/dist/nylas-web-elements/{p-12bf5148.js.map → p-189b24e6.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-fdc35ad8.entry.js.map → p-23971057.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-ba831977.entry.js.map → p-2dd05606.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-797578de.js.map → p-388c456c.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-cf650f4f.js.map → p-3ea1c7c9.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-de9d8218.entry.js.map → p-5f683e34.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-ec2c12a9.js.map → p-6b7fb948.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-cfd42146.js.map → p-7477410d.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-b62ef1be.js.map → p-7d9cdd23.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-00577fba.entry.js.map → p-8a7a6947.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-9999c233.entry.js.map → p-aaf12216.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-888d0c66.entry.js.map → p-c5f86111.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-dd98c443.entry.js.map → p-cc6dbd73.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-b59288fd.entry.js.map → p-d5a2cec8.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-2531d4fa.entry.js.map → p-e2dc32d9.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-a263330c.entry.js.map → p-eedabd6a.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-355b34cb.entry.js.map → p-f57e68b1.entry.js.map} +0 -0
package/dist/collection/components/scheduler-editor/nylas-event-calendar/nylas-event-calendar.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nylas-event-calendar.js","sourceRoot":"","sources":["../../../../src/components/scheduler-editor/nylas-event-calendar/nylas-event-calendar.tsx"],"names":[],"mappings":"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","sourcesContent":["import { RegisterComponent } from '@/common/register-component';\nimport { NylasSchedulerConfigConnector } from '@/connector/nylas-scheduler-config-connector';\nimport { NylasSchedulerEditor } from '../nylas-scheduler-editor/nylas-scheduler-editor';\nimport { AttachInternals, Component, Element, Event, EventEmitter, h, Host, Listen, Prop, State, Watch } from '@stencil/core';\nimport { Calendar, CalendarOptions } from '@fullcalendar/core';\nimport dayGridPlugin from '@fullcalendar/daygrid';\nimport timeGridPlugin from '@fullcalendar/timegrid';\nimport interactionPlugin from '@fullcalendar/interaction';\nimport { debug } from '@/utils/utils';\nimport i18next from '@/utils/i18n';\nimport { LANGUAGE_CODE } from '@/common/constants';\nimport { Conference, EventDetails, GroupConfiguration, GroupEventAPIData, NylasCalendar, RecurrenceDeleteOption, RecurrenceUpdateOption } from '@nylas/core';\nimport dayjs from 'dayjs';\nimport utc from 'dayjs/plugin/utc';\nimport timezone from 'dayjs/plugin/timezone';\nimport { User } from '@/common/nylas-api-request';\n\ndayjs.extend(utc);\ndayjs.extend(timezone);\n\ntype CalendarEventData = {\n title: string;\n start: string;\n end: string;\n calendar_id: string;\n id: string;\n};\n\nexport type CreateGroupEventFormState = {\n title: string;\n description: string;\n location: string;\n eventTimeslot: {\n when: {\n start_time: number;\n end_time: number;\n start_timezone: string;\n end_timezone: string;\n };\n recurrence: string[];\n };\n eventCapacity: number;\n conferencing?: Conference;\n participants: {\n name: string;\n email: string;\n is_organizer?: boolean;\n }[];\n};\n\nconst typeToViewMapping = {\n day: 'timeGridDay',\n week: 'timeGridWeek',\n month: 'dayGridMonth',\n};\n\nconst viewToTypeMapping = {\n timeGridDay: 'day',\n timeGridWeek: 'week',\n dayGridMonth: 'month',\n};\n\nconst editOptionChoices = [\n { label: 'Import', value: 'import' },\n { label: 'Edit', value: 'edit' },\n { label: 'Delete this event only', value: 'delete-this' },\n // { label: 'Delete this and all future occurrences', value: 'delete-future' },\n { label: 'Delete all events', value: 'delete-all' },\n];\n\nconst updateChoices: {\n label: string;\n value: RecurrenceUpdateOption;\n}[] = [\n { label: 'Update this event', value: 'this' },\n { label: 'Update all future occurrences', value: 'future' },\n { label: 'Update all events', value: 'all' },\n];\n\nconst deleteChoices: {\n label: string;\n value: RecurrenceDeleteOption;\n}[] = [\n { label: 'Delete this event', value: 'this' },\n { label: 'Delete this and all future occurrences', value: 'future' },\n { label: 'Delete all events', value: 'all' },\n];\n\n@Component({\n tag: 'nylas-event-calendar',\n styleUrl: 'nylas-event-calendar.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class NylasEventCalendar {\n @Element() host!: HTMLNylasEventCalendarElement;\n private calendarEl!: HTMLElement;\n private formRef!: HTMLFormElement;\n /**\n * @standalone\n * The selected configuration\n */\n @Prop() selectedConfiguration?: GroupConfiguration;\n /**\n * @standalone\n * The name of the component\n */\n @Prop() name: string = 'page-name';\n /**\n * The selected language.\n */\n @Prop() selectedLanguage?: LANGUAGE_CODE;\n /**\n * The group events prop\n */\n @Prop() groupEvents?: GroupEventAPIData[];\n\n /**\n * The current user prop\n */\n @Prop() currentUser?: User;\n /**\n * The calendars prop\n */\n @Prop() calendars?: NylasCalendar[];\n /**\n * The master group events prop\n */\n @Prop() masterGroupEvents?: Record<string, EventDetails>;\n /**\n * The is loading prop\n */\n @Prop() isLoading?: boolean;\n /**\n * The element internals.\n */\n @AttachInternals() internals!: ElementInternals;\n @State() selectedView: 'day' | 'week' | 'month' = 'week';\n @State() events: {\n title: string;\n start: string;\n end: string;\n calendar_id: string;\n id: string;\n }[] = [];\n\n @State() calendar!: Calendar;\n\n @State() selectedEvent: GroupEventAPIData | null = null;\n\n @State() selectedDateRangeString: string = '';\n\n @State() showEditEventDetails: boolean = false;\n\n @State() showCreateEventDetails: boolean = false;\n\n @State() editOptions: { label: string; value: string }[] = editOptionChoices;\n\n @State() showEditOptions: boolean = false;\n\n @State() updateOptions: { label: string; value: 'this' | 'future' | 'all' }[] = updateChoices;\n\n @State() showUpdateOptions: boolean = false;\n\n @State() deleteOptions: { label: string; value: string }[] = deleteChoices;\n\n @State() showDeleteOptions: boolean = false;\n\n @State() unsavedChanges: boolean = false;\n\n @State() showConfirmDiscardUnsavedChangesModal: boolean = false;\n\n @State() createNewGroupEventTimeslot: {\n when: {\n start_time: number;\n end_time: number;\n start_timezone: string;\n end_timezone: string;\n };\n recurrence: string[];\n } | null = null;\n @State() formError: string = '';\n\n @State() loadingOptions: {\n update: string;\n delete: string;\n create: string;\n } = {\n update: '',\n delete: '',\n create: '',\n };\n\n @State() showChooseParticipantsModal: boolean = false;\n\n @State() importParticipants: { label: string; value: string; disabled?: boolean }[] = [];\n\n @State() selectedImportParticipants: { email: string; status: string }[] = [];\n\n @Event() fetchMasterGroupEvent!: EventEmitter<string>;\n\n @Event() saveGroupEventChanges!: EventEmitter<{ data: GroupEventAPIData; action: 'this' | 'future' | 'all' }>;\n\n @Event() deleteGroupEvent!: EventEmitter<{ data: GroupEventAPIData; action: 'this' | 'future' | 'all' }>;\n\n @Event() groupEventSelected!: EventEmitter<GroupEventAPIData>;\n\n @Event() createGroupEvent!: EventEmitter<CreateGroupEventFormState>;\n\n @Event() calendarViewChanged!: EventEmitter<{ startTime: number; endTime: number }>;\n\n @Event() previosNextClicked!: EventEmitter<{ direction: 'prev' | 'next'; view: 'day' | 'week' | 'month'; currentViewRange: { startTime: number; endTime: number } }>;\n\n @Event() setCalendarViewDateRange!: EventEmitter<{ startTime: number; endTime: number }>;\n\n @Event() importGroupEvent!: EventEmitter<{\n event_id: string;\n calendar_id: string;\n }>;\n /**\n * When a name prop is passed, stencil does not automatically set the name attribute on the host element.\n * Since this component is form-associated, the name attribute is required for form submission.\n * This is a workaround to ensure that the name attribute is set on the host element.\n */\n @Watch('name')\n elementNameChangedHandler(newValue: string) {\n debug('nylas-page-name', 'elementNameChangedHandler', newValue);\n this.host.setAttribute('name', newValue);\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('groupEvents')\n groupEventsChangedHandler(newValue: GroupEventAPIData[], oldValue: GroupEventAPIData[]) {\n if (newValue === oldValue) return;\n this.events = newValue\n .filter(event => event !== undefined)\n .map(eventData => {\n const event = eventData.event;\n if (event?.id) {\n const isGroupEvent = !!eventData.group_event_info && !!eventData.group_event_info?.event_id;\n const readOnly = event.read_only;\n const eventParticipants = event.participants || [];\n const groupEventParticipants = eventData.group_event_info?.participants || [];\n const noParticipants = eventParticipants.length <= 0 && groupEventParticipants.length <= 0;\n return {\n title: event.title,\n start: dayjs\n .unix(event.when.start_time) // Convert UNIX timestamp\n .tz(event.when.start_timezone) // Adjust to the event's timezone\n .format('YYYY-MM-DDTHH:mm:ss'),\n end: dayjs\n .unix(event.when.end_time) // Convert UNIX timestamp\n .tz(event.when.end_timezone) // Adjust to the event's timezone\n .format('YYYY-MM-DDTHH:mm:ss'),\n calendar_id: event.calendar_id,\n id: event.id,\n classNames: [isGroupEvent ? 'group-event' : 'regular-event', readOnly ? 'read-only' : '', noParticipants ? 'no-participants' : ''],\n editable: !readOnly,\n };\n }\n return undefined;\n }) as CalendarEventData[];\n\n this.calendar?.setOption('events', this.events);\n }\n\n // Lifecycle Methods\n connectedCallback() {\n debug('nylas-connected-calendars', 'connectedCallback');\n }\n\n disconnectedCallback() {\n debug('nylas-connected-calendars', 'disconnectedCallback');\n }\n\n componentWillLoad() {\n debug('nylas-connected-calendars', 'componentWillLoad');\n }\n\n componentDidLoad() {\n this.selectedView = 'week';\n const calendarOptions: CalendarOptions = {\n plugins: [dayGridPlugin, timeGridPlugin, interactionPlugin],\n headerToolbar: false,\n initialView: 'timeGridWeek',\n events: this.events,\n editable: true, // Allow drag-and-drop\n selectable: true,\n nowIndicator: true,\n scrollTime: new Date().getHours() + ':00:00', // Scroll to the current hour\n dayHeaderFormat: { weekday: 'short', month: undefined, day: '2-digit', formatMatcher: 'basic' }, // Customize header format\n dayHeaderContent: headerInfo => {\n if (headerInfo.view.type === 'dayGridMonth') {\n return {\n html: `<div class=\"custom-day-header\">\n <span class=\"day-name\">${dayjs(headerInfo.date).format('ddd')}</span>\n </div>`,\n };\n }\n return {\n html: `<div class=\"custom-day-header\">\n <span class=\"day-name\">${dayjs(headerInfo.date).format('ddd')}</span>\n <span class=\"day-number ${headerInfo.isToday ? 'today' : ''}\">${dayjs(headerInfo.date).format('D')}</span>\n </div>`,\n };\n },\n datesSet: info => {\n const startMonth = dayjs(info.start).format('MMMM').substring(0, 3); // Get the first 3 characters of the month\n const endMonth = dayjs(info.end).subtract(1, 'day').format('MMMM').substring(0, 3); // Subtract 1 day for the correct end month\n const startYear = dayjs(info.start).format('YYYY');\n const endYear = dayjs(info.end).subtract(1, 'day').format('YYYY');\n\n if (startMonth === endMonth && startYear === endYear) {\n // Same month and year\n this.selectedDateRangeString = `${startMonth} ${startYear}`;\n } else if (startYear === endYear) {\n // Different months but same year\n this.selectedDateRangeString = `${startMonth} - ${endMonth} ${startYear}`;\n } else {\n // Different months and different years\n this.selectedDateRangeString = `${startMonth} ${startYear} - ${endMonth} ${endYear}`;\n }\n },\n eventClick: info => {\n const event = this.groupEvents?.find(e => e.event.id === info.event._def.publicId);\n\n if (info.event.classNames.includes('read-only') || info.event.classNames.includes('no-participants')) {\n return;\n }\n\n this.showEditEventDetails = false;\n this.unsavedChanges = false;\n this.showEditOptions = true;\n this.selectedEvent = event || null;\n\n if (event && event.group_event_info) {\n const masterEventId = event.event.master_event_id;\n this.groupEventSelected.emit(event);\n this.editOptions = editOptionChoices.filter(option => option.value !== 'import');\n this.deleteOptions = [...deleteChoices];\n if (!masterEventId) {\n this.editOptions = this.editOptions.filter(option => option.value !== 'delete-all');\n this.deleteOptions = this.deleteOptions.filter(option => option.value !== 'all' && option.value !== 'future');\n }\n if (masterEventId && !this.masterGroupEvents?.[masterEventId]) {\n this.fetchMasterGroupEvent.emit(event.event.master_event_id);\n }\n } else {\n this.editOptions = editOptionChoices.filter(option => option.value === 'import');\n }\n },\n select: (info: any) => {\n this.createNewGroupEventTimeslot = {\n when: {\n start_time: new Date(info.start).getTime() / 1000,\n end_time: new Date(info.end).getTime() / 1000,\n start_timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n end_timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n },\n recurrence: [],\n };\n this.showCreateEventDetails = true;\n },\n eventDurationEditable: true,\n height: '100%', // Let FullCalendar adjust dynamically\n contentHeight: 'auto', // Adjust content height based on events\n };\n\n this.calendar = new Calendar(this.calendarEl, calendarOptions);\n this.calendar.render();\n this.setCalendarViewDateRange.emit({\n startTime: new Date(this.calendar.getCurrentData().viewApi.activeStart).getTime() / 1000,\n endTime: new Date(this.calendar.getCurrentData().viewApi.activeEnd).getTime() / 1000,\n });\n }\n\n setView(view: 'day' | 'week' | 'month') {\n this.selectedView = view;\n this.calendar.changeView(typeToViewMapping[view]);\n const startTime = new Date(this.calendar.getCurrentData().viewApi.activeStart).getTime() / 1000;\n const endTime = new Date(this.calendar.getCurrentData().viewApi.activeEnd).getTime() / 1000;\n this.calendarViewChanged.emit({ startTime, endTime });\n }\n\n handleEditOptionSelected(e: Event, option: { label: string; value: string }) {\n e.preventDefault();\n e.stopPropagation();\n\n if (this.isLoading) return;\n if (option.value === 'edit') {\n this.showEditOptions = false;\n this.showEditEventDetails = true;\n } else if ((option.value === 'delete-this' || option.value === 'delete-all' || option.value === 'delete-future') && this.selectedEvent) {\n this.loadingOptions.delete = option.value;\n const action = option.value.split('-')[1] as RecurrenceDeleteOption;\n this.deleteGroupEvent.emit({ data: this.selectedEvent, action });\n } else if (option.value === 'import' && this.selectedEvent) {\n const participants = this.selectedEvent.event.participants || [];\n const organizer = this.selectedEvent.event.organizer;\n\n this.showEditOptions = false;\n this.showChooseParticipantsModal = true;\n this.importParticipants = participants.map(participant => ({\n label: participant?.email,\n value: participant?.email,\n disabled: participant?.email === organizer?.email,\n selected: participant?.email === organizer?.email,\n }));\n }\n }\n\n handleImportGroupEvent() {\n const masterEventId = this.selectedEvent?.event.master_event_id;\n const participantsList = this.selectedImportParticipants;\n const organizer = this.selectedEvent?.event.organizer;\n const groupEvent = {\n event_id: masterEventId ? masterEventId : this.selectedEvent?.event.id || '',\n calendar_id: this.selectedEvent?.event.calendar_id || '',\n capacity: 10,\n participants: participantsList.length > 0 ? participantsList : [{ ...organizer, is_organizer: true }],\n organizer: organizer,\n };\n this.showChooseParticipantsModal = false;\n if (!!groupEvent.event_id && !!groupEvent.calendar_id) {\n this.importGroupEvent.emit(groupEvent);\n }\n }\n\n handlePrevNextClick(direction: 'prev' | 'next') {\n const currentView = viewToTypeMapping[this.calendar.view.type];\n if (direction === 'prev') {\n this.calendar.prev();\n } else {\n this.calendar.next();\n }\n const startTime = new Date(this.calendar.getCurrentData().viewApi.activeStart).getTime() / 1000;\n const endTime = new Date(this.calendar.getCurrentData().viewApi.activeEnd).getTime() / 1000;\n this.previosNextClicked.emit({ direction, view: currentView, currentViewRange: { startTime, endTime } });\n }\n\n handleUpdateGroupEvent(e: Event, option: { label: string; value: 'this' | 'future' | 'all' }) {\n e.preventDefault();\n e.stopPropagation();\n if (this.isLoading) return;\n this.loadingOptions.update = option.value;\n if (this.selectedEvent && this.internals.checkValidity()) {\n this.saveGroupEventChanges.emit({ data: this.selectedEvent, action: option.value });\n }\n }\n\n handleDeleteGroupEvent(e: Event, option: { label: string; value: string }) {\n e.preventDefault();\n e.stopPropagation();\n if (this.isLoading) return;\n this.loadingOptions.delete = option.value;\n if (this.selectedEvent) {\n this.deleteGroupEvent.emit({ data: this.selectedEvent, action: option.value as 'this' | 'future' | 'all' });\n }\n }\n\n async handleCreateGroupEvent(e: Event) {\n e.preventDefault();\n e.stopPropagation();\n const formData = new FormData(this.formRef);\n const valid = this.formRef.checkValidity();\n if (!valid) {\n this.formError = 'Please fix the form errors.';\n return;\n }\n const formState = {} as {\n 'title': string;\n 'description': string;\n 'location': string;\n 'event-timeslot': string;\n 'event-capacity': string;\n 'conferencing': string;\n 'participants': string;\n };\n formData.forEach((value, key) => {\n formState[key] = value;\n });\n await this.createGroupEvent.emit({\n title: formState?.title,\n description: formState?.description,\n location: formState?.location,\n eventTimeslot: JSON.parse(formState?.['event-timeslot']),\n eventCapacity: parseInt(formState?.['event-capacity']),\n conferencing: formState?.conferencing ? JSON.parse(formState?.conferencing.toString()) : undefined,\n participants: formState?.participants ? JSON.parse(formState.participants) : [],\n });\n }\n\n @Watch('isLoading')\n isLoadingChangedHandler(newVal: boolean, _oldVal: boolean) {\n if (!newVal) {\n this.loadingOptions = {\n update: '',\n delete: '',\n create: '',\n };\n this.showCreateEventDetails = false;\n this.createNewGroupEventTimeslot = null;\n this.showEditOptions = false;\n this.showUpdateOptions = false;\n this.showDeleteOptions = false;\n this.showEditEventDetails = false;\n this.unsavedChanges = false;\n this.showConfirmDiscardUnsavedChangesModal = false;\n this.selectedEvent = null;\n this.selectedImportParticipants = [];\n this.importParticipants = [];\n this.showChooseParticipantsModal = false;\n }\n }\n\n @Listen('valueChanged')\n valueChangedHandler(event: CustomEvent<{ value: string; name: string }>) {\n const { value, name } = event.detail;\n const componentNames = ['title', 'description', 'location', 'event-timeslot', 'participants', 'event-capacity'];\n if ((this.showEditEventDetails || this.showCreateEventDetails) && componentNames.includes(name)) {\n this.unsavedChanges = true;\n this.formError = '';\n this.internals.setValidity({});\n }\n\n if (name === 'event-timeslot') {\n const { recurrence } = JSON.parse(value);\n const currentRrule = this.selectedEvent?.group_event_info?.rrule?.[0];\n const updatedRrule = recurrence[0];\n if (currentRrule !== updatedRrule) {\n this.updateOptions = updateChoices.filter(option => option.value !== 'this');\n return;\n }\n if (this.selectedEvent?.group_event_info) {\n this.selectedEvent.group_event_info.rrule = recurrence;\n }\n }\n }\n\n @Listen('timeWindowFormError')\n timeWindowFormErrorHandler(event: CustomEvent<{ key: string; message: string }>) {\n if (event.detail.key === 'event-timeslot') {\n this.formError = event.detail.message;\n this.internals.setValidity({ customError: true }, event.detail.message);\n } else {\n this.formError = '';\n this.internals.setValidity({});\n }\n }\n\n @Listen('saveGroupEventChangesError', { target: 'document' })\n saveGroupEventChangesErrorHandler(event: CustomEvent<{ error: string }>) {\n this.loadingOptions.update = '';\n if (event.detail.error) {\n this.formError = event.detail.error;\n }\n }\n\n @Listen('selectedOptionsChanged')\n selectedOptionsChangedHandler(event: CustomEvent<{ value: string[]; name: string }>) {\n const { value, name } = event.detail;\n if (name === 'participants') {\n this.selectedImportParticipants = this.selectedEvent?.event.participants?.filter(participant => value.includes(participant.email)) || [];\n }\n }\n\n @RegisterComponent<NylasEventCalendar, NylasSchedulerConfigConnector, Exclude<NylasSchedulerEditor['stores'], undefined>>({\n name: 'nylas-event-calendar',\n stateToProps: new Map([\n ['schedulerConfig.selectedLanguage', 'selectedLanguage'],\n ['schedulerConfig.groupEvents', 'groupEvents'],\n ['schedulerConfig.masterGroupEvents', 'masterGroupEvents'],\n ['schedulerConfig.currentUser', 'currentUser'],\n ['schedulerConfig.calendars', 'calendars'],\n ['schedulerConfig.isLoading', 'isLoading'],\n ['schedulerConfig.selectedConfiguration', 'selectedConfiguration'],\n ]),\n eventToProps: {\n groupEventSelected: async (event: CustomEvent<GroupEventAPIData>, connector: NylasSchedulerConfigConnector) => {\n const { detail } = event;\n connector.schedulerConfigStore.state.selectedGroupEvent = detail;\n },\n calendarViewChanged: async (event: CustomEvent<{ startTime: number; endTime: number }>, connector: NylasSchedulerConfigConnector) => {\n const { detail } = event;\n connector.schedulerConfigStore.state.calendarViewDateRange = {\n start_time: detail.startTime.toString(),\n end_time: detail.endTime.toString(),\n };\n const configId = connector.schedulerConfigStore.state.selectedConfiguration?.id;\n if (configId) {\n const [data, error] = await connector.schedulerConfig.getGroupEvents(configId);\n if (!data && error && error.message) {\n // handle error\n return;\n }\n }\n },\n previosNextClicked: async (\n event: CustomEvent<{ direction: 'prev' | 'next'; view: 'day' | 'week' | 'month'; currentViewRange: { startTime: number; endTime: number } }>,\n connector: NylasSchedulerConfigConnector,\n ) => {\n const { detail } = event;\n connector.schedulerConfigStore.state.calendarViewDateRange = {\n start_time: detail.currentViewRange.startTime.toString(),\n end_time: detail.currentViewRange.endTime.toString(),\n };\n const configId = connector.schedulerConfigStore.state.selectedConfiguration?.id;\n if (configId) {\n const [data, error] = await connector.schedulerConfig.getGroupEvents(configId);\n if (!data && error && error.message) {\n // handle error\n return;\n }\n }\n },\n saveGroupEventChanges: async (event: CustomEvent<{ data: GroupEventAPIData; action: 'this' | 'future' | 'all' }>, _connector: NylasSchedulerConfigConnector) => {\n debug('nylas-event-calendar', 'saveGroupEventChanges', event.detail);\n },\n setCalendarViewDateRange: async (event: CustomEvent<{ startTime: number; endTime: number }>, connector: NylasSchedulerConfigConnector) => {\n debug('nylas-event-calendar', 'setCalendarViewDateRange', event.detail);\n connector.schedulerConfigStore.state.calendarViewDateRange = {\n start_time: event.detail.startTime.toString(),\n end_time: event.detail.endTime.toString(),\n };\n },\n fetchMasterGroupEvent: async (event: CustomEvent<string>, connector: NylasSchedulerConfigConnector) => {\n debug('nylas-event-calendar', 'fetchMasterGroupEvent', event.detail);\n const [data, error] = await connector.schedulerConfig.getMasterEventById(event.detail);\n if (!data && error && error.message) {\n // handle error\n return;\n }\n },\n },\n fireRegisterEvent: true,\n })\n render() {\n const calendarId = this.selectedConfiguration?.group_booking?.calendar_id;\n const currentCalendar = calendarId ? this.calendars?.find(c => c.id === calendarId) : null;\n\n return (\n <Host>\n <div class=\"nylas-event-calendar\">\n <div\n class={{\n 'calendar-container': true,\n 'show-event': this.showEditEventDetails || this.showCreateEventDetails,\n }}\n >\n <div class=\"calendar-header\">\n <div class=\"calendar-header__title\">\n <div class=\"calendar-header-prev-next\">\n <button onClick={() => this.handlePrevNextClick('prev')} class={{ 'chevron-left': true, 'button': true }}>\n {' '}\n <chevron-icon />\n </button>\n <button onClick={() => this.handlePrevNextClick('next')} class={{ 'chevron-right': true, 'button': true }}>\n {' '}\n <chevron-icon />\n </button>\n </div>\n <span>{this.selectedDateRangeString}</span>\n </div>\n <div class=\"calendar-header__current-calendar\">{currentCalendar?.name || currentCalendar?.id}'s calendar</div>\n <div class=\"calendar-header__view-options\">\n <button class={{ selected: this.calendar?.view.type === typeToViewMapping['day'] }} onClick={() => this.setView('day')}>\n Day\n </button>\n <button class={{ selected: this.calendar?.view.type === typeToViewMapping['week'] }} onClick={() => this.setView('week')}>\n Week\n </button>\n <button class={{ selected: this.calendar?.view.type === typeToViewMapping['month'] }} onClick={() => this.setView('month')}>\n Month\n </button>\n </div>\n </div>\n <div ref={el => (this.calendarEl = el as HTMLDivElement)}></div>\n </div>\n {this.showEditOptions && (\n <div class=\"edit-options action-options\" onClick={() => (this.showEditOptions = false)}>\n <div class=\"edit-options__card action-options__card\">\n <div class=\"edit-options__header action-options__header\">\n <h3>Actions</h3>\n <button-component\n tooltip=\"Close\"\n id=\"close-edit-options\"\n disabled={this.isLoading}\n variant={'invisible'}\n onClick={e => {\n e.preventDefault();\n e.stopImmediatePropagation();\n this.showEditOptions = false;\n }}\n >\n <close-icon />\n </button-component>\n </div>\n <div class=\"edit-options__content action-options__content\">\n <ul tabindex=\"-1\" role=\"listbox\" aria-label={this.name}>\n {this.editOptions.map(option =>\n option.value.toString() ? (\n <li\n class={{ disabled: !!this.isLoading }}\n tabindex=\"0\"\n key={option.value}\n id={option.value}\n onClick={e => this.handleEditOptionSelected(e, option)}\n role=\"option\"\n >\n {this.isLoading && this.loadingOptions.delete === option.value ? `Deleting...` : option.label}\n </li>\n ) : null,\n )}\n </ul>\n </div>\n </div>\n </div>\n )}\n {this.showConfirmDiscardUnsavedChangesModal && (\n <div class=\"discard-changes action-options\" onClick={() => (this.showUpdateOptions = false)}>\n <div class=\"discard-changes__card action-options__card\">\n <button-component\n tooltip=\"Close\"\n id=\"close-discard-changes\"\n variant={'invisible'}\n disabled={this.isLoading}\n onClick={e => {\n e.preventDefault();\n e.stopImmediatePropagation();\n this.showConfirmDiscardUnsavedChangesModal = false;\n }}\n >\n <close-icon />\n </button-component>\n <div class=\"discard-changes__content action-options__content\">\n <h3 slot=\"card-title\" part=\"nfbf__title\">\n Discard unsaved changes?\n </h3>\n </div>\n <div class=\"discard-changes__footer action-options__footer\">\n <button-component variant={'basic'} onClick={_e => (this.showConfirmDiscardUnsavedChangesModal = false)} part=\"nfbf__button-outline nfbf__cancel-cta\">\n {`${i18next.t('deleteSchedulingPageCancelButton')}`}\n </button-component>\n <button-component\n variant={'destructive'}\n onClick={e => {\n e.preventDefault();\n e.stopImmediatePropagation();\n this.showConfirmDiscardUnsavedChangesModal = false;\n this.unsavedChanges = false;\n this.showEditEventDetails = false;\n this.showCreateEventDetails = false;\n this.selectedEvent = null;\n this.createNewGroupEventTimeslot = null;\n this.formError = '';\n }}\n part=\"nfbf__button-outline nfbf__reschedule-cta\"\n >\n Discard\n </button-component>\n </div>\n </div>\n </div>\n )}\n {this.showUpdateOptions && (\n <div class=\"update-options action-options\" onClick={() => (this.showUpdateOptions = false)}>\n <div class=\"update-options__card action-options__card\">\n <button-component\n tooltip=\"Close\"\n id=\"close-update-options\"\n variant={'invisible'}\n disabled={this.isLoading}\n onClick={e => {\n e.preventDefault();\n e.stopImmediatePropagation();\n this.showUpdateOptions = false;\n }}\n >\n <close-icon />\n </button-component>\n <div class=\"update-options__content action-options__content\">\n <ul tabindex=\"-1\" role=\"listbox\" aria-label={this.name}>\n {this.updateOptions.map(option =>\n option.value.toString() ? (\n <li\n class={{ disabled: !!this.isLoading }}\n tabindex=\"0\"\n key={option.value}\n id={option.value}\n role=\"option\"\n onClick={e => this.handleUpdateGroupEvent(e, option)}\n >\n {this.isLoading && this.loadingOptions.update === option.value ? `Updating...` : option.label}\n </li>\n ) : null,\n )}\n </ul>\n </div>\n </div>\n </div>\n )}\n {this.showDeleteOptions && (\n <div class=\"delete-options action-options\" onClick={() => (this.showDeleteOptions = false)}>\n <div class=\"delete-options__card action-options__card\">\n <button-component\n tooltip=\"Close\"\n id=\"close-delete-options\"\n variant={'invisible'}\n disabled={this.isLoading}\n onClick={e => {\n e.preventDefault();\n e.stopImmediatePropagation();\n this.showDeleteOptions = false;\n }}\n >\n <close-icon />\n </button-component>\n <div class=\"delete-options__content action-options__content\">\n <ul tabindex=\"-1\" role=\"listbox\" aria-label={this.name}>\n {this.deleteOptions.map(option =>\n option.value.toString() ? (\n <li\n class={{ disabled: !!this.isLoading }}\n tabindex=\"0\"\n key={option.value}\n id={option.value}\n role=\"option\"\n onClick={e => this.handleDeleteGroupEvent(e, option)}\n >\n {this.isLoading && this.loadingOptions.delete === option.value ? `Deleting...` : option.label}\n </li>\n ) : null,\n )}\n </ul>\n </div>\n </div>\n </div>\n )}\n {this.showChooseParticipantsModal && (\n <div class=\"choose-participants-modal action-options\">\n <div class=\"choose-participants-modal__card action-options__card\">\n <button-component\n tooltip=\"Close\"\n id=\"close-choose-participants-modal\"\n variant={'invisible'}\n disabled={this.isLoading}\n onClick={e => {\n e.preventDefault();\n e.stopImmediatePropagation();\n this.showChooseParticipantsModal = false;\n }}\n >\n <close-icon />\n </button-component>\n <div class=\"choose-participants-modal__content action-options__content\">\n <multi-select-dropdown\n multipleOptionsSelectedLabel={i18next.t('multipleOptionsSelected')}\n name=\"participants\"\n label=\"Participants\"\n options={this.importParticipants}\n />\n <button-component variant={'basic'} onClick={() => this.handleImportGroupEvent()}>\n Import\n </button-component>\n </div>\n </div>\n </div>\n )}\n {this.showEditEventDetails && this.selectedEvent?.group_event_info && (\n <div class=\"event-details-container\">\n <div class=\"event-details-header\">\n <h3>Event Details</h3>\n <div class=\"event-details-header__actions\">\n <button-component\n tooltip=\"Close\"\n id=\"close\"\n disabled={this.isLoading}\n variant={'invisible'}\n onClick={e => {\n e.preventDefault();\n e.stopImmediatePropagation();\n if (this.unsavedChanges) {\n this.showConfirmDiscardUnsavedChangesModal = true;\n } else {\n this.showEditEventDetails = false;\n this.unsavedChanges = false;\n this.selectedEvent = null;\n this.formError = '';\n }\n }}\n >\n <close-icon />\n </button-component>\n </div>\n </div>\n <div\n class={{\n 'event-details': true,\n 'edit-event-details': true,\n }}\n >\n <nylas-event-title name=\"title\" eventTitle={this.selectedEvent.event.title} exportparts=\"net, net__title, net__input_group, net__input_wrapper, net__input\" />\n <nylas-event-description\n name=\"description\"\n eventDescription={this.selectedEvent.event.description}\n exportparts=\"ned, ned__title, ned__input_group, ned__input_wrapper, ned__input\"\n />\n <nylas-event-location\n name=\"location\"\n eventLocation={this.selectedEvent.event.location}\n eventConferencing={this.selectedEvent.event.conferencing}\n exportparts=\"nel, nel__title, nel__input_group, nel__input_wrapper, nel__input, nel__conferencing\"\n />\n <nylas-event-timeslot\n name=\"event-timeslot\"\n initialValue={{\n when: this.selectedEvent.event.when,\n recurrence: this.selectedEvent?.group_event_info?.rrule ? this.selectedEvent.group_event_info.rrule : [],\n }}\n exportparts=\"nets, nets__title, nets__input_group, nets__input_wrapper, nets__input, nets__timezone, nets__recurrence\"\n />\n <nylas-event-capacity\n name=\"event-capacity\"\n capacity={this.selectedEvent?.group_event_info?.capacity}\n exportparts=\"nec, nec__title, nec__input_group, nec__input_wrapper, nec__input\"\n />\n <nylas-additional-participants\n name=\"participants\"\n eventParticipants={this.selectedEvent.group_event_info.participants}\n exportparts=\"nadtnlpart, nadtnlpart__title, nadtnlpart__subtitle, nadtnlpart__content, nadtnlpart__input_group, nadtnlpart__input_wrapper, nadtnlpart__input, nadtnlpart__remove-participant\"\n />\n </div>\n <div class=\"event-details-footer\">\n <div class=\"event-details-footer__error\">\n <p>{this.formError}</p>\n </div>\n <div class=\"event-details-footer__helper-text\">\n <p>{this.unsavedChanges && !this.isLoading ? 'Unsaved changes' : ''}</p>\n </div>\n <div class=\"event-details-footer__actions\">\n <button-component\n variant={'destructive'}\n disabled={this.isLoading}\n onClick={e => {\n e.preventDefault();\n e.stopImmediatePropagation();\n if (this.selectedEvent?.event?.master_event_id) {\n this.showUpdateOptions = true;\n } else {\n this.handleDeleteGroupEvent(e, { label: 'Delete this event', value: 'this' });\n }\n }}\n >\n Delete\n </button-component>\n <button-component\n variant={'basic'}\n disabled={this.isLoading || this.formError !== ''}\n onClick={e => {\n e.preventDefault();\n e.stopImmediatePropagation();\n if (!this.unsavedChanges) return;\n if (this.selectedEvent?.event?.master_event_id) {\n this.showUpdateOptions = true;\n } else {\n this.handleUpdateGroupEvent(e, { label: 'Update this event', value: 'this' });\n }\n }}\n >\n Save\n </button-component>\n </div>\n </div>\n </div>\n )}\n {this.showCreateEventDetails && this.createNewGroupEventTimeslot && (\n <div class=\"event-details-container\">\n <div class=\"event-details-header\">\n <h3>Event Details</h3>\n <div class=\"event-details-header__actions\">\n <button-component\n tooltip=\"Close\"\n id=\"close\"\n variant={'invisible'}\n disabled={this.isLoading}\n onClick={e => {\n e.preventDefault();\n e.stopImmediatePropagation();\n if (this.unsavedChanges) {\n this.showConfirmDiscardUnsavedChangesModal = true;\n } else {\n this.showCreateEventDetails = false;\n this.createNewGroupEventTimeslot = null;\n this.selectedEvent = null;\n this.unsavedChanges = false;\n }\n }}\n >\n <close-icon />\n </button-component>\n </div>\n </div>\n <form ref={el => (this.formRef = el as HTMLFormElement)}>\n <div\n class={{\n 'event-details': true,\n }}\n >\n <nylas-event-info>\n <div slot=\"inputs\" class=\"event-details-form-inputs\">\n <nylas-event-title eventTitle={'New group event'} exportparts=\"net, net__title, net__input_group, net__input_wrapper, net__input\" />\n <nylas-event-description hideAutoPopulateButton={true} exportparts=\"ned, ned__title, ned__input_group, ned__input_wrapper, ned__input\" />\n <nylas-event-location\n userProvider={this.currentUser?.provider}\n exportparts=\"nel, nel__title, nel__input_group, nel__input_wrapper, nel__input, nel__conferencing\"\n />\n <nylas-event-timeslot\n name=\"event-timeslot\"\n initialValue={this.createNewGroupEventTimeslot}\n exportparts=\"nets, nets__title, nets__input_group, nets__input_wrapper, nets__input, nets__timezone, nets__recurrence\"\n />\n <nylas-event-capacity name=\"event-capacity\" exportparts=\"nec, nec__title, nec__input_group, nec__input_wrapper, nec__input\" />\n </div>\n </nylas-event-info>\n <nylas-additional-participants\n name=\"participants\"\n eventParticipants={[{ name: this.currentUser?.name || this.currentUser?.email, email: this.currentUser?.email || '', is_organizer: true }]}\n exportparts=\"nadtnlpart, nadtnlpart__title, nadtnlpart__subtitle, nadtnlpart__content, nadtnlpart__input_group, nadtnlpart__input_wrapper, nadtnlpart__input, nadtnlpart__remove-participant\"\n />\n </div>\n <div class=\"event-details-footer\">\n <div class=\"event-details-footer__error\">\n <p>{this.formError}</p>\n </div>\n <div class=\"event-details-footer__helper-text\">\n <p>{this.unsavedChanges && !this.isLoading ? 'Unsaved changes' : ''}</p>\n </div>\n <div class=\"event-details-footer__actions\">\n <button-component\n variant={'basic'}\n disabled={this.isLoading}\n onClick={e => {\n e.preventDefault();\n e.stopImmediatePropagation();\n if (this.unsavedChanges) {\n this.showConfirmDiscardUnsavedChangesModal = true;\n } else {\n this.showCreateEventDetails = false;\n this.createNewGroupEventTimeslot = null;\n this.selectedEvent = null;\n this.unsavedChanges = false;\n }\n }}\n >\n Cancel\n </button-component>\n <button-component\n variant={'primary'}\n disabled={this.isLoading}\n isLoading={this.isLoading}\n onClick={e => {\n this.handleCreateGroupEvent(e);\n }}\n >\n Create\n </button-component>\n </div>\n </div>\n </form>\n </div>\n )}\n </div>\n </Host>\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"nylas-event-calendar.js","sourceRoot":"","sources":["../../../../src/components/scheduler-editor/nylas-event-calendar/nylas-event-calendar.tsx"],"names":[],"mappings":"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","sourcesContent":["import { RegisterComponent } from '@/common/register-component';\nimport { NylasSchedulerConfigConnector } from '@/connector/nylas-scheduler-config-connector';\nimport { NylasSchedulerEditor } from '../nylas-scheduler-editor/nylas-scheduler-editor';\nimport { AttachInternals, Component, Element, Event, EventEmitter, h, Host, Listen, Prop, State, Watch } from '@stencil/core';\nimport { Calendar, CalendarOptions } from '@fullcalendar/core';\nimport dayGridPlugin from '@fullcalendar/daygrid';\nimport timeGridPlugin from '@fullcalendar/timegrid';\nimport interactionPlugin from '@fullcalendar/interaction';\nimport { debug } from '@/utils/utils';\nimport i18next from '@/utils/i18n';\nimport { LANGUAGE_CODE } from '@/common/constants';\nimport { Conference, EventDetails, GroupConfiguration, GroupEventAPIData, NylasCalendar, RecurrenceDeleteOption, RecurrenceUpdateOption } from '@nylas/core';\nimport dayjs from 'dayjs';\nimport utc from 'dayjs/plugin/utc';\nimport timezone from 'dayjs/plugin/timezone';\nimport { User } from '@/common/nylas-api-request';\n\ndayjs.extend(utc);\ndayjs.extend(timezone);\n\ntype CalendarEventData = {\n title: string;\n start: string;\n end: string;\n calendar_id: string;\n id: string;\n};\n\nexport type CreateGroupEventFormState = {\n title: string;\n description: string;\n location: string;\n eventTimeslot: {\n when: {\n start_time: number;\n end_time: number;\n start_timezone: string;\n end_timezone: string;\n };\n recurrence: string[];\n };\n eventCapacity: number;\n conferencing?: Conference;\n participants: {\n name: string;\n email: string;\n is_organizer?: boolean;\n }[];\n};\n\nconst typeToViewMapping = {\n day: 'timeGridDay',\n week: 'timeGridWeek',\n month: 'dayGridMonth',\n};\n\nconst viewToTypeMapping = {\n timeGridDay: 'day',\n timeGridWeek: 'week',\n dayGridMonth: 'month',\n};\n\nconst editOptionChoices = [\n { label: 'Import', value: 'import' },\n { label: 'Edit', value: 'edit' },\n { label: 'Delete this event only', value: 'delete-this' },\n // { label: 'Delete this and all future occurrences', value: 'delete-future' },\n { label: 'Delete all events', value: 'delete-all' },\n];\n\nconst updateChoices: {\n label: string;\n value: RecurrenceUpdateOption;\n}[] = [\n { label: 'Update this event', value: 'this' },\n { label: 'Update all future occurrences', value: 'future' },\n { label: 'Update all events', value: 'all' },\n];\n\nconst deleteChoices: {\n label: string;\n value: RecurrenceDeleteOption;\n}[] = [\n { label: 'Delete this event', value: 'this' },\n { label: 'Delete this and all future occurrences', value: 'future' },\n { label: 'Delete all events', value: 'all' },\n];\n\n@Component({\n tag: 'nylas-event-calendar',\n styleUrl: 'nylas-event-calendar.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class NylasEventCalendar {\n @Element() host!: HTMLNylasEventCalendarElement;\n private calendarEl!: HTMLElement;\n private formRef!: HTMLFormElement;\n /**\n * @standalone\n * The selected configuration\n */\n @Prop() selectedConfiguration?: GroupConfiguration;\n /**\n * @standalone\n * The name of the component\n */\n @Prop() name: string = 'page-name';\n /**\n * The selected language.\n */\n @Prop() selectedLanguage?: LANGUAGE_CODE;\n /**\n * The group events prop\n */\n @Prop() groupEvents?: GroupEventAPIData[];\n\n /**\n * The current user prop\n */\n @Prop() currentUser?: User;\n /**\n * The calendars prop\n */\n @Prop() calendars?: NylasCalendar[];\n /**\n * The master group events prop\n */\n @Prop() masterGroupEvents?: Record<string, EventDetails>;\n /**\n * The is loading prop\n */\n @Prop() isLoading?: boolean;\n /**\n * The element internals.\n */\n @AttachInternals() internals!: ElementInternals;\n @State() selectedView: 'day' | 'week' | 'month' = 'week';\n @State() events: {\n title: string;\n start: string;\n end: string;\n calendar_id: string;\n id: string;\n }[] = [];\n\n @State() calendar!: Calendar;\n\n @State() selectedEvent: GroupEventAPIData | null = null;\n\n @State() selectedDateRangeString: string = '';\n\n @State() showEditEventDetails: boolean = false;\n\n @State() showCreateEventDetails: boolean = false;\n\n @State() editOptions: { label: string; value: string }[] = editOptionChoices;\n\n @State() showEditOptions: boolean = false;\n\n @State() updateOptions: { label: string; value: 'this' | 'future' | 'all' }[] = updateChoices;\n\n @State() showUpdateOptions: boolean = false;\n\n @State() deleteOptions: { label: string; value: string }[] = deleteChoices;\n\n @State() showDeleteOptions: boolean = false;\n\n @State() unsavedChanges: boolean = false;\n\n @State() showConfirmDiscardUnsavedChangesModal: boolean = false;\n\n @State() createNewGroupEventTimeslot: {\n when: {\n start_time: number;\n end_time: number;\n start_timezone: string;\n end_timezone: string;\n };\n recurrence: string[];\n } | null = null;\n @State() formError: string = '';\n\n @State() loadingOptions: {\n update: string;\n delete: string;\n create: string;\n } = {\n update: '',\n delete: '',\n create: '',\n };\n\n @State() showChooseParticipantsModal: boolean = false;\n\n @State() importParticipants: { label: string; value: string; disabled?: boolean }[] = [];\n\n @State() selectedImportParticipants: { email: string; status: string }[] = [];\n\n @Event() fetchMasterGroupEvent!: EventEmitter<string>;\n\n @Event() saveGroupEventChanges!: EventEmitter<{ data: GroupEventAPIData; action: 'this' | 'future' | 'all' }>;\n\n @Event() deleteGroupEvent!: EventEmitter<{ data: GroupEventAPIData; action: 'this' | 'future' | 'all' }>;\n\n @Event() groupEventSelected!: EventEmitter<GroupEventAPIData>;\n\n @Event() createGroupEvent!: EventEmitter<CreateGroupEventFormState>;\n\n @Event() calendarViewChanged!: EventEmitter<{ startTime: number; endTime: number }>;\n\n @Event() previosNextClicked!: EventEmitter<{ direction: 'prev' | 'next'; view: 'day' | 'week' | 'month'; currentViewRange: { startTime: number; endTime: number } }>;\n\n @Event() setCalendarViewDateRange!: EventEmitter<{ startTime: number; endTime: number }>;\n\n @Event() importGroupEvent!: EventEmitter<{\n event_id: string;\n calendar_id: string;\n }>;\n /**\n * When a name prop is passed, stencil does not automatically set the name attribute on the host element.\n * Since this component is form-associated, the name attribute is required for form submission.\n * This is a workaround to ensure that the name attribute is set on the host element.\n */\n @Watch('name')\n elementNameChangedHandler(newValue: string) {\n debug('nylas-page-name', 'elementNameChangedHandler', newValue);\n this.host.setAttribute('name', newValue);\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('groupEvents')\n groupEventsChangedHandler(newValue: GroupEventAPIData[], oldValue: GroupEventAPIData[]) {\n if (newValue === oldValue) return;\n this.events = newValue\n .filter(event => event !== undefined)\n .map(eventData => {\n const event = eventData.event;\n if (event?.id) {\n const isGroupEvent = !!eventData.group_event_info && !!eventData.group_event_info?.event_id;\n const readOnly = event.read_only;\n const eventParticipants = event.participants || [];\n const groupEventParticipants = eventData.group_event_info?.participants || [];\n const noParticipants = eventParticipants.length <= 0 && groupEventParticipants.length <= 0;\n return {\n title: event.title,\n start: dayjs\n .unix(event.when.start_time) // Convert UNIX timestamp\n .tz(event.when.start_timezone) // Adjust to the event's timezone\n .format('YYYY-MM-DDTHH:mm:ss'),\n end: dayjs\n .unix(event.when.end_time) // Convert UNIX timestamp\n .tz(event.when.end_timezone) // Adjust to the event's timezone\n .format('YYYY-MM-DDTHH:mm:ss'),\n calendar_id: event.calendar_id,\n id: event.id,\n classNames: [isGroupEvent ? 'group-event' : 'regular-event', readOnly ? 'read-only' : '', noParticipants ? 'no-participants' : ''],\n editable: !readOnly,\n };\n }\n return undefined;\n }) as CalendarEventData[];\n\n this.calendar?.setOption('events', this.events);\n }\n\n // Lifecycle Methods\n connectedCallback() {\n debug('nylas-connected-calendars', 'connectedCallback');\n }\n\n disconnectedCallback() {\n debug('nylas-connected-calendars', 'disconnectedCallback');\n }\n\n componentWillLoad() {\n debug('nylas-connected-calendars', 'componentWillLoad');\n }\n\n componentDidLoad() {\n this.selectedView = 'week';\n const calendarOptions: CalendarOptions = {\n plugins: [dayGridPlugin, timeGridPlugin, interactionPlugin],\n headerToolbar: false,\n initialView: 'timeGridWeek',\n events: this.events,\n editable: true, // Allow drag-and-drop\n selectable: true,\n nowIndicator: true,\n scrollTime: new Date().getHours() + ':00:00', // Scroll to the current hour\n dayHeaderFormat: { weekday: 'short', month: undefined, day: '2-digit', formatMatcher: 'basic' }, // Customize header format\n dayHeaderContent: headerInfo => {\n if (headerInfo.view.type === 'dayGridMonth') {\n return {\n html: `<div class=\"custom-day-header\">\n <span class=\"day-name\">${dayjs(headerInfo.date).format('ddd')}</span>\n </div>`,\n };\n }\n return {\n html: `<div class=\"custom-day-header\">\n <span class=\"day-name\">${dayjs(headerInfo.date).format('ddd')}</span>\n <span class=\"day-number ${headerInfo.isToday ? 'today' : ''}\">${dayjs(headerInfo.date).format('D')}</span>\n </div>`,\n };\n },\n datesSet: info => {\n const startMonth = dayjs(info.start).format('MMMM').substring(0, 3); // Get the first 3 characters of the month\n const endMonth = dayjs(info.end).subtract(1, 'day').format('MMMM').substring(0, 3); // Subtract 1 day for the correct end month\n const startYear = dayjs(info.start).format('YYYY');\n const endYear = dayjs(info.end).subtract(1, 'day').format('YYYY');\n\n if (startMonth === endMonth && startYear === endYear) {\n // Same month and year\n this.selectedDateRangeString = `${startMonth} ${startYear}`;\n } else if (startYear === endYear) {\n // Different months but same year\n this.selectedDateRangeString = `${startMonth} - ${endMonth} ${startYear}`;\n } else {\n // Different months and different years\n this.selectedDateRangeString = `${startMonth} ${startYear} - ${endMonth} ${endYear}`;\n }\n },\n eventClick: info => {\n const event = this.groupEvents?.find(e => e.event.id === info.event._def.publicId);\n\n if (info.event.classNames.includes('read-only') || info.event.classNames.includes('no-participants')) {\n return;\n }\n\n this.showEditEventDetails = false;\n this.unsavedChanges = false;\n this.showEditOptions = true;\n this.selectedEvent = event || null;\n\n if (event && event.group_event_info) {\n const masterEventId = event.event.master_event_id;\n this.groupEventSelected.emit(event);\n this.editOptions = editOptionChoices.filter(option => option.value !== 'import');\n this.deleteOptions = [...deleteChoices];\n if (!masterEventId) {\n this.editOptions = this.editOptions.filter(option => option.value !== 'delete-all');\n this.deleteOptions = this.deleteOptions.filter(option => option.value !== 'all' && option.value !== 'future');\n }\n if (masterEventId && !this.masterGroupEvents?.[masterEventId]) {\n this.fetchMasterGroupEvent.emit(event.event.master_event_id);\n }\n } else {\n this.editOptions = editOptionChoices.filter(option => option.value === 'import');\n }\n },\n select: (info: any) => {\n this.createNewGroupEventTimeslot = {\n when: {\n start_time: new Date(info.start).getTime() / 1000,\n end_time: new Date(info.end).getTime() / 1000,\n start_timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n end_timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n },\n recurrence: [],\n };\n this.showCreateEventDetails = true;\n },\n eventDurationEditable: true,\n height: '100%', // Let FullCalendar adjust dynamically\n contentHeight: 'auto', // Adjust content height based on events\n };\n\n this.calendar = new Calendar(this.calendarEl, calendarOptions);\n this.calendar.render();\n this.setCalendarViewDateRange.emit({\n startTime: new Date(this.calendar.getCurrentData().viewApi.activeStart).getTime() / 1000,\n endTime: new Date(this.calendar.getCurrentData().viewApi.activeEnd).getTime() / 1000,\n });\n }\n\n setView(view: 'day' | 'week' | 'month') {\n this.selectedView = view;\n this.calendar.changeView(typeToViewMapping[view]);\n const startTime = new Date(this.calendar.getCurrentData().viewApi.activeStart).getTime() / 1000;\n const endTime = new Date(this.calendar.getCurrentData().viewApi.activeEnd).getTime() / 1000;\n this.calendarViewChanged.emit({ startTime, endTime });\n }\n\n handleEditOptionSelected(e: Event, option: { label: string; value: string }) {\n e.preventDefault();\n e.stopPropagation();\n\n if (this.isLoading) return;\n if (option.value === 'edit') {\n this.showEditOptions = false;\n this.showEditEventDetails = true;\n } else if ((option.value === 'delete-this' || option.value === 'delete-all' || option.value === 'delete-future') && this.selectedEvent) {\n this.loadingOptions.delete = option.value;\n const action = option.value.split('-')[1] as RecurrenceDeleteOption;\n this.deleteGroupEvent.emit({ data: this.selectedEvent, action });\n } else if (option.value === 'import' && this.selectedEvent) {\n const participants = this.selectedEvent.event.participants || [];\n const organizer = this.selectedEvent.event.organizer;\n\n this.showEditOptions = false;\n this.showChooseParticipantsModal = true;\n this.importParticipants = participants.map(participant => ({\n label: participant?.email,\n value: participant?.email,\n disabled: participant?.email === organizer?.email,\n selected: participant?.email === organizer?.email,\n }));\n }\n }\n\n handleImportGroupEvent() {\n const masterEventId = this.selectedEvent?.event.master_event_id;\n const participantsList = this.selectedImportParticipants;\n const organizer = this.selectedEvent?.event.organizer;\n const groupEvent = {\n event_id: masterEventId ? masterEventId : this.selectedEvent?.event.id || '',\n calendar_id: this.selectedEvent?.event.calendar_id || '',\n capacity: 10,\n participants: participantsList.length > 0 ? participantsList : [{ ...organizer, is_organizer: true }],\n organizer: organizer,\n };\n this.showChooseParticipantsModal = false;\n if (!!groupEvent.event_id && !!groupEvent.calendar_id) {\n this.importGroupEvent.emit(groupEvent);\n }\n }\n\n handlePrevNextClick(direction: 'prev' | 'next') {\n const currentView = viewToTypeMapping[this.calendar.view.type];\n if (direction === 'prev') {\n this.calendar.prev();\n } else {\n this.calendar.next();\n }\n const startTime = new Date(this.calendar.getCurrentData().viewApi.activeStart).getTime() / 1000;\n const endTime = new Date(this.calendar.getCurrentData().viewApi.activeEnd).getTime() / 1000;\n this.previosNextClicked.emit({ direction, view: currentView, currentViewRange: { startTime, endTime } });\n }\n\n handleUpdateGroupEvent(e: Event, option: { label: string; value: 'this' | 'future' | 'all' }) {\n e.preventDefault();\n e.stopPropagation();\n if (this.isLoading) return;\n this.loadingOptions.update = option.value;\n if (this.selectedEvent && this.internals.checkValidity()) {\n this.saveGroupEventChanges.emit({ data: this.selectedEvent, action: option.value });\n }\n }\n\n handleDeleteGroupEvent(e: Event, option: { label: string; value: string }) {\n e.preventDefault();\n e.stopPropagation();\n if (this.isLoading) return;\n this.loadingOptions.delete = option.value;\n if (this.selectedEvent) {\n this.deleteGroupEvent.emit({ data: this.selectedEvent, action: option.value as 'this' | 'future' | 'all' });\n }\n }\n\n async handleCreateGroupEvent(e: Event) {\n e.preventDefault();\n e.stopPropagation();\n const formData = new FormData(this.formRef);\n const valid = this.formRef.checkValidity();\n if (!valid) {\n this.formError = 'Please fix the form errors.';\n return;\n }\n const formState = {} as {\n 'title': string;\n 'description': string;\n 'location': string;\n 'event-timeslot': string;\n 'event-capacity': string;\n 'conferencing': string;\n 'participants': string;\n };\n formData.forEach((value, key) => {\n formState[key] = value;\n });\n await this.createGroupEvent.emit({\n title: formState?.title,\n description: formState?.description,\n location: formState?.location,\n eventTimeslot: JSON.parse(formState?.['event-timeslot']),\n eventCapacity: parseInt(formState?.['event-capacity']),\n conferencing: formState?.conferencing ? JSON.parse(formState?.conferencing.toString()) : undefined,\n participants: formState?.participants ? JSON.parse(formState.participants) : [],\n });\n }\n\n @Watch('isLoading')\n isLoadingChangedHandler(newVal: boolean, _oldVal: boolean) {\n if (!newVal) {\n this.loadingOptions = {\n update: '',\n delete: '',\n create: '',\n };\n this.showCreateEventDetails = false;\n this.createNewGroupEventTimeslot = null;\n this.showEditOptions = false;\n this.showUpdateOptions = false;\n this.showDeleteOptions = false;\n this.showEditEventDetails = false;\n this.unsavedChanges = false;\n this.showConfirmDiscardUnsavedChangesModal = false;\n this.selectedEvent = null;\n this.selectedImportParticipants = [];\n this.importParticipants = [];\n this.showChooseParticipantsModal = false;\n }\n }\n\n @Listen('valueChanged')\n valueChangedHandler(event: CustomEvent<{ value: string; name: string }>) {\n const { value, name } = event.detail;\n const componentNames = ['title', 'description', 'location', 'event-timeslot', 'participants', 'event-capacity'];\n if ((this.showEditEventDetails || this.showCreateEventDetails) && componentNames.includes(name)) {\n this.unsavedChanges = true;\n this.formError = '';\n this.internals.setValidity({});\n }\n\n if (name === 'event-timeslot') {\n const { recurrence } = JSON.parse(value);\n const currentRrule = this.selectedEvent?.group_event_info?.rrule?.[0];\n const updatedRrule = recurrence[0];\n if (currentRrule !== updatedRrule) {\n this.updateOptions = updateChoices.filter(option => option.value !== 'this');\n return;\n }\n if (this.selectedEvent?.group_event_info) {\n this.selectedEvent.group_event_info.rrule = recurrence;\n }\n }\n if (name === 'event-capacity') {\n const parsedValue = parseInt(value);\n if (parsedValue < 1 || parsedValue > 500 || isNaN(parsedValue)) {\n this.formError = i18next.t('fixFormErrors');\n this.internals.setValidity({ customError: true }, this.formError);\n } else {\n this.formError = '';\n this.internals.setValidity({ customError: false }, '');\n }\n }\n }\n\n @Listen('timeWindowFormError')\n timeWindowFormErrorHandler(event: CustomEvent<{ key: string; message: string }>) {\n if (event.detail.key === 'event-timeslot') {\n this.formError = event.detail.message;\n this.internals.setValidity({ customError: true }, event.detail.message);\n } else {\n this.formError = '';\n this.internals.setValidity({});\n }\n }\n\n @Listen('saveGroupEventChangesError', { target: 'document' })\n saveGroupEventChangesErrorHandler(event: CustomEvent<{ error: string }>) {\n this.loadingOptions.update = '';\n if (event.detail.error) {\n this.formError = event.detail.error;\n }\n }\n\n @Listen('selectedOptionsChanged')\n selectedOptionsChangedHandler(event: CustomEvent<{ value: string[]; name: string }>) {\n const { value, name } = event.detail;\n if (name === 'participants') {\n this.selectedImportParticipants = this.selectedEvent?.event.participants?.filter(participant => value.includes(participant.email)) || [];\n }\n }\n\n @RegisterComponent<NylasEventCalendar, NylasSchedulerConfigConnector, Exclude<NylasSchedulerEditor['stores'], undefined>>({\n name: 'nylas-event-calendar',\n stateToProps: new Map([\n ['schedulerConfig.selectedLanguage', 'selectedLanguage'],\n ['schedulerConfig.groupEvents', 'groupEvents'],\n ['schedulerConfig.masterGroupEvents', 'masterGroupEvents'],\n ['schedulerConfig.currentUser', 'currentUser'],\n ['schedulerConfig.calendars', 'calendars'],\n ['schedulerConfig.isLoading', 'isLoading'],\n ['schedulerConfig.selectedConfiguration', 'selectedConfiguration'],\n ]),\n eventToProps: {\n groupEventSelected: async (event: CustomEvent<GroupEventAPIData>, connector: NylasSchedulerConfigConnector) => {\n const { detail } = event;\n connector.schedulerConfigStore.state.selectedGroupEvent = detail;\n },\n calendarViewChanged: async (event: CustomEvent<{ startTime: number; endTime: number }>, connector: NylasSchedulerConfigConnector) => {\n const { detail } = event;\n connector.schedulerConfigStore.state.calendarViewDateRange = {\n start_time: detail.startTime.toString(),\n end_time: detail.endTime.toString(),\n };\n const configId = connector.schedulerConfigStore.state.selectedConfiguration?.id;\n if (configId) {\n const [data, error] = await connector.schedulerConfig.getGroupEvents(configId);\n if (!data && error && error.message) {\n // handle error\n return;\n }\n }\n },\n previosNextClicked: async (\n event: CustomEvent<{ direction: 'prev' | 'next'; view: 'day' | 'week' | 'month'; currentViewRange: { startTime: number; endTime: number } }>,\n connector: NylasSchedulerConfigConnector,\n ) => {\n const { detail } = event;\n connector.schedulerConfigStore.state.calendarViewDateRange = {\n start_time: detail.currentViewRange.startTime.toString(),\n end_time: detail.currentViewRange.endTime.toString(),\n };\n const configId = connector.schedulerConfigStore.state.selectedConfiguration?.id;\n if (configId) {\n const [data, error] = await connector.schedulerConfig.getGroupEvents(configId);\n if (!data && error && error.message) {\n // handle error\n return;\n }\n }\n },\n saveGroupEventChanges: async (event: CustomEvent<{ data: GroupEventAPIData; action: 'this' | 'future' | 'all' }>, _connector: NylasSchedulerConfigConnector) => {\n debug('nylas-event-calendar', 'saveGroupEventChanges', event.detail);\n },\n setCalendarViewDateRange: async (event: CustomEvent<{ startTime: number; endTime: number }>, connector: NylasSchedulerConfigConnector) => {\n debug('nylas-event-calendar', 'setCalendarViewDateRange', event.detail);\n connector.schedulerConfigStore.state.calendarViewDateRange = {\n start_time: event.detail.startTime.toString(),\n end_time: event.detail.endTime.toString(),\n };\n },\n fetchMasterGroupEvent: async (event: CustomEvent<string>, connector: NylasSchedulerConfigConnector) => {\n debug('nylas-event-calendar', 'fetchMasterGroupEvent', event.detail);\n const [data, error] = await connector.schedulerConfig.getMasterEventById(event.detail);\n if (!data && error && error.message) {\n // handle error\n return;\n }\n },\n },\n fireRegisterEvent: true,\n })\n render() {\n const calendarId = this.selectedConfiguration?.group_booking?.calendar_id;\n const currentCalendar = calendarId ? this.calendars?.find(c => c.id === calendarId) : null;\n\n return (\n <Host>\n <div class=\"nylas-event-calendar\">\n <div\n class={{\n 'calendar-container': true,\n 'show-event': this.showEditEventDetails || this.showCreateEventDetails,\n }}\n >\n <div class=\"calendar-header\">\n <div class=\"calendar-header__title\">\n <div class=\"calendar-header-prev-next\">\n <button onClick={() => this.handlePrevNextClick('prev')} class={{ 'chevron-left': true, 'button': true }}>\n {' '}\n <chevron-icon />\n </button>\n <button onClick={() => this.handlePrevNextClick('next')} class={{ 'chevron-right': true, 'button': true }}>\n {' '}\n <chevron-icon />\n </button>\n </div>\n <span>{this.selectedDateRangeString}</span>\n </div>\n <div class=\"calendar-header__current-calendar\">{currentCalendar?.name || currentCalendar?.id}'s calendar</div>\n <div class=\"calendar-header__view-options\">\n <button class={{ selected: this.calendar?.view.type === typeToViewMapping['day'] }} onClick={() => this.setView('day')}>\n Day\n </button>\n <button class={{ selected: this.calendar?.view.type === typeToViewMapping['week'] }} onClick={() => this.setView('week')}>\n Week\n </button>\n <button class={{ selected: this.calendar?.view.type === typeToViewMapping['month'] }} onClick={() => this.setView('month')}>\n Month\n </button>\n </div>\n </div>\n <div ref={el => (this.calendarEl = el as HTMLDivElement)}></div>\n </div>\n {this.showEditOptions && (\n <div class=\"edit-options action-options\" onClick={() => (this.showEditOptions = false)}>\n <div class=\"edit-options__card action-options__card\">\n <div class=\"edit-options__header action-options__header\">\n <h3>Actions</h3>\n <button-component\n tooltip=\"Close\"\n id=\"close-edit-options\"\n disabled={this.isLoading}\n variant={'invisible'}\n onClick={e => {\n e.preventDefault();\n e.stopImmediatePropagation();\n this.showEditOptions = false;\n }}\n >\n <close-icon />\n </button-component>\n </div>\n <div class=\"edit-options__content action-options__content\">\n <ul tabindex=\"-1\" role=\"listbox\" aria-label={this.name}>\n {this.editOptions.map(option =>\n option.value.toString() ? (\n <li\n class={{ disabled: !!this.isLoading }}\n tabindex=\"0\"\n key={option.value}\n id={option.value}\n onClick={e => this.handleEditOptionSelected(e, option)}\n role=\"option\"\n >\n {this.isLoading && this.loadingOptions.delete === option.value ? `Deleting...` : option.label}\n </li>\n ) : null,\n )}\n </ul>\n </div>\n </div>\n </div>\n )}\n {this.showUpdateOptions && (\n <div class=\"update-options action-options\" onClick={() => (this.showUpdateOptions = false)}>\n <div class=\"update-options__card action-options__card\">\n <button-component\n tooltip=\"Close\"\n id=\"close-update-options\"\n variant={'invisible'}\n disabled={this.isLoading}\n onClick={e => {\n e.preventDefault();\n e.stopImmediatePropagation();\n this.showUpdateOptions = false;\n }}\n >\n <close-icon />\n </button-component>\n <div class=\"update-options__content action-options__content\">\n <ul tabindex=\"-1\" role=\"listbox\" aria-label={this.name}>\n {this.updateOptions.map(option =>\n option.value.toString() ? (\n <li\n class={{ disabled: !!this.isLoading }}\n tabindex=\"0\"\n key={option.value}\n id={option.value}\n role=\"option\"\n onClick={e => this.handleUpdateGroupEvent(e, option)}\n >\n {this.isLoading && this.loadingOptions.update === option.value ? `Updating...` : option.label}\n </li>\n ) : null,\n )}\n </ul>\n </div>\n </div>\n </div>\n )}\n {this.showDeleteOptions && (\n <div class=\"delete-options action-options\" onClick={() => (this.showDeleteOptions = false)}>\n <div class=\"delete-options__card action-options__card\">\n <button-component\n tooltip=\"Close\"\n id=\"close-delete-options\"\n variant={'invisible'}\n disabled={this.isLoading}\n onClick={e => {\n e.preventDefault();\n e.stopImmediatePropagation();\n this.showDeleteOptions = false;\n }}\n >\n <close-icon />\n </button-component>\n <div class=\"delete-options__content action-options__content\">\n <ul tabindex=\"-1\" role=\"listbox\" aria-label={this.name}>\n {this.deleteOptions.map(option =>\n option.value.toString() ? (\n <li\n class={{ disabled: !!this.isLoading }}\n tabindex=\"0\"\n key={option.value}\n id={option.value}\n role=\"option\"\n onClick={e => this.handleDeleteGroupEvent(e, option)}\n >\n {this.isLoading && this.loadingOptions.delete === option.value ? `Deleting...` : option.label}\n </li>\n ) : null,\n )}\n </ul>\n </div>\n </div>\n </div>\n )}\n {this.showChooseParticipantsModal && (\n <div class=\"choose-participants-modal action-options\">\n <div class=\"choose-participants-modal__card action-options__card\">\n <button-component\n tooltip=\"Close\"\n id=\"close-choose-participants-modal\"\n variant={'invisible'}\n disabled={this.isLoading}\n onClick={e => {\n e.preventDefault();\n e.stopImmediatePropagation();\n this.showChooseParticipantsModal = false;\n }}\n >\n <close-icon />\n </button-component>\n <div class=\"choose-participants-modal__content action-options__content\">\n <multi-select-dropdown\n multipleOptionsSelectedLabel={i18next.t('multipleOptionsSelected')}\n name=\"participants\"\n label=\"Participants\"\n options={this.importParticipants}\n />\n <button-component variant={'basic'} onClick={() => this.handleImportGroupEvent()}>\n Import\n </button-component>\n </div>\n </div>\n </div>\n )}\n {this.showEditEventDetails && this.selectedEvent?.group_event_info && (\n <div class=\"event-details-container\">\n <div class=\"event-details-header\">\n <h3>Event Details</h3>\n <div class=\"event-details-header__actions\">\n <button-component\n tooltip=\"Close\"\n id=\"close\"\n disabled={this.isLoading}\n variant={'invisible'}\n onClick={e => {\n e.preventDefault();\n e.stopImmediatePropagation();\n if (this.unsavedChanges) {\n this.showConfirmDiscardUnsavedChangesModal = true;\n } else {\n this.showEditEventDetails = false;\n this.unsavedChanges = false;\n this.selectedEvent = null;\n this.formError = '';\n }\n }}\n >\n <close-icon />\n </button-component>\n </div>\n </div>\n <div\n class={{\n 'event-details': true,\n 'edit-event-details': true,\n }}\n >\n <nylas-event-title name=\"title\" eventTitle={this.selectedEvent.event.title} exportparts=\"net, net__title, net__input_group, net__input_wrapper, net__input\" />\n <nylas-event-description\n name=\"description\"\n eventDescription={this.selectedEvent.event.description}\n exportparts=\"ned, ned__title, ned__input_group, ned__input_wrapper, ned__input\"\n />\n <nylas-event-location\n name=\"location\"\n eventLocation={this.selectedEvent.event.location}\n eventConferencing={this.selectedEvent.event.conferencing}\n exportparts=\"nel, nel__title, nel__input_group, nel__input_wrapper, nel__input, nel__conferencing\"\n />\n <nylas-event-timeslot\n name=\"event-timeslot\"\n initialValue={{\n when: this.selectedEvent.event.when,\n recurrence: this.selectedEvent?.group_event_info?.rrule ? this.selectedEvent.group_event_info.rrule : [],\n }}\n exportparts=\"nets, nets__title, nets__input_group, nets__input_wrapper, nets__input, nets__timezone, nets__recurrence\"\n />\n <nylas-event-capacity\n name=\"event-capacity\"\n capacity={this.selectedEvent?.group_event_info?.capacity}\n exportparts=\"nec, nec__title, nec__input_group, nec__input_wrapper, nec__input\"\n />\n <nylas-additional-participants\n name=\"participants\"\n eventParticipants={this.selectedEvent.group_event_info.participants}\n exportparts=\"nadtnlpart, nadtnlpart__title, nadtnlpart__subtitle, nadtnlpart__content, nadtnlpart__input_group, nadtnlpart__input_wrapper, nadtnlpart__input, nadtnlpart__remove-participant\"\n />\n </div>\n <div class=\"event-details-footer\">\n <div class=\"event-details-footer__error\">\n <p>{this.formError}</p>\n </div>\n <div class=\"event-details-footer__helper-text\">\n <p>{this.unsavedChanges && !this.isLoading ? 'Unsaved changes' : ''}</p>\n </div>\n <div class=\"event-details-footer__actions\">\n <button-component\n variant={'destructive'}\n disabled={this.isLoading}\n onClick={e => {\n e.preventDefault();\n e.stopImmediatePropagation();\n if (this.selectedEvent?.event?.master_event_id) {\n this.showUpdateOptions = true;\n } else {\n this.handleDeleteGroupEvent(e, { label: 'Delete this event', value: 'this' });\n }\n }}\n >\n Delete\n </button-component>\n <button-component\n variant={'basic'}\n disabled={this.isLoading || this.formError !== ''}\n onClick={e => {\n e.preventDefault();\n e.stopImmediatePropagation();\n if (!this.unsavedChanges) return;\n if (this.selectedEvent?.event?.master_event_id) {\n this.showUpdateOptions = true;\n } else {\n this.handleUpdateGroupEvent(e, { label: 'Update this event', value: 'this' });\n }\n }}\n >\n Save\n </button-component>\n </div>\n </div>\n </div>\n )}\n {this.showCreateEventDetails && this.createNewGroupEventTimeslot && (\n <div class=\"event-details-container\">\n <div class=\"event-details-header\">\n <h3>Event Details</h3>\n <div class=\"event-details-header__actions\">\n <button-component\n tooltip=\"Close\"\n id=\"close\"\n variant={'invisible'}\n disabled={this.isLoading}\n onClick={e => {\n e.preventDefault();\n e.stopImmediatePropagation();\n if (this.unsavedChanges) {\n this.showConfirmDiscardUnsavedChangesModal = true;\n } else {\n this.showCreateEventDetails = false;\n this.createNewGroupEventTimeslot = null;\n this.selectedEvent = null;\n this.unsavedChanges = false;\n }\n }}\n >\n <close-icon />\n </button-component>\n </div>\n </div>\n <form ref={el => (this.formRef = el as HTMLFormElement)}>\n <div\n class={{\n 'event-details': true,\n }}\n >\n <nylas-event-info>\n <div slot=\"inputs\" class=\"event-details-form-inputs\">\n <nylas-event-title eventTitle={'New group event'} exportparts=\"net, net__title, net__input_group, net__input_wrapper, net__input\" />\n <nylas-event-description hideAutoPopulateButton={true} exportparts=\"ned, ned__title, ned__input_group, ned__input_wrapper, ned__input\" />\n <nylas-event-location\n userProvider={this.currentUser?.provider}\n exportparts=\"nel, nel__title, nel__input_group, nel__input_wrapper, nel__input, nel__conferencing\"\n />\n <nylas-event-timeslot\n name=\"event-timeslot\"\n initialValue={this.createNewGroupEventTimeslot}\n exportparts=\"nets, nets__title, nets__input_group, nets__input_wrapper, nets__input, nets__timezone, nets__recurrence\"\n />\n <nylas-event-capacity name=\"event-capacity\" exportparts=\"nec, nec__title, nec__input_group, nec__input_wrapper, nec__input\" />\n </div>\n </nylas-event-info>\n <nylas-additional-participants\n name=\"participants\"\n eventParticipants={[{ name: this.currentUser?.name || this.currentUser?.email, email: this.currentUser?.email || '', is_organizer: true }]}\n exportparts=\"nadtnlpart, nadtnlpart__title, nadtnlpart__subtitle, nadtnlpart__content, nadtnlpart__input_group, nadtnlpart__input_wrapper, nadtnlpart__input, nadtnlpart__remove-participant\"\n />\n </div>\n <div class=\"event-details-footer\">\n <div class=\"event-details-footer__error\">\n <p>{this.formError}</p>\n </div>\n <div class=\"event-details-footer__helper-text\">\n <p>{this.unsavedChanges && !this.isLoading ? 'Unsaved changes' : ''}</p>\n </div>\n <div class=\"event-details-footer__actions\">\n <button-component\n variant={'basic'}\n disabled={this.isLoading}\n onClick={e => {\n e.preventDefault();\n e.stopImmediatePropagation();\n if (this.unsavedChanges) {\n this.showConfirmDiscardUnsavedChangesModal = true;\n } else {\n this.showCreateEventDetails = false;\n this.createNewGroupEventTimeslot = null;\n this.selectedEvent = null;\n this.unsavedChanges = false;\n }\n }}\n >\n Cancel\n </button-component>\n <button-component\n variant={'primary'}\n disabled={this.isLoading || this.formError !== ''}\n isLoading={this.isLoading}\n onClick={e => {\n this.handleCreateGroupEvent(e);\n }}\n >\n Create\n </button-component>\n </div>\n </div>\n </form>\n </div>\n )}\n {this.showConfirmDiscardUnsavedChangesModal && (\n <div class=\"discard-changes action-options\" onClick={() => (this.showUpdateOptions = false)}>\n <div class=\"discard-changes__card action-options__card\">\n <button-component\n tooltip=\"Close\"\n id=\"close-discard-changes\"\n variant={'invisible'}\n disabled={this.isLoading}\n onClick={e => {\n e.preventDefault();\n e.stopImmediatePropagation();\n this.showConfirmDiscardUnsavedChangesModal = false;\n }}\n >\n <close-icon />\n </button-component>\n <div class=\"discard-changes__content action-options__content\">\n <h3 slot=\"card-title\" part=\"nfbf__title\">\n Discard unsaved changes?\n </h3>\n </div>\n <div class=\"discard-changes__footer action-options__footer\">\n <button-component variant={'basic'} onClick={_e => (this.showConfirmDiscardUnsavedChangesModal = false)} part=\"nfbf__button-outline nfbf__cancel-cta\">\n {`${i18next.t('deleteSchedulingPageCancelButton')}`}\n </button-component>\n <button-component\n variant={'destructive'}\n onClick={e => {\n e.preventDefault();\n e.stopImmediatePropagation();\n this.showConfirmDiscardUnsavedChangesModal = false;\n this.unsavedChanges = false;\n this.showEditEventDetails = false;\n this.showCreateEventDetails = false;\n this.selectedEvent = null;\n this.createNewGroupEventTimeslot = null;\n this.formError = '';\n }}\n part=\"nfbf__button-outline nfbf__reschedule-cta\"\n >\n Discard\n </button-component>\n </div>\n </div>\n </div>\n )}\n </div>\n </Host>\n );\n }\n}\n"]}
|
package/dist/collection/components/scheduler-editor/nylas-event-capacity/nylas-event-capacity.css
CHANGED
|
@@ -127,4 +127,19 @@
|
|
|
127
127
|
font-size: 16px;
|
|
128
128
|
line-height: 24px;
|
|
129
129
|
width: 80px;
|
|
130
|
+
}
|
|
131
|
+
.nylas-event-capacity__wrapper input-component::part(ic__input--error) {
|
|
132
|
+
border: 1px solid var(--nylas-error);
|
|
133
|
+
}
|
|
134
|
+
.nylas-event-capacity__wrapper input-component::part(ic__label--error) {
|
|
135
|
+
position: relative;
|
|
136
|
+
margin-bottom: 24px;
|
|
137
|
+
}
|
|
138
|
+
.nylas-event-capacity__wrapper input-component::part(ic__error_message) {
|
|
139
|
+
position: absolute;
|
|
140
|
+
top: 54px;
|
|
141
|
+
width: max-content;
|
|
142
|
+
}
|
|
143
|
+
.nylas-event-capacity__wrapper span.attendees.error {
|
|
144
|
+
margin-top: -24px;
|
|
130
145
|
}
|
package/dist/collection/components/scheduler-editor/nylas-event-capacity/nylas-event-capacity.js
CHANGED
|
@@ -22,6 +22,7 @@ export class NylasEventCapacity {
|
|
|
22
22
|
this.capacity = undefined;
|
|
23
23
|
this.selectedLanguage = undefined;
|
|
24
24
|
this.selectedEventCapacity = undefined;
|
|
25
|
+
this.error = '';
|
|
25
26
|
}
|
|
26
27
|
connectedCallback() {
|
|
27
28
|
debug('nylas-event-capacity', 'connectedCallback');
|
|
@@ -63,6 +64,15 @@ export class NylasEventCapacity {
|
|
|
63
64
|
async nylasFormInputChangeHandler(event) {
|
|
64
65
|
const { name, value } = event.detail;
|
|
65
66
|
if (name === 'event-capacity') {
|
|
67
|
+
const parsedValue = parseInt(value);
|
|
68
|
+
if (parsedValue < 1 || parsedValue > 500 || isNaN(parsedValue)) {
|
|
69
|
+
this.error = i18next.t('fixFormErrors');
|
|
70
|
+
this.internals.setValidity({ customError: true }, this.error);
|
|
71
|
+
this.valueChanged.emit({ value: value.toString(), name: this.name });
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
this.error = '';
|
|
75
|
+
this.internals.setValidity({ customError: false }, '');
|
|
66
76
|
this.selectedEventCapacity = parseInt(value);
|
|
67
77
|
this.internals.setFormValue(value.toString(), this.name);
|
|
68
78
|
this.valueChanged.emit({ value: value.toString(), name: this.name });
|
|
@@ -70,7 +80,7 @@ export class NylasEventCapacity {
|
|
|
70
80
|
}
|
|
71
81
|
render() {
|
|
72
82
|
const isComponentReady = typeof this.selectedEventCapacity !== 'undefined';
|
|
73
|
-
return (h(Host, { key: '
|
|
83
|
+
return (h(Host, { key: 'b0eebdd8854645010038e0e03bfa94c851d5a859' }, h("div", { key: '6d7a7f053c3b7e166480eefbe5ef1df178552180', class: "nylas-event-capacity", part: "necapacity" }, h("label", { key: '05f77a19d88d300aafb73cf6aecf83c4c8e92679', htmlFor: "event-capacity" }, h("span", { key: '18fbc5bf61b42b39f9ad0bacba4fb4cb42392e43' }, i18next.t('nylasEventCapacity.headerTitle'), h("span", { key: '1e42bd3df3cbb5f9e0b7a2fac118abed3648a2a5', class: "required" }, "*")), h("tooltip-component", { key: 'e0fa3f3557c575dbaf7e989e7eeeb956fd4ee55b' }, h("info-icon", { key: '952d5cfb9695a0005b06fb8539ae84c38bfe566e', slot: "tooltip-icon" }), h("span", { key: 'aacb7c0d1a2904a9675c75d51cf7d082e3bf1d3e', slot: "tooltip-content" }, i18next.t('nylasEventCapacity.tooltip.desc')))), isComponentReady && (h("div", { class: "nylas-event-capacity__wrapper" }, h("input-component", { name: "event-capacity", id: "event-capacity", type: "number", pattern: /^[0-9]*$/, patternError: i18next.t('invalidInputFormat', { field: 'Event capacity' }), minValue: 1, maxValue: 500, required: false, exportparts: "ic_input: necapacity__input-textfield", defaultValue: typeof this.selectedEventCapacity === 'number' ? this.selectedEventCapacity.toString() : '10' }), h("span", { class: this.error ? 'attendees error' : 'attendees' }, i18next.t('nylasEventCapacity.attendees')))))));
|
|
74
84
|
}
|
|
75
85
|
static get is() { return "nylas-event-capacity"; }
|
|
76
86
|
static get encapsulation() { return "shadow"; }
|
|
@@ -155,7 +165,8 @@ export class NylasEventCapacity {
|
|
|
155
165
|
}
|
|
156
166
|
static get states() {
|
|
157
167
|
return {
|
|
158
|
-
"selectedEventCapacity": {}
|
|
168
|
+
"selectedEventCapacity": {},
|
|
169
|
+
"error": {}
|
|
159
170
|
};
|
|
160
171
|
}
|
|
161
172
|
static get events() {
|
package/dist/collection/components/scheduler-editor/nylas-event-capacity/nylas-event-capacity.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nylas-event-capacity.js","sourceRoot":"","sources":["../../../../src/components/scheduler-editor/nylas-event-capacity/nylas-event-capacity.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 i18next from '@/utils/i18n';\nimport { LANGUAGE_CODE } from '@/common/constants';\n\n/**\n * The `nylas-event-capacity` component is a UI component that allows users to set the event capacity for the scheduler configuration.\n *\n * @part necapacity - The nylas-event-capacity container\n * @part necapacity__body - The body of the event capacity section\n * @part necapacity__header - The header of the event capacity section\n * @part necapacity__drawer-toggle--container - The card's drawer toggle container\n * @part necapacity__input-numberfield - The event capacity input numberfield\n */\n@Component({\n tag: 'nylas-event-capacity',\n styleUrl: 'nylas-event-capacity.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class NylasEventCapacity {\n @Element() host!: HTMLNylasEventCapacityElement;\n\n /**\n * @standalone\n * The name of the component\n */\n @Prop() name: string = 'event-capacity';\n /**\n * @standalone\n * The default event capacity\n */\n @Prop() capacity?: number;\n\n /**\n * The selected language.\n */\n @Prop() selectedLanguage?: LANGUAGE_CODE;\n\n /**\n * The element internals.\n */\n @AttachInternals() internals!: ElementInternals;\n\n /**\n * The current event capacity state\n */\n @State() selectedEventCapacity!: number;\n\n /**\n * This event is fired when the event capacity value changes\n */\n @Event() valueChanged!: EventEmitter<{\n value: string;\n name: string;\n valueChanged?: (event: CustomEvent<{ value: string; name: string }>) => void;\n }>;\n\n // Lifecycle methods\n connectedCallback() {\n debug('nylas-event-capacity', 'connectedCallback');\n }\n\n disconnectedCallback() {\n debug('nylas-event-capacity', 'disconnectedCallback');\n }\n\n componentWillLoad() {\n debug('nylas-event-capacity', 'componentWillLoad');\n // See comment in the @Watch('name') decorator for more information.\n this.host.setAttribute('name', this.name);\n }\n\n componentDidLoad() {\n debug('nylas-event-capacity', 'componentDidLoad');\n this.selectedEventCapacity = this.capacity || 10;\n console.log('selectedEventCapacity', this.selectedEventCapacity);\n this.internals.setFormValue(this.selectedEventCapacity.toString(), this.name);\n }\n\n componentWillUpdate() {\n debug('nylas-event-capacity', 'componentWillUpdate');\n }\n\n componentDidUpdate() {\n debug('nylas-event-capacity', 'componentDidUpdate');\n }\n\n componentWillRender() {\n debug('nylas-event-capacity', 'componentWillRender');\n }\n\n componentDidRender() {\n debug('nylas-event-capacity', 'componentDidRender');\n }\n\n /**\n * When a name prop is passed, stencil does not automatically set the name attribute on the host element.\n * Since this component is form-associated, the name attribute is required for form submission.\n * This is a workaround to ensure that the name attribute is set on the host element.\n */\n @Watch('name')\n elementNameChangedHandler(newValue: string) {\n debug('nylas-event-capacity', 'elementNameChangedHandler', newValue);\n this.host.setAttribute('name', newValue);\n }\n\n @Watch('selectedLanguage')\n selectedLanguageChangedHandler(newVal: LANGUAGE_CODE, oldVal: LANGUAGE_CODE) {\n if (newVal === oldVal) return;\n i18next.changeLanguage(newVal);\n }\n\n @Listen('nylasFormInputChanged')\n async nylasFormInputChangeHandler(event: CustomEvent<{ value: string; name: string }>) {\n const { name, value } = event.detail;\n\n if (name === 'event-capacity') {\n this.selectedEventCapacity = parseInt(value);\n this.internals.setFormValue(value.toString(), this.name);\n this.valueChanged.emit({ value: value.toString(), name: this.name });\n }\n }\n\n @RegisterComponent<NylasEventCapacity, NylasSchedulerConfigConnector, Exclude<NylasSchedulerEditor['stores'], undefined>>({\n name: 'nylas-event-capacity',\n stateToProps: new Map([['schedulerConfig.selectedLanguage', 'selectedLanguage']]),\n eventToProps: {\n valueChanged: async (\n event: CustomEvent<{ value: string; name: string; valueChanged?: (event: CustomEvent<{ value: string; name: string }>) => void }>,\n _nylasSchedulerConfigConnector: NylasSchedulerConfigConnector,\n ) => {\n const { valueChanged } = event.detail;\n // If a handler is passed, call it.\n if (valueChanged) {\n valueChanged(event);\n }\n },\n },\n fireRegisterEvent: true,\n })\n render() {\n const isComponentReady = typeof this.selectedEventCapacity !== 'undefined';\n return (\n <Host>\n <div class=\"nylas-event-capacity\" part=\"necapacity\">\n <label htmlFor=\"event-capacity\">\n <span>\n {i18next.t('nylasEventCapacity.headerTitle')}\n <span class=\"required\">*</span>\n </span>\n <tooltip-component>\n <info-icon slot=\"tooltip-icon\" />\n <span slot=\"tooltip-content\">{i18next.t('nylasEventCapacity.tooltip.desc')}</span>\n </tooltip-component>\n </label>\n {isComponentReady && (\n <div class=\"nylas-event-capacity__wrapper\">\n <input-component\n name=\"event-capacity\"\n id=\"event-capacity\"\n type=\"number\"\n minValue={1}\n required={false}\n exportparts=\"ic_input: necapacity__input-textfield\"\n defaultValue={typeof this.selectedEventCapacity === 'number' ? this.selectedEventCapacity.toString() : '10'}\n />\n <span>{i18next.t('nylasEventCapacity.attendees')}</span>\n </div>\n )}\n </div>\n </Host>\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"nylas-event-capacity.js","sourceRoot":"","sources":["../../../../src/components/scheduler-editor/nylas-event-capacity/nylas-event-capacity.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 i18next from '@/utils/i18n';\nimport { LANGUAGE_CODE } from '@/common/constants';\n\n/**\n * The `nylas-event-capacity` component is a UI component that allows users to set the event capacity for the scheduler configuration.\n *\n * @part necapacity - The nylas-event-capacity container\n * @part necapacity__body - The body of the event capacity section\n * @part necapacity__header - The header of the event capacity section\n * @part necapacity__drawer-toggle--container - The card's drawer toggle container\n * @part necapacity__input-numberfield - The event capacity input numberfield\n */\n@Component({\n tag: 'nylas-event-capacity',\n styleUrl: 'nylas-event-capacity.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class NylasEventCapacity {\n @Element() host!: HTMLNylasEventCapacityElement;\n\n /**\n * @standalone\n * The name of the component\n */\n @Prop() name: string = 'event-capacity';\n /**\n * @standalone\n * The default event capacity\n */\n @Prop() capacity?: number;\n\n /**\n * The selected language.\n */\n @Prop() selectedLanguage?: LANGUAGE_CODE;\n\n /**\n * The element internals.\n */\n @AttachInternals() internals!: ElementInternals;\n\n /**\n * The current event capacity state\n */\n @State() selectedEventCapacity!: number;\n\n @State() error: string = '';\n\n /**\n * This event is fired when the event capacity value changes\n */\n @Event() valueChanged!: EventEmitter<{\n value: string;\n name: string;\n valueChanged?: (event: CustomEvent<{ value: string; name: string }>) => void;\n }>;\n\n // Lifecycle methods\n connectedCallback() {\n debug('nylas-event-capacity', 'connectedCallback');\n }\n\n disconnectedCallback() {\n debug('nylas-event-capacity', 'disconnectedCallback');\n }\n\n componentWillLoad() {\n debug('nylas-event-capacity', 'componentWillLoad');\n // See comment in the @Watch('name') decorator for more information.\n this.host.setAttribute('name', this.name);\n }\n\n componentDidLoad() {\n debug('nylas-event-capacity', 'componentDidLoad');\n this.selectedEventCapacity = this.capacity || 10;\n console.log('selectedEventCapacity', this.selectedEventCapacity);\n this.internals.setFormValue(this.selectedEventCapacity.toString(), this.name);\n }\n\n componentWillUpdate() {\n debug('nylas-event-capacity', 'componentWillUpdate');\n }\n\n componentDidUpdate() {\n debug('nylas-event-capacity', 'componentDidUpdate');\n }\n\n componentWillRender() {\n debug('nylas-event-capacity', 'componentWillRender');\n }\n\n componentDidRender() {\n debug('nylas-event-capacity', 'componentDidRender');\n }\n\n /**\n * When a name prop is passed, stencil does not automatically set the name attribute on the host element.\n * Since this component is form-associated, the name attribute is required for form submission.\n * This is a workaround to ensure that the name attribute is set on the host element.\n */\n @Watch('name')\n elementNameChangedHandler(newValue: string) {\n debug('nylas-event-capacity', 'elementNameChangedHandler', newValue);\n this.host.setAttribute('name', newValue);\n }\n\n @Watch('selectedLanguage')\n selectedLanguageChangedHandler(newVal: LANGUAGE_CODE, oldVal: LANGUAGE_CODE) {\n if (newVal === oldVal) return;\n i18next.changeLanguage(newVal);\n }\n\n @Listen('nylasFormInputChanged')\n async nylasFormInputChangeHandler(event: CustomEvent<{ value: string; name: string }>) {\n const { name, value } = event.detail;\n\n if (name === 'event-capacity') {\n const parsedValue = parseInt(value);\n if (parsedValue < 1 || parsedValue > 500 || isNaN(parsedValue)) {\n this.error = i18next.t('fixFormErrors');\n this.internals.setValidity({ customError: true }, this.error);\n this.valueChanged.emit({ value: value.toString(), name: this.name });\n return;\n }\n this.error = '';\n this.internals.setValidity({ customError: false }, '');\n this.selectedEventCapacity = parseInt(value);\n this.internals.setFormValue(value.toString(), this.name);\n this.valueChanged.emit({ value: value.toString(), name: this.name });\n }\n }\n\n @RegisterComponent<NylasEventCapacity, NylasSchedulerConfigConnector, Exclude<NylasSchedulerEditor['stores'], undefined>>({\n name: 'nylas-event-capacity',\n stateToProps: new Map([['schedulerConfig.selectedLanguage', 'selectedLanguage']]),\n eventToProps: {\n valueChanged: async (\n event: CustomEvent<{ value: string; name: string; valueChanged?: (event: CustomEvent<{ value: string; name: string }>) => void }>,\n _nylasSchedulerConfigConnector: NylasSchedulerConfigConnector,\n ) => {\n const { valueChanged } = event.detail;\n // If a handler is passed, call it.\n if (valueChanged) {\n valueChanged(event);\n }\n },\n },\n fireRegisterEvent: true,\n })\n render() {\n const isComponentReady = typeof this.selectedEventCapacity !== 'undefined';\n return (\n <Host>\n <div class=\"nylas-event-capacity\" part=\"necapacity\">\n <label htmlFor=\"event-capacity\">\n <span>\n {i18next.t('nylasEventCapacity.headerTitle')}\n <span class=\"required\">*</span>\n </span>\n <tooltip-component>\n <info-icon slot=\"tooltip-icon\" />\n <span slot=\"tooltip-content\">{i18next.t('nylasEventCapacity.tooltip.desc')}</span>\n </tooltip-component>\n </label>\n {isComponentReady && (\n <div class=\"nylas-event-capacity__wrapper\">\n <input-component\n name=\"event-capacity\"\n id=\"event-capacity\"\n type=\"number\"\n pattern={/^[0-9]*$/}\n patternError={i18next.t('invalidInputFormat', { field: 'Event capacity' })}\n minValue={1}\n maxValue={500}\n required={false}\n exportparts=\"ic_input: necapacity__input-textfield\"\n defaultValue={typeof this.selectedEventCapacity === 'number' ? this.selectedEventCapacity.toString() : '10'}\n />\n <span class={this.error ? 'attendees error' : 'attendees'}>{i18next.t('nylasEventCapacity.attendees')}</span>\n </div>\n )}\n </div>\n </Host>\n );\n }\n}\n"]}
|
package/dist/collection/components/scheduler-editor/nylas-event-timeslot/nylas-event-timeslot.css
CHANGED
|
@@ -288,7 +288,7 @@ div.nylas-event-timeslot div.date-time-input div.recurrence-options div.repeat-o
|
|
|
288
288
|
div.nylas-event-timeslot div.date-time-input div.recurrence-options div.repeat-on div.custom-recurrence {
|
|
289
289
|
display: flex;
|
|
290
290
|
gap: 16px;
|
|
291
|
-
align-items:
|
|
291
|
+
align-items: baseline;
|
|
292
292
|
}
|
|
293
293
|
@media screen and (max-width: 768px) {
|
|
294
294
|
div.nylas-event-timeslot div.date-time-input div.recurrence-options div.repeat-on div.custom-recurrence {
|
package/dist/collection/components/scheduler-editor/nylas-event-timeslot/nylas-event-timeslot.js
CHANGED
|
@@ -310,7 +310,15 @@ export class NylasEventTimeslot {
|
|
|
310
310
|
this.repeatEndOn = value;
|
|
311
311
|
}
|
|
312
312
|
else if (name === 'recurrence-end-after') {
|
|
313
|
-
|
|
313
|
+
const parsedValue = parseInt(value);
|
|
314
|
+
if (parsedValue < 1 || isNaN(parsedValue)) {
|
|
315
|
+
this.timeWindowFormError.emit({
|
|
316
|
+
key: this.name,
|
|
317
|
+
message: i18next.t('fixFormErrors'),
|
|
318
|
+
});
|
|
319
|
+
return;
|
|
320
|
+
}
|
|
321
|
+
this.repeatEndAfter = parsedValue;
|
|
314
322
|
}
|
|
315
323
|
this.handleValueChanged();
|
|
316
324
|
}
|
|
@@ -340,12 +348,12 @@ export class NylasEventTimeslot {
|
|
|
340
348
|
const defaultEndAfter = this.repeatEveryFrequency === 'week' ? 4 : this.repeatEveryFrequency === 'month' ? 12 : 5;
|
|
341
349
|
this.repeatEndOn = this.repeatEndOn || defaultEndOnDate;
|
|
342
350
|
this.repeatEndAfter = this.repeatEndAfter || defaultEndAfter;
|
|
343
|
-
return (h(Host, { key: '
|
|
351
|
+
return (h(Host, { key: 'a6c2b24369ec32b3488fb597ceb07265f8025b38' }, h("div", { key: '5412e2af0d10c1a232fa61b9ba3d9a327a631f20', class: "nylas-event-timeslot", part: "netimeslot" }, h("label", { key: '5054d504ca18771fb990374ce1859573227661a9', htmlFor: "date-time-input" }, i18next.t('nylasEventTimeslot.dateTimeLabel')), h("div", { key: '0dffbcf300744ef1c9ca74c73b3bd87bb0896711', class: "date-time-input", part: "netimeslot__date-time-input" }, h("div", { key: 'd2c73a9cbe77d5a4c65087f4707b0f08c1b404e9', class: "date-time-picker", part: "netimeslot__date-time-picker" }, h("nylas-date-component", { key: '2955d08462d7e4e81079083349b8ce8cc07b1c1a', name: "date-time-input", defaultValue: this.selectedDate, id: 'date-time-input', required: true }), h("div", { key: 'edaab3f01999687c94b0b8a386fe863f211a4ced', class: "time-range", part: "netimeslot__time-range" }, h("nylas-time-window-picker", { id: 'start-time', hasError: this.timeRangeError, time: this.selectedStartTime, language: this.selectedLanguage, name: 'start-time', key: 'start-time', exportparts: "time-picker: nap__time-picker-container, time-input: nap__time-picker-input, times: nap__time-picker-times" }), h("span", { key: '72f7f70ecef78afc7a5a426da2548cc4af12d139' }, "\u2013"), h("nylas-time-window-picker", { id: 'end-time', hasError: this.timeRangeError, time: this.selectedEndTime, language: this.selectedLanguage, name: 'end-time', key: 'end-time', minimumStartTime: this.selectedStartTime, exportparts: "time-picker: nap__time-picker-container, time-input: nap__time-picker-input, times: nap__time-picker-times" })), selectedTimezoneOption?.label && (h("select-dropdown", { name: "timezone", exportparts: "sd_dropdown: nap__timezone-container, sd_dropdown-button: nap__timezone-button, sd_dropdown-content: nap__timezone-dropdown-content", options: timezoneOptions, withChevron: false, defaultSelectedOption: selectedTimezoneOption }, h("span", { slot: "select-icon" }, h("globe-icon", { width: "20", height: "20" }))))), h("div", { key: '69743f032d1c090e65bd6b65cca97154972a7e98', class: "recurrence-options", part: "netimeslot__recurrence-options" }, defaultRecurrenceOption && defaultRecurrenceOption?.label && (h("div", { class: "recurrence-type", part: "netimeslot__recurrence-type" }, h("label", { htmlFor: "recurrence-type" }, i18next.t('nylasEventTimeslot.recurrenceLabel')), h("select-dropdown", { withSearch: false, id: "recurrence-type", name: "recurrence-type", options: this.recurrenceOptions, defaultSelectedOption: defaultRecurrenceOption, exportparts: "sd_dropdown: netimeslot__dropdown, sd_dropdown-button: netimeslot__dropdown-button, sd_dropdown-content: netimeslot__dropdown-content" }))), this.selectedRecurrenceType !== 'custom' && this.selectedRecurrenceType !== 'none' && (h("div", { class: "recurrence-end", part: "netimeslot__recurrence-end" }, h("label", null, i18next.t('nylasEventTimeslot.endDate')), h("nylas-date-component", { name: "recurrence-end-date", defaultValue: this.repeatEndOn || defaultEndOnDate, id: 'recurrence-end-date', required: true }))), this.selectedRecurrenceType === 'custom' && (h("div", { class: "custom-recurrence-time-period", part: "netimeslot__custom-recurrence" }, h("label", { htmlFor: "" }, i18next.t('nylasEventTimeslot.customRecurrence.repeatEvery')), h("time-period-selector", { id: "custom-recurrence-time-period", exportparts: "tps__number-dropdown: netimeslot__number-dropdown, tps__number-dropdown-button: netimeslot__number-dropdown-button, tps__number-dropdown-content: netimeslot__number-dropdown-content, tps__period-dropdown: netimeslot__period-dropdown, tps__period-dropdown-button: netimeslot__period-dropdown-button, tps__period-dropdown-content: netimeslot__period-dropdown-content", timePeriods: [
|
|
344
352
|
{ value: 'day', label: i18next.t('timePeriod', { context: 'day' }) },
|
|
345
353
|
{ value: 'week', label: i18next.t('timePeriod', { context: 'week' }) },
|
|
346
354
|
{ value: 'month', label: i18next.t('timePeriod', { context: 'month' }) },
|
|
347
355
|
{ value: 'year', label: i18next.t('timePeriod', { context: 'year' }) },
|
|
348
|
-
], defaultSelectedNumber: this.repeatEveryInterval, defaultSelectedPeriod: this.repeatEveryFrequency }))), h("div", { key: '
|
|
356
|
+
], defaultSelectedNumber: this.repeatEveryInterval, defaultSelectedPeriod: this.repeatEveryFrequency }))), h("div", { key: '40ea7614b0c862be4adfdf798db12b52277ff6a6', class: "repeat-on" }, this.selectedRecurrenceType === 'custom' && this.repeatEveryFrequency === 'week' && (h("div", { class: "days" }, h("label", null, i18next.t('nylasEventTimeslot.customRecurrence.repeatOn')), h("div", { class: "buttons" }, [
|
|
349
357
|
{ label: 'S', value: 'SU', title: 'Sunday' },
|
|
350
358
|
{ label: 'M', value: 'MO', title: 'Monday' },
|
|
351
359
|
{ label: 'T', value: 'TU', title: 'Tuesday' },
|
|
@@ -356,7 +364,7 @@ export class NylasEventTimeslot {
|
|
|
356
364
|
].map(day => (h("button", { class: { selected: this.repeatOnDays.includes(day.value) }, title: day.title, onClick: () => {
|
|
357
365
|
this.repeatOnDays = this.repeatOnDays.includes(day.value) ? this.repeatOnDays.filter(d => d !== day.value) : [...this.repeatOnDays, day.value];
|
|
358
366
|
this.handleValueChanged();
|
|
359
|
-
} }, day.label)))))), this.selectedRecurrenceType === 'custom' && this.repeatEveryFrequency === 'month' && (h("div", { class: "month-recurrence" }, h("span", null), h("select-dropdown", { withSearch: false, id: "month-recurrence-type", name: "month-recurrence-type", options: this.monthRecurrenceOptions, defaultSelectedOption: this.repeatMonthlySameDate ? this.monthRecurrenceOptions[0] : this.monthRecurrenceOptions[1], exportparts: "sd_dropdown: netimeslot__dropdown, sd_dropdown-button: netimeslot__dropdown-button, sd_dropdown-content: netimeslot__dropdown-content" }))), h("div", { key: '
|
|
367
|
+
} }, day.label)))))), this.selectedRecurrenceType === 'custom' && this.repeatEveryFrequency === 'month' && (h("div", { class: "month-recurrence" }, h("span", null), h("select-dropdown", { withSearch: false, id: "month-recurrence-type", name: "month-recurrence-type", options: this.monthRecurrenceOptions, defaultSelectedOption: this.repeatMonthlySameDate ? this.monthRecurrenceOptions[0] : this.monthRecurrenceOptions[1], exportparts: "sd_dropdown: netimeslot__dropdown, sd_dropdown-button: netimeslot__dropdown-button, sd_dropdown-content: netimeslot__dropdown-content" }))), h("div", { key: '5a873ef2a8f3c02856f18fbd99c7092a6c91bd9b', class: "custom-recurrence" }, this.selectedRecurrenceType === 'custom' && (h("div", { class: "custom-recurrence-ends" }, h("label", { htmlFor: "recurrence-type" }, i18next.t('nylasEventTimeslot.customRecurrence.ends')), h("select-dropdown", { withSearch: false, id: "custom-recurrence-end-type", name: "custom-recurrence-end-type", options: endOptions, defaultSelectedOption: endOptions.find(option => option.value === this.repeatEndType), exportparts: "sd_dropdown: netimeslot__dropdown, sd_dropdown-button: netimeslot__dropdown-button, sd_dropdown-content: netimeslot__dropdown-content" }))), this.selectedRecurrenceType === 'custom' && this.repeatEndType === 'on' && (h("div", null, h("nylas-date-component", { name: "custom-recurrence-end-date", defaultValue: this.repeatEndOn || defaultEndOnDate, id: 'custom-recurrence-end-date', required: true }))), this.selectedRecurrenceType === 'custom' && this.repeatEndType === 'after' && (h("div", { class: "custom-recurrence-end-after" }, h("input-component", { name: "recurrence-end-after", id: "recurrence-end-after", type: "number", minValue: 1, defaultValue: defaultEndAfter.toString(), exportparts: "ic_input: netimeslot__input-textfield" }), h("span", null, i18next.t('nylasEventTimeslot.customRecurrence.occurrences')))))))))));
|
|
360
368
|
}
|
|
361
369
|
static get is() { return "nylas-event-timeslot"; }
|
|
362
370
|
static get encapsulation() { return "shadow"; }
|