@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
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
|
|
2
2
|
import { R as RegisterComponent } from './register-component.js';
|
|
3
|
-
import { p as addDaysToCurrentDate, b as instance,
|
|
3
|
+
import { p as timezone, q as addDaysToCurrentDate, b as instance, u as isSameMonth, a as debug, w as getLastDayOfMonth, x as getFirstDayOfMonth, y as isSameDay, z as convertMinutesToHoursAndMinutes, A as translateMonth } from './utils.js';
|
|
4
|
+
import { a as dayjs, u as utc } from './utc.js';
|
|
4
5
|
import { d as defineCustomElement$3 } from './chevron.js';
|
|
5
6
|
import { d as defineCustomElement$2 } from './clock.js';
|
|
6
7
|
import { d as defineCustomElement$1 } from './person.js';
|
|
@@ -124,6 +125,8 @@ var __metadata = (undefined && undefined.__metadata) || function (k, v) {
|
|
|
124
125
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
|
|
125
126
|
return Reflect.metadata(k, v);
|
|
126
127
|
};
|
|
128
|
+
dayjs.extend(utc);
|
|
129
|
+
dayjs.extend(timezone);
|
|
127
130
|
const NylasDatePicker = proxyCustomElement(class NylasDatePicker extends HTMLElement {
|
|
128
131
|
constructor() {
|
|
129
132
|
super();
|
|
@@ -142,6 +145,7 @@ const NylasDatePicker = proxyCustomElement(class NylasDatePicker extends HTMLEle
|
|
|
142
145
|
this.month = this.selectedDate || new Date();
|
|
143
146
|
this.dates = this.getDates();
|
|
144
147
|
this.disableNextMonthButton = false;
|
|
148
|
+
this.selectableDatesTimezone = [];
|
|
145
149
|
}
|
|
146
150
|
configSettingsChanged(newConfigSettings) {
|
|
147
151
|
const nextMonth = new Date(this.month.getFullYear(), this.month.getMonth() + 1, 1);
|
|
@@ -169,6 +173,21 @@ const NylasDatePicker = proxyCustomElement(class NylasDatePicker extends HTMLEle
|
|
|
169
173
|
}
|
|
170
174
|
this.dates = this.getDates();
|
|
171
175
|
}
|
|
176
|
+
convertDatesToTimezone(dates, targetTimezone) {
|
|
177
|
+
if (!dates || dates.length === 0) {
|
|
178
|
+
return [];
|
|
179
|
+
}
|
|
180
|
+
return dates.map(d => {
|
|
181
|
+
const tzDate = dayjs(d).tz(targetTimezone);
|
|
182
|
+
return new Date(tzDate.year(), tzDate.month(), tzDate.date());
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
selectedTimezoneChanged(newSelectedTimezone) {
|
|
186
|
+
this.selectableDatesTimezone = this.convertDatesToTimezone(this.selectableDates, newSelectedTimezone);
|
|
187
|
+
}
|
|
188
|
+
selectableDatesChanged(newSelectableDates) {
|
|
189
|
+
this.selectableDatesTimezone = this.convertDatesToTimezone(newSelectableDates, this.selectedTimezone);
|
|
190
|
+
}
|
|
172
191
|
connectedCallback() { }
|
|
173
192
|
disconnectedCallback() { }
|
|
174
193
|
componentWillLoad() { }
|
|
@@ -177,6 +196,7 @@ const NylasDatePicker = proxyCustomElement(class NylasDatePicker extends HTMLEle
|
|
|
177
196
|
this.applyThemeConfig(this.themeConfig);
|
|
178
197
|
this.month = this.selectedDate || new Date();
|
|
179
198
|
this.dates = this.getDates();
|
|
199
|
+
this.selectableDatesTimezone = this.convertDatesToTimezone(this.selectableDates, this.selectedTimezone);
|
|
180
200
|
}
|
|
181
201
|
applyThemeConfig(themeConfig) {
|
|
182
202
|
if (themeConfig) {
|
|
@@ -210,11 +230,16 @@ const NylasDatePicker = proxyCustomElement(class NylasDatePicker extends HTMLEle
|
|
|
210
230
|
isSelected(date, selectedDate, selectableDates) {
|
|
211
231
|
return date && selectedDate && isSameDay(date, selectedDate) && selectableDates && selectableDates?.length > 0;
|
|
212
232
|
}
|
|
213
|
-
isDisabled(date
|
|
214
|
-
|
|
233
|
+
isDisabled(date) {
|
|
234
|
+
if (!date || !this.selectableDatesTimezone || this.selectableDatesTimezone.length === 0) {
|
|
235
|
+
return true;
|
|
236
|
+
}
|
|
237
|
+
return !this.selectableDatesTimezone.some(d => {
|
|
238
|
+
return date.getFullYear() === d.getFullYear() && date.getMonth() === d.getMonth() && date.getDate() === d.getDate();
|
|
239
|
+
});
|
|
215
240
|
}
|
|
216
241
|
render() {
|
|
217
|
-
return (h(Host, { key: '
|
|
242
|
+
return (h(Host, { key: '36322bd1badb927a3d8505334c339b220a81c946', part: "ndp" }, h("div", { key: '666e06338a8be95fdf5a18d0d5e1db006ce0623e', class: "nylas-date-picker" }, h("div", { key: '7429e08d3dc984205a07efb8a7a0dc21d8b3b6b2', class: "title", part: "ndp__title" }, this.configSettings?.name ? (h("h1", null, this.configSettings?.name)) : (this.configSettings?.organizer?.name && (h("h1", null, h("person-icon", null), this.configSettings?.organizer?.name || 'Organizer'))), h("p", { key: 'a5b1770d7f39d173a37f4ee627645f43230b83eb' }, h("clock-icon", { key: '383105a9bfdb7e45e414941c06278de8b73e705f' }), this.eventDuration ? convertMinutesToHoursAndMinutes(this.eventDuration) : `- ${instance.t('time.minutes')}`)), h("div", { key: '91cd7691b593bd8af1bd930f0206cc284826ee83', class: 'header flex-row' }, h("h2", { key: 'c490b7fe8a6a04ba8fda318b41a7ad5db9c13d0c', part: 'ndp__month-header' }, h("strong", { key: 'bfe557291e300cc8ec876d889909168fa5cd798b' }, translateMonth(this.month.toLocaleDateString('en-US', { month: 'long' }).toLowerCase())), "\u00A0", this.month.toLocaleDateString(undefined, { year: 'numeric' })), h("div", { key: 'a19535626041e7cb3550aabd677fd788bf003b03', class: 'pagination' }, h("button", { key: '6174f0128f51c6ad814473425da3e983e1dd80bc', title: "Previous month", onClick: () => this.changeMonth(-1), class: { 'chevron-left': true, 'button': true }, disabled: this.month <= new Date(), part: "ndp__month-button" }, h("chevron-icon", { key: '9c6c965ca7273205229ee6f3918226588b9cceb6' })), h("button", { key: 'd83a846832a897e8a35242093ba01fc04497b0ff', title: "Next month", onClick: () => this.changeMonth(1), class: { 'chevron-right': true, 'button': true }, disabled: this.disableNextMonthButton, part: "ndp__month-button" }, h("chevron-icon", { key: 'b7106b3807f93e73eb86102a7ce4b81997a2c57a' })))), h("div", { key: '3c5809a8f1447005d82a75bc035a52918397a423', class: 'dates' }, [
|
|
218
243
|
instance.t('days.sunday'),
|
|
219
244
|
instance.t('days.monday'),
|
|
220
245
|
instance.t('days.tuesday'),
|
|
@@ -225,7 +250,7 @@ const NylasDatePicker = proxyCustomElement(class NylasDatePicker extends HTMLEle
|
|
|
225
250
|
].map(day => {
|
|
226
251
|
return (h("div", { class: 'day', part: "ndp__day" }, day));
|
|
227
252
|
}), this.dates.map((date, i) => {
|
|
228
|
-
const isDisabled = this.isDisabled(date
|
|
253
|
+
const isDisabled = this.isDisabled(date);
|
|
229
254
|
if (this.isLoading) {
|
|
230
255
|
return (h("button", { disabled: true, class: {
|
|
231
256
|
'date day-skeleton': true,
|
|
@@ -245,7 +270,9 @@ const NylasDatePicker = proxyCustomElement(class NylasDatePicker extends HTMLEle
|
|
|
245
270
|
"configSettings": ["configSettingsChanged"],
|
|
246
271
|
"selectedLanguage": ["selectedLanguageChanged"],
|
|
247
272
|
"themeConfig": ["themeConfigChanged"],
|
|
248
|
-
"selectedDate": ["selectedDateChanged"]
|
|
273
|
+
"selectedDate": ["selectedDateChanged"],
|
|
274
|
+
"selectedTimezone": ["selectedTimezoneChanged"],
|
|
275
|
+
"selectableDates": ["selectableDatesChanged"]
|
|
249
276
|
}; }
|
|
250
277
|
static get style() { return NylasDatePickerStyle0; }
|
|
251
278
|
}, [1, "nylas-date-picker", {
|
|
@@ -259,12 +286,15 @@ const NylasDatePicker = proxyCustomElement(class NylasDatePicker extends HTMLEle
|
|
|
259
286
|
"eventDuration": [2, "event-duration"],
|
|
260
287
|
"month": [32],
|
|
261
288
|
"dates": [32],
|
|
262
|
-
"disableNextMonthButton": [32]
|
|
289
|
+
"disableNextMonthButton": [32],
|
|
290
|
+
"selectableDatesTimezone": [32]
|
|
263
291
|
}, undefined, {
|
|
264
292
|
"configSettings": ["configSettingsChanged"],
|
|
265
293
|
"selectedLanguage": ["selectedLanguageChanged"],
|
|
266
294
|
"themeConfig": ["themeConfigChanged"],
|
|
267
|
-
"selectedDate": ["selectedDateChanged"]
|
|
295
|
+
"selectedDate": ["selectedDateChanged"],
|
|
296
|
+
"selectedTimezone": ["selectedTimezoneChanged"],
|
|
297
|
+
"selectableDates": ["selectableDatesChanged"]
|
|
268
298
|
}]);
|
|
269
299
|
__decorate([
|
|
270
300
|
RegisterComponent({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"nylas-date-picker2.js","mappings":"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","names":["i18next"],"sources":["../../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/interval.js","../../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/duration.js","../../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/day.js","src/components/scheduler/nylas-date-picker/nylas-date-picker.scss?tag=nylas-date-picker&encapsulation=shadow","src/components/scheduler/nylas-date-picker/nylas-date-picker.tsx"],"sourcesContent":["const t0 = new Date, t1 = new Date;\n\nexport function timeInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = (date) => {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = (date) => {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = (date) => {\n const d0 = interval(date), d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = (date, step) => {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = (start, stop, step) => {\n const range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n let previous;\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = (test) => {\n return timeInterval((date) => {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, (date, step) => {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = (start, end) => {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = (step) => {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? (d) => field(d) % step === 0\n : (d) => interval.count(0, d) % step === 0);\n };\n }\n\n return interval;\n}\n","export const durationSecond = 1000;\nexport const durationMinute = durationSecond * 60;\nexport const durationHour = durationMinute * 60;\nexport const durationDay = durationHour * 24;\nexport const durationWeek = durationDay * 7;\nexport const durationMonth = durationDay * 30;\nexport const durationYear = durationDay * 365;\n","import {timeInterval} from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nexport const timeDay = timeInterval(\n date => date.setHours(0, 0, 0, 0),\n (date, step) => date.setDate(date.getDate() + step),\n (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n date => date.getDate() - 1\n);\n\nexport const timeDays = timeDay.range;\n\nexport const utcDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return date.getUTCDate() - 1;\n});\n\nexport const utcDays = utcDay.range;\n\nexport const unixDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return Math.floor(date / durationDay);\n});\n\nexport const unixDays = unixDay.range;\n","@import '../../../common/styles/variables.scss';\n\n:host {\n display: block;\n min-height: 444px;\n @include default-css-variables;\n\n @media #{$mobile} {\n min-height: auto;\n }\n}\n\n.nylas-date-picker {\n display: flex;\n gap: 1rem;\n flex-direction: column;\n}\n\n.header {\n margin: 0 0.5rem;\n height: 48px;\n\n h2 {\n font-size: 1.3125rem;\n font-weight: 400;\n line-height: 1rem;\n color: var(--nylas-base-800);\n\n strong {\n font-weight: 600;\n }\n }\n}\n\n.title {\n margin: 0 -1.25rem;\n display: flex;\n flex-direction: column;\n padding: 0 1.5rem;\n gap: 0.5rem;\n border-bottom: 1px solid var(--nylas-base-200);\n font-family: var(--nylas-font-family);\n color: var(--nylas-base-800);\n\n h1 {\n max-width: 376px;\n margin-bottom: 0;\n font-size: 18px;\n line-height: 20px;\n font-weight: 600;\n display: flex;\n gap: 0.5rem;\n align-items: center;\n }\n\n p {\n margin-top: 0;\n font-size: 16px;\n display: flex;\n gap: 0.5rem;\n align-items: center;\n }\n}\n\n@keyframes pulsate {\n 0% {\n background-color: var(--nylas-base-50);\n }\n\n 50% {\n background-color: var(--nylas-base-100);\n }\n\n 100% {\n background-color: var(--nylas-base-50);\n }\n}\n\n.dates {\n display: grid;\n justify-items: center;\n grid-template-columns: repeat(7, 1fr);\n gap: 0.5rem;\n margin-bottom: 24px;\n\n .date {\n position: relative;\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n height: 48px;\n width: 48px;\n min-width: 2rem;\n min-height: 2rem;\n cursor: pointer;\n border-radius: var(--nylas-border-radius-2x);\n font-size: 16px;\n font-weight: 600;\n font-family: inherit;\n\n @media #{$mobile} {\n width: -webkit-fill-available;\n width: -moz-available;\n width: fill-available;\n }\n\n @media #{$x-small-mobile} {\n height: 38px;\n min-width: none;\n }\n\n color: var(--nylas-base-text);\n background-color: var(--nylas-base-100);\n cursor: pointer;\n\n &:hover:not(:disabled) {\n box-shadow: 0 0 0 2px var(--nylas-base-500) inset;\n }\n\n border: none;\n\n &.date.current-month {\n color: var(--nylas-base-800);\n }\n\n &.date.selected {\n background-color: var(--nylas-primary);\n color: var(--nylas-base-0);\n font-weight: 700;\n }\n\n &.date.day-skeleton {\n color: var(--nylas-base-300);\n }\n\n &:disabled {\n color: var(--nylas-base-300);\n background-color: transparent;\n font-weight: 400;\n cursor: not-allowed;\n }\n }\n\n .day {\n font-size: 12px;\n color: var(--nylas-base-800);\n font-weight: 600;\n letter-spacing: 0.5px;\n height: 32px;\n display: flex;\n align-items: center;\n\n @media #{$mobile} {\n font-size: 14px;\n }\n }\n\n .date.day-skeleton {\n height: 48px;\n width: 48px;\n\n @media #{$x-small-mobile} {\n width: 38px;\n height: 38px;\n min-width: none;\n }\n\n border-radius: var(--nylas-border-radius-2x);\n animation: pulsate 1.5s infinite ease-in-out;\n background-color: var(--nylas-base-50);\n }\n\n .date.current-day::after {\n content: '';\n position: absolute;\n bottom: 6px;\n left: 50%;\n transform: translateX(-50%);\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background-color: var(--nylas-base-500);\n }\n\n .date.current-day.selected::after {\n background-color: var(--nylas-base-100);\n }\n}\n\n.pagination {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n min-width: 92px;\n\n .chevron-right {\n transform: rotate(180deg);\n }\n\n .button {\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n height: 3vh;\n width: 3vh;\n min-width: 3em;\n min-height: 3em;\n cursor: pointer;\n border-radius: var(--nylas-border-radius-2x);\n\n background-color: transparent;\n color: var(--nylas-base-800);\n cursor: pointer;\n\n &:hover {\n background-color: var(--nylas-base-50);\n }\n\n border: none;\n\n &:active {\n background-color: var(--nylas-base-100);\n }\n\n &:disabled {\n background-color: transparent;\n color: var(--nylas-base-300);\n cursor: not-allowed;\n }\n }\n}\n\n.flex-row {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n color: var(--nylas-base-500);\n}","import { RegisterComponent } from '@/common/register-component';\nimport {\n addDaysToCurrentDate,\n convertMinutesToHoursAndMinutes,\n getFirstDayOfMonth,\n getLastDayOfMonth,\n isSameDay,\n isSameDayTimezone,\n isSameMonth,\n translateMonth,\n} from '@/utils/utils';\nimport { Component, Element, Event, EventEmitter, Host, Prop, State, Watch, h } from '@stencil/core';\nimport { timeDay } from 'd3-time';\nimport { NylasSchedulerConnector } from '../../..';\nimport { NylasScheduling } from '../nylas-scheduling/nylas-scheduling';\nimport { ConfigSettings } from '@/stores/scheduler-store';\nimport i18next from '@/utils/i18n';\nimport { debug } from '@/utils/utils';\nimport { ThemeConfig } from '@nylas/core';\n\n/**\n * The `nylas-date-picker` component is a UI component that allows users to select a date.\n *\n * @part ndp - The date picker host.\n * @part ndp__title - The title.\n * @part ndp__month-header - The month header.\n * @part ndp__month-button - The month button.\n * @part ndp__day - The day.\n * @part ndp__date - The date.\n * @part ndp__date--selected - The selected date.\n * @part ndp__date--current-day - The current day.\n * @part ndp__date--current-month - The dates in the current month.\n * @part ndp__date--disabled - The disabled dates.\n */\n@Component({\n tag: 'nylas-date-picker',\n styleUrl: 'nylas-date-picker.scss',\n shadow: true,\n})\nexport class NylasDatePicker {\n /**\n * The host element.\n * Used to manage the host element of the provider.\n */\n @Element() private host!: HTMLNylasDatePickerElement;\n\n /**\n * @standalone\n * The dates that are selectable.\n */\n @Prop() selectableDates?: Date[];\n\n /**\n * @standalone\n * The config settings.\n */\n @Prop() configSettings?: ConfigSettings;\n\n /**\n * @standalone\n * The theme configuration.\n */\n @Prop({ attribute: 'theme-config' }) readonly themeConfig?: any;\n\n /**\n * The selected timezone.\n */\n @Prop({ attribute: 'selected-timezone' }) readonly selectedTimezone: string = Intl.DateTimeFormat().resolvedOptions().timeZone;\n\n /**\n * The selected date.\n */\n @Prop() selectedDate?: Date;\n\n /**\n * The selected language.\n */\n @Prop() selectedLanguage?: string;\n\n /**\n * The loading state.\n */\n @Prop() readonly isLoading?: boolean;\n\n /**\n * The event duration.\n */\n @Prop() readonly eventDuration?: number;\n\n /**\n * The month to display.\n */\n @State() month: Date = this.selectedDate || new Date();\n\n /**\n * The dates to render.\n */\n @State() dates: Date[] = this.getDates();\n\n /**\n * The state to disable the next month button.\n */\n @State() disableNextMonthButton: boolean = false;\n\n /**\n * This event is fired when a date is selected.\n */\n @Event() dateSelected!: EventEmitter<Date>;\n\n /**\n * This event is fired when the month is changed.\n */\n @Event() monthChanged!: EventEmitter<Date>;\n\n @Watch('configSettings')\n configSettingsChanged(newConfigSettings: ConfigSettings) {\n const nextMonth = new Date(this.month.getFullYear(), this.month.getMonth() + 1, 1);\n const availableDaysInFuture = newConfigSettings?.scheduler?.available_days_in_future;\n if (availableDaysInFuture === undefined) {\n return;\n }\n const endDate = addDaysToCurrentDate(new Date(), availableDaysInFuture);\n if (endDate.getTime() < nextMonth.getTime()) {\n this.disableNextMonthButton = true;\n } else {\n this.disableNextMonthButton = false;\n }\n }\n\n @Watch('selectedLanguage')\n selectedLanguageChanged(newLanguage: string) {\n i18next.changeLanguage(newLanguage);\n }\n\n @Watch('themeConfig')\n themeConfigChanged(newThemeConfig: ThemeConfig) {\n this.applyThemeConfig(newThemeConfig);\n }\n\n @Watch('selectedDate')\n selectedDateChanged(newSelectedDate: Date) {\n if (!newSelectedDate || !isSameMonth(newSelectedDate, this.month)) {\n this.month = newSelectedDate || new Date();\n }\n this.dates = this.getDates();\n }\n\n connectedCallback() {}\n\n disconnectedCallback() {}\n\n componentWillLoad() {}\n\n componentDidLoad() {\n debug(`[nylas-date-picker] Component did load`);\n this.applyThemeConfig(this.themeConfig);\n this.month = this.selectedDate || new Date();\n this.dates = this.getDates();\n }\n\n applyThemeConfig(themeConfig?: ThemeConfig) {\n if (themeConfig) {\n for (const [key, value] of Object.entries(themeConfig)) {\n this.host.style.setProperty(`${key}`, value);\n }\n }\n }\n\n /**\n * Get the dates to render, including the days from the previous and next months.\n * @returns The dates to render.\n */\n private getDates() {\n const lastDayOfMonth = getLastDayOfMonth(this.month);\n const firstDayOfMonth = getFirstDayOfMonth(this.month);\n\n return timeDay.range(timeDay.offset(firstDayOfMonth, -firstDayOfMonth.getDay()), timeDay.offset(lastDayOfMonth, 7 - lastDayOfMonth.getDay()));\n }\n\n /**\n * Select a date.\n * @param date The date to select.\n */\n private selectDate(date?: Date) {\n this.dateSelected.emit(date);\n }\n\n /**\n * Change the month.\n * @param change The change in months.\n */\n private changeMonth(change: number) {\n this.month = new Date(this.month.getFullYear(), this.month.getMonth() + change, 1);\n const nextMonth = new Date(this.month.getFullYear(), this.month.getMonth() + 1, 1);\n const availableDaysInFuture = this.configSettings?.scheduler?.available_days_in_future;\n const endDate = addDaysToCurrentDate(new Date(), availableDaysInFuture);\n if (endDate.getTime() < nextMonth.getTime()) {\n this.disableNextMonthButton = true;\n } else {\n this.disableNextMonthButton = false;\n }\n this.dates = this.getDates();\n this.monthChanged.emit(this.month);\n }\n\n private isSelected(date: Date | undefined, selectedDate: Date | undefined, selectableDates: Date[] | undefined) {\n return date && selectedDate && isSameDay(date, selectedDate) && selectableDates && selectableDates?.length > 0;\n }\n\n private isDisabled(date: Date | undefined, selectableDates: Date[] | undefined) {\n return date && selectableDates?.find(d => isSameDayTimezone(d, date, this.selectedTimezone)) === undefined;\n }\n\n @RegisterComponent<NylasDatePicker, NylasSchedulerConnector, Exclude<NylasScheduling['stores'], undefined>>({\n name: 'nylas-date-picker',\n stateToProps: new Map([\n ['scheduler.selectableDates', 'selectableDates'],\n ['scheduler.selectedDate', 'selectedDate'],\n ['scheduler.isLoading', 'isLoading'],\n ['scheduler.configSettings', 'configSettings'],\n ['scheduler.eventDuration', 'eventDuration'],\n ['scheduler.selectedLanguage', 'selectedLanguage'],\n ['scheduler.themeConfig', 'themeConfig'],\n ['scheduler.selectedTimezone', 'selectedTimezone'],\n ]),\n eventToProps: {\n dateSelected: async (event: CustomEvent<Date>, nylasSchedulerConnector: NylasSchedulerConnector) => {\n debug('nylas-date-picker', 'dateSelected', event.detail);\n nylasSchedulerConnector.scheduler.selectDate(event.detail);\n },\n monthChanged: async (event: CustomEvent<Date>, _nylasSchedulerConnector: NylasSchedulerConnector) => {\n debug('nylas-date-picker', 'monthChanged', event.detail);\n },\n },\n fireRegisterEvent: true,\n })\n render() {\n return (\n <Host part=\"ndp\">\n <div class=\"nylas-date-picker\">\n <div class=\"title\" part=\"ndp__title\">\n {this.configSettings?.name ? (\n <h1>{this.configSettings?.name}</h1>\n ) : (\n this.configSettings?.organizer?.name && (\n <h1>\n <person-icon />\n {this.configSettings?.organizer?.name || 'Organizer'}\n </h1>\n )\n )}\n <p>\n <clock-icon />\n {this.eventDuration ? convertMinutesToHoursAndMinutes(this.eventDuration) : `- ${i18next.t('time.minutes')}`}\n </p>\n </div>\n <div class={'header flex-row'}>\n <h2 part={'ndp__month-header'}>\n <strong>{translateMonth(this.month.toLocaleDateString('en-US', { month: 'long' }).toLowerCase())}</strong>\n \n {this.month.toLocaleDateString(undefined, { year: 'numeric' })}\n </h2>\n <div class={'pagination'}>\n <button\n title=\"Previous month\"\n onClick={() => this.changeMonth(-1)}\n class={{ 'chevron-left': true, 'button': true }}\n disabled={this.month <= new Date()}\n part=\"ndp__month-button\"\n >\n <chevron-icon />\n </button>\n <button\n title=\"Next month\"\n onClick={() => this.changeMonth(1)}\n class={{ 'chevron-right': true, 'button': true }}\n disabled={this.disableNextMonthButton}\n part=\"ndp__month-button\"\n >\n <chevron-icon />\n </button>\n </div>\n </div>\n\n <div class={'dates'}>\n {[\n i18next.t('days.sunday'),\n i18next.t('days.monday'),\n i18next.t('days.tuesday'),\n i18next.t('days.wednesday'),\n i18next.t('days.thursday'),\n i18next.t('days.friday'),\n i18next.t('days.saturday'),\n ].map(day => {\n return (\n <div class={'day'} part=\"ndp__day\">\n {day}\n </div>\n );\n })}\n {this.dates.map((date, i) => {\n const isDisabled = this.isDisabled(date, this.selectableDates);\n\n if (this.isLoading) {\n return (\n <button\n disabled\n class={{\n 'date day-skeleton': true,\n 'current-month': isSameMonth(date, this.month),\n }}\n style={{ animationDelay: `${i * 20}ms` }}\n part={`ndp__date ndp__date--disabled`}\n >\n {date.getDate()}\n </button>\n );\n }\n return (\n <button\n class={{\n 'date': true,\n 'selected': !!(this.selectedDate && isSameDay(date, this.selectedDate) && this.selectableDates && this.selectableDates?.length > 0),\n 'current-day': isSameDay(date, new Date()),\n 'current-month': isSameMonth(date, this.month),\n }}\n aria-label={date.toLocaleDateString(undefined, { dateStyle: 'full' })}\n disabled={isDisabled}\n onClick={() => this.selectDate(date)}\n part={`ndp__date ${this.isSelected(date, this.selectedDate, this.selectableDates) ? 'ndp__date--selected' : ''} ${isSameDay(date, new Date()) ? 'ndp__date--current-day' : ''} ${isSameMonth(date, this.month) ? 'ndp__date--current-month' : ''}`}\n >\n {date.getDate()}\n </button>\n );\n })}\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
|
|
1
|
+
{"file":"nylas-date-picker2.js","mappings":";;;;;;;;AAAA,MAAM,EAAE,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,CAAC;AACnC;AACO,SAAS,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE;AAC5D;AACA,EAAE,SAAS,QAAQ,CAAC,IAAI,EAAE;AAC1B,IAAI,OAAO,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC,MAAM,KAAK,CAAC,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;AACpF,GAAG;AACH;AACA,EAAE,QAAQ,CAAC,KAAK,GAAG,CAAC,IAAI,KAAK;AAC7B,IAAI,OAAO,MAAM,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;AAChD,GAAG,CAAC;AACJ;AACA,EAAE,QAAQ,CAAC,IAAI,GAAG,CAAC,IAAI,KAAK;AAC5B,IAAI,OAAO,MAAM,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;AACnF,GAAG,CAAC;AACJ;AACA,EAAE,QAAQ,CAAC,KAAK,GAAG,CAAC,IAAI,KAAK;AAC7B,IAAI,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxD,IAAI,OAAO,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC;AAC3C,GAAG,CAAC;AACJ;AACA,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,IAAI,KAAK;AACpC,IAAI,OAAO,OAAO,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;AACtF,GAAG,CAAC;AACJ;AACA,EAAE,QAAQ,CAAC,KAAK,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,KAAK;AAC1C,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;AACrB,IAAI,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACjC,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC/C,IAAI,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,EAAE,OAAO,KAAK,CAAC;AACrD,IAAI,IAAI,QAAQ,CAAC;AACjB,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AACpF,WAAW,QAAQ,GAAG,KAAK,IAAI,KAAK,GAAG,IAAI,EAAE;AAC7C,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG,CAAC;AACJ;AACA,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK;AAC9B,IAAI,OAAO,YAAY,CAAC,CAAC,IAAI,KAAK;AAClC,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;AACjF,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK;AACvB,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE;AACxB,QAAQ,IAAI,IAAI,GAAG,CAAC,EAAE,OAAO,EAAE,IAAI,IAAI,CAAC,EAAE;AAC1C,UAAU,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;AACnD,SAAS,MAAM,OAAO,EAAE,IAAI,IAAI,CAAC,EAAE;AACnC,UAAU,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;AACnD,SAAS;AACT,OAAO;AACP,KAAK,CAAC,CAAC;AACP,GAAG,CAAC;AACJ;AACA,EAAE,IAAI,KAAK,EAAE;AACb,IAAI,QAAQ,CAAC,KAAK,GAAG,CAAC,KAAK,EAAE,GAAG,KAAK;AACrC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;AAC3C,MAAM,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;AAC7B,MAAM,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACvC,KAAK,CAAC;AACN;AACA,IAAI,QAAQ,CAAC,KAAK,GAAG,CAAC,IAAI,KAAK;AAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC9B,MAAM,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI;AAClD,YAAY,EAAE,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ;AAClC,YAAY,QAAQ,CAAC,MAAM,CAAC,KAAK;AACjC,gBAAgB,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC;AAC5C,gBAAgB,CAAC,CAAC,KAAK,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC;AAC1D,KAAK,CAAC;AACN,GAAG;AACH;AACA,EAAE,OAAO,QAAQ,CAAC;AAClB;;ACpEO,MAAM,cAAc,GAAG,IAAI,CAAC;AAC5B,MAAM,cAAc,GAAG,cAAc,GAAG,EAAE,CAAC;AAC3C,MAAM,YAAY,GAAG,cAAc,GAAG,EAAE,CAAC;AACzC,MAAM,WAAW,GAAG,YAAY,GAAG,EAAE;;ACArC,MAAM,OAAO,GAAG,YAAY;AACnC,EAAE,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACnC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;AACrD,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,iBAAiB,EAAE,GAAG,KAAK,CAAC,iBAAiB,EAAE,IAAI,cAAc,IAAI,WAAW;AACtH,EAAE,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC;AAC5B,CAAC,CAAC;AAGF;AACsB,YAAY,CAAC,CAAC,IAAI,KAAK;AAC7C,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/B,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK;AACnB,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,CAAC;AAC5C,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK;AACnB,EAAE,OAAO,CAAC,GAAG,GAAG,KAAK,IAAI,WAAW,CAAC;AACrC,CAAC,EAAE,CAAC,IAAI,KAAK;AACb,EAAE,OAAO,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;AAC/B,CAAC,EAAE;AAGH;AACuB,YAAY,CAAC,CAAC,IAAI,KAAK;AAC9C,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/B,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK;AACnB,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,CAAC;AAC5C,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK;AACnB,EAAE,OAAO,CAAC,GAAG,GAAG,KAAK,IAAI,WAAW,CAAC;AACrC,CAAC,EAAE,CAAC,IAAI,KAAK;AACb,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,WAAW,CAAC,CAAC;AACxC,CAAC;;AChCD,MAAM,kBAAkB,GAAG,ohLAAohL,CAAC;AAChjL,8BAAe,kBAAkB;;;;;;;;;;;;;;;;ACcjC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAClB,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;MAqBV,eAAe;;;;;;;;;;gCA4BoD,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ;;;;;qBAyBvG,IAAI,CAAC,YAAY,IAAI,IAAI,IAAI,EAAE;qBAK7B,IAAI,CAAC,QAAQ,EAAE;sCAKG,KAAK;uCAKL,EAAE;;IAa7C,qBAAqB,CAAC,iBAAiC;QACrD,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACnF,MAAM,qBAAqB,GAAG,iBAAiB,EAAE,SAAS,EAAE,wBAAwB,CAAC;QACrF,IAAI,qBAAqB,KAAK,SAAS,EAAE;YACvC,OAAO;SACR;QACD,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAAI,IAAI,EAAE,EAAE,qBAAqB,CAAC,CAAC;QACxE,IAAI,OAAO,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,EAAE;YAC3C,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;SACpC;aAAM;YACL,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;SACrC;KACF;IAGD,uBAAuB,CAAC,WAAmB;QACzCA,QAAO,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;KACrC;IAGD,kBAAkB,CAAC,cAA2B;QAC5C,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;KACvC;IAGD,mBAAmB,CAAC,eAAqB;QACvC,IAAI,CAAC,eAAe,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;YACjE,IAAI,CAAC,KAAK,GAAG,eAAe,IAAI,IAAI,IAAI,EAAE,CAAC;SAC5C;QACD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;KAC9B;IAKO,sBAAsB,CAAC,KAAyB,EAAE,cAAsB;QAC9E,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YAChC,OAAO,EAAE,CAAC;SACX;QAED,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC;YAChB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC;YAC3C,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;SAC/D,CAAC,CAAC;KACJ;IAGD,uBAAuB,CAAC,mBAA2B;QACjD,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,eAAe,EAAE,mBAAmB,CAAC,CAAC;KACvG;IAGD,sBAAsB,CAAC,kBAAsC;QAC3D,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;KACvG;IAED,iBAAiB,MAAK;IAEtB,oBAAoB,MAAK;IAEzB,iBAAiB,MAAK;IAEtB,gBAAgB;QACd,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAChD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,IAAI,EAAE,CAAC;QAC7C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC7B,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;KACzG;IAED,gBAAgB,CAAC,WAAyB;QACxC,IAAI,WAAW,EAAE;YACf,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;gBACtD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;aAC9C;SACF;KACF;IAMO,QAAQ;QACd,MAAM,cAAc,GAAG,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrD,MAAM,eAAe,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEvD,OAAO,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;KAC/I;IAMO,UAAU,CAAC,IAAW;QAC5B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC9B;IAMO,WAAW,CAAC,MAAc;QAChC,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC;QACnF,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACnF,MAAM,qBAAqB,GAAG,IAAI,CAAC,cAAc,EAAE,SAAS,EAAE,wBAAwB,CAAC;QACvF,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAAI,IAAI,EAAE,EAAE,qBAAqB,CAAC,CAAC;QACxE,IAAI,OAAO,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,EAAE;YAC3C,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;SACpC;aAAM;YACL,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;SACrC;QACD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC7B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACpC;IAEO,UAAU,CAAC,IAAsB,EAAE,YAA8B,EAAE,eAAmC;QAC5G,OAAO,IAAI,IAAI,YAAY,IAAI,SAAS,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,eAAe,IAAI,eAAe,EAAE,MAAM,GAAG,CAAC,CAAC;KAChH;IAEO,UAAU,CAAC,IAAsB;QACvC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC,uBAAuB,CAAC,MAAM,KAAK,CAAC,EAAE;YACvF,OAAO,IAAI,CAAC;SACb;QAGD,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;YACzC,OAAO,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;SACrH,CAAC,CAAC;KACJ;IAyBD,MAAM;QACJ,QACE,EAAC,IAAI,qDAAC,IAAI,EAAC,KAAK,IACd,4DAAK,KAAK,EAAC,mBAAmB,IAC5B,4DAAK,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,YAAY,IACjC,IAAI,CAAC,cAAc,EAAE,IAAI,IACxB,cAAK,IAAI,CAAC,cAAc,EAAE,IAAI,CAAM,KAEpC,IAAI,CAAC,cAAc,EAAE,SAAS,EAAE,IAAI,KAClC,cACE,sBAAe,EACd,IAAI,CAAC,cAAc,EAAE,SAAS,EAAE,IAAI,IAAI,WAAW,CACjD,CACN,CACF,EACD,4DACE,oEAAc,EACb,IAAI,CAAC,aAAa,GAAG,+BAA+B,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,KAAKA,QAAO,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,CAC1G,CACA,EACN,4DAAK,KAAK,EAAE,iBAAiB,IAC3B,2DAAI,IAAI,EAAE,mBAAmB,IAC3B,iEAAS,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAU,YAEzG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAC3D,EACL,4DAAK,KAAK,EAAE,YAAY,IACtB,+DACE,KAAK,EAAC,gBAAgB,EACtB,OAAO,EAAE,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EACnC,KAAK,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAC/C,QAAQ,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,EAAE,EAClC,IAAI,EAAC,mBAAmB,IAExB,sEAAgB,CACT,EACT,+DACE,KAAK,EAAC,YAAY,EAClB,OAAO,EAAE,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAClC,KAAK,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAChD,QAAQ,EAAE,IAAI,CAAC,sBAAsB,EACrC,IAAI,EAAC,mBAAmB,IAExB,sEAAgB,CACT,CACL,CACF,EAEN,4DAAK,KAAK,EAAE,OAAO,IAChB;YACCA,QAAO,CAAC,CAAC,CAAC,aAAa,CAAC;YACxBA,QAAO,CAAC,CAAC,CAAC,aAAa,CAAC;YACxBA,QAAO,CAAC,CAAC,CAAC,cAAc,CAAC;YACzBA,QAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC;YAC3BA,QAAO,CAAC,CAAC,CAAC,eAAe,CAAC;YAC1BA,QAAO,CAAC,CAAC,CAAC,aAAa,CAAC;YACxBA,QAAO,CAAC,CAAC,CAAC,eAAe,CAAC;SAC3B,CAAC,GAAG,CAAC,GAAG;YACP,QACE,WAAK,KAAK,EAAE,KAAK,EAAE,IAAI,EAAC,UAAU,IAC/B,GAAG,CACA,EACN;SACH,CAAC,EACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;YACtB,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAEzC,IAAI,IAAI,CAAC,SAAS,EAAE;gBAClB,QACE,cACE,QAAQ,QACR,KAAK,EAAE;wBACL,mBAAmB,EAAE,IAAI;wBACzB,eAAe,EAAE,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC;qBAC/C,EACD,KAAK,EAAE,EAAE,cAAc,EAAE,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,EACxC,IAAI,EAAE,+BAA+B,IAEpC,IAAI,CAAC,OAAO,EAAE,CACR,EACT;aACH;YACD,QACE,cACE,KAAK,EAAE;oBACL,MAAM,EAAE,IAAI;oBACZ,UAAU,EAAE,CAAC,EAAE,IAAI,CAAC,YAAY,IAAI,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,EAAE,MAAM,GAAG,CAAC,CAAC;oBACnI,aAAa,EAAE,SAAS,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;oBAC1C,eAAe,EAAE,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC;iBAC/C,gBACW,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,EACrE,QAAQ,EAAE,UAAU,EACpB,OAAO,EAAE,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EACpC,IAAI,EAAE,aAAa,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,GAAG,qBAAqB,GAAG,EAAE,IAAI,SAAS,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,GAAG,wBAAwB,GAAG,EAAE,IAAI,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,0BAA0B,GAAG,EAAE,EAAE,IAEjP,IAAI,CAAC,OAAO,EAAE,CACR,EACT;SACH,CAAC,CACE,CACF,CACD,EACP;KACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAvGD;IAvBC,iBAAiB,CAA0F;QAC1G,IAAI,EAAE,mBAAmB;QACzB,YAAY,EAAE,IAAI,GAAG,CAAC;YACpB,CAAC,2BAA2B,EAAE,iBAAiB,CAAC;YAChD,CAAC,wBAAwB,EAAE,cAAc,CAAC;YAC1C,CAAC,qBAAqB,EAAE,WAAW,CAAC;YACpC,CAAC,0BAA0B,EAAE,gBAAgB,CAAC;YAC9C,CAAC,yBAAyB,EAAE,eAAe,CAAC;YAC5C,CAAC,4BAA4B,EAAE,kBAAkB,CAAC;YAClD,CAAC,uBAAuB,EAAE,aAAa,CAAC;YACxC,CAAC,4BAA4B,EAAE,kBAAkB,CAAC;SACnD,CAAC;QACF,YAAY,EAAE;YACZ,YAAY,EAAE,OAAO,KAAwB,EAAE,uBAAgD;gBAC7F,KAAK,CAAC,mBAAmB,EAAE,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;gBACzD,uBAAuB,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;aAC5D;YACD,YAAY,EAAE,OAAO,KAAwB,EAAE,wBAAiD;gBAC9F,KAAK,CAAC,mBAAmB,EAAE,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;aAC1D;SACF;QACD,iBAAiB,EAAE,IAAI;KACxB,CAAC;;;;6CAwGD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["i18next"],"sources":["../../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/interval.js","../../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/duration.js","../../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/day.js","src/components/scheduler/nylas-date-picker/nylas-date-picker.scss?tag=nylas-date-picker&encapsulation=shadow","src/components/scheduler/nylas-date-picker/nylas-date-picker.tsx"],"sourcesContent":["const t0 = new Date, t1 = new Date;\n\nexport function timeInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = (date) => {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = (date) => {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = (date) => {\n const d0 = interval(date), d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = (date, step) => {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = (start, stop, step) => {\n const range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n let previous;\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = (test) => {\n return timeInterval((date) => {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, (date, step) => {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = (start, end) => {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = (step) => {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? (d) => field(d) % step === 0\n : (d) => interval.count(0, d) % step === 0);\n };\n }\n\n return interval;\n}\n","export const durationSecond = 1000;\nexport const durationMinute = durationSecond * 60;\nexport const durationHour = durationMinute * 60;\nexport const durationDay = durationHour * 24;\nexport const durationWeek = durationDay * 7;\nexport const durationMonth = durationDay * 30;\nexport const durationYear = durationDay * 365;\n","import {timeInterval} from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nexport const timeDay = timeInterval(\n date => date.setHours(0, 0, 0, 0),\n (date, step) => date.setDate(date.getDate() + step),\n (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n date => date.getDate() - 1\n);\n\nexport const timeDays = timeDay.range;\n\nexport const utcDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return date.getUTCDate() - 1;\n});\n\nexport const utcDays = utcDay.range;\n\nexport const unixDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return Math.floor(date / durationDay);\n});\n\nexport const unixDays = unixDay.range;\n","@import '../../../common/styles/variables.scss';\n\n:host {\n display: block;\n min-height: 444px;\n @include default-css-variables;\n\n @media #{$mobile} {\n min-height: auto;\n }\n}\n\n.nylas-date-picker {\n display: flex;\n gap: 1rem;\n flex-direction: column;\n}\n\n.header {\n margin: 0 0.5rem;\n height: 48px;\n\n h2 {\n font-size: 1.3125rem;\n font-weight: 400;\n line-height: 1rem;\n color: var(--nylas-base-800);\n\n strong {\n font-weight: 600;\n }\n }\n}\n\n.title {\n margin: 0 -1.25rem;\n display: flex;\n flex-direction: column;\n padding: 0 1.5rem;\n gap: 0.5rem;\n border-bottom: 1px solid var(--nylas-base-200);\n font-family: var(--nylas-font-family);\n color: var(--nylas-base-800);\n\n h1 {\n max-width: 376px;\n margin-bottom: 0;\n font-size: 18px;\n line-height: 20px;\n font-weight: 600;\n display: flex;\n gap: 0.5rem;\n align-items: center;\n }\n\n p {\n margin-top: 0;\n font-size: 16px;\n display: flex;\n gap: 0.5rem;\n align-items: center;\n }\n}\n\n@keyframes pulsate {\n 0% {\n background-color: var(--nylas-base-50);\n }\n\n 50% {\n background-color: var(--nylas-base-100);\n }\n\n 100% {\n background-color: var(--nylas-base-50);\n }\n}\n\n.dates {\n display: grid;\n justify-items: center;\n grid-template-columns: repeat(7, 1fr);\n gap: 0.5rem;\n margin-bottom: 24px;\n\n .date {\n position: relative;\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n height: 48px;\n width: 48px;\n min-width: 2rem;\n min-height: 2rem;\n cursor: pointer;\n border-radius: var(--nylas-border-radius-2x);\n font-size: 16px;\n font-weight: 600;\n font-family: inherit;\n\n @media #{$mobile} {\n width: -webkit-fill-available;\n width: -moz-available;\n width: fill-available;\n }\n\n @media #{$x-small-mobile} {\n height: 38px;\n min-width: none;\n }\n\n color: var(--nylas-base-text);\n background-color: var(--nylas-base-100);\n cursor: pointer;\n\n &:hover:not(:disabled) {\n box-shadow: 0 0 0 2px var(--nylas-base-500) inset;\n }\n\n border: none;\n\n &.date.current-month {\n color: var(--nylas-base-800);\n }\n\n &.date.selected {\n background-color: var(--nylas-primary);\n color: var(--nylas-base-0);\n font-weight: 700;\n }\n\n &.date.day-skeleton {\n color: var(--nylas-base-300);\n }\n\n &:disabled {\n color: var(--nylas-base-300);\n background-color: transparent;\n font-weight: 400;\n cursor: not-allowed;\n }\n }\n\n .day {\n font-size: 12px;\n color: var(--nylas-base-800);\n font-weight: 600;\n letter-spacing: 0.5px;\n height: 32px;\n display: flex;\n align-items: center;\n\n @media #{$mobile} {\n font-size: 14px;\n }\n }\n\n .date.day-skeleton {\n height: 48px;\n width: 48px;\n\n @media #{$x-small-mobile} {\n width: 38px;\n height: 38px;\n min-width: none;\n }\n\n border-radius: var(--nylas-border-radius-2x);\n animation: pulsate 1.5s infinite ease-in-out;\n background-color: var(--nylas-base-50);\n }\n\n .date.current-day::after {\n content: '';\n position: absolute;\n bottom: 6px;\n left: 50%;\n transform: translateX(-50%);\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background-color: var(--nylas-base-500);\n }\n\n .date.current-day.selected::after {\n background-color: var(--nylas-base-100);\n }\n}\n\n.pagination {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n min-width: 92px;\n\n .chevron-right {\n transform: rotate(180deg);\n }\n\n .button {\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n height: 3vh;\n width: 3vh;\n min-width: 3em;\n min-height: 3em;\n cursor: pointer;\n border-radius: var(--nylas-border-radius-2x);\n\n background-color: transparent;\n color: var(--nylas-base-800);\n cursor: pointer;\n\n &:hover {\n background-color: var(--nylas-base-50);\n }\n\n border: none;\n\n &:active {\n background-color: var(--nylas-base-100);\n }\n\n &:disabled {\n background-color: transparent;\n color: var(--nylas-base-300);\n cursor: not-allowed;\n }\n }\n}\n\n.flex-row {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n color: var(--nylas-base-500);\n}","import { RegisterComponent } from '@/common/register-component';\nimport { addDaysToCurrentDate, convertMinutesToHoursAndMinutes, getFirstDayOfMonth, getLastDayOfMonth, isSameDay, isSameMonth, translateMonth } from '@/utils/utils';\nimport { Component, Element, Event, EventEmitter, Host, Prop, State, Watch, h } from '@stencil/core';\nimport { timeDay } from 'd3-time';\nimport { NylasSchedulerConnector } from '../../..';\nimport { NylasScheduling } from '../nylas-scheduling/nylas-scheduling';\nimport { ConfigSettings } from '@/stores/scheduler-store';\nimport i18next from '@/utils/i18n';\nimport { debug } from '@/utils/utils';\nimport { ThemeConfig } from '@nylas/core';\nimport dayjs from 'dayjs';\nimport timezone from 'dayjs/plugin/timezone';\nimport utc from 'dayjs/plugin/utc';\n\n// Initialize dayjs plugins needed for timezone handling\ndayjs.extend(utc);\ndayjs.extend(timezone);\n\n/**\n * The `nylas-date-picker` component is a UI component that allows users to select a date.\n *\n * @part ndp - The date picker host.\n * @part ndp__title - The title.\n * @part ndp__month-header - The month header.\n * @part ndp__month-button - The month button.\n * @part ndp__day - The day.\n * @part ndp__date - The date.\n * @part ndp__date--selected - The selected date.\n * @part ndp__date--current-day - The current day.\n * @part ndp__date--current-month - The dates in the current month.\n * @part ndp__date--disabled - The disabled dates.\n */\n@Component({\n tag: 'nylas-date-picker',\n styleUrl: 'nylas-date-picker.scss',\n shadow: true,\n})\nexport class NylasDatePicker {\n /**\n * The host element.\n * Used to manage the host element of the provider.\n */\n @Element() private host!: HTMLNylasDatePickerElement;\n\n /**\n * @standalone\n * The dates that are selectable.\n */\n @Prop() selectableDates?: Date[];\n\n /**\n * @standalone\n * The config settings.\n */\n @Prop() configSettings?: ConfigSettings;\n\n /**\n * @standalone\n * The theme configuration.\n */\n @Prop({ attribute: 'theme-config' }) readonly themeConfig?: any;\n\n /**\n * The selected timezone.\n */\n @Prop({ attribute: 'selected-timezone' }) readonly selectedTimezone: string = Intl.DateTimeFormat().resolvedOptions().timeZone;\n\n /**\n * The selected date.\n */\n @Prop() selectedDate?: Date;\n\n /**\n * The selected language.\n */\n @Prop() selectedLanguage?: string;\n\n /**\n * The loading state.\n */\n @Prop() readonly isLoading?: boolean;\n\n /**\n * The event duration.\n */\n @Prop() readonly eventDuration?: number;\n\n /**\n * The month to display.\n */\n @State() month: Date = this.selectedDate || new Date();\n\n /**\n * The dates to render.\n */\n @State() dates: Date[] = this.getDates();\n\n /**\n * The state to disable the next month button.\n */\n @State() disableNextMonthButton: boolean = false;\n\n /**\n * The state to store the selected dates as per the timezone.\n */\n @State() selectableDatesTimezone: Date[] = [];\n\n /**\n * This event is fired when a date is selected.\n */\n @Event() dateSelected!: EventEmitter<Date>;\n\n /**\n * This event is fired when the month is changed.\n */\n @Event() monthChanged!: EventEmitter<Date>;\n\n @Watch('configSettings')\n configSettingsChanged(newConfigSettings: ConfigSettings) {\n const nextMonth = new Date(this.month.getFullYear(), this.month.getMonth() + 1, 1);\n const availableDaysInFuture = newConfigSettings?.scheduler?.available_days_in_future;\n if (availableDaysInFuture === undefined) {\n return;\n }\n const endDate = addDaysToCurrentDate(new Date(), availableDaysInFuture);\n if (endDate.getTime() < nextMonth.getTime()) {\n this.disableNextMonthButton = true;\n } else {\n this.disableNextMonthButton = false;\n }\n }\n\n @Watch('selectedLanguage')\n selectedLanguageChanged(newLanguage: string) {\n i18next.changeLanguage(newLanguage);\n }\n\n @Watch('themeConfig')\n themeConfigChanged(newThemeConfig: ThemeConfig) {\n this.applyThemeConfig(newThemeConfig);\n }\n\n @Watch('selectedDate')\n selectedDateChanged(newSelectedDate: Date) {\n if (!newSelectedDate || !isSameMonth(newSelectedDate, this.month)) {\n this.month = newSelectedDate || new Date();\n }\n this.dates = this.getDates();\n }\n\n /**\n * Helper method to convert dates to the specified timezone, preserving only the date part\n */\n private convertDatesToTimezone(dates: Date[] | undefined, targetTimezone: string): Date[] {\n if (!dates || dates.length === 0) {\n return [];\n }\n\n return dates.map(d => {\n const tzDate = dayjs(d).tz(targetTimezone);\n return new Date(tzDate.year(), tzDate.month(), tzDate.date());\n });\n }\n\n @Watch('selectedTimezone')\n selectedTimezoneChanged(newSelectedTimezone: string) {\n this.selectableDatesTimezone = this.convertDatesToTimezone(this.selectableDates, newSelectedTimezone);\n }\n\n @Watch('selectableDates')\n selectableDatesChanged(newSelectableDates: Date[] | undefined) {\n this.selectableDatesTimezone = this.convertDatesToTimezone(newSelectableDates, this.selectedTimezone);\n }\n\n connectedCallback() {}\n\n disconnectedCallback() {}\n\n componentWillLoad() {}\n\n componentDidLoad() {\n debug(`[nylas-date-picker] Component did load`);\n this.applyThemeConfig(this.themeConfig);\n this.month = this.selectedDate || new Date();\n this.dates = this.getDates();\n this.selectableDatesTimezone = this.convertDatesToTimezone(this.selectableDates, this.selectedTimezone);\n }\n\n applyThemeConfig(themeConfig?: ThemeConfig) {\n if (themeConfig) {\n for (const [key, value] of Object.entries(themeConfig)) {\n this.host.style.setProperty(`${key}`, value);\n }\n }\n }\n\n /**\n * Get the dates to render, including the days from the previous and next months.\n * @returns The dates to render.\n */\n private getDates() {\n const lastDayOfMonth = getLastDayOfMonth(this.month);\n const firstDayOfMonth = getFirstDayOfMonth(this.month);\n\n return timeDay.range(timeDay.offset(firstDayOfMonth, -firstDayOfMonth.getDay()), timeDay.offset(lastDayOfMonth, 7 - lastDayOfMonth.getDay()));\n }\n\n /**\n * Select a date.\n * @param date The date to select.\n */\n private selectDate(date?: Date) {\n this.dateSelected.emit(date);\n }\n\n /**\n * Change the month.\n * @param change The change in months.\n */\n private changeMonth(change: number) {\n this.month = new Date(this.month.getFullYear(), this.month.getMonth() + change, 1);\n const nextMonth = new Date(this.month.getFullYear(), this.month.getMonth() + 1, 1);\n const availableDaysInFuture = this.configSettings?.scheduler?.available_days_in_future;\n const endDate = addDaysToCurrentDate(new Date(), availableDaysInFuture);\n if (endDate.getTime() < nextMonth.getTime()) {\n this.disableNextMonthButton = true;\n } else {\n this.disableNextMonthButton = false;\n }\n this.dates = this.getDates();\n this.monthChanged.emit(this.month);\n }\n\n private isSelected(date: Date | undefined, selectedDate: Date | undefined, selectableDates: Date[] | undefined) {\n return date && selectedDate && isSameDay(date, selectedDate) && selectableDates && selectableDates?.length > 0;\n }\n\n private isDisabled(date: Date | undefined) {\n if (!date || !this.selectableDatesTimezone || this.selectableDatesTimezone.length === 0) {\n return true;\n }\n\n // Compare only the date parts (year, month, day), ignoring time\n return !this.selectableDatesTimezone.some(d => {\n return date.getFullYear() === d.getFullYear() && date.getMonth() === d.getMonth() && date.getDate() === d.getDate();\n });\n }\n\n @RegisterComponent<NylasDatePicker, NylasSchedulerConnector, Exclude<NylasScheduling['stores'], undefined>>({\n name: 'nylas-date-picker',\n stateToProps: new Map([\n ['scheduler.selectableDates', 'selectableDates'],\n ['scheduler.selectedDate', 'selectedDate'],\n ['scheduler.isLoading', 'isLoading'],\n ['scheduler.configSettings', 'configSettings'],\n ['scheduler.eventDuration', 'eventDuration'],\n ['scheduler.selectedLanguage', 'selectedLanguage'],\n ['scheduler.themeConfig', 'themeConfig'],\n ['scheduler.selectedTimezone', 'selectedTimezone'],\n ]),\n eventToProps: {\n dateSelected: async (event: CustomEvent<Date>, nylasSchedulerConnector: NylasSchedulerConnector) => {\n debug('nylas-date-picker', 'dateSelected', event.detail);\n nylasSchedulerConnector.scheduler.selectDate(event.detail);\n },\n monthChanged: async (event: CustomEvent<Date>, _nylasSchedulerConnector: NylasSchedulerConnector) => {\n debug('nylas-date-picker', 'monthChanged', event.detail);\n },\n },\n fireRegisterEvent: true,\n })\n render() {\n return (\n <Host part=\"ndp\">\n <div class=\"nylas-date-picker\">\n <div class=\"title\" part=\"ndp__title\">\n {this.configSettings?.name ? (\n <h1>{this.configSettings?.name}</h1>\n ) : (\n this.configSettings?.organizer?.name && (\n <h1>\n <person-icon />\n {this.configSettings?.organizer?.name || 'Organizer'}\n </h1>\n )\n )}\n <p>\n <clock-icon />\n {this.eventDuration ? convertMinutesToHoursAndMinutes(this.eventDuration) : `- ${i18next.t('time.minutes')}`}\n </p>\n </div>\n <div class={'header flex-row'}>\n <h2 part={'ndp__month-header'}>\n <strong>{translateMonth(this.month.toLocaleDateString('en-US', { month: 'long' }).toLowerCase())}</strong>\n \n {this.month.toLocaleDateString(undefined, { year: 'numeric' })}\n </h2>\n <div class={'pagination'}>\n <button\n title=\"Previous month\"\n onClick={() => this.changeMonth(-1)}\n class={{ 'chevron-left': true, 'button': true }}\n disabled={this.month <= new Date()}\n part=\"ndp__month-button\"\n >\n <chevron-icon />\n </button>\n <button\n title=\"Next month\"\n onClick={() => this.changeMonth(1)}\n class={{ 'chevron-right': true, 'button': true }}\n disabled={this.disableNextMonthButton}\n part=\"ndp__month-button\"\n >\n <chevron-icon />\n </button>\n </div>\n </div>\n\n <div class={'dates'}>\n {[\n i18next.t('days.sunday'),\n i18next.t('days.monday'),\n i18next.t('days.tuesday'),\n i18next.t('days.wednesday'),\n i18next.t('days.thursday'),\n i18next.t('days.friday'),\n i18next.t('days.saturday'),\n ].map(day => {\n return (\n <div class={'day'} part=\"ndp__day\">\n {day}\n </div>\n );\n })}\n {this.dates.map((date, i) => {\n const isDisabled = this.isDisabled(date);\n\n if (this.isLoading) {\n return (\n <button\n disabled\n class={{\n 'date day-skeleton': true,\n 'current-month': isSameMonth(date, this.month),\n }}\n style={{ animationDelay: `${i * 20}ms` }}\n part={`ndp__date ndp__date--disabled`}\n >\n {date.getDate()}\n </button>\n );\n }\n return (\n <button\n class={{\n 'date': true,\n 'selected': !!(this.selectedDate && isSameDay(date, this.selectedDate) && this.selectableDates && this.selectableDates?.length > 0),\n 'current-day': isSameDay(date, new Date()),\n 'current-month': isSameMonth(date, this.month),\n }}\n aria-label={date.toLocaleDateString(undefined, { dateStyle: 'full' })}\n disabled={isDisabled}\n onClick={() => this.selectDate(date)}\n part={`ndp__date ${this.isSelected(date, this.selectedDate, this.selectableDates) ? 'ndp__date--selected' : ''} ${isSameDay(date, new Date()) ? 'ndp__date--current-day' : ''} ${isSameMonth(date, this.month) ? 'ndp__date--current-month' : ''}`}\n >\n {date.getDate()}\n </button>\n );\n })}\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
|
|
@@ -354,7 +354,7 @@ const NylasEditorTabsGroup = proxyCustomElement(class NylasEditorTabsGroup exten
|
|
|
354
354
|
if (this.enableUserFeedback && !isInitialized()) {
|
|
355
355
|
init({
|
|
356
356
|
dsn: 'https://9d5731f1c77ca84c9ed3fb9b3ccf7ee1@o74852.ingest.us.sentry.io/4507889638178816',
|
|
357
|
-
release: "1.4.
|
|
357
|
+
release: "1.4.3",
|
|
358
358
|
integrations: integrations => [
|
|
359
359
|
...integrations.filter(_integration => false),
|
|
360
360
|
feedbackSyncIntegration({
|
|
@@ -407,7 +407,7 @@ const NylasEditorTabsGroup = proxyCustomElement(class NylasEditorTabsGroup exten
|
|
|
407
407
|
captureContext: {
|
|
408
408
|
tags: {
|
|
409
409
|
'nylas-web-element': 'nylas-scheduler-editor',
|
|
410
|
-
'nylas-web-element-version': "1.4.
|
|
410
|
+
'nylas-web-element-version': "1.4.3",
|
|
411
411
|
},
|
|
412
412
|
extra: {
|
|
413
413
|
configId: this.selectedConfiguration?.id,
|
|
@@ -437,7 +437,7 @@ const NylasEditorTabs = proxyCustomElement(class NylasEditorTabs extends HTMLEle
|
|
|
437
437
|
if (this.enableUserFeedback && !isInitialized()) {
|
|
438
438
|
init({
|
|
439
439
|
dsn: 'https://9d5731f1c77ca84c9ed3fb9b3ccf7ee1@o74852.ingest.us.sentry.io/4507889638178816',
|
|
440
|
-
release: "1.4.
|
|
440
|
+
release: "1.4.3",
|
|
441
441
|
integrations: integrations => [
|
|
442
442
|
...integrations.filter(_integration => false),
|
|
443
443
|
feedbackSyncIntegration({
|
|
@@ -494,7 +494,7 @@ const NylasEditorTabs = proxyCustomElement(class NylasEditorTabs extends HTMLEle
|
|
|
494
494
|
captureContext: {
|
|
495
495
|
tags: {
|
|
496
496
|
'nylas-web-element': 'nylas-scheduler-editor',
|
|
497
|
-
'nylas-web-element-version': "1.4.
|
|
497
|
+
'nylas-web-element-version': "1.4.3",
|
|
498
498
|
'nylas-config-id': this.selectedConfiguration?.id,
|
|
499
499
|
'nylas-slug': this.selectedConfiguration?.slug,
|
|
500
500
|
'host-url': window.location.href,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { proxyCustomElement, HTMLElement as HTMLElement$1, createEvent, h as h$1, Host } from '@stencil/core/internal/client';
|
|
2
2
|
import { R as RegisterComponent } from './register-component.js';
|
|
3
|
-
import {
|
|
3
|
+
import { p as timezone, a as debug, b as instance } from './utils.js';
|
|
4
4
|
import { a as dayjs, u as utc } from './utc.js';
|
|
5
5
|
import { d as defineCustomElement$t } from './add-circle.js';
|
|
6
6
|
import { d as defineCustomElement$s } from './button-component2.js';
|
|
@@ -13756,6 +13756,17 @@ const NylasEventCalendar = proxyCustomElement(class NylasEventCalendar extends H
|
|
|
13756
13756
|
this.selectedEvent.group_event_info.rrule = recurrence;
|
|
13757
13757
|
}
|
|
13758
13758
|
}
|
|
13759
|
+
if (name === 'event-capacity') {
|
|
13760
|
+
const parsedValue = parseInt(value);
|
|
13761
|
+
if (parsedValue < 1 || parsedValue > 500 || isNaN(parsedValue)) {
|
|
13762
|
+
this.formError = instance.t('fixFormErrors');
|
|
13763
|
+
this.internals.setValidity({ customError: true }, this.formError);
|
|
13764
|
+
}
|
|
13765
|
+
else {
|
|
13766
|
+
this.formError = '';
|
|
13767
|
+
this.internals.setValidity({ customError: false }, '');
|
|
13768
|
+
}
|
|
13769
|
+
}
|
|
13759
13770
|
}
|
|
13760
13771
|
timeWindowFormErrorHandler(event) {
|
|
13761
13772
|
if (event.detail.key === 'event-timeslot') {
|
|
@@ -13789,21 +13800,7 @@ const NylasEventCalendar = proxyCustomElement(class NylasEventCalendar extends H
|
|
|
13789
13800
|
e.preventDefault();
|
|
13790
13801
|
e.stopImmediatePropagation();
|
|
13791
13802
|
this.showEditOptions = false;
|
|
13792
|
-
} }, h$1("close-icon", null))), h$1("div", { class: "edit-options__content action-options__content" }, h$1("ul", { tabindex: "-1", role: "listbox", "aria-label": this.name }, this.editOptions.map(option => option.value.toString() ? (h$1("li", { class: { disabled: !!this.isLoading }, tabindex: "0", key: option.value, id: option.value, onClick: e => this.handleEditOptionSelected(e, option), role: "option" }, this.isLoading && this.loadingOptions.delete === option.value ? `Deleting...` : option.label)) : null)))))), this.
|
|
13793
|
-
e.preventDefault();
|
|
13794
|
-
e.stopImmediatePropagation();
|
|
13795
|
-
this.showConfirmDiscardUnsavedChangesModal = false;
|
|
13796
|
-
} }, h$1("close-icon", null)), h$1("div", { class: "discard-changes__content action-options__content" }, h$1("h3", { slot: "card-title", part: "nfbf__title" }, "Discard unsaved changes?")), h$1("div", { class: "discard-changes__footer action-options__footer" }, h$1("button-component", { variant: 'basic', onClick: _e => (this.showConfirmDiscardUnsavedChangesModal = false), part: "nfbf__button-outline nfbf__cancel-cta" }, `${instance.t('deleteSchedulingPageCancelButton')}`), h$1("button-component", { variant: 'destructive', onClick: e => {
|
|
13797
|
-
e.preventDefault();
|
|
13798
|
-
e.stopImmediatePropagation();
|
|
13799
|
-
this.showConfirmDiscardUnsavedChangesModal = false;
|
|
13800
|
-
this.unsavedChanges = false;
|
|
13801
|
-
this.showEditEventDetails = false;
|
|
13802
|
-
this.showCreateEventDetails = false;
|
|
13803
|
-
this.selectedEvent = null;
|
|
13804
|
-
this.createNewGroupEventTimeslot = null;
|
|
13805
|
-
this.formError = '';
|
|
13806
|
-
}, part: "nfbf__button-outline nfbf__reschedule-cta" }, "Discard"))))), this.showUpdateOptions && (h$1("div", { class: "update-options action-options", onClick: () => (this.showUpdateOptions = false) }, h$1("div", { class: "update-options__card action-options__card" }, h$1("button-component", { tooltip: "Close", id: "close-update-options", variant: 'invisible', disabled: this.isLoading, onClick: e => {
|
|
13803
|
+
} }, h$1("close-icon", null))), h$1("div", { class: "edit-options__content action-options__content" }, h$1("ul", { tabindex: "-1", role: "listbox", "aria-label": this.name }, this.editOptions.map(option => option.value.toString() ? (h$1("li", { class: { disabled: !!this.isLoading }, tabindex: "0", key: option.value, id: option.value, onClick: e => this.handleEditOptionSelected(e, option), role: "option" }, this.isLoading && this.loadingOptions.delete === option.value ? `Deleting...` : option.label)) : null)))))), this.showUpdateOptions && (h$1("div", { class: "update-options action-options", onClick: () => (this.showUpdateOptions = false) }, h$1("div", { class: "update-options__card action-options__card" }, h$1("button-component", { tooltip: "Close", id: "close-update-options", variant: 'invisible', disabled: this.isLoading, onClick: e => {
|
|
13807
13804
|
e.preventDefault();
|
|
13808
13805
|
e.stopImmediatePropagation();
|
|
13809
13806
|
this.showUpdateOptions = false;
|
|
@@ -13879,9 +13876,23 @@ const NylasEventCalendar = proxyCustomElement(class NylasEventCalendar extends H
|
|
|
13879
13876
|
this.selectedEvent = null;
|
|
13880
13877
|
this.unsavedChanges = false;
|
|
13881
13878
|
}
|
|
13882
|
-
} }, "Cancel"), h$1("button-component", { variant: 'primary', disabled: this.isLoading, isLoading: this.isLoading, onClick: e => {
|
|
13879
|
+
} }, "Cancel"), h$1("button-component", { variant: 'primary', disabled: this.isLoading || this.formError !== '', isLoading: this.isLoading, onClick: e => {
|
|
13883
13880
|
this.handleCreateGroupEvent(e);
|
|
13884
|
-
} }, "Create"))))))))
|
|
13881
|
+
} }, "Create")))))), this.showConfirmDiscardUnsavedChangesModal && (h$1("div", { class: "discard-changes action-options", onClick: () => (this.showUpdateOptions = false) }, h$1("div", { class: "discard-changes__card action-options__card" }, h$1("button-component", { tooltip: "Close", id: "close-discard-changes", variant: 'invisible', disabled: this.isLoading, onClick: e => {
|
|
13882
|
+
e.preventDefault();
|
|
13883
|
+
e.stopImmediatePropagation();
|
|
13884
|
+
this.showConfirmDiscardUnsavedChangesModal = false;
|
|
13885
|
+
} }, h$1("close-icon", null)), h$1("div", { class: "discard-changes__content action-options__content" }, h$1("h3", { slot: "card-title", part: "nfbf__title" }, "Discard unsaved changes?")), h$1("div", { class: "discard-changes__footer action-options__footer" }, h$1("button-component", { variant: 'basic', onClick: _e => (this.showConfirmDiscardUnsavedChangesModal = false), part: "nfbf__button-outline nfbf__cancel-cta" }, `${instance.t('deleteSchedulingPageCancelButton')}`), h$1("button-component", { variant: 'destructive', onClick: e => {
|
|
13886
|
+
e.preventDefault();
|
|
13887
|
+
e.stopImmediatePropagation();
|
|
13888
|
+
this.showConfirmDiscardUnsavedChangesModal = false;
|
|
13889
|
+
this.unsavedChanges = false;
|
|
13890
|
+
this.showEditEventDetails = false;
|
|
13891
|
+
this.showCreateEventDetails = false;
|
|
13892
|
+
this.selectedEvent = null;
|
|
13893
|
+
this.createNewGroupEventTimeslot = null;
|
|
13894
|
+
this.formError = '';
|
|
13895
|
+
}, part: "nfbf__button-outline nfbf__reschedule-cta" }, "Discard"))))))));
|
|
13885
13896
|
}
|
|
13886
13897
|
static get formAssociated() { return true; }
|
|
13887
13898
|
get host() { return this; }
|