@nylas/web-elements 0.0.0-canary-20251007200552 → 0.0.0-canary-20251008142712
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 +1571 -1480
- package/dist/cdn/nylas-scheduling/nylas-scheduling.es.js +100 -9
- package/dist/cjs/calendar-agenda-fill-icon_38.cjs.entry.js +1 -1
- package/dist/cjs/calendar-agenda-fill-icon_38.cjs.entry.js.map +1 -1
- package/dist/cjs/info-icon.tooltip-component.entry.cjs.js.map +1 -1
- package/dist/cjs/info-icon_2.cjs.entry.js +151 -6
- package/dist/cjs/info-icon_2.cjs.entry.js.map +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/nylas-web-elements.cjs.js +1 -1
- package/dist/collection/components/design-system/tooltip-component/toolitp-component.js +181 -8
- package/dist/collection/components/design-system/tooltip-component/toolitp-component.js.map +1 -1
- package/dist/collection/components/design-system/tooltip-component/tooltip-component.css +64 -52
- package/dist/collection/components/scheduler-editor/nylas-specific-time-availability-picker/nylas-specific-time-availability-picker.css +4 -1
- package/dist/components/nylas-additional-participants.js +1 -1
- package/dist/components/nylas-availability-picker.js +1 -1
- package/dist/components/nylas-booking-calendar-picker.js +1 -1
- package/dist/components/nylas-booking-confirmation-redirect.js +1 -1
- package/dist/components/nylas-booking-confirmation-type.js +1 -1
- package/dist/components/nylas-booking-form.js +1 -1
- package/dist/components/nylas-buffer-time.js +1 -1
- package/dist/components/nylas-cancel-booking-form.js +1 -1
- package/dist/components/nylas-cancellation-policy.js +1 -1
- package/dist/components/nylas-confirmation-email.js +1 -1
- package/dist/components/nylas-connected-calendars.js +1 -1
- package/dist/components/nylas-custom-event-slug.js +1 -1
- package/dist/components/nylas-customize-booking-settings.js +1 -1
- package/dist/components/nylas-disable-emails.js +1 -1
- package/dist/components/nylas-editor-tabs-group.js +1 -1
- package/dist/components/nylas-editor-tabs.js +1 -1
- package/dist/components/nylas-event-calendar.js +1 -1
- package/dist/components/nylas-event-capacity.js +1 -1
- package/dist/components/nylas-event-description.js +1 -1
- package/dist/components/nylas-event-location.js +1 -1
- package/dist/components/nylas-event-title.js +1 -1
- package/dist/components/nylas-feedback-form.js +1 -1
- package/dist/components/nylas-limit-future-bookings.js +1 -1
- package/dist/components/nylas-min-booking-notice.js +1 -1
- package/dist/components/nylas-min-cancellation-notice.js +1 -1
- package/dist/components/nylas-only-specific-time-availability.js +1 -1
- package/dist/components/nylas-page-name.js +1 -1
- package/dist/components/nylas-participant-booking-calendars.js +1 -1
- package/dist/components/nylas-participants-custom-availability.js +1 -1
- package/dist/components/nylas-reminder-emails.js +1 -1
- package/dist/components/nylas-scheduler-editor.js +33 -33
- package/dist/components/nylas-scheduling-method.js +1 -1
- package/dist/components/nylas-scheduling.js +5 -5
- package/dist/components/nylas-specific-time-availability-picker.js +1 -1
- package/dist/components/nylas-timeslot-interval.js +1 -1
- package/dist/components/{p-BqGEzlcQ.js → p-0q9sgr4i.js} +3 -3
- package/dist/components/{p-BqGEzlcQ.js.map → p-0q9sgr4i.js.map} +1 -1
- package/dist/components/{p-CwwJpDaO.js → p-B1psbbaJ.js} +3 -3
- package/dist/components/{p-CwwJpDaO.js.map → p-B1psbbaJ.js.map} +1 -1
- package/dist/components/{p-CbLs5Pk5.js → p-BFJmQasy.js} +4 -4
- package/dist/components/{p-CbLs5Pk5.js.map → p-BFJmQasy.js.map} +1 -1
- package/dist/components/{p-wzGjOUhU.js → p-BNmwL6-W.js} +4 -4
- package/dist/components/{p-wzGjOUhU.js.map → p-BNmwL6-W.js.map} +1 -1
- package/dist/components/{p-B-b3QZAX.js → p-Bfh24JOX.js} +3 -3
- package/dist/components/{p-B-b3QZAX.js.map → p-Bfh24JOX.js.map} +1 -1
- package/dist/components/{p-pjEuYJeR.js → p-Bk42j8OF.js} +3 -3
- package/dist/components/{p-pjEuYJeR.js.map → p-Bk42j8OF.js.map} +1 -1
- package/dist/components/{p-CXG_Ufsz.js → p-BpnsgdmY.js} +3 -3
- package/dist/components/{p-CXG_Ufsz.js.map → p-BpnsgdmY.js.map} +1 -1
- package/dist/components/{p-BbV-LHPC.js → p-BvCN7qQY.js} +3 -3
- package/dist/components/{p-BbV-LHPC.js.map → p-BvCN7qQY.js.map} +1 -1
- package/dist/components/{p-BT4xqZtB.js → p-BzvnGJrN.js} +4 -4
- package/dist/components/p-BzvnGJrN.js.map +1 -0
- package/dist/components/{p-BD1JIBI-.js → p-C20VhZn-.js} +3 -3
- package/dist/components/{p-BD1JIBI-.js.map → p-C20VhZn-.js.map} +1 -1
- package/dist/components/{p-2bXE-Vfv.js → p-C2lhNwAw.js} +3 -3
- package/dist/components/{p-2bXE-Vfv.js.map → p-C2lhNwAw.js.map} +1 -1
- package/dist/components/{p-C_lK5fHn.js → p-CD62_7I9.js} +23 -23
- package/dist/components/{p-C_lK5fHn.js.map → p-CD62_7I9.js.map} +1 -1
- package/dist/components/{p-B6C_M9Jr.js → p-CE9apE9h.js} +31 -31
- package/dist/components/{p-B6C_M9Jr.js.map → p-CE9apE9h.js.map} +1 -1
- package/dist/components/{p-DyYv3p94.js → p-CHxdUdXp.js} +3 -3
- package/dist/components/{p-DyYv3p94.js.map → p-CHxdUdXp.js.map} +1 -1
- package/dist/components/{p-Dj99qyJ3.js → p-CXsByTmW.js} +5 -5
- package/dist/components/{p-Dj99qyJ3.js.map → p-CXsByTmW.js.map} +1 -1
- package/dist/components/p-CelgQqJU.js +192 -0
- package/dist/components/p-CelgQqJU.js.map +1 -0
- package/dist/components/{p-COiHEYHM.js → p-CfSWSyFi.js} +4 -4
- package/dist/components/{p-COiHEYHM.js.map → p-CfSWSyFi.js.map} +1 -1
- package/dist/components/{p-BRLg6H-E.js → p-CfVpiH3G.js} +3 -3
- package/dist/components/{p-BRLg6H-E.js.map → p-CfVpiH3G.js.map} +1 -1
- package/dist/components/{p-Dzb4S0Ql.js → p-CnNHkU1E.js} +8 -8
- package/dist/components/{p-Dzb4S0Ql.js.map → p-CnNHkU1E.js.map} +1 -1
- package/dist/components/{p-Bt1Mbyo5.js → p-Coh5sPoS.js} +3 -3
- package/dist/components/{p-Bt1Mbyo5.js.map → p-Coh5sPoS.js.map} +1 -1
- package/dist/components/{p-DCescN3V.js → p-D3Qd1n_P.js} +3 -3
- package/dist/components/{p-DCescN3V.js.map → p-D3Qd1n_P.js.map} +1 -1
- package/dist/components/{p-BCPPCoYO.js → p-D4UyMIEq.js} +3 -3
- package/dist/components/{p-BCPPCoYO.js.map → p-D4UyMIEq.js.map} +1 -1
- package/dist/components/{p-nPHjU3jr.js → p-D5qrC2lA.js} +3 -3
- package/dist/components/{p-nPHjU3jr.js.map → p-D5qrC2lA.js.map} +1 -1
- package/dist/components/{p-Cffi7D48.js → p-DJajrAgg.js} +3 -3
- package/dist/components/{p-Cffi7D48.js.map → p-DJajrAgg.js.map} +1 -1
- package/dist/components/{p-B6clCy4A.js → p-DQZVOwPH.js} +3 -3
- package/dist/components/{p-B6clCy4A.js.map → p-DQZVOwPH.js.map} +1 -1
- package/dist/components/{p-B0o5xunX.js → p-DhtHRxq1.js} +3 -3
- package/dist/components/{p-B0o5xunX.js.map → p-DhtHRxq1.js.map} +1 -1
- package/dist/components/{p-CSWehFEc.js → p-DlQNeDle.js} +3 -3
- package/dist/components/{p-CSWehFEc.js.map → p-DlQNeDle.js.map} +1 -1
- package/dist/components/{p-CJcp_GoJ.js → p-DosSBspi.js} +3 -3
- package/dist/components/{p-CJcp_GoJ.js.map → p-DosSBspi.js.map} +1 -1
- package/dist/components/{p-jTVu8Py-.js → p-ENcpb5di.js} +4 -4
- package/dist/components/{p-jTVu8Py-.js.map → p-ENcpb5di.js.map} +1 -1
- package/dist/components/{p-BW7q0oI_.js → p-G063shWV.js} +3 -3
- package/dist/components/{p-BW7q0oI_.js.map → p-G063shWV.js.map} +1 -1
- package/dist/components/{p-6cQLqvfv.js → p-_Y7InDst.js} +3 -3
- package/dist/components/{p-6cQLqvfv.js.map → p-_Y7InDst.js.map} +1 -1
- package/dist/components/{p-BELvPT6B.js → p-gi3_0xjc.js} +3 -3
- package/dist/components/{p-BELvPT6B.js.map → p-gi3_0xjc.js.map} +1 -1
- package/dist/components/{p-BFr5rgUi.js → p-kop9MA9K.js} +3 -3
- package/dist/components/{p-BFr5rgUi.js.map → p-kop9MA9K.js.map} +1 -1
- package/dist/components/{p-CLUzc1bh.js → p-lfia5tlH.js} +3 -3
- package/dist/components/{p-CLUzc1bh.js.map → p-lfia5tlH.js.map} +1 -1
- package/dist/components/{p-Dqb4SZcE.js → p-vzH8CS8d.js} +4 -4
- package/dist/components/{p-Dqb4SZcE.js.map → p-vzH8CS8d.js.map} +1 -1
- package/dist/components/textarea-component.js +1 -1
- package/dist/components/tooltip-component.js +1 -1
- package/dist/esm/calendar-agenda-fill-icon_38.entry.js +1 -1
- package/dist/esm/calendar-agenda-fill-icon_38.entry.js.map +1 -1
- package/dist/esm/info-icon.tooltip-component.entry.js.map +1 -1
- package/dist/esm/info-icon_2.entry.js +151 -6
- package/dist/esm/info-icon_2.entry.js.map +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/nylas-web-elements.js +1 -1
- package/dist/nylas-web-elements/info-icon.tooltip-component.entry.esm.js.map +1 -1
- package/dist/nylas-web-elements/nylas-web-elements.esm.js +1 -1
- package/dist/nylas-web-elements/p-2890bb11.entry.js +2 -0
- package/dist/nylas-web-elements/p-2890bb11.entry.js.map +1 -0
- package/dist/nylas-web-elements/{p-2fcae310.entry.js → p-545e93e8.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-2fcae310.entry.js.map → p-545e93e8.entry.js.map} +1 -1
- package/dist/types/components/design-system/tooltip-component/toolitp-component.d.ts +25 -3
- package/dist/types/components.d.ts +8 -4
- package/package.json +4 -3
- package/dist/components/p-BT4xqZtB.js.map +0 -1
- package/dist/components/p-C6fgjGAL.js +0 -43
- package/dist/components/p-C6fgjGAL.js.map +0 -1
- package/dist/nylas-web-elements/p-4ebae0d7.entry.js +0 -2
- package/dist/nylas-web-elements/p-4ebae0d7.entry.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"p-pjEuYJeR.js","mappings":"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","names":["__stencil_proxyCustomElement","HTMLElement","i18next"],"sources":["src/components/scheduler-editor/nylas-availability-picker/nylas-availability-picker.scss?tag=nylas-availability-picker&encapsulation=shadow","src/components/scheduler-editor/nylas-availability-picker/nylas-availability-picker.tsx"],"sourcesContent":["@use '../../../common/styles/variables' as *;\n\n:host {\n display: block;\n @include default-css-variables;\n width: inherit;\n}\n\n.nylas-availability-picker {\n width: inherit;\n display: flex;\n flex-direction: column;\n margin: 1rem;\n border-radius: var(--nylas-border-radius-2x);\n border: 1px solid var(--nylas-base-200);\n\n .header {\n padding: 1rem;\n border-bottom: 1px solid var(--nylas-base-200);\n\n h3 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n line-height: 20px;\n color: var(--nylas-base-900);\n text-align: left;\n }\n\n p {\n margin: 0.25rem 0 0 0;\n font-size: 0.875rem;\n font-weight: 400;\n line-height: 20px;\n color: var(--nylas-base-600);\n text-align: left;\n display: flex;\n align-items: center;\n gap: 4px;\n }\n }\n\n .content {\n padding: 1rem;\n border-radius: var(--nylas-border-radius-2x);\n color: var(--nylas-base-900);\n font-size: 16px;\n font-family: var(--nylas-font-family);\n background: var(--nylas-base-25);\n\n @media #{$small-mobile} {\n font-size: 15px;\n }\n\n .select-timezone {\n display: flex;\n justify-content: space-between;\n align-items: center;\n border-bottom: 1px solid var(--nylas-base-200);\n padding-bottom: 1rem;\n gap: 1rem;\n\n h4 {\n display: flex;\n gap: 0.5rem;\n align-items: center;\n margin: 0;\n font-size: 16px;\n font-weight: 500;\n line-height: 20px;\n\n @media #{$small-mobile} {\n font-size: 15px;\n }\n }\n }\n\n .availability {\n display: flex;\n flex-direction: column;\n gap: 1rem;\n padding: 0 0.5rem;\n margin: 1rem 0;\n\n @media #{$small-mobile} {\n gap: 0.5rem;\n padding: 0;\n }\n\n .availability-day {\n display: grid;\n grid-template-columns: minmax(auto, 65px) 1fr minmax(auto, 40px);\n\n gap: 1rem;\n align-items: baseline;\n\n @media #{$mobile} {\n grid-template-columns: 78px 1fr auto;\n }\n\n @media #{$small-mobile} {\n display: inline-grid;\n gap: 8px;\n grid-template-columns: 60px 1fr auto;\n }\n\n .day {\n display: flex;\n gap: 0.5rem;\n align-items: center;\n\n @media #{$small-mobile} {\n gap: 0.25rem;\n }\n\n input[type='checkbox'] {\n transform: scale(1.3);\n }\n }\n\n .time-ranges {\n span.unavailable {\n height: 48px;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .time-range {\n display: flex;\n gap: 1.5rem;\n justify-content: space-between;\n align-items: baseline;\n\n @media #{$small-mobile} {\n justify-content: unset;\n gap: 0.5rem;\n }\n\n .pickers {\n display: flex;\n gap: 1rem;\n\n @media #{$small-mobile} {\n gap: 0.5rem;\n }\n\n span {\n margin-top: 0.75rem;\n }\n }\n\n &:not(:last-of-type) {\n margin-bottom: 1rem;\n }\n }\n\n .error-message {\n width: 100%;\n padding: 4px 8px;\n background: var(--nylas-error-50);\n color: var(--nylas-error);\n font-size: 12px;\n border-radius: 4px;\n border: 1px solid var(--nylas-error-200);\n margin-top: 8px;\n }\n }\n\n button {\n border: none;\n background: transparent;\n height: 40px;\n cursor: pointer;\n color: var(--nylas-base-800);\n\n &:hover,\n &:active {\n color: var(--nylas-primary);\n }\n }\n }\n }\n }\n}\n\nselect-dropdown {\n width: auto;\n}\n\nselect-dropdown::part(sd_dropdown-button) {\n justify-content: initial;\n}\n","import { RegisterComponent } from '@/common/register-component';\nimport { NylasSchedulerConfigConnector } from '@/connector/nylas-scheduler-config-connector';\nimport { convertTo12HourFormat, convertTo24HourFormat, debug, minutesToTime, timeToMinutes } 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 { DEFAULT_OPEN_HOURS, TIMEZONE_MAP } from '@/common/constants';\nimport { Configuration, ThemeConfig } from '@nylas/core';\nimport i18next from '@/utils/i18n';\nimport { LANGUAGE_CODE } from '@/common/constants';\n\nexport type OpenHours = {\n days: number[];\n start: string;\n end: string;\n timezone: string;\n};\n\nexport type Schedule = {\n SUN: { start: string; end: string }[];\n MON: { start: string; end: string }[];\n TUE: { start: string; end: string }[];\n WED: { start: string; end: string }[];\n THU: { start: string; end: string }[];\n FRI: { start: string; end: string }[];\n SAT: { start: string; end: string }[];\n};\n\n/**\n * The `nylas-availability-picker` component is a form input for selecting availability (open hours).\n * @part nap__header - The header of the availability picker\n * @part nap__select-timezone - The timezone selection container\n * @part nap__select-timezone-button - The timezone selection button\n * @part nap__select-timezone-dropdown-content - The timezone selection dropdown content\n * @part nap__availability - The availability container\n * @part nap__day - The day container\n * @part nap__time-ranges - The time ranges container\n * @part nap__time-range - The time range container\n * @part nap__add-time-range - The add time range button\n * @part nap__time-picker-container - The time picker container\n * @part nap__time-picker-input - The time picker input\n * @part nap__time-picker-times - The time picker times\n */\n@Component({\n tag: 'nylas-availability-picker',\n styleUrl: 'nylas-availability-picker.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class NylasAvailabilityPicker {\n /**\n * The element <nylas-availability-picker> itself.\n */\n @Element() host!: HTMLNylasAvailabilityPickerElement;\n /**\n * @standalone\n * The name of the availability picker.\n */\n @Prop() name: string = 'availability';\n /**\n * @standalone\n * The selected configuration.\n */\n @Prop() selectedConfiguration?: Configuration;\n /**\n * @standalone\n * The open hours to display.\n */\n @Prop() openHours?: OpenHours[];\n /**\n * @standalone\n * The default timezone or preset timezone.\n */\n @Prop() defaultTimezone: string = Intl.DateTimeFormat().resolvedOptions().timeZone;\n /**\n * @standalone\n * Hide the header of the availability picker.\n */\n @Prop() hideHeader: boolean = false;\n /**\n * The selected language.\n */\n @Prop() selectedLanguage?: LANGUAGE_CODE;\n /**\n * @standalone\n * The theme configuration.\n */\n @Prop({ attribute: 'theme-config' }) readonly themeConfig?: ThemeConfig;\n\n /**\n * This event is fired when the selected availability / open hours change.\n * The value is a stringified JSON object with the open hours and timezone.\n ```\n {\n openHours: OpenHours[],\n timezone: string\n }\n ```\n */\n @Event() valueChanged!: EventEmitter<{\n value: string;\n name: string;\n }>;\n\n /**\n * The element internals.\n */\n @AttachInternals() internals!: ElementInternals;\n @State() schedule = {\n SUN: [],\n MON: [{ start: '09:00am', end: '05:00pm' }],\n TUE: [{ start: '09:00am', end: '05:00pm' }],\n WED: [{ start: '09:00am', end: '05:00pm' }],\n THU: [{ start: '09:00am', end: '05:00pm' }],\n FRI: [{ start: '09:00am', end: '05:00pm' }],\n SAT: [],\n };\n /**\n * The selected timezone state.\n */\n @State() timezone: string = '';\n\n /**\n * The overlapping time ranges state. This is used to display an error message when there are overlapping time ranges.\n */\n @State() overlapDays: { [key: string]: number[] } = {};\n\n /**\n * State for tracking time window validation errors (e.g., start time after end time)\n */\n @State() timeWindowErrors: { [key: string]: 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-availability-picker', 'elementNameChangedHandler', newValue);\n this.host.setAttribute('name', newValue);\n }\n\n @Watch('openHours')\n openHoursChanged(newValue: OpenHours[]) {\n // Only process if we have a non-empty array and timezone is already set\n // This prevents processing during initialization and handles null/undefined consistently\n if (newValue && newValue.length > 0 && this.timezone) {\n this.openHoursToSchedule(newValue);\n }\n }\n\n @Watch('selectedConfiguration')\n configChangedHandler(newConfig: Configuration) {\n const defaultOpenHours = newConfig?.availability?.availability_rules?.default_open_hours ?? DEFAULT_OPEN_HOURS;\n // If the name is `availability`, we are setting the default open hours. If the name is `participant-****`, we are setting the participant's custom availability.\n // Set the timezone accordingly.\n const defaultOpenHoursTimezone = newConfig?.event_booking?.timezone || this.defaultTimezone;\n this.timezone = this.name === 'availability' ? defaultOpenHoursTimezone : this.defaultTimezone;\n\n // Process openHours if available, otherwise fall back to defaultOpenHours\n // The openHours watcher will handle openHours changes separately to avoid redundant calls\n if (this.openHours && this.openHours.length > 0) {\n this.openHoursToSchedule(this.openHours);\n } else if (defaultOpenHours) {\n this.openHoursToSchedule(defaultOpenHours);\n }\n }\n\n /**\n * Normalize time format to ensure consistent parsing across languages\n */\n private normalizeTimeFormat(timeStr: string): string {\n // Normalize Spanish AM/PM formats (a.m./p.m.) to English am/pm\n return timeStr.replace(/a\\.?m\\.?/gi, 'am').replace(/p\\.?m\\.?/gi, 'pm');\n }\n\n scheduleChanged(newValue: Schedule, valueChanged: boolean = true) {\n const overlapDays: { [key: string]: number[] } = {};\n Object.keys(newValue).forEach(key => {\n const dayTimeRanges = newValue[key];\n if (dayTimeRanges.length > 0) {\n // Normalize time formats before checking overlaps\n const normalizedTimeRanges = dayTimeRanges.map(range => ({\n start: this.normalizeTimeFormat(range.start),\n end: this.normalizeTimeFormat(range.end),\n }));\n const overlaps = this.getOverlaps(normalizedTimeRanges);\n if (overlaps.length > 0) {\n overlapDays[key] = overlaps;\n }\n }\n });\n this.overlapDays = overlapDays;\n\n // Clean up timeWindowErrors for non-existent time ranges\n this.cleanupTimeWindowErrors(newValue);\n\n this.updateFormValidity();\n\n if (valueChanged) {\n this.valueChanged.emit({\n value: JSON.stringify({\n openHours: this.scheduleToOpenHours(newValue),\n timezone: this.timezone,\n }),\n name: this.name,\n });\n }\n }\n\n /**\n * Clean up timeWindowErrors for time ranges that no longer exist in the schedule\n */\n private cleanupTimeWindowErrors(schedule: Schedule) {\n const newTimeWindowErrors = { ...this.timeWindowErrors };\n let hasChanges = false;\n\n // Get all valid time range keys from current schedule\n const validKeys = new Set<string>();\n Object.keys(schedule).forEach(day => {\n const timeRanges = schedule[day];\n timeRanges.forEach((_, index) => {\n validKeys.add(`${day}:${index}_start`);\n validKeys.add(`${day}:${index}_end`);\n });\n });\n\n // Remove errors for keys that no longer exist\n Object.keys(newTimeWindowErrors).forEach(errorKey => {\n if (!validKeys.has(errorKey)) {\n delete newTimeWindowErrors[errorKey];\n hasChanges = true;\n }\n });\n\n if (hasChanges) {\n this.timeWindowErrors = newTimeWindowErrors;\n }\n }\n\n /**\n * Updates form validity based on both overlap errors and time window errors\n */\n updateFormValidity() {\n const hasOverlapErrors = Object.keys(this.overlapDays).length > 0;\n const hasTimeWindowErrors = Object.keys(this.timeWindowErrors).filter(key => this.timeWindowErrors[key]).length > 0;\n\n if (hasOverlapErrors) {\n const element = this.host.shadowRoot?.getElementById(Object.keys(this.overlapDays)[0]) as HTMLInputElement;\n if (element) {\n debug('nylas-availability-picker', 'The time ranges are overlapping. Overlap: ', this.overlapDays);\n this.isInternalsAvailable && this.internals.setValidity({ customError: true }, 'Overlapping time ranges found', element);\n }\n } else if (hasTimeWindowErrors) {\n const firstErrorKey = Object.keys(this.timeWindowErrors).find(key => this.timeWindowErrors[key]);\n const element = this.host.shadowRoot?.getElementById(firstErrorKey!) as HTMLInputElement;\n const errorMessage = this.timeWindowErrors[firstErrorKey!];\n if (element) {\n this.isInternalsAvailable && this.internals.setValidity({ customError: true }, errorMessage, element);\n }\n } else {\n this.isInternalsAvailable && this.internals.setValidity({ customError: false });\n this.isInternalsAvailable &&\n this.internals.setFormValue(\n JSON.stringify({\n openHours: this.scheduleToOpenHours(this.schedule),\n timezone: this.timezone,\n }),\n this.name,\n );\n }\n }\n\n @Watch('selectedLanguage')\n selectedLanguageChangedHandler(newVal: LANGUAGE_CODE, oldVal: LANGUAGE_CODE) {\n if (newVal === oldVal) return;\n i18next.changeLanguage(newVal);\n }\n\n @Listen('nylasFormDropdownChanged')\n nylasFormDropdownChangedHandler(\n event: CustomEvent<{\n value: string;\n name: string;\n }>,\n ) {\n const { name, value } = event.detail;\n if (name === 'timezone') {\n this.timezone = value;\n const updateValue = {\n openHours: this.scheduleToOpenHours(this.schedule),\n timezone: this.timezone,\n };\n this.isInternalsAvailable && this.internals.setFormValue(JSON.stringify(updateValue), this.name);\n this.valueChanged.emit({\n value: JSON.stringify(updateValue),\n name: this.name,\n });\n }\n }\n\n @Watch('themeConfig')\n themeConfigChangedHandler(newVal: ThemeConfig, oldVal: ThemeConfig) {\n if (newVal === oldVal) return;\n this.applyThemeConfig(newVal);\n }\n\n connectedCallback() {\n debug('nylas-availability-picker', 'connectedCallback');\n }\n\n disconnectedCallback() {\n debug('nylas-availability-picker', 'disconnectedCallback');\n }\n\n componentWillLoad() {\n debug('nylas-availability-picker', 'componentWillLoad');\n this.host.setAttribute('name', this.name);\n }\n\n componentDidLoad() {\n debug('nylas-availability-picker', 'componentDidLoad');\n\n if (this.selectedConfiguration) {\n this.configChangedHandler(this.selectedConfiguration);\n } else {\n this.timezone = this.defaultTimezone;\n if (this.openHours && this.openHours.length > 0) {\n this.openHoursToSchedule(this.openHours);\n }\n }\n\n const updateValue = {\n openHours: this.scheduleToOpenHours(this.schedule),\n timezone: this.timezone,\n };\n this.isInternalsAvailable && this.internals.setFormValue(JSON.stringify(updateValue), this.name);\n\n // Set initial form validity\n this.updateFormValidity();\n }\n\n get isInternalsAvailable() {\n return typeof this.internals.setFormValue === 'function';\n }\n\n getOverlaps(timeRanges) {\n // Convert times to minutes and add to the array\n const timeRangesInMinutes = timeRanges.map((range, index) => ({\n start: timeToMinutes(range.start),\n end: timeToMinutes(range.end),\n originalIndex: index,\n }));\n\n // Sort by start time\n timeRangesInMinutes.sort((a, b) => a.start - b.start);\n const overlaps: number[] = [];\n // Check for overlap\n for (let i = 1; i < timeRangesInMinutes.length; i++) {\n if (timeRangesInMinutes[i].start < timeRangesInMinutes[i - 1].end) {\n // Add both overlapping time range indices if they are not already included\n if (!overlaps.includes(timeRangesInMinutes[i].originalIndex)) {\n overlaps.push(timeRangesInMinutes[i].originalIndex);\n }\n if (!overlaps.includes(timeRangesInMinutes[i - 1].originalIndex)) {\n overlaps.push(timeRangesInMinutes[i - 1].originalIndex);\n }\n }\n }\n return overlaps.sort((a, b) => a - b); // Return sorted list of indices\n }\n\n addTimeRange(day) {\n const currentTimeRanges = this.schedule[day];\n\n // Default working hours are from 00:00 to 23:45 for calculation purposes\n const dayStart = 0; // Start of the day in minutes (00:00)\n const dayEnd = 1425; // End of the day in minutes (23:45)\n\n if (currentTimeRanges.length === 0) {\n // If there are no existing time ranges, add one at the start of the day\n this.schedule[day] = [{ start: '09:00am', end: '05:00pm' }]; // Example range\n } else {\n // Convert all time ranges to minutes for comparison\n const timeRangesInMinutes = currentTimeRanges\n .map(range => ({\n start: timeToMinutes(range.start),\n end: timeToMinutes(range.end),\n }))\n .sort((a, b) => a.start - b.start); // Sort by start time\n\n // Attempt to add a new time range at the end of the day\n const lastRangeEnd = timeRangesInMinutes[timeRangesInMinutes.length - 1].end;\n if (lastRangeEnd + 60 <= dayEnd) {\n // There's room at the end of the day\n this.schedule[day].push({\n start: convertTo12HourFormat(minutesToTime(lastRangeEnd)),\n end: convertTo12HourFormat(minutesToTime(lastRangeEnd + 60)),\n });\n } else {\n // No room at the end, look for gaps at the beginning of the day\n let gapFound = false;\n if (timeRangesInMinutes[0].start > dayStart + 60) {\n // There's room for at least a 1-hour meeting at the beginning of the day\n this.schedule[day].push({\n start: convertTo12HourFormat(minutesToTime(dayStart)),\n end: convertTo12HourFormat(minutesToTime(dayStart + 60)),\n });\n gapFound = true;\n }\n\n if (!gapFound) {\n // Search for gaps between scheduled time ranges\n for (let i = 0; i < timeRangesInMinutes.length - 1; i++) {\n const currentEnd = timeRangesInMinutes[i].end;\n const nextStart = timeRangesInMinutes[i + 1].start;\n\n if (nextStart - currentEnd >= 60) {\n // Found a gap\n this.schedule[day].push({\n start: convertTo12HourFormat(minutesToTime(currentEnd)),\n end: convertTo12HourFormat(minutesToTime(currentEnd + 60)),\n });\n break; // Exit the loop after adding a time range\n }\n }\n }\n }\n }\n\n // Sort the updated schedule to maintain order\n this.schedule[day].sort((a, b) => timeToMinutes(a.start) - timeToMinutes(b.start));\n\n this.schedule = { ...this.schedule };\n this.scheduleChanged(this.schedule);\n }\n\n removeTimeRange(day, index) {\n // Clear any time window errors for the removed time range\n const startKey = `${day}:${index}_start`;\n const endKey = `${day}:${index}_end`;\n\n const newTimeWindowErrors = { ...this.timeWindowErrors };\n delete newTimeWindowErrors[startKey];\n delete newTimeWindowErrors[endKey];\n this.timeWindowErrors = newTimeWindowErrors;\n\n this.schedule[day].splice(index, 1);\n this.schedule = { ...this.schedule };\n this.scheduleChanged(this.schedule);\n }\n\n @Listen('timeChange')\n setTime(event: CustomEvent<{ key: string; value: string }>) {\n const { key, value } = event.detail;\n const [dayIndex, timeType] = key.split('_');\n const [day, index] = dayIndex.split(':');\n\n if (timeType === 'start') {\n this.schedule[day][index].start = value;\n } else if (timeType === 'end') {\n this.schedule[day][index].end = value;\n }\n\n // Clear any existing time window error for this specific key\n if (this.timeWindowErrors[key]) {\n const newErrors = { ...this.timeWindowErrors };\n delete newErrors[key];\n this.timeWindowErrors = newErrors;\n }\n\n this.schedule = { ...this.schedule };\n this.scheduleChanged(this.schedule);\n }\n\n @Listen('timeWindowFormError')\n setFormError(event: CustomEvent<{ key: string; message: string }>) {\n const { key, message } = event.detail;\n\n if (message) {\n // Set the error for this specific time input\n this.timeWindowErrors = {\n ...this.timeWindowErrors,\n [key]: message,\n };\n } else {\n // Clear the error for this specific time input\n const newErrors = { ...this.timeWindowErrors };\n delete newErrors[key];\n this.timeWindowErrors = newErrors;\n }\n\n // Update overall form validity\n this.updateFormValidity();\n }\n\n openHoursToSchedule(openHours: OpenHours[]) {\n const newSchedule = {\n SUN: [],\n MON: [],\n TUE: [],\n WED: [],\n THU: [],\n FRI: [],\n SAT: [],\n };\n openHours.forEach(openHour => {\n if (!openHour.days) return;\n openHour.days.forEach(day => {\n const dayKey = this.getDayKey(day);\n const start12hr = this.normalizeTimeFormat(convertTo12HourFormat(openHour.start));\n const end12hr = this.normalizeTimeFormat(convertTo12HourFormat(openHour.end));\n const timeRange = { start: start12hr, end: end12hr };\n\n // Check if the time range already exists for the day\n let timeRangeExists = false;\n if (newSchedule[dayKey]) {\n // Search for an existing time range that matches the current one\n timeRangeExists = newSchedule[dayKey].some(range => range.start === timeRange.start && range.end === timeRange.end);\n }\n\n if (!timeRangeExists) {\n if (newSchedule[dayKey]) {\n newSchedule[dayKey].push(timeRange);\n } else {\n newSchedule[dayKey] = [timeRange];\n }\n }\n });\n });\n\n this.schedule = newSchedule;\n this.scheduleChanged(this.schedule, false);\n }\n\n getDayKey(dayIndex: number): string {\n const days = ['SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT'];\n return days[dayIndex];\n }\n\n scheduleToOpenHours(schedule: Schedule): OpenHours[] {\n const dayKeys = ['SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT'];\n const openHoursMap: Map<string, { days: number[]; start: string; end: string }> = new Map();\n\n dayKeys.forEach((dayKey, index) => {\n if (schedule[dayKey]) {\n // Check if schedule for the day exists\n schedule[dayKey].forEach(timeRange => {\n const start24hr = convertTo24HourFormat(timeRange.start);\n const end24hr = convertTo24HourFormat(timeRange.end);\n const key = `${start24hr}-${end24hr}`;\n\n if (!openHoursMap.has(key)) {\n openHoursMap.set(key, { days: [index], start: start24hr, end: end24hr });\n } else {\n const entry = openHoursMap.get(key);\n if (entry) {\n entry.days.push(index);\n openHoursMap.set(key, entry);\n }\n }\n });\n }\n });\n\n const selectedOpenHours: OpenHours[] = [];\n openHoursMap.forEach((value, _key) => {\n selectedOpenHours.push({\n days: value.days,\n start: value.start,\n end: value.end,\n timezone: this.timezone,\n });\n });\n\n return selectedOpenHours;\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 @RegisterComponent<NylasAvailabilityPicker, NylasSchedulerConfigConnector, Exclude<NylasSchedulerEditor['stores'], undefined>>({\n name: 'nylas-availability-picker',\n stateToProps: new Map([\n ['schedulerConfig.selectedConfiguration', 'selectedConfiguration'],\n ['schedulerConfig.selectedLanguage', 'selectedLanguage'],\n ['schedulerConfig.themeConfig', 'themeConfig'],\n ]),\n fireRegisterEvent: true,\n })\n render() {\n const timezoneOptions = Object.keys(TIMEZONE_MAP).map(key => ({\n label: TIMEZONE_MAP[key],\n value: key,\n }));\n const selectedTimezoneOption = timezoneOptions.find(i => i.value === this.timezone);\n\n return (\n <Host>\n <div class=\"nylas-availability-picker\" part=\"nap\">\n {!this.hideHeader && (\n <div class=\"header\" part=\"nap__header\">\n <h3>{i18next.t('nylasAvailabilityPicker.headerTitle')}</h3>\n <p>\n {i18next.t('nylasAvailabilityPicker.headerSubTitle')}\n <tooltip-component>\n <info-icon slot=\"tooltip-icon\" />\n <span slot=\"tooltip-content\">{i18next.t('nylasAvailabilityPicker.tooltip.desc')}</span>\n </tooltip-component>\n </p>\n </div>\n )}\n <div class=\"content\">\n <div class=\"select-timezone\" part=\"nap__select-timezone\">\n <h4 class=\"sub-header\">{i18next.t('nylasAvailabilityPicker.selectTimezone')}</h4>\n {selectedTimezoneOption?.label && (\n <select-dropdown\n name=\"timezone\"\n searchPlaceholder={i18next.t('search')}\n exportparts=\"sd_dropdown: nap__timezone-container, sd_dropdown-button: nap__timezone-button, sd_dropdown-content: nap__timezone-dropdown-content\"\n options={timezoneOptions}\n defaultSelectedOption={selectedTimezoneOption}\n themeConfig={this.themeConfig}\n >\n <span slot=\"select-icon\">\n <globe-icon width=\"20\" height=\"20\" />\n </span>\n </select-dropdown>\n )}\n </div>\n <div class=\"availability\" part=\"nap__availability\">\n {Object.keys(this.schedule).map(key => {\n const day = key;\n const timeRanges = this.schedule[key] as { start: string; end: string }[];\n return (\n <div class=\"availability-day\">\n <div class=\"day\" part=\"nap__day\">\n <input\n type=\"checkbox\"\n name={day}\n id={day}\n checked={timeRanges.length > 0}\n onClick={() => {\n if (timeRanges.length > 0) {\n // Clear any time window errors for this day when toggling off\n const newTimeWindowErrors = { ...this.timeWindowErrors };\n Object.keys(newTimeWindowErrors).forEach(errorKey => {\n if (errorKey.startsWith(`${day}:`)) {\n delete newTimeWindowErrors[errorKey];\n }\n });\n this.timeWindowErrors = newTimeWindowErrors;\n\n this.schedule[day] = [];\n } else {\n this.schedule[day] = [{ start: '09:00am', end: '05:00pm' }];\n }\n this.schedule = { ...this.schedule };\n this.scheduleChanged(this.schedule);\n }}\n />\n <label htmlFor={day} aria-label=\"Select day\">\n {i18next.t(`nylasAvailabilityPicker.days.${day}`)}\n </label>\n </div>\n <div class=\"time-ranges\" part=\"nap__time-ranges\">\n {timeRanges.length ? null : <span class=\"unavailable\">{i18next.t('nylasAvailabilityPicker.unavailable')}</span>}\n {timeRanges.length > 0 &&\n timeRanges.map((timeRange, timeRangeIndex) => {\n const startKey = `${key}:${timeRangeIndex}_start`;\n const endKey = `${key}:${timeRangeIndex}_end`;\n return (\n <div class=\"time-range\" part=\"nap__time-range\">\n <div class=\"pickers\">\n <nylas-time-window-picker\n id={startKey}\n hasError={this.overlapDays[day]?.includes(timeRangeIndex) || !!this.timeWindowErrors[startKey]}\n time={timeRange.start}\n name={startKey}\n key={startKey}\n language={this.selectedLanguage}\n themeConfig={this.themeConfig}\n exportparts=\"time-picker: nap__time-picker-container, time-input: nap__time-picker-input, times: nap__time-picker-times\"\n />\n <span> - </span>\n <nylas-time-window-picker\n id={endKey}\n hasError={this.overlapDays[day]?.includes(timeRangeIndex) || !!this.timeWindowErrors[endKey]}\n time={timeRange.end}\n name={endKey}\n key={endKey}\n minimumStartTime={timeRange.start}\n language={this.selectedLanguage}\n themeConfig={this.themeConfig}\n exportparts=\"time-picker: nap__time-picker-container, time-input: nap__time-picker-input, times: nap__time-picker-times\"\n />\n </div>\n <button onClick={() => this.removeTimeRange(day, timeRangeIndex)}>\n <close-icon />\n </button>\n </div>\n );\n })}\n {(this.overlapDays[day] || Object.keys(this.timeWindowErrors).find(key => key.startsWith(`${day}:`) && this.timeWindowErrors[key])) && (\n <div class=\"error-message\" part=\"nap__error-message\">\n {this.overlapDays[day] ? i18next.t('nylasAvailabilityPicker.errors.overlappingTimeRanges') : ''}\n {!this.overlapDays[day] && Object.keys(this.timeWindowErrors).find(key => key.startsWith(`${day}:`) && this.timeWindowErrors[key])\n ? this.timeWindowErrors[Object.keys(this.timeWindowErrors).find(key => key.startsWith(`${day}:`) && this.timeWindowErrors[key])!]\n : ''}\n </div>\n )}\n </div>\n <div>\n {timeRanges.length > 0 ? (\n <button onClick={() => this.addTimeRange(day)} part=\"nap__add-time-range\">\n <add-circle-icon />\n </button>\n ) : null}\n </div>\n </div>\n );\n })}\n </div>\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
|
|
1
|
+
{"file":"p-Bk42j8OF.js","mappings":"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","names":["__stencil_proxyCustomElement","HTMLElement","i18next"],"sources":["src/components/scheduler-editor/nylas-availability-picker/nylas-availability-picker.scss?tag=nylas-availability-picker&encapsulation=shadow","src/components/scheduler-editor/nylas-availability-picker/nylas-availability-picker.tsx"],"sourcesContent":["@use '../../../common/styles/variables' as *;\n\n:host {\n display: block;\n @include default-css-variables;\n width: inherit;\n}\n\n.nylas-availability-picker {\n width: inherit;\n display: flex;\n flex-direction: column;\n margin: 1rem;\n border-radius: var(--nylas-border-radius-2x);\n border: 1px solid var(--nylas-base-200);\n\n .header {\n padding: 1rem;\n border-bottom: 1px solid var(--nylas-base-200);\n\n h3 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n line-height: 20px;\n color: var(--nylas-base-900);\n text-align: left;\n }\n\n p {\n margin: 0.25rem 0 0 0;\n font-size: 0.875rem;\n font-weight: 400;\n line-height: 20px;\n color: var(--nylas-base-600);\n text-align: left;\n display: flex;\n align-items: center;\n gap: 4px;\n }\n }\n\n .content {\n padding: 1rem;\n border-radius: var(--nylas-border-radius-2x);\n color: var(--nylas-base-900);\n font-size: 16px;\n font-family: var(--nylas-font-family);\n background: var(--nylas-base-25);\n\n @media #{$small-mobile} {\n font-size: 15px;\n }\n\n .select-timezone {\n display: flex;\n justify-content: space-between;\n align-items: center;\n border-bottom: 1px solid var(--nylas-base-200);\n padding-bottom: 1rem;\n gap: 1rem;\n\n h4 {\n display: flex;\n gap: 0.5rem;\n align-items: center;\n margin: 0;\n font-size: 16px;\n font-weight: 500;\n line-height: 20px;\n\n @media #{$small-mobile} {\n font-size: 15px;\n }\n }\n }\n\n .availability {\n display: flex;\n flex-direction: column;\n gap: 1rem;\n padding: 0 0.5rem;\n margin: 1rem 0;\n\n @media #{$small-mobile} {\n gap: 0.5rem;\n padding: 0;\n }\n\n .availability-day {\n display: grid;\n grid-template-columns: minmax(auto, 65px) 1fr minmax(auto, 40px);\n\n gap: 1rem;\n align-items: baseline;\n\n @media #{$mobile} {\n grid-template-columns: 78px 1fr auto;\n }\n\n @media #{$small-mobile} {\n display: inline-grid;\n gap: 8px;\n grid-template-columns: 60px 1fr auto;\n }\n\n .day {\n display: flex;\n gap: 0.5rem;\n align-items: center;\n\n @media #{$small-mobile} {\n gap: 0.25rem;\n }\n\n input[type='checkbox'] {\n transform: scale(1.3);\n }\n }\n\n .time-ranges {\n span.unavailable {\n height: 48px;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .time-range {\n display: flex;\n gap: 1.5rem;\n justify-content: space-between;\n align-items: baseline;\n\n @media #{$small-mobile} {\n justify-content: unset;\n gap: 0.5rem;\n }\n\n .pickers {\n display: flex;\n gap: 1rem;\n\n @media #{$small-mobile} {\n gap: 0.5rem;\n }\n\n span {\n margin-top: 0.75rem;\n }\n }\n\n &:not(:last-of-type) {\n margin-bottom: 1rem;\n }\n }\n\n .error-message {\n width: 100%;\n padding: 4px 8px;\n background: var(--nylas-error-50);\n color: var(--nylas-error);\n font-size: 12px;\n border-radius: 4px;\n border: 1px solid var(--nylas-error-200);\n margin-top: 8px;\n }\n }\n\n button {\n border: none;\n background: transparent;\n height: 40px;\n cursor: pointer;\n color: var(--nylas-base-800);\n\n &:hover,\n &:active {\n color: var(--nylas-primary);\n }\n }\n }\n }\n }\n}\n\nselect-dropdown {\n width: auto;\n}\n\nselect-dropdown::part(sd_dropdown-button) {\n justify-content: initial;\n}\n","import { RegisterComponent } from '@/common/register-component';\nimport { NylasSchedulerConfigConnector } from '@/connector/nylas-scheduler-config-connector';\nimport { convertTo12HourFormat, convertTo24HourFormat, debug, minutesToTime, timeToMinutes } 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 { DEFAULT_OPEN_HOURS, TIMEZONE_MAP } from '@/common/constants';\nimport { Configuration, ThemeConfig } from '@nylas/core';\nimport i18next from '@/utils/i18n';\nimport { LANGUAGE_CODE } from '@/common/constants';\n\nexport type OpenHours = {\n days: number[];\n start: string;\n end: string;\n timezone: string;\n};\n\nexport type Schedule = {\n SUN: { start: string; end: string }[];\n MON: { start: string; end: string }[];\n TUE: { start: string; end: string }[];\n WED: { start: string; end: string }[];\n THU: { start: string; end: string }[];\n FRI: { start: string; end: string }[];\n SAT: { start: string; end: string }[];\n};\n\n/**\n * The `nylas-availability-picker` component is a form input for selecting availability (open hours).\n * @part nap__header - The header of the availability picker\n * @part nap__select-timezone - The timezone selection container\n * @part nap__select-timezone-button - The timezone selection button\n * @part nap__select-timezone-dropdown-content - The timezone selection dropdown content\n * @part nap__availability - The availability container\n * @part nap__day - The day container\n * @part nap__time-ranges - The time ranges container\n * @part nap__time-range - The time range container\n * @part nap__add-time-range - The add time range button\n * @part nap__time-picker-container - The time picker container\n * @part nap__time-picker-input - The time picker input\n * @part nap__time-picker-times - The time picker times\n */\n@Component({\n tag: 'nylas-availability-picker',\n styleUrl: 'nylas-availability-picker.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class NylasAvailabilityPicker {\n /**\n * The element <nylas-availability-picker> itself.\n */\n @Element() host!: HTMLNylasAvailabilityPickerElement;\n /**\n * @standalone\n * The name of the availability picker.\n */\n @Prop() name: string = 'availability';\n /**\n * @standalone\n * The selected configuration.\n */\n @Prop() selectedConfiguration?: Configuration;\n /**\n * @standalone\n * The open hours to display.\n */\n @Prop() openHours?: OpenHours[];\n /**\n * @standalone\n * The default timezone or preset timezone.\n */\n @Prop() defaultTimezone: string = Intl.DateTimeFormat().resolvedOptions().timeZone;\n /**\n * @standalone\n * Hide the header of the availability picker.\n */\n @Prop() hideHeader: boolean = false;\n /**\n * The selected language.\n */\n @Prop() selectedLanguage?: LANGUAGE_CODE;\n /**\n * @standalone\n * The theme configuration.\n */\n @Prop({ attribute: 'theme-config' }) readonly themeConfig?: ThemeConfig;\n\n /**\n * This event is fired when the selected availability / open hours change.\n * The value is a stringified JSON object with the open hours and timezone.\n ```\n {\n openHours: OpenHours[],\n timezone: string\n }\n ```\n */\n @Event() valueChanged!: EventEmitter<{\n value: string;\n name: string;\n }>;\n\n /**\n * The element internals.\n */\n @AttachInternals() internals!: ElementInternals;\n @State() schedule = {\n SUN: [],\n MON: [{ start: '09:00am', end: '05:00pm' }],\n TUE: [{ start: '09:00am', end: '05:00pm' }],\n WED: [{ start: '09:00am', end: '05:00pm' }],\n THU: [{ start: '09:00am', end: '05:00pm' }],\n FRI: [{ start: '09:00am', end: '05:00pm' }],\n SAT: [],\n };\n /**\n * The selected timezone state.\n */\n @State() timezone: string = '';\n\n /**\n * The overlapping time ranges state. This is used to display an error message when there are overlapping time ranges.\n */\n @State() overlapDays: { [key: string]: number[] } = {};\n\n /**\n * State for tracking time window validation errors (e.g., start time after end time)\n */\n @State() timeWindowErrors: { [key: string]: 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-availability-picker', 'elementNameChangedHandler', newValue);\n this.host.setAttribute('name', newValue);\n }\n\n @Watch('openHours')\n openHoursChanged(newValue: OpenHours[]) {\n // Only process if we have a non-empty array and timezone is already set\n // This prevents processing during initialization and handles null/undefined consistently\n if (newValue && newValue.length > 0 && this.timezone) {\n this.openHoursToSchedule(newValue);\n }\n }\n\n @Watch('selectedConfiguration')\n configChangedHandler(newConfig: Configuration) {\n const defaultOpenHours = newConfig?.availability?.availability_rules?.default_open_hours ?? DEFAULT_OPEN_HOURS;\n // If the name is `availability`, we are setting the default open hours. If the name is `participant-****`, we are setting the participant's custom availability.\n // Set the timezone accordingly.\n const defaultOpenHoursTimezone = newConfig?.event_booking?.timezone || this.defaultTimezone;\n this.timezone = this.name === 'availability' ? defaultOpenHoursTimezone : this.defaultTimezone;\n\n // Process openHours if available, otherwise fall back to defaultOpenHours\n // The openHours watcher will handle openHours changes separately to avoid redundant calls\n if (this.openHours && this.openHours.length > 0) {\n this.openHoursToSchedule(this.openHours);\n } else if (defaultOpenHours) {\n this.openHoursToSchedule(defaultOpenHours);\n }\n }\n\n /**\n * Normalize time format to ensure consistent parsing across languages\n */\n private normalizeTimeFormat(timeStr: string): string {\n // Normalize Spanish AM/PM formats (a.m./p.m.) to English am/pm\n return timeStr.replace(/a\\.?m\\.?/gi, 'am').replace(/p\\.?m\\.?/gi, 'pm');\n }\n\n scheduleChanged(newValue: Schedule, valueChanged: boolean = true) {\n const overlapDays: { [key: string]: number[] } = {};\n Object.keys(newValue).forEach(key => {\n const dayTimeRanges = newValue[key];\n if (dayTimeRanges.length > 0) {\n // Normalize time formats before checking overlaps\n const normalizedTimeRanges = dayTimeRanges.map(range => ({\n start: this.normalizeTimeFormat(range.start),\n end: this.normalizeTimeFormat(range.end),\n }));\n const overlaps = this.getOverlaps(normalizedTimeRanges);\n if (overlaps.length > 0) {\n overlapDays[key] = overlaps;\n }\n }\n });\n this.overlapDays = overlapDays;\n\n // Clean up timeWindowErrors for non-existent time ranges\n this.cleanupTimeWindowErrors(newValue);\n\n this.updateFormValidity();\n\n if (valueChanged) {\n this.valueChanged.emit({\n value: JSON.stringify({\n openHours: this.scheduleToOpenHours(newValue),\n timezone: this.timezone,\n }),\n name: this.name,\n });\n }\n }\n\n /**\n * Clean up timeWindowErrors for time ranges that no longer exist in the schedule\n */\n private cleanupTimeWindowErrors(schedule: Schedule) {\n const newTimeWindowErrors = { ...this.timeWindowErrors };\n let hasChanges = false;\n\n // Get all valid time range keys from current schedule\n const validKeys = new Set<string>();\n Object.keys(schedule).forEach(day => {\n const timeRanges = schedule[day];\n timeRanges.forEach((_, index) => {\n validKeys.add(`${day}:${index}_start`);\n validKeys.add(`${day}:${index}_end`);\n });\n });\n\n // Remove errors for keys that no longer exist\n Object.keys(newTimeWindowErrors).forEach(errorKey => {\n if (!validKeys.has(errorKey)) {\n delete newTimeWindowErrors[errorKey];\n hasChanges = true;\n }\n });\n\n if (hasChanges) {\n this.timeWindowErrors = newTimeWindowErrors;\n }\n }\n\n /**\n * Updates form validity based on both overlap errors and time window errors\n */\n updateFormValidity() {\n const hasOverlapErrors = Object.keys(this.overlapDays).length > 0;\n const hasTimeWindowErrors = Object.keys(this.timeWindowErrors).filter(key => this.timeWindowErrors[key]).length > 0;\n\n if (hasOverlapErrors) {\n const element = this.host.shadowRoot?.getElementById(Object.keys(this.overlapDays)[0]) as HTMLInputElement;\n if (element) {\n debug('nylas-availability-picker', 'The time ranges are overlapping. Overlap: ', this.overlapDays);\n this.isInternalsAvailable && this.internals.setValidity({ customError: true }, 'Overlapping time ranges found', element);\n }\n } else if (hasTimeWindowErrors) {\n const firstErrorKey = Object.keys(this.timeWindowErrors).find(key => this.timeWindowErrors[key]);\n const element = this.host.shadowRoot?.getElementById(firstErrorKey!) as HTMLInputElement;\n const errorMessage = this.timeWindowErrors[firstErrorKey!];\n if (element) {\n this.isInternalsAvailable && this.internals.setValidity({ customError: true }, errorMessage, element);\n }\n } else {\n this.isInternalsAvailable && this.internals.setValidity({ customError: false });\n this.isInternalsAvailable &&\n this.internals.setFormValue(\n JSON.stringify({\n openHours: this.scheduleToOpenHours(this.schedule),\n timezone: this.timezone,\n }),\n this.name,\n );\n }\n }\n\n @Watch('selectedLanguage')\n selectedLanguageChangedHandler(newVal: LANGUAGE_CODE, oldVal: LANGUAGE_CODE) {\n if (newVal === oldVal) return;\n i18next.changeLanguage(newVal);\n }\n\n @Listen('nylasFormDropdownChanged')\n nylasFormDropdownChangedHandler(\n event: CustomEvent<{\n value: string;\n name: string;\n }>,\n ) {\n const { name, value } = event.detail;\n if (name === 'timezone') {\n this.timezone = value;\n const updateValue = {\n openHours: this.scheduleToOpenHours(this.schedule),\n timezone: this.timezone,\n };\n this.isInternalsAvailable && this.internals.setFormValue(JSON.stringify(updateValue), this.name);\n this.valueChanged.emit({\n value: JSON.stringify(updateValue),\n name: this.name,\n });\n }\n }\n\n @Watch('themeConfig')\n themeConfigChangedHandler(newVal: ThemeConfig, oldVal: ThemeConfig) {\n if (newVal === oldVal) return;\n this.applyThemeConfig(newVal);\n }\n\n connectedCallback() {\n debug('nylas-availability-picker', 'connectedCallback');\n }\n\n disconnectedCallback() {\n debug('nylas-availability-picker', 'disconnectedCallback');\n }\n\n componentWillLoad() {\n debug('nylas-availability-picker', 'componentWillLoad');\n this.host.setAttribute('name', this.name);\n }\n\n componentDidLoad() {\n debug('nylas-availability-picker', 'componentDidLoad');\n\n if (this.selectedConfiguration) {\n this.configChangedHandler(this.selectedConfiguration);\n } else {\n this.timezone = this.defaultTimezone;\n if (this.openHours && this.openHours.length > 0) {\n this.openHoursToSchedule(this.openHours);\n }\n }\n\n const updateValue = {\n openHours: this.scheduleToOpenHours(this.schedule),\n timezone: this.timezone,\n };\n this.isInternalsAvailable && this.internals.setFormValue(JSON.stringify(updateValue), this.name);\n\n // Set initial form validity\n this.updateFormValidity();\n }\n\n get isInternalsAvailable() {\n return typeof this.internals.setFormValue === 'function';\n }\n\n getOverlaps(timeRanges) {\n // Convert times to minutes and add to the array\n const timeRangesInMinutes = timeRanges.map((range, index) => ({\n start: timeToMinutes(range.start),\n end: timeToMinutes(range.end),\n originalIndex: index,\n }));\n\n // Sort by start time\n timeRangesInMinutes.sort((a, b) => a.start - b.start);\n const overlaps: number[] = [];\n // Check for overlap\n for (let i = 1; i < timeRangesInMinutes.length; i++) {\n if (timeRangesInMinutes[i].start < timeRangesInMinutes[i - 1].end) {\n // Add both overlapping time range indices if they are not already included\n if (!overlaps.includes(timeRangesInMinutes[i].originalIndex)) {\n overlaps.push(timeRangesInMinutes[i].originalIndex);\n }\n if (!overlaps.includes(timeRangesInMinutes[i - 1].originalIndex)) {\n overlaps.push(timeRangesInMinutes[i - 1].originalIndex);\n }\n }\n }\n return overlaps.sort((a, b) => a - b); // Return sorted list of indices\n }\n\n addTimeRange(day) {\n const currentTimeRanges = this.schedule[day];\n\n // Default working hours are from 00:00 to 23:45 for calculation purposes\n const dayStart = 0; // Start of the day in minutes (00:00)\n const dayEnd = 1425; // End of the day in minutes (23:45)\n\n if (currentTimeRanges.length === 0) {\n // If there are no existing time ranges, add one at the start of the day\n this.schedule[day] = [{ start: '09:00am', end: '05:00pm' }]; // Example range\n } else {\n // Convert all time ranges to minutes for comparison\n const timeRangesInMinutes = currentTimeRanges\n .map(range => ({\n start: timeToMinutes(range.start),\n end: timeToMinutes(range.end),\n }))\n .sort((a, b) => a.start - b.start); // Sort by start time\n\n // Attempt to add a new time range at the end of the day\n const lastRangeEnd = timeRangesInMinutes[timeRangesInMinutes.length - 1].end;\n if (lastRangeEnd + 60 <= dayEnd) {\n // There's room at the end of the day\n this.schedule[day].push({\n start: convertTo12HourFormat(minutesToTime(lastRangeEnd)),\n end: convertTo12HourFormat(minutesToTime(lastRangeEnd + 60)),\n });\n } else {\n // No room at the end, look for gaps at the beginning of the day\n let gapFound = false;\n if (timeRangesInMinutes[0].start > dayStart + 60) {\n // There's room for at least a 1-hour meeting at the beginning of the day\n this.schedule[day].push({\n start: convertTo12HourFormat(minutesToTime(dayStart)),\n end: convertTo12HourFormat(minutesToTime(dayStart + 60)),\n });\n gapFound = true;\n }\n\n if (!gapFound) {\n // Search for gaps between scheduled time ranges\n for (let i = 0; i < timeRangesInMinutes.length - 1; i++) {\n const currentEnd = timeRangesInMinutes[i].end;\n const nextStart = timeRangesInMinutes[i + 1].start;\n\n if (nextStart - currentEnd >= 60) {\n // Found a gap\n this.schedule[day].push({\n start: convertTo12HourFormat(minutesToTime(currentEnd)),\n end: convertTo12HourFormat(minutesToTime(currentEnd + 60)),\n });\n break; // Exit the loop after adding a time range\n }\n }\n }\n }\n }\n\n // Sort the updated schedule to maintain order\n this.schedule[day].sort((a, b) => timeToMinutes(a.start) - timeToMinutes(b.start));\n\n this.schedule = { ...this.schedule };\n this.scheduleChanged(this.schedule);\n }\n\n removeTimeRange(day, index) {\n // Clear any time window errors for the removed time range\n const startKey = `${day}:${index}_start`;\n const endKey = `${day}:${index}_end`;\n\n const newTimeWindowErrors = { ...this.timeWindowErrors };\n delete newTimeWindowErrors[startKey];\n delete newTimeWindowErrors[endKey];\n this.timeWindowErrors = newTimeWindowErrors;\n\n this.schedule[day].splice(index, 1);\n this.schedule = { ...this.schedule };\n this.scheduleChanged(this.schedule);\n }\n\n @Listen('timeChange')\n setTime(event: CustomEvent<{ key: string; value: string }>) {\n const { key, value } = event.detail;\n const [dayIndex, timeType] = key.split('_');\n const [day, index] = dayIndex.split(':');\n\n if (timeType === 'start') {\n this.schedule[day][index].start = value;\n } else if (timeType === 'end') {\n this.schedule[day][index].end = value;\n }\n\n // Clear any existing time window error for this specific key\n if (this.timeWindowErrors[key]) {\n const newErrors = { ...this.timeWindowErrors };\n delete newErrors[key];\n this.timeWindowErrors = newErrors;\n }\n\n this.schedule = { ...this.schedule };\n this.scheduleChanged(this.schedule);\n }\n\n @Listen('timeWindowFormError')\n setFormError(event: CustomEvent<{ key: string; message: string }>) {\n const { key, message } = event.detail;\n\n if (message) {\n // Set the error for this specific time input\n this.timeWindowErrors = {\n ...this.timeWindowErrors,\n [key]: message,\n };\n } else {\n // Clear the error for this specific time input\n const newErrors = { ...this.timeWindowErrors };\n delete newErrors[key];\n this.timeWindowErrors = newErrors;\n }\n\n // Update overall form validity\n this.updateFormValidity();\n }\n\n openHoursToSchedule(openHours: OpenHours[]) {\n const newSchedule = {\n SUN: [],\n MON: [],\n TUE: [],\n WED: [],\n THU: [],\n FRI: [],\n SAT: [],\n };\n openHours.forEach(openHour => {\n if (!openHour.days) return;\n openHour.days.forEach(day => {\n const dayKey = this.getDayKey(day);\n const start12hr = this.normalizeTimeFormat(convertTo12HourFormat(openHour.start));\n const end12hr = this.normalizeTimeFormat(convertTo12HourFormat(openHour.end));\n const timeRange = { start: start12hr, end: end12hr };\n\n // Check if the time range already exists for the day\n let timeRangeExists = false;\n if (newSchedule[dayKey]) {\n // Search for an existing time range that matches the current one\n timeRangeExists = newSchedule[dayKey].some(range => range.start === timeRange.start && range.end === timeRange.end);\n }\n\n if (!timeRangeExists) {\n if (newSchedule[dayKey]) {\n newSchedule[dayKey].push(timeRange);\n } else {\n newSchedule[dayKey] = [timeRange];\n }\n }\n });\n });\n\n this.schedule = newSchedule;\n this.scheduleChanged(this.schedule, false);\n }\n\n getDayKey(dayIndex: number): string {\n const days = ['SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT'];\n return days[dayIndex];\n }\n\n scheduleToOpenHours(schedule: Schedule): OpenHours[] {\n const dayKeys = ['SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT'];\n const openHoursMap: Map<string, { days: number[]; start: string; end: string }> = new Map();\n\n dayKeys.forEach((dayKey, index) => {\n if (schedule[dayKey]) {\n // Check if schedule for the day exists\n schedule[dayKey].forEach(timeRange => {\n const start24hr = convertTo24HourFormat(timeRange.start);\n const end24hr = convertTo24HourFormat(timeRange.end);\n const key = `${start24hr}-${end24hr}`;\n\n if (!openHoursMap.has(key)) {\n openHoursMap.set(key, { days: [index], start: start24hr, end: end24hr });\n } else {\n const entry = openHoursMap.get(key);\n if (entry) {\n entry.days.push(index);\n openHoursMap.set(key, entry);\n }\n }\n });\n }\n });\n\n const selectedOpenHours: OpenHours[] = [];\n openHoursMap.forEach((value, _key) => {\n selectedOpenHours.push({\n days: value.days,\n start: value.start,\n end: value.end,\n timezone: this.timezone,\n });\n });\n\n return selectedOpenHours;\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 @RegisterComponent<NylasAvailabilityPicker, NylasSchedulerConfigConnector, Exclude<NylasSchedulerEditor['stores'], undefined>>({\n name: 'nylas-availability-picker',\n stateToProps: new Map([\n ['schedulerConfig.selectedConfiguration', 'selectedConfiguration'],\n ['schedulerConfig.selectedLanguage', 'selectedLanguage'],\n ['schedulerConfig.themeConfig', 'themeConfig'],\n ]),\n fireRegisterEvent: true,\n })\n render() {\n const timezoneOptions = Object.keys(TIMEZONE_MAP).map(key => ({\n label: TIMEZONE_MAP[key],\n value: key,\n }));\n const selectedTimezoneOption = timezoneOptions.find(i => i.value === this.timezone);\n\n return (\n <Host>\n <div class=\"nylas-availability-picker\" part=\"nap\">\n {!this.hideHeader && (\n <div class=\"header\" part=\"nap__header\">\n <h3>{i18next.t('nylasAvailabilityPicker.headerTitle')}</h3>\n <p>\n {i18next.t('nylasAvailabilityPicker.headerSubTitle')}\n <tooltip-component>\n <info-icon slot=\"tooltip-icon\" />\n <span slot=\"tooltip-content\">{i18next.t('nylasAvailabilityPicker.tooltip.desc')}</span>\n </tooltip-component>\n </p>\n </div>\n )}\n <div class=\"content\">\n <div class=\"select-timezone\" part=\"nap__select-timezone\">\n <h4 class=\"sub-header\">{i18next.t('nylasAvailabilityPicker.selectTimezone')}</h4>\n {selectedTimezoneOption?.label && (\n <select-dropdown\n name=\"timezone\"\n searchPlaceholder={i18next.t('search')}\n exportparts=\"sd_dropdown: nap__timezone-container, sd_dropdown-button: nap__timezone-button, sd_dropdown-content: nap__timezone-dropdown-content\"\n options={timezoneOptions}\n defaultSelectedOption={selectedTimezoneOption}\n themeConfig={this.themeConfig}\n >\n <span slot=\"select-icon\">\n <globe-icon width=\"20\" height=\"20\" />\n </span>\n </select-dropdown>\n )}\n </div>\n <div class=\"availability\" part=\"nap__availability\">\n {Object.keys(this.schedule).map(key => {\n const day = key;\n const timeRanges = this.schedule[key] as { start: string; end: string }[];\n return (\n <div class=\"availability-day\">\n <div class=\"day\" part=\"nap__day\">\n <input\n type=\"checkbox\"\n name={day}\n id={day}\n checked={timeRanges.length > 0}\n onClick={() => {\n if (timeRanges.length > 0) {\n // Clear any time window errors for this day when toggling off\n const newTimeWindowErrors = { ...this.timeWindowErrors };\n Object.keys(newTimeWindowErrors).forEach(errorKey => {\n if (errorKey.startsWith(`${day}:`)) {\n delete newTimeWindowErrors[errorKey];\n }\n });\n this.timeWindowErrors = newTimeWindowErrors;\n\n this.schedule[day] = [];\n } else {\n this.schedule[day] = [{ start: '09:00am', end: '05:00pm' }];\n }\n this.schedule = { ...this.schedule };\n this.scheduleChanged(this.schedule);\n }}\n />\n <label htmlFor={day} aria-label=\"Select day\">\n {i18next.t(`nylasAvailabilityPicker.days.${day}`)}\n </label>\n </div>\n <div class=\"time-ranges\" part=\"nap__time-ranges\">\n {timeRanges.length ? null : <span class=\"unavailable\">{i18next.t('nylasAvailabilityPicker.unavailable')}</span>}\n {timeRanges.length > 0 &&\n timeRanges.map((timeRange, timeRangeIndex) => {\n const startKey = `${key}:${timeRangeIndex}_start`;\n const endKey = `${key}:${timeRangeIndex}_end`;\n return (\n <div class=\"time-range\" part=\"nap__time-range\">\n <div class=\"pickers\">\n <nylas-time-window-picker\n id={startKey}\n hasError={this.overlapDays[day]?.includes(timeRangeIndex) || !!this.timeWindowErrors[startKey]}\n time={timeRange.start}\n name={startKey}\n key={startKey}\n language={this.selectedLanguage}\n themeConfig={this.themeConfig}\n exportparts=\"time-picker: nap__time-picker-container, time-input: nap__time-picker-input, times: nap__time-picker-times\"\n />\n <span> - </span>\n <nylas-time-window-picker\n id={endKey}\n hasError={this.overlapDays[day]?.includes(timeRangeIndex) || !!this.timeWindowErrors[endKey]}\n time={timeRange.end}\n name={endKey}\n key={endKey}\n minimumStartTime={timeRange.start}\n language={this.selectedLanguage}\n themeConfig={this.themeConfig}\n exportparts=\"time-picker: nap__time-picker-container, time-input: nap__time-picker-input, times: nap__time-picker-times\"\n />\n </div>\n <button onClick={() => this.removeTimeRange(day, timeRangeIndex)}>\n <close-icon />\n </button>\n </div>\n );\n })}\n {(this.overlapDays[day] || Object.keys(this.timeWindowErrors).find(key => key.startsWith(`${day}:`) && this.timeWindowErrors[key])) && (\n <div class=\"error-message\" part=\"nap__error-message\">\n {this.overlapDays[day] ? i18next.t('nylasAvailabilityPicker.errors.overlappingTimeRanges') : ''}\n {!this.overlapDays[day] && Object.keys(this.timeWindowErrors).find(key => key.startsWith(`${day}:`) && this.timeWindowErrors[key])\n ? this.timeWindowErrors[Object.keys(this.timeWindowErrors).find(key => key.startsWith(`${day}:`) && this.timeWindowErrors[key])!]\n : ''}\n </div>\n )}\n </div>\n <div>\n {timeRanges.length > 0 ? (\n <button onClick={() => this.addTimeRange(day)} part=\"nap__add-time-range\">\n <add-circle-icon />\n </button>\n ) : null}\n </div>\n </div>\n );\n })}\n </div>\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
|
|
@@ -7,7 +7,7 @@ import { d as defineCustomElement$5 } from './p-CEoh34h7.js';
|
|
|
7
7
|
import { d as defineCustomElement$4 } from './p-ClTk9Ttz.js';
|
|
8
8
|
import { d as defineCustomElement$3 } from './p-D7lRYhTx.js';
|
|
9
9
|
import { d as defineCustomElement$2 } from './p-ZNBlPB7r.js';
|
|
10
|
-
import { d as defineCustomElement$1 } from './p-
|
|
10
|
+
import { d as defineCustomElement$1 } from './p-CelgQqJU.js';
|
|
11
11
|
|
|
12
12
|
const nylasMinBookingNoticeCss = ":host{--nylas-primary:#2563eb;--nylas-error:#cc4841;--nylas-error-50:#ffeae8;--nylas-error-100:#ffc5bf;--nylas-error-200:#fecaca;--nylas-error-pressed:#992222;--nylas-wraning:#f06c00;--nylas-success:#16a392;--nylas-info:#2b8fc2;--nylas-base-0:#ffffff;--nylas-base-25:#fcfcfd;--nylas-base-50:#f8f9fc;--nylas-base-100:#eaecf5;--nylas-base-200:#d5d9eb;--nylas-base-300:#b3b8d8;--nylas-base-400:#717bbc;--nylas-base-500:#4e5ba6;--nylas-base-600:#3e4784;--nylas-base-700:#263f72;--nylas-base-800:#293056;--nylas-base-900:#101323;--nylas-base-950:#0e101b;--nylas-color-blue-100:#e0e6f9;--nylas-border-radius:0.25rem;--nylas-border-radius-2x:0.5rem;--nylas-border-radius-3x:0.75rem;--nylas-font-family:\"Inter\", sans-serif;--nylas-color-black:#000000;--nylas-color-grey-900:#2c2c2c;--nylas-color-grey-800:#4b4b4b;--nylas-color-grey-700:#6e6e6e;--nylas-color-grey-600:#8e8e8e;--nylas-color-grey-500:#b3b3b3;--nylas-color-grey-400:#cacaca;--nylas-color-grey-300:#e1e1e1;--nylas-color-grey-200:#eaeaea;--nylas-color-grey-100:#f5f5f5;--nylas-color-grey-50:#fbfcfe;--nylas-color-white:#ffffff;--nylas-color-red-900:#992222;--nylas-color-red-700:#cc4841;--nylas-color-red-500:#ff786a;--nylas-color-red-300:#ffa79e;--nylas-color-red-100:#ffc5bf;--nylas-color-red-50:#ffeae8;--nylas-color-blue-900:#213571;--nylas-color-blue-700:#314fa9;--nylas-color-blue-500:#4169e1;--nylas-color-blue-300:#bdccf9;--nylas-color-blue-100:#e0e6f9;--nylas-color-blue-50:#f6f8fd;--nylas-color-yellow-900:#7c6506;--nylas-color-yellow-700:#c29f09;--nylas-color-yellow-500:#f7c90b;--nylas-color-yellow-300:#f9de70;--nylas-color-yellow-100:#fceba9;--nylas-color-yellow-50:#fdf4ce;--nylas-color-green-900:#0e6b60;--nylas-color-green-700:#16a392;--nylas-color-green-500:#17c3b2;--nylas-color-green-300:#74dbd1;--nylas-color-green-100:#a2e7e0;--nylas-color-green-50:#d1f3f0;--nylas-color-purple-900:#643554;--nylas-color-purple-700:#954f7d;--nylas-color-purple-500:#c769a7;--nylas-color-purple-300:#dda5ca;--nylas-color-purple-100:#e0bdd6;--nylas-color-purple-50:#e9dde5;--nylas-color-sky-900:#20698f;--nylas-color-sky-700:#2b8fc2;--nylas-color-sky-500:#6dceff;--nylas-color-sky-300:#8fdaff;--nylas-color-sky-100:#b8e7ff;--nylas-color-sky-50:#d9f2ff}.nylas-min-booking-notice{display:flex;justify-content:space-between;font-family:var(--nylas-font-family)}@media screen and (max-width: 768px){.nylas-min-booking-notice{flex-direction:column;gap:0.5rem}}.nylas-min-booking-notice label{display:flex;align-items:center;color:var(--nylas-base-800);font-size:16px;font-style:normal;font-weight:400;line-height:150%;}.nylas-min-booking-notice label span.label-icon{margin-left:4px}.nylas-min-booking-notice label span.label-icon tooltip-component{display:flex}select-dropdown::part(sd_dropdown-button){border:none}";
|
|
13
13
|
|
|
@@ -243,6 +243,6 @@ function defineCustomElement() {
|
|
|
243
243
|
}
|
|
244
244
|
|
|
245
245
|
export { NylasMinBookingNotice as N, defineCustomElement as d };
|
|
246
|
-
//# sourceMappingURL=p-
|
|
246
|
+
//# sourceMappingURL=p-BpnsgdmY.js.map
|
|
247
247
|
|
|
248
|
-
//# sourceMappingURL=p-
|
|
248
|
+
//# sourceMappingURL=p-BpnsgdmY.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"p-CXG_Ufsz.js","mappings":"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","names":["__stencil_proxyCustomElement","HTMLElement","i18next"],"sources":["src/components/scheduler-editor/nylas-min-booking-notice/nylas-min-booking-notice.scss?tag=nylas-min-booking-notice&encapsulation=shadow","src/components/scheduler-editor/nylas-min-booking-notice/nylas-min-booking-notice.tsx"],"sourcesContent":["@use '../../../common/styles/variables' as *;\n\n:host {\n @include default-css-variables;\n}\n\n.nylas-min-booking-notice {\n display: flex;\n justify-content: space-between;\n font-family: var(--nylas-font-family);\n @media #{$mobile} {\n flex-direction: column;\n gap: 0.5rem;\n }\n label {\n display: flex;\n align-items: center;\n color: var(--nylas-base-800);\n font-size: 16px;\n font-style: normal;\n font-weight: 400;\n line-height: 150%; /* 21px */\n span.label-icon {\n margin-left: 4px;\n tooltip-component {\n display: flex;\n }\n }\n }\n}\n\nselect-dropdown::part(sd_dropdown-button) {\n border: none;\n}\n","import { RegisterComponent } from '@/common/register-component';\nimport { NylasSchedulerConfigConnector } from '@/connector/nylas-scheduler-config-connector';\nimport { debug } from '@/utils/utils';\nimport { AttachInternals, Component, Host, State, h, Element, Prop, Watch, Event, EventEmitter, Listen } from '@stencil/core';\nimport { NylasSchedulerEditor } from '../nylas-scheduler-editor/nylas-scheduler-editor';\nimport { Configuration, ThemeConfig } from '@nylas/core';\nimport i18next from '@/utils/i18n';\nimport { LANGUAGE_CODE } from '@/common/constants';\n\n/**\n * The `nylas-min-booking-notice` component is a form input for the minimum period of notice (minutes) that a guest must\n * provide to book an event.\n *\n * @part nmbn - The minimum booking notice container\n * @part nmbn__number-dropdown - The number dropdown container\n * @part nmbn__number-dropdown-button - The number dropdown button\n * @part nmbn__number-dropdown-content - The number dropdown content\n * @part nmbn__period-dropdown - The period dropdown container\n * @part nmbn__period-dropdown-button - The period dropdown button\n * @part nmbn__period-dropdown-content - The period dropdown content\n */\n@Component({\n tag: 'nylas-min-booking-notice',\n styleUrl: 'nylas-min-booking-notice.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class NylasMinBookingNotice {\n /**\n * @standalone\n * The selected config\n */\n @Prop() selectedConfiguration?: Configuration;\n /**\n * @standalone\n * The name of the min booking notice input.\n */\n @Prop() name: string = 'min-booking-notice';\n /**\n * @standalone\n * The minimum booking notice (minutes) stored in the configuration\n */\n @Prop() minBookingNotice?: number;\n /**\n * The selected language.\n */\n @Prop() selectedLanguage?: LANGUAGE_CODE;\n /**\n * The theme configuration.\n */\n @Prop({ attribute: 'theme-config' }) readonly themeConfig?: ThemeConfig;\n /**\n *\n * The element internals.\n */\n @AttachInternals() internals!: ElementInternals;\n /**\n * The host element <nylas-min-booking-notice>\n */\n @Element() host!: HTMLElement;\n\n /**\n * The selected number of minutes for the min booking notice.\n */\n @State() selectedNumber;\n /**\n * The selected period for the min booking notice.\n */\n @State() selectedPeriod;\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-min-booking-notice', 'elementNameChangedHandler', newValue);\n this.host.setAttribute('name', newValue);\n }\n\n @Watch('selectedConfiguration')\n selectedConfigurationChangedHandler(newVal: Configuration) {\n const minBookingNotice = typeof newVal?.scheduler?.min_booking_notice !== 'undefined' ? newVal?.scheduler?.min_booking_notice : this.minBookingNotice || 1;\n this.updateNumberAndPeriodFromMinutes(minBookingNotice);\n if (typeof this.internals.setFormValue !== 'function') {\n return;\n }\n this.internals.setFormValue(minBookingNotice?.toString(), this.name);\n }\n\n @Watch('selectedLanguage')\n selectedLanguageChangedHandler(newVal: LANGUAGE_CODE, oldVal: LANGUAGE_CODE) {\n if (newVal === oldVal) return;\n i18next.changeLanguage(newVal);\n }\n\n @Watch('themeConfig')\n themeConfigChangedHandler(newVal: ThemeConfig, oldVal: ThemeConfig) {\n if (newVal === oldVal) return;\n this.applyThemeConfig(newVal);\n }\n\n applyThemeConfig(themeConfig?: ThemeConfig) {\n if (themeConfig) {\n for (const [key, value] of Object.entries(themeConfig)) {\n this.host.style.setProperty(`${key}`, value);\n }\n }\n }\n\n /**\n * This event is fired when the value of the min booking notice changes.\n */\n @Event() valueChanged!: EventEmitter<{\n value: string;\n name: string;\n }>;\n\n connectedCallback() {\n debug('nylas-min-booking-notice', 'connectedCallback');\n }\n\n componentWillLoad() {\n debug('nylas-min-booking-notice', 'componentWillLoad');\n this.host.setAttribute('name', this.name);\n }\n\n componentDidLoad() {\n debug('nylas-min-booking-notice', 'componentDidLoad');\n if (this.selectedConfiguration) {\n this.selectedConfigurationChangedHandler(this.selectedConfiguration);\n } else {\n this.updateNumberAndPeriodFromMinutes(this.minBookingNotice || 1);\n }\n }\n\n disconnectedCallback() {\n debug('nylas-min-booking-notice', 'disconnectedCallback');\n }\n\n @Listen('timePeriodChanged')\n timePeriodChangedHandler(\n event: CustomEvent<{\n number: number;\n period: string;\n }>,\n ) {\n const { number, period } = event.detail;\n let totalMinutes;\n const minutesInHour = 60;\n const minutesInDay = minutesInHour * 24;\n const minutesInWeek = minutesInDay * 7;\n const minutesInMonth = minutesInDay * 30; // Assuming 30 days in a month for simplification\n\n if (period === 'minute') {\n totalMinutes = number;\n } else if (period === 'hour') {\n totalMinutes = number * minutesInHour;\n } else if (period === 'day') {\n totalMinutes = number * minutesInDay;\n } else if (period === 'week') {\n totalMinutes = number * minutesInWeek;\n } else if (period === 'month') {\n totalMinutes = number * minutesInMonth;\n } else {\n totalMinutes = 0;\n }\n this.valueChanged.emit({ value: totalMinutes, name: this.name });\n if (typeof this.internals.setFormValue !== 'function') {\n return;\n }\n this.internals.setFormValue(totalMinutes.toString(), this.name);\n }\n\n private updateNumberAndPeriodFromMinutes(minutes: number): void {\n const minutesInHour = 60;\n const minutesInDay = minutesInHour * 24;\n const minutesInWeek = minutesInDay * 7;\n const minutesInMonth = minutesInDay * 30; // Assuming 30 days in a month for simplification\n let number, period;\n if (minutes === 0) {\n number = 0;\n period = 'minute';\n } else if (minutes >= minutesInMonth && minutes % minutesInMonth === 0) {\n number = Math.floor(minutes / minutesInMonth);\n period = 'month';\n } else if (minutes >= minutesInWeek && minutes % minutesInWeek === 0) {\n number = Math.floor(minutes / minutesInWeek);\n period = 'week';\n } else if (minutes >= minutesInDay && minutes % minutesInDay === 0) {\n number = Math.floor(minutes / minutesInDay);\n period = 'day';\n } else if (minutes >= minutesInHour && minutes % minutesInHour === 0) {\n number = Math.floor(minutes / minutesInHour);\n period = 'hour';\n } else {\n number = minutes;\n period = 'minute';\n }\n this.selectedNumber = number;\n this.selectedPeriod = period;\n }\n\n @RegisterComponent<NylasMinBookingNotice, NylasSchedulerConfigConnector, Exclude<NylasSchedulerEditor['stores'], undefined>>({\n name: 'nylas-min-booking-notice',\n stateToProps: new Map([\n ['schedulerConfig.selectedConfiguration', 'selectedConfiguration'],\n ['schedulerConfig.selectedLanguage', 'selectedLanguage'],\n ['schedulerConfig.themeConfig', 'themeConfig'],\n ]),\n eventToProps: {},\n fireRegisterEvent: true,\n })\n render() {\n const showTimePeriodSelector = typeof this.selectedNumber == 'number' && typeof this.selectedPeriod == 'string';\n return (\n <Host>\n <div class=\"nylas-min-booking-notice\" part=\"nmbn\">\n <label>\n {i18next.t('nylasMinBookingNotice.headerTitle')}\n <span class=\"label-icon\">\n <tooltip-component>\n <info-icon slot=\"tooltip-icon\" />\n <span slot=\"tooltip-content\">{i18next.t('nylasMinBookingNotice.tooltip.desc')}</span>\n </tooltip-component>\n </span>\n </label>\n {showTimePeriodSelector && (\n <time-period-selector\n id=\"min-booking-notice\"\n exportparts=\"tps__number-dropdown: nmbn__number-dropdown, tps__number-dropdown-button: nmbn__number-dropdown-button, tps__number-dropdown-content: nmbn__number-dropdown-content, tps__period-dropdown: nmbn__period-dropdown, tps__period-dropdown-button: nmbn__period-dropdown-button, tps__period-dropdown-content: nmbn__period-dropdown-content\"\n timePeriods={[\n { value: 'minute', label: i18next.t('timeDuration', { context: 'minute' }) },\n { value: 'hour', label: i18next.t('timeDuration', { context: 'hour' }) },\n { value: 'day', label: i18next.t('timePeriod', { context: 'day' }) },\n { value: 'week', label: i18next.t('timePeriod', { context: 'week' }) },\n ]}\n defaultSelectedNumber={this.selectedNumber}\n defaultSelectedPeriod={this.selectedPeriod}\n themeConfig={this.themeConfig}\n />\n )}\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
|
|
1
|
+
{"file":"p-BpnsgdmY.js","mappings":"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","names":["__stencil_proxyCustomElement","HTMLElement","i18next"],"sources":["src/components/scheduler-editor/nylas-min-booking-notice/nylas-min-booking-notice.scss?tag=nylas-min-booking-notice&encapsulation=shadow","src/components/scheduler-editor/nylas-min-booking-notice/nylas-min-booking-notice.tsx"],"sourcesContent":["@use '../../../common/styles/variables' as *;\n\n:host {\n @include default-css-variables;\n}\n\n.nylas-min-booking-notice {\n display: flex;\n justify-content: space-between;\n font-family: var(--nylas-font-family);\n @media #{$mobile} {\n flex-direction: column;\n gap: 0.5rem;\n }\n label {\n display: flex;\n align-items: center;\n color: var(--nylas-base-800);\n font-size: 16px;\n font-style: normal;\n font-weight: 400;\n line-height: 150%; /* 21px */\n span.label-icon {\n margin-left: 4px;\n tooltip-component {\n display: flex;\n }\n }\n }\n}\n\nselect-dropdown::part(sd_dropdown-button) {\n border: none;\n}\n","import { RegisterComponent } from '@/common/register-component';\nimport { NylasSchedulerConfigConnector } from '@/connector/nylas-scheduler-config-connector';\nimport { debug } from '@/utils/utils';\nimport { AttachInternals, Component, Host, State, h, Element, Prop, Watch, Event, EventEmitter, Listen } from '@stencil/core';\nimport { NylasSchedulerEditor } from '../nylas-scheduler-editor/nylas-scheduler-editor';\nimport { Configuration, ThemeConfig } from '@nylas/core';\nimport i18next from '@/utils/i18n';\nimport { LANGUAGE_CODE } from '@/common/constants';\n\n/**\n * The `nylas-min-booking-notice` component is a form input for the minimum period of notice (minutes) that a guest must\n * provide to book an event.\n *\n * @part nmbn - The minimum booking notice container\n * @part nmbn__number-dropdown - The number dropdown container\n * @part nmbn__number-dropdown-button - The number dropdown button\n * @part nmbn__number-dropdown-content - The number dropdown content\n * @part nmbn__period-dropdown - The period dropdown container\n * @part nmbn__period-dropdown-button - The period dropdown button\n * @part nmbn__period-dropdown-content - The period dropdown content\n */\n@Component({\n tag: 'nylas-min-booking-notice',\n styleUrl: 'nylas-min-booking-notice.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class NylasMinBookingNotice {\n /**\n * @standalone\n * The selected config\n */\n @Prop() selectedConfiguration?: Configuration;\n /**\n * @standalone\n * The name of the min booking notice input.\n */\n @Prop() name: string = 'min-booking-notice';\n /**\n * @standalone\n * The minimum booking notice (minutes) stored in the configuration\n */\n @Prop() minBookingNotice?: number;\n /**\n * The selected language.\n */\n @Prop() selectedLanguage?: LANGUAGE_CODE;\n /**\n * The theme configuration.\n */\n @Prop({ attribute: 'theme-config' }) readonly themeConfig?: ThemeConfig;\n /**\n *\n * The element internals.\n */\n @AttachInternals() internals!: ElementInternals;\n /**\n * The host element <nylas-min-booking-notice>\n */\n @Element() host!: HTMLElement;\n\n /**\n * The selected number of minutes for the min booking notice.\n */\n @State() selectedNumber;\n /**\n * The selected period for the min booking notice.\n */\n @State() selectedPeriod;\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-min-booking-notice', 'elementNameChangedHandler', newValue);\n this.host.setAttribute('name', newValue);\n }\n\n @Watch('selectedConfiguration')\n selectedConfigurationChangedHandler(newVal: Configuration) {\n const minBookingNotice = typeof newVal?.scheduler?.min_booking_notice !== 'undefined' ? newVal?.scheduler?.min_booking_notice : this.minBookingNotice || 1;\n this.updateNumberAndPeriodFromMinutes(minBookingNotice);\n if (typeof this.internals.setFormValue !== 'function') {\n return;\n }\n this.internals.setFormValue(minBookingNotice?.toString(), this.name);\n }\n\n @Watch('selectedLanguage')\n selectedLanguageChangedHandler(newVal: LANGUAGE_CODE, oldVal: LANGUAGE_CODE) {\n if (newVal === oldVal) return;\n i18next.changeLanguage(newVal);\n }\n\n @Watch('themeConfig')\n themeConfigChangedHandler(newVal: ThemeConfig, oldVal: ThemeConfig) {\n if (newVal === oldVal) return;\n this.applyThemeConfig(newVal);\n }\n\n applyThemeConfig(themeConfig?: ThemeConfig) {\n if (themeConfig) {\n for (const [key, value] of Object.entries(themeConfig)) {\n this.host.style.setProperty(`${key}`, value);\n }\n }\n }\n\n /**\n * This event is fired when the value of the min booking notice changes.\n */\n @Event() valueChanged!: EventEmitter<{\n value: string;\n name: string;\n }>;\n\n connectedCallback() {\n debug('nylas-min-booking-notice', 'connectedCallback');\n }\n\n componentWillLoad() {\n debug('nylas-min-booking-notice', 'componentWillLoad');\n this.host.setAttribute('name', this.name);\n }\n\n componentDidLoad() {\n debug('nylas-min-booking-notice', 'componentDidLoad');\n if (this.selectedConfiguration) {\n this.selectedConfigurationChangedHandler(this.selectedConfiguration);\n } else {\n this.updateNumberAndPeriodFromMinutes(this.minBookingNotice || 1);\n }\n }\n\n disconnectedCallback() {\n debug('nylas-min-booking-notice', 'disconnectedCallback');\n }\n\n @Listen('timePeriodChanged')\n timePeriodChangedHandler(\n event: CustomEvent<{\n number: number;\n period: string;\n }>,\n ) {\n const { number, period } = event.detail;\n let totalMinutes;\n const minutesInHour = 60;\n const minutesInDay = minutesInHour * 24;\n const minutesInWeek = minutesInDay * 7;\n const minutesInMonth = minutesInDay * 30; // Assuming 30 days in a month for simplification\n\n if (period === 'minute') {\n totalMinutes = number;\n } else if (period === 'hour') {\n totalMinutes = number * minutesInHour;\n } else if (period === 'day') {\n totalMinutes = number * minutesInDay;\n } else if (period === 'week') {\n totalMinutes = number * minutesInWeek;\n } else if (period === 'month') {\n totalMinutes = number * minutesInMonth;\n } else {\n totalMinutes = 0;\n }\n this.valueChanged.emit({ value: totalMinutes, name: this.name });\n if (typeof this.internals.setFormValue !== 'function') {\n return;\n }\n this.internals.setFormValue(totalMinutes.toString(), this.name);\n }\n\n private updateNumberAndPeriodFromMinutes(minutes: number): void {\n const minutesInHour = 60;\n const minutesInDay = minutesInHour * 24;\n const minutesInWeek = minutesInDay * 7;\n const minutesInMonth = minutesInDay * 30; // Assuming 30 days in a month for simplification\n let number, period;\n if (minutes === 0) {\n number = 0;\n period = 'minute';\n } else if (minutes >= minutesInMonth && minutes % minutesInMonth === 0) {\n number = Math.floor(minutes / minutesInMonth);\n period = 'month';\n } else if (minutes >= minutesInWeek && minutes % minutesInWeek === 0) {\n number = Math.floor(minutes / minutesInWeek);\n period = 'week';\n } else if (minutes >= minutesInDay && minutes % minutesInDay === 0) {\n number = Math.floor(minutes / minutesInDay);\n period = 'day';\n } else if (minutes >= minutesInHour && minutes % minutesInHour === 0) {\n number = Math.floor(minutes / minutesInHour);\n period = 'hour';\n } else {\n number = minutes;\n period = 'minute';\n }\n this.selectedNumber = number;\n this.selectedPeriod = period;\n }\n\n @RegisterComponent<NylasMinBookingNotice, NylasSchedulerConfigConnector, Exclude<NylasSchedulerEditor['stores'], undefined>>({\n name: 'nylas-min-booking-notice',\n stateToProps: new Map([\n ['schedulerConfig.selectedConfiguration', 'selectedConfiguration'],\n ['schedulerConfig.selectedLanguage', 'selectedLanguage'],\n ['schedulerConfig.themeConfig', 'themeConfig'],\n ]),\n eventToProps: {},\n fireRegisterEvent: true,\n })\n render() {\n const showTimePeriodSelector = typeof this.selectedNumber == 'number' && typeof this.selectedPeriod == 'string';\n return (\n <Host>\n <div class=\"nylas-min-booking-notice\" part=\"nmbn\">\n <label>\n {i18next.t('nylasMinBookingNotice.headerTitle')}\n <span class=\"label-icon\">\n <tooltip-component>\n <info-icon slot=\"tooltip-icon\" />\n <span slot=\"tooltip-content\">{i18next.t('nylasMinBookingNotice.tooltip.desc')}</span>\n </tooltip-component>\n </span>\n </label>\n {showTimePeriodSelector && (\n <time-period-selector\n id=\"min-booking-notice\"\n exportparts=\"tps__number-dropdown: nmbn__number-dropdown, tps__number-dropdown-button: nmbn__number-dropdown-button, tps__number-dropdown-content: nmbn__number-dropdown-content, tps__period-dropdown: nmbn__period-dropdown, tps__period-dropdown-button: nmbn__period-dropdown-button, tps__period-dropdown-content: nmbn__period-dropdown-content\"\n timePeriods={[\n { value: 'minute', label: i18next.t('timeDuration', { context: 'minute' }) },\n { value: 'hour', label: i18next.t('timeDuration', { context: 'hour' }) },\n { value: 'day', label: i18next.t('timePeriod', { context: 'day' }) },\n { value: 'week', label: i18next.t('timePeriod', { context: 'week' }) },\n ]}\n defaultSelectedNumber={this.selectedNumber}\n defaultSelectedPeriod={this.selectedPeriod}\n themeConfig={this.themeConfig}\n />\n )}\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
|
|
@@ -6,7 +6,7 @@ import { d as defineCustomElement$5 } from './p-7S1M5IE9.js';
|
|
|
6
6
|
import { d as defineCustomElement$4 } from './p-Crz-yl85.js';
|
|
7
7
|
import { d as defineCustomElement$3 } from './p-ClTk9Ttz.js';
|
|
8
8
|
import { d as defineCustomElement$2 } from './p-D7lRYhTx.js';
|
|
9
|
-
import { d as defineCustomElement$1 } from './p-
|
|
9
|
+
import { d as defineCustomElement$1 } from './p-CelgQqJU.js';
|
|
10
10
|
|
|
11
11
|
const nylasSchedulingMethodCss = ":host{display:block;--nylas-primary:#2563eb;--nylas-error:#cc4841;--nylas-error-50:#ffeae8;--nylas-error-100:#ffc5bf;--nylas-error-200:#fecaca;--nylas-error-pressed:#992222;--nylas-wraning:#f06c00;--nylas-success:#16a392;--nylas-info:#2b8fc2;--nylas-base-0:#ffffff;--nylas-base-25:#fcfcfd;--nylas-base-50:#f8f9fc;--nylas-base-100:#eaecf5;--nylas-base-200:#d5d9eb;--nylas-base-300:#b3b8d8;--nylas-base-400:#717bbc;--nylas-base-500:#4e5ba6;--nylas-base-600:#3e4784;--nylas-base-700:#263f72;--nylas-base-800:#293056;--nylas-base-900:#101323;--nylas-base-950:#0e101b;--nylas-color-blue-100:#e0e6f9;--nylas-border-radius:0.25rem;--nylas-border-radius-2x:0.5rem;--nylas-border-radius-3x:0.75rem;--nylas-font-family:\"Inter\", sans-serif;--nylas-color-black:#000000;--nylas-color-grey-900:#2c2c2c;--nylas-color-grey-800:#4b4b4b;--nylas-color-grey-700:#6e6e6e;--nylas-color-grey-600:#8e8e8e;--nylas-color-grey-500:#b3b3b3;--nylas-color-grey-400:#cacaca;--nylas-color-grey-300:#e1e1e1;--nylas-color-grey-200:#eaeaea;--nylas-color-grey-100:#f5f5f5;--nylas-color-grey-50:#fbfcfe;--nylas-color-white:#ffffff;--nylas-color-red-900:#992222;--nylas-color-red-700:#cc4841;--nylas-color-red-500:#ff786a;--nylas-color-red-300:#ffa79e;--nylas-color-red-100:#ffc5bf;--nylas-color-red-50:#ffeae8;--nylas-color-blue-900:#213571;--nylas-color-blue-700:#314fa9;--nylas-color-blue-500:#4169e1;--nylas-color-blue-300:#bdccf9;--nylas-color-blue-100:#e0e6f9;--nylas-color-blue-50:#f6f8fd;--nylas-color-yellow-900:#7c6506;--nylas-color-yellow-700:#c29f09;--nylas-color-yellow-500:#f7c90b;--nylas-color-yellow-300:#f9de70;--nylas-color-yellow-100:#fceba9;--nylas-color-yellow-50:#fdf4ce;--nylas-color-green-900:#0e6b60;--nylas-color-green-700:#16a392;--nylas-color-green-500:#17c3b2;--nylas-color-green-300:#74dbd1;--nylas-color-green-100:#a2e7e0;--nylas-color-green-50:#d1f3f0;--nylas-color-purple-900:#643554;--nylas-color-purple-700:#954f7d;--nylas-color-purple-500:#c769a7;--nylas-color-purple-300:#dda5ca;--nylas-color-purple-100:#e0bdd6;--nylas-color-purple-50:#e9dde5;--nylas-color-sky-900:#20698f;--nylas-color-sky-700:#2b8fc2;--nylas-color-sky-500:#6dceff;--nylas-color-sky-300:#8fdaff;--nylas-color-sky-100:#b8e7ff;--nylas-color-sky-50:#d9f2ff;width:inherit}.nylas-scheduling-method{width:inherit;display:flex;flex-direction:column;margin:1rem;border-radius:var(--nylas-border-radius-2x);border:1px solid var(--nylas-base-200)}.nylas-scheduling-method .header{padding:1rem;border-bottom:1px solid var(--nylas-base-200)}.nylas-scheduling-method .header h3{margin:0;font-size:16px;font-weight:600;line-height:20px;color:var(--nylas-base-900);text-align:left}.nylas-scheduling-method .nylas-scheduling-method__dropdown{padding:1rem;display:flex;flex-direction:column;gap:4px}.nylas-scheduling-method .nylas-scheduling-method__dropdown span.nylas-scheduling-method__dropdown-label{display:flex;align-items:center;gap:4px;color:var(--nylas-base-800);margin:0.25rem 0 0 0;font-size:14px;font-weight:400;line-height:20px;text-align:left}.nylas-scheduling-method .nylas-scheduling-method__dropdown span.nylas-scheduling-method__dropdown-label tooltip-component{display:flex}.nylas-scheduling-method .nylas-scheduling-method__dropdown select-dropdown::part(sd_dropdown){width:100%}.nylas-scheduling-method .nylas-scheduling-method__dropdown select-dropdown::part(sd_dropdown-content){width:100%;max-width:unset}.nylas-scheduling-method .nylas-scheduling-method__dropdown select-dropdown::part(sd_dropdown-button){width:100%;display:flex;justify-content:space-between;align-items:center;border:1px solid var(--nylas-base-200);border-radius:var(--nylas-border-radius-2x)}.nylas-scheduling-method .nylas-scheduling-method__dropdown select-dropdown::part(sd_dropdown-button-selected-label){max-width:calc(100% - 2rem);font-family:var(--nylas-font-family);font-size:16px;line-height:24px}.nylas-scheduling-method .nylas-scheduling-method__dropdown input-component::part(ic__input){background:var(--nylas-base-50);outline:none;cursor:not-allowed}";
|
|
12
12
|
|
|
@@ -213,6 +213,6 @@ function defineCustomElement() {
|
|
|
213
213
|
}
|
|
214
214
|
|
|
215
215
|
export { NylasSchedulingMethod as N, defineCustomElement as d };
|
|
216
|
-
//# sourceMappingURL=p-
|
|
216
|
+
//# sourceMappingURL=p-BvCN7qQY.js.map
|
|
217
217
|
|
|
218
|
-
//# sourceMappingURL=p-
|
|
218
|
+
//# sourceMappingURL=p-BvCN7qQY.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"p-BbV-LHPC.js","mappings":"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","names":["__stencil_proxyCustomElement","HTMLElement","i18next"],"sources":["src/components/scheduler-editor/nylas-scheduling-method/nylas-scheduling-method.scss?tag=nylas-scheduling-method&encapsulation=shadow","src/components/scheduler-editor/nylas-scheduling-method/nylas-scheduling-method.tsx"],"sourcesContent":["@use '../../../common/styles/variables' as *;\n\n:host {\n display: block;\n @include default-css-variables;\n width: inherit;\n}\n\n.nylas-scheduling-method {\n width: inherit;\n display: flex;\n flex-direction: column;\n margin: 1rem;\n border-radius: var(--nylas-border-radius-2x);\n border: 1px solid var(--nylas-base-200);\n\n .header {\n padding: 1rem;\n border-bottom: 1px solid var(--nylas-base-200);\n\n h3 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n line-height: 20px;\n color: var(--nylas-base-900);\n text-align: left;\n }\n }\n\n .nylas-scheduling-method__dropdown {\n padding: 1rem;\n display: flex;\n flex-direction: column;\n gap: 4px;\n\n span.nylas-scheduling-method__dropdown-label {\n display: flex;\n align-items: center;\n gap: 4px;\n color: var(--nylas-base-800);\n margin: 0.25rem 0 0 0;\n font-size: 14px;\n font-weight: 400;\n line-height: 20px;\n text-align: left;\n\n tooltip-component {\n display: flex;\n }\n }\n\n select-dropdown::part(sd_dropdown) {\n width: 100%;\n }\n\n select-dropdown::part(sd_dropdown-content) {\n width: 100%;\n max-width: unset;\n }\n\n select-dropdown::part(sd_dropdown-button) {\n width: 100%;\n display: flex;\n justify-content: space-between;\n align-items: center;\n border: 1px solid var(--nylas-base-200);\n border-radius: var(--nylas-border-radius-2x);\n }\n\n select-dropdown::part(sd_dropdown-button-selected-label) {\n max-width: calc(100% - 2rem);\n font-family: var(--nylas-font-family);\n font-size: 16px;\n line-height: 24px;\n }\n\n input-component::part(ic__input) {\n background: var(--nylas-base-50);\n outline: none;\n cursor: not-allowed;\n }\n }\n}\n","import { RegisterComponent } from '@/common/register-component';\nimport { NylasSchedulerConfigConnector } from '@/connector/nylas-scheduler-config-connector';\nimport { debug } from '@/utils/utils';\nimport { AdditionalParticipant, Configuration, ThemeConfig } from '@nylas/core';\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-scheduling-method` component is a UI component that displays the booking calendar picker.\n * @part nsm - The booking calendar picker container\n * @part nsm__header - The header of the booking calendar picker\n * @part nsm__input-label - The input label of the booking calendar picker\n * @part nsm__dropdown - The dropdown container\n * @part nsm__dropdown-button - The dropdown button\n * @part nsm__dropdown-content - The dropdown content\n */\n@Component({\n tag: 'nylas-scheduling-method',\n styleUrl: 'nylas-scheduling-method.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class NylasSchedulingMethod {\n @Element() host!: HTMLNylasSchedulingMethodElement;\n\n /**\n * @standalone\n * The selected config\n */\n @Prop() selectedConfiguration?: Configuration;\n /**\n * @standalone\n * The name of the booking type picker.\n */\n @Prop() name: string = 'availability-method';\n /**\n * @standalone\n * The participant options passed in the additionalParticipants prop\n * from the nylas-scheduler-editor component.\n */\n @Prop() participantOptions?: AdditionalParticipant[];\n /**\n * This prop is used to display the component in a disabled state / read-only mode.\n */\n @Prop() readOnly: boolean = false;\n /**\n * The selected language.\n */\n @Prop() selectedLanguage?: LANGUAGE_CODE;\n /**\n * The theme configuration.\n */\n @Prop({ attribute: 'theme-config' }) readonly themeConfig?: ThemeConfig;\n /**\n * Whether to show the sub-title.\n */\n @Prop() showSubTitle: boolean = false;\n\n /**\n * The element internals.\n */\n @AttachInternals() internals!: ElementInternals;\n\n /**\n * The selected booking type.\n */\n @State() selectedBookingType: string = '';\n\n /**\n * This event is fired when the selected booking calendar 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-scheduling-method', 'connectedCallback');\n }\n\n disconnectedCallback() {\n debug('nylas-scheduling-method', 'disconnectedCallback');\n }\n\n componentWillLoad() {\n debug('nylas-scheduling-method', '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-scheduling-method', 'componentDidLoad');\n const bookingType = this.selectedConfiguration?.availability?.availability_rules?.availability_method?.toString();\n\n // TODO: Remove this when the internals in tests are fixed.\n if (bookingType && typeof this.internals.setFormValue === 'function') {\n this.internals.setFormValue(bookingType, this.name);\n }\n this.selectedBookingType = bookingType || 'collective';\n }\n\n componentWillUpdate() {\n debug('nylas-scheduling-method', 'componentWillUpdate');\n }\n\n componentDidUpdate() {\n debug('nylas-scheduling-method', 'componentDidUpdate');\n }\n\n componentWillRender() {\n debug('nylas-scheduling-method', 'componentWillRender');\n }\n\n componentDidRender() {\n debug('nylas-scheduling-method', '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-scheduling-method', '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('selectedConfiguration')\n selectedConfigurationChangedHandler(newVal: Configuration, _oldVal: Configuration) {\n const bookingType = newVal?.availability?.availability_rules?.availability_method ?? 'collective';\n\n this.internals.setFormValue(bookingType, this.name);\n this.selectedBookingType = bookingType || 'collective';\n }\n\n @Watch('themeConfig')\n themeConfigChangedHandler(newVal: ThemeConfig, oldVal: ThemeConfig) {\n if (newVal === oldVal) return;\n this.applyThemeConfig(newVal);\n }\n\n applyThemeConfig(themeConfig?: ThemeConfig) {\n if (themeConfig) {\n for (const [key, value] of Object.entries(themeConfig)) {\n this.host.style.setProperty(`${key}`, value);\n }\n }\n }\n\n @Listen('nylasFormDropdownChanged')\n nylasFormDropdownChangedHandler(event: CustomEvent<{ value: string; name: string }>) {\n debug('nylas-scheduling-method', 'nylasFormDropdownChangedHandler', event.detail);\n // Pass as handler so that if event.defaultPrevented by parent app, this will be skipped.\n const valueChanged = (event: CustomEvent<{ value: string; name: string }>) => {\n const { value } = event.detail;\n if (value) {\n this.selectedBookingType = value;\n this.internals.setFormValue(value, this.name);\n }\n };\n this.valueChanged.emit({ value: event.detail.value, name: this.name, valueChanged });\n }\n\n @RegisterComponent<NylasSchedulingMethod, NylasSchedulerConfigConnector, Exclude<NylasSchedulerEditor['stores'], undefined>>({\n name: 'nylas-scheduling-method',\n stateToProps: new Map([\n ['schedulerConfig.selectedConfiguration', 'selectedConfiguration'],\n ['schedulerConfig.selectedLanguage', 'selectedLanguage'],\n ['schedulerConfig.themeConfig', 'themeConfig'],\n ]),\n localPropsToProp: new Map([['additionalParticipants', 'participantOptions']]),\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 bookingTypeOptions = [\n { label: i18next.t('nylasSchedulingMethod.schedulingMethodOptions', { context: 'collective' }), value: 'collective' },\n { label: i18next.t('nylasSchedulingMethod.schedulingMethodOptions', { context: 'maxFairness' }), value: 'max-fairness' },\n { label: i18next.t('nylasSchedulingMethod.schedulingMethodOptions', { context: 'maxAvailability' }), value: 'max-availability' },\n ];\n const defaultBookingType = this.selectedConfiguration?.availability?.availability_rules?.availability_method?.toString();\n const hasAdditionalParticipants =\n this.participantOptions &&\n this.participantOptions?.length > 0 &&\n !!this.participantOptions[0].email &&\n !!this.participantOptions[0].name &&\n !!this.participantOptions[0].calendars &&\n this.participantOptions[0].calendars.length > 0;\n\n // If a default availability method is set in the configuration (developer settings), do not show the booking type picker.\n // Or, if a default availability method is not set and there are no additional participants, do not show the booking type picker.\n if ((defaultBookingType || !hasAdditionalParticipants) && !this.readOnly) {\n return null;\n }\n\n return (\n <Host>\n <div class=\"nylas-scheduling-method\" part=\"nsm\">\n <div class=\"header\" part=\"nsm__header\">\n <h3>{i18next.t('nylasSchedulingMethod.headerTitle')}</h3>\n </div>\n <div class=\"nylas-scheduling-method__dropdown\">\n {this.showSubTitle && (\n <span class=\"nylas-scheduling-method__dropdown-label\">\n {i18next.t('nylasSchedulingMethod.headerSubTitle')}\n <tooltip-component>\n <info-icon slot=\"tooltip-icon\" />\n <span slot=\"tooltip-content\">\n <strong>{i18next.t('nylasSchedulingMethod.tooltip.standard.label')}</strong>\n <br />- {i18next.t('nylasSchedulingMethod.tooltip.standard.desc')}\n <br />\n <br />\n <strong>{i18next.t('nylasSchedulingMethod.tooltip.maxFairness.label')}</strong>\n <br />- {i18next.t('nylasSchedulingMethod.tooltip.maxFairness.desc')}\n <br />\n <br />\n <strong>{i18next.t('nylasSchedulingMethod.tooltip.maxAvailability.label')}</strong>\n <br />- {i18next.t('nylasSchedulingMethod.tooltip.maxAvailability.desc')}\n <br />\n </span>\n </tooltip-component>\n </span>\n )}\n {this.readOnly ? (\n <input-component\n name=\"availability-method-read-only\"\n type=\"text\"\n exportparts=\"ic__label: nsm__input-label, ic__input: nsm__input, ic__input_wrapper: nsm__input_wrapper\"\n readOnly\n defaultValue={bookingTypeOptions.find(cal => cal.value == defaultBookingType)?.label ?? bookingTypeOptions[0].label}\n themeConfig={this.themeConfig}\n />\n ) : (\n <select-dropdown\n name={this.name}\n options={bookingTypeOptions}\n withSearch={false}\n exportparts=\"sd_dropdown: nsm__dropdown, sd_dropdown-button: nsm__dropdown-button, sd_dropdown-content: nsm__dropdown-content\"\n defaultSelectedOption={bookingTypeOptions.find(cal => cal.value == defaultBookingType) ?? bookingTypeOptions[0]}\n themeConfig={this.themeConfig}\n />\n )}\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
|
|
1
|
+
{"file":"p-BvCN7qQY.js","mappings":"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","names":["__stencil_proxyCustomElement","HTMLElement","i18next"],"sources":["src/components/scheduler-editor/nylas-scheduling-method/nylas-scheduling-method.scss?tag=nylas-scheduling-method&encapsulation=shadow","src/components/scheduler-editor/nylas-scheduling-method/nylas-scheduling-method.tsx"],"sourcesContent":["@use '../../../common/styles/variables' as *;\n\n:host {\n display: block;\n @include default-css-variables;\n width: inherit;\n}\n\n.nylas-scheduling-method {\n width: inherit;\n display: flex;\n flex-direction: column;\n margin: 1rem;\n border-radius: var(--nylas-border-radius-2x);\n border: 1px solid var(--nylas-base-200);\n\n .header {\n padding: 1rem;\n border-bottom: 1px solid var(--nylas-base-200);\n\n h3 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n line-height: 20px;\n color: var(--nylas-base-900);\n text-align: left;\n }\n }\n\n .nylas-scheduling-method__dropdown {\n padding: 1rem;\n display: flex;\n flex-direction: column;\n gap: 4px;\n\n span.nylas-scheduling-method__dropdown-label {\n display: flex;\n align-items: center;\n gap: 4px;\n color: var(--nylas-base-800);\n margin: 0.25rem 0 0 0;\n font-size: 14px;\n font-weight: 400;\n line-height: 20px;\n text-align: left;\n\n tooltip-component {\n display: flex;\n }\n }\n\n select-dropdown::part(sd_dropdown) {\n width: 100%;\n }\n\n select-dropdown::part(sd_dropdown-content) {\n width: 100%;\n max-width: unset;\n }\n\n select-dropdown::part(sd_dropdown-button) {\n width: 100%;\n display: flex;\n justify-content: space-between;\n align-items: center;\n border: 1px solid var(--nylas-base-200);\n border-radius: var(--nylas-border-radius-2x);\n }\n\n select-dropdown::part(sd_dropdown-button-selected-label) {\n max-width: calc(100% - 2rem);\n font-family: var(--nylas-font-family);\n font-size: 16px;\n line-height: 24px;\n }\n\n input-component::part(ic__input) {\n background: var(--nylas-base-50);\n outline: none;\n cursor: not-allowed;\n }\n }\n}\n","import { RegisterComponent } from '@/common/register-component';\nimport { NylasSchedulerConfigConnector } from '@/connector/nylas-scheduler-config-connector';\nimport { debug } from '@/utils/utils';\nimport { AdditionalParticipant, Configuration, ThemeConfig } from '@nylas/core';\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-scheduling-method` component is a UI component that displays the booking calendar picker.\n * @part nsm - The booking calendar picker container\n * @part nsm__header - The header of the booking calendar picker\n * @part nsm__input-label - The input label of the booking calendar picker\n * @part nsm__dropdown - The dropdown container\n * @part nsm__dropdown-button - The dropdown button\n * @part nsm__dropdown-content - The dropdown content\n */\n@Component({\n tag: 'nylas-scheduling-method',\n styleUrl: 'nylas-scheduling-method.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class NylasSchedulingMethod {\n @Element() host!: HTMLNylasSchedulingMethodElement;\n\n /**\n * @standalone\n * The selected config\n */\n @Prop() selectedConfiguration?: Configuration;\n /**\n * @standalone\n * The name of the booking type picker.\n */\n @Prop() name: string = 'availability-method';\n /**\n * @standalone\n * The participant options passed in the additionalParticipants prop\n * from the nylas-scheduler-editor component.\n */\n @Prop() participantOptions?: AdditionalParticipant[];\n /**\n * This prop is used to display the component in a disabled state / read-only mode.\n */\n @Prop() readOnly: boolean = false;\n /**\n * The selected language.\n */\n @Prop() selectedLanguage?: LANGUAGE_CODE;\n /**\n * The theme configuration.\n */\n @Prop({ attribute: 'theme-config' }) readonly themeConfig?: ThemeConfig;\n /**\n * Whether to show the sub-title.\n */\n @Prop() showSubTitle: boolean = false;\n\n /**\n * The element internals.\n */\n @AttachInternals() internals!: ElementInternals;\n\n /**\n * The selected booking type.\n */\n @State() selectedBookingType: string = '';\n\n /**\n * This event is fired when the selected booking calendar 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-scheduling-method', 'connectedCallback');\n }\n\n disconnectedCallback() {\n debug('nylas-scheduling-method', 'disconnectedCallback');\n }\n\n componentWillLoad() {\n debug('nylas-scheduling-method', '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-scheduling-method', 'componentDidLoad');\n const bookingType = this.selectedConfiguration?.availability?.availability_rules?.availability_method?.toString();\n\n // TODO: Remove this when the internals in tests are fixed.\n if (bookingType && typeof this.internals.setFormValue === 'function') {\n this.internals.setFormValue(bookingType, this.name);\n }\n this.selectedBookingType = bookingType || 'collective';\n }\n\n componentWillUpdate() {\n debug('nylas-scheduling-method', 'componentWillUpdate');\n }\n\n componentDidUpdate() {\n debug('nylas-scheduling-method', 'componentDidUpdate');\n }\n\n componentWillRender() {\n debug('nylas-scheduling-method', 'componentWillRender');\n }\n\n componentDidRender() {\n debug('nylas-scheduling-method', '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-scheduling-method', '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('selectedConfiguration')\n selectedConfigurationChangedHandler(newVal: Configuration, _oldVal: Configuration) {\n const bookingType = newVal?.availability?.availability_rules?.availability_method ?? 'collective';\n\n this.internals.setFormValue(bookingType, this.name);\n this.selectedBookingType = bookingType || 'collective';\n }\n\n @Watch('themeConfig')\n themeConfigChangedHandler(newVal: ThemeConfig, oldVal: ThemeConfig) {\n if (newVal === oldVal) return;\n this.applyThemeConfig(newVal);\n }\n\n applyThemeConfig(themeConfig?: ThemeConfig) {\n if (themeConfig) {\n for (const [key, value] of Object.entries(themeConfig)) {\n this.host.style.setProperty(`${key}`, value);\n }\n }\n }\n\n @Listen('nylasFormDropdownChanged')\n nylasFormDropdownChangedHandler(event: CustomEvent<{ value: string; name: string }>) {\n debug('nylas-scheduling-method', 'nylasFormDropdownChangedHandler', event.detail);\n // Pass as handler so that if event.defaultPrevented by parent app, this will be skipped.\n const valueChanged = (event: CustomEvent<{ value: string; name: string }>) => {\n const { value } = event.detail;\n if (value) {\n this.selectedBookingType = value;\n this.internals.setFormValue(value, this.name);\n }\n };\n this.valueChanged.emit({ value: event.detail.value, name: this.name, valueChanged });\n }\n\n @RegisterComponent<NylasSchedulingMethod, NylasSchedulerConfigConnector, Exclude<NylasSchedulerEditor['stores'], undefined>>({\n name: 'nylas-scheduling-method',\n stateToProps: new Map([\n ['schedulerConfig.selectedConfiguration', 'selectedConfiguration'],\n ['schedulerConfig.selectedLanguage', 'selectedLanguage'],\n ['schedulerConfig.themeConfig', 'themeConfig'],\n ]),\n localPropsToProp: new Map([['additionalParticipants', 'participantOptions']]),\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 bookingTypeOptions = [\n { label: i18next.t('nylasSchedulingMethod.schedulingMethodOptions', { context: 'collective' }), value: 'collective' },\n { label: i18next.t('nylasSchedulingMethod.schedulingMethodOptions', { context: 'maxFairness' }), value: 'max-fairness' },\n { label: i18next.t('nylasSchedulingMethod.schedulingMethodOptions', { context: 'maxAvailability' }), value: 'max-availability' },\n ];\n const defaultBookingType = this.selectedConfiguration?.availability?.availability_rules?.availability_method?.toString();\n const hasAdditionalParticipants =\n this.participantOptions &&\n this.participantOptions?.length > 0 &&\n !!this.participantOptions[0].email &&\n !!this.participantOptions[0].name &&\n !!this.participantOptions[0].calendars &&\n this.participantOptions[0].calendars.length > 0;\n\n // If a default availability method is set in the configuration (developer settings), do not show the booking type picker.\n // Or, if a default availability method is not set and there are no additional participants, do not show the booking type picker.\n if ((defaultBookingType || !hasAdditionalParticipants) && !this.readOnly) {\n return null;\n }\n\n return (\n <Host>\n <div class=\"nylas-scheduling-method\" part=\"nsm\">\n <div class=\"header\" part=\"nsm__header\">\n <h3>{i18next.t('nylasSchedulingMethod.headerTitle')}</h3>\n </div>\n <div class=\"nylas-scheduling-method__dropdown\">\n {this.showSubTitle && (\n <span class=\"nylas-scheduling-method__dropdown-label\">\n {i18next.t('nylasSchedulingMethod.headerSubTitle')}\n <tooltip-component>\n <info-icon slot=\"tooltip-icon\" />\n <span slot=\"tooltip-content\">\n <strong>{i18next.t('nylasSchedulingMethod.tooltip.standard.label')}</strong>\n <br />- {i18next.t('nylasSchedulingMethod.tooltip.standard.desc')}\n <br />\n <br />\n <strong>{i18next.t('nylasSchedulingMethod.tooltip.maxFairness.label')}</strong>\n <br />- {i18next.t('nylasSchedulingMethod.tooltip.maxFairness.desc')}\n <br />\n <br />\n <strong>{i18next.t('nylasSchedulingMethod.tooltip.maxAvailability.label')}</strong>\n <br />- {i18next.t('nylasSchedulingMethod.tooltip.maxAvailability.desc')}\n <br />\n </span>\n </tooltip-component>\n </span>\n )}\n {this.readOnly ? (\n <input-component\n name=\"availability-method-read-only\"\n type=\"text\"\n exportparts=\"ic__label: nsm__input-label, ic__input: nsm__input, ic__input_wrapper: nsm__input_wrapper\"\n readOnly\n defaultValue={bookingTypeOptions.find(cal => cal.value == defaultBookingType)?.label ?? bookingTypeOptions[0].label}\n themeConfig={this.themeConfig}\n />\n ) : (\n <select-dropdown\n name={this.name}\n options={bookingTypeOptions}\n withSearch={false}\n exportparts=\"sd_dropdown: nsm__dropdown, sd_dropdown-button: nsm__dropdown-button, sd_dropdown-content: nsm__dropdown-content\"\n defaultSelectedOption={bookingTypeOptions.find(cal => cal.value == defaultBookingType) ?? bookingTypeOptions[0]}\n themeConfig={this.themeConfig}\n />\n )}\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
|
|
@@ -9,9 +9,9 @@ import { d as defineCustomElement$5 } from './p-7S1M5IE9.js';
|
|
|
9
9
|
import { d as defineCustomElement$4 } from './p-S2TOEjUD.js';
|
|
10
10
|
import { d as defineCustomElement$3 } from './p-CxKoqJ-5.js';
|
|
11
11
|
import { d as defineCustomElement$2 } from './p-Cpjsa5iV.js';
|
|
12
|
-
import { d as defineCustomElement$1 } from './p-
|
|
12
|
+
import { d as defineCustomElement$1 } from './p-CelgQqJU.js';
|
|
13
13
|
|
|
14
|
-
const nylasSpecificTimeAvailabilityPickerCss = ":host{display:block;width:100%}.nylas-specific-time-availability-picker{display:flex;margin:1rem;flex-direction:column;border-radius:var(--nylas-border-radius-2x);border:1px solid var(--nylas-base-200)}.nylas-specific-time-availability-picker .content{padding:1rem;border-radius:var(--nylas-border-radius-2x);color:var(--nylas-base-900);font-size:16px;font-family:var(--nylas-font-family);background:var(--nylas-base-25)}.nylas-specific-time-availability-picker .header{padding:1rem;border-bottom:1px solid var(--nylas-base-200)}.nylas-specific-time-availability-picker .header h3{margin:0;font-size:16px;font-weight:600;line-height:20px;color:var(--nylas-base-900);text-align:left}.nylas-specific-time-availability-picker .header p{margin:0.25rem 0 0 0;font-size:0.875rem;font-weight:400;line-height:20px;color:var(--nylas-base-600);text-align:left;display:flex;align-items:center;gap:4px}.nylas-specific-time-availability-picker .specific-times{display:flex;flex-direction:column;gap:1rem}.nylas-specific-time-availability-picker .empty-state{display:flex;flex-direction:column;align-items:center;padding:2rem 1rem;text-align:center}.nylas-specific-time-availability-picker .empty-state .empty-icon{margin-bottom:1.5rem;opacity:0.4;color:var(--nylas-base-400)}.nylas-specific-time-availability-picker .empty-state .empty-title{margin:0 0 0.5rem 0;font-size:1.125rem;font-weight:600;color:var(--nylas-base-700);line-height:1.5}.nylas-specific-time-availability-picker .empty-state .empty-subtitle{margin:0;font-size:0.875rem;color:var(--nylas-base-500);line-height:1.5;max-width:300px}.nylas-specific-time-availability-picker .specific-time-entry{display:flex;flex-direction:column;gap:0;padding:12px;border:1px solid var(--nylas-base-200);border-radius:var(--nylas-border-radius);background:var(--nylas-base-0)}.nylas-specific-time-availability-picker .specific-time-entry .entry-content{display:grid;grid-template-columns:160px auto 30px 30px;gap:12px}@media (max-width: 768px){.nylas-specific-time-availability-picker .specific-time-entry .entry-content{grid-template-areas:\"date calendar_toggle remove\" \"time_or_unavailable time_or_unavailable time_or_unavailable\";grid-template-columns:1fr auto auto;grid-template-rows:1fr 1fr}}.nylas-specific-time-availability-picker .specific-time-entry .date-input-container{flex:0 0 auto;width:160px}@media (max-width: 768px){.nylas-specific-time-availability-picker .specific-time-entry .date-input-container{grid-area:date}}.nylas-specific-time-availability-picker .specific-time-entry .date-input-container .date-input{width:100%}.nylas-specific-time-availability-picker .specific-time-entry .date-input-container nylas-date-component::part(ic__date){border:1px solid var(--nylas-base-200);height:50px;display:flex;align-items:center}.nylas-specific-time-availability-picker .specific-time-entry .time-pickers{display:grid;grid-template-columns:auto 10px 1fr;width:342px;gap:14px;flex:1;min-width:0}@media (max-width: 768px){.nylas-specific-time-availability-picker .specific-time-entry .time-pickers{flex:1;width:auto;grid-area:time_or_unavailable}}.nylas-specific-time-availability-picker .specific-time-entry .time-pickers .time-separator{font-size:0.875rem;color:var(--nylas-base-600);font-weight:500;flex-shrink:0;line-height:1;padding:0 0px 0px 6px;margin-top:18px}.nylas-specific-time-availability-picker .specific-time-entry .unavailable-text{flex:1;display:flex;align-items:center;padding:0 15px;border-radius:var(--nylas-border-radius);background:var(--nylas-base-50);min-height:50px}@media (max-width: 768px){.nylas-specific-time-availability-picker .specific-time-entry .unavailable-text{grid-area:time_or_unavailable}}.nylas-specific-time-availability-picker .specific-time-entry .unavailable-text .unavailable-label{font-size:0.875rem;color:var(--nylas-base-500);font-style:italic}.nylas-specific-time-availability-picker .specific-time-entry .toggle-button{display:flex;align-items:center;justify-content:center;width:40px;height:48px;padding-left:8px;border:none;border-radius:4px;background:transparent;color:var(--nylas-base-400);cursor:pointer;transition:all 0.2s ease;flex-shrink:0}@media (max-width: 768px){.nylas-specific-time-availability-picker .specific-time-entry .toggle-button{grid-area:calendar_toggle}}.nylas-specific-time-availability-picker .specific-time-entry .toggle-button:hover{color:var(--nylas-primary)}.nylas-specific-time-availability-picker .specific-time-entry .toggle-button:focus{outline:none}.nylas-specific-time-availability-picker .specific-time-entry .toggle-button.unavailable{color:var(--nylas-error)}.nylas-specific-time-availability-picker .specific-time-entry .toggle-button.unavailable:hover{color:var(--nylas-error)}.nylas-specific-time-availability-picker .specific-time-entry .remove-button{display:flex;align-items:center;justify-content:center;width:
|
|
14
|
+
const nylasSpecificTimeAvailabilityPickerCss = ":host{display:block;width:100%}.nylas-specific-time-availability-picker{display:flex;margin:1rem;flex-direction:column;border-radius:var(--nylas-border-radius-2x);border:1px solid var(--nylas-base-200)}.nylas-specific-time-availability-picker .content{padding:1rem;border-radius:var(--nylas-border-radius-2x);color:var(--nylas-base-900);font-size:16px;font-family:var(--nylas-font-family);background:var(--nylas-base-25)}.nylas-specific-time-availability-picker .header{padding:1rem;border-bottom:1px solid var(--nylas-base-200)}.nylas-specific-time-availability-picker .header h3{margin:0;font-size:16px;font-weight:600;line-height:20px;color:var(--nylas-base-900);text-align:left}.nylas-specific-time-availability-picker .header p{margin:0.25rem 0 0 0;font-size:0.875rem;font-weight:400;line-height:20px;color:var(--nylas-base-600);text-align:left;display:flex;align-items:center;gap:4px}.nylas-specific-time-availability-picker .specific-times{display:flex;flex-direction:column;gap:1rem}.nylas-specific-time-availability-picker .empty-state{display:flex;flex-direction:column;align-items:center;padding:2rem 1rem;text-align:center}.nylas-specific-time-availability-picker .empty-state .empty-icon{margin-bottom:1.5rem;opacity:0.4;color:var(--nylas-base-400)}.nylas-specific-time-availability-picker .empty-state .empty-title{margin:0 0 0.5rem 0;font-size:1.125rem;font-weight:600;color:var(--nylas-base-700);line-height:1.5}.nylas-specific-time-availability-picker .empty-state .empty-subtitle{margin:0;font-size:0.875rem;color:var(--nylas-base-500);line-height:1.5;max-width:300px}.nylas-specific-time-availability-picker .specific-time-entry{display:flex;flex-direction:column;gap:0;padding:12px;border:1px solid var(--nylas-base-200);border-radius:var(--nylas-border-radius);background:var(--nylas-base-0)}.nylas-specific-time-availability-picker .specific-time-entry:last-of-type{margin-bottom:1rem}.nylas-specific-time-availability-picker .specific-time-entry .entry-content{display:grid;grid-template-columns:160px auto 30px 30px;gap:12px}@media (max-width: 768px){.nylas-specific-time-availability-picker .specific-time-entry .entry-content{grid-template-areas:\"date calendar_toggle remove\" \"time_or_unavailable time_or_unavailable time_or_unavailable\";grid-template-columns:1fr auto auto;grid-template-rows:1fr 1fr}}.nylas-specific-time-availability-picker .specific-time-entry .date-input-container{flex:0 0 auto;width:160px}@media (max-width: 768px){.nylas-specific-time-availability-picker .specific-time-entry .date-input-container{grid-area:date}}.nylas-specific-time-availability-picker .specific-time-entry .date-input-container .date-input{width:100%}.nylas-specific-time-availability-picker .specific-time-entry .date-input-container nylas-date-component::part(ic__date){border:1px solid var(--nylas-base-200);height:50px;display:flex;align-items:center}.nylas-specific-time-availability-picker .specific-time-entry .time-pickers{display:grid;grid-template-columns:auto 10px 1fr;width:342px;gap:14px;flex:1;min-width:0}@media (max-width: 768px){.nylas-specific-time-availability-picker .specific-time-entry .time-pickers{flex:1;width:auto;grid-area:time_or_unavailable}}.nylas-specific-time-availability-picker .specific-time-entry .time-pickers .time-separator{font-size:0.875rem;color:var(--nylas-base-600);font-weight:500;flex-shrink:0;line-height:1;padding:0 0px 0px 6px;margin-top:18px}.nylas-specific-time-availability-picker .specific-time-entry .unavailable-text{flex:1;display:flex;align-items:center;padding:0 15px;border-radius:var(--nylas-border-radius);background:var(--nylas-base-50);min-height:50px}@media (max-width: 768px){.nylas-specific-time-availability-picker .specific-time-entry .unavailable-text{grid-area:time_or_unavailable}}.nylas-specific-time-availability-picker .specific-time-entry .unavailable-text .unavailable-label{font-size:0.875rem;color:var(--nylas-base-500);font-style:italic}.nylas-specific-time-availability-picker .specific-time-entry .toggle-button{display:flex;align-items:center;justify-content:center;width:40px;height:48px;padding-left:8px;border:none;border-radius:4px;background:transparent;color:var(--nylas-base-400);cursor:pointer;transition:all 0.2s ease;flex-shrink:0}@media (max-width: 768px){.nylas-specific-time-availability-picker .specific-time-entry .toggle-button{grid-area:calendar_toggle}}.nylas-specific-time-availability-picker .specific-time-entry .toggle-button:hover{color:var(--nylas-primary)}.nylas-specific-time-availability-picker .specific-time-entry .toggle-button:focus{outline:none}.nylas-specific-time-availability-picker .specific-time-entry .toggle-button.unavailable{color:var(--nylas-error)}.nylas-specific-time-availability-picker .specific-time-entry .toggle-button.unavailable:hover{color:var(--nylas-error)}.nylas-specific-time-availability-picker .specific-time-entry .remove-button{display:flex;align-items:center;justify-content:center;width:20px;height:48px;padding:0;border:none;border-radius:4px;background:transparent;color:var(--nylas-base-400);cursor:pointer;transition:all 0.2s ease;flex-shrink:0}@media (max-width: 768px){.nylas-specific-time-availability-picker .specific-time-entry .remove-button{grid-area:remove}}.nylas-specific-time-availability-picker .specific-time-entry .remove-button:hover{color:var(--nylas-error)}.nylas-specific-time-availability-picker .specific-time-entry .remove-button:focus{outline:none;background:var(--nylas-base-100);box-shadow:0 0 0 2px var(--nylas-primary)}.nylas-specific-time-availability-picker .specific-time-entry .remove-button:active{background:var(--nylas-base-200)}.nylas-specific-time-availability-picker .specific-time-entry .error-message{width:-webkit-fill-available;padding:4px 8px;background:var(--nylas-error-50);color:var(--nylas-error);font-size:12px;border-radius:4px;border:1px solid var(--nylas-error-200);margin-top:8px}.nylas-specific-time-availability-picker .add-button-container{display:flex;justify-content:flex-start}.nylas-specific-time-availability-picker .add-button-container button-component{width:100%}::part(nstap__add-button){border:1px dashed var(--nylas-base-200);background:var(--nylas-base-0);color:var(--nylas-base-700)}::part(nstap__add-button):hover{border-color:var(--nylas-primary);background:var(--nylas-base-50);color:var(--nylas-primary)}::part(nstap__time-picker-container){flex:1;min-width:0}::part(nstap__time-picker-input){width:100%;font-size:0.875rem;min-height:50px;display:flex;align-items:center}::part(nstap__date-input){width:100%}::part(nstap__date-field){width:100%;font-size:0.875rem;border:1px solid var(--nylas-base-200);border-radius:var(--nylas-border-radius);padding:0.5rem 0.75rem}::part(nstap__date-field):focus{border-color:var(--nylas-primary);box-shadow:0 0 0 3px rgba(59, 130, 246, 0.1)}::part(nstap__date-wrapper){margin:0}::part(nstap__date-label){margin:0;padding:0}::part(nstap__date-label) p{display:none}";
|
|
15
15
|
|
|
16
16
|
var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
|
|
17
17
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
@@ -373,6 +373,6 @@ function defineCustomElement() {
|
|
|
373
373
|
}
|
|
374
374
|
|
|
375
375
|
export { NylasSpecificTimeAvailabilityPicker as N, defineCustomElement as d };
|
|
376
|
-
//# sourceMappingURL=p-
|
|
376
|
+
//# sourceMappingURL=p-BzvnGJrN.js.map
|
|
377
377
|
|
|
378
|
-
//# sourceMappingURL=p-
|
|
378
|
+
//# sourceMappingURL=p-BzvnGJrN.js.map
|