@nylas/web-elements 1.4.5 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cdn/nylas-scheduler-editor/nylas-scheduler-editor.es.js +179 -146
- package/dist/cdn/nylas-scheduling/nylas-scheduling.es.js +4998 -4993
- package/dist/cjs/calendar-agenda-fill-icon_36.cjs.entry.js +4 -4
- package/dist/cjs/checkmark-icon_15.cjs.entry.js +4 -4
- package/dist/cjs/checkmark-icon_15.cjs.entry.js.map +1 -1
- package/dist/cjs/{constants-3b9fb535.js → constants-27331d2d.js} +1 -5
- package/dist/cjs/constants-27331d2d.js.map +1 -0
- package/dist/cjs/{customParseFormat-4dbd51f6.js → customParseFormat-22da9017.js} +2 -2
- package/dist/cjs/{customParseFormat-4dbd51f6.js.map → customParseFormat-22da9017.js.map} +1 -1
- package/dist/cjs/{feedbackSync-670798db.js → feedbackSync-adabe7d6.js} +2 -2
- package/dist/cjs/{feedbackSync-670798db.js.map → feedbackSync-adabe7d6.js.map} +1 -1
- package/dist/cjs/globe-icon_2.cjs.entry.js +3 -3
- package/dist/cjs/google-logo-icon_6.cjs.entry.js +49 -25
- package/dist/cjs/google-logo-icon_6.cjs.entry.js.map +1 -1
- package/dist/cjs/index.cjs.js +2 -2
- package/dist/cjs/{index.es-cbc1ecb6.js → index.es-7848228a.js} +2 -2
- package/dist/cjs/{index.es-cbc1ecb6.js.map → index.es-7848228a.js.map} +1 -1
- package/dist/cjs/input-component.cjs.entry.js +1 -1
- package/dist/cjs/input-dropdown_2.cjs.entry.js +2 -2
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/multi-select-dropdown_2.cjs.entry.js +1 -1
- package/dist/cjs/{nylas-api-request-af6121b4.js → nylas-api-request-976db0f4.js} +2 -2
- package/dist/cjs/{nylas-api-request-af6121b4.js.map → nylas-api-request-976db0f4.js.map} +1 -1
- package/dist/cjs/nylas-booked-event-card_12.cjs.entry.js +3 -3
- package/dist/cjs/nylas-event-calendar_3.cjs.entry.js +4 -4
- package/dist/cjs/nylas-form-card.cjs.entry.js +2 -2
- package/dist/cjs/nylas-scheduler-editor.cjs.entry.js +22 -16
- package/dist/cjs/nylas-scheduler-editor.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-scheduling.cjs.entry.js +7 -7
- package/dist/cjs/nylas-web-elements.cjs.js +1 -1
- package/dist/cjs/{register-component-5e87c463.js → register-component-d2f37e40.js} +2 -2
- package/dist/cjs/{register-component-5e87c463.js.map → register-component-d2f37e40.js.map} +1 -1
- package/dist/cjs/textarea-component.cjs.entry.js +1 -1
- package/dist/cjs/{utils-0dfca9ec.js → utils-d522ef01.js} +10 -1
- package/dist/cjs/utils-d522ef01.js.map +1 -0
- package/dist/collection/common/constants.js +0 -1
- package/dist/collection/common/constants.js.map +1 -1
- package/dist/collection/components/scheduler/nylas-scheduling/nylas-scheduling.js +1 -1
- package/dist/collection/components/scheduler-editor/nylas-editor-tabs-group/nylas-editor-tabs-group.js +6 -7
- package/dist/collection/components/scheduler-editor/nylas-editor-tabs-group/nylas-editor-tabs-group.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-event-description/nylas-event-description.js +1 -1
- package/dist/collection/components/scheduler-editor/nylas-event-description/nylas-event-description.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-list-configurations/nylas-list-configurations.js +6 -3
- package/dist/collection/components/scheduler-editor/nylas-list-configurations/nylas-list-configurations.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-scheduler-editor/ExpressFlow.js +4 -5
- package/dist/collection/components/scheduler-editor/nylas-scheduler-editor/ExpressFlow.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-scheduler-editor/nylas-scheduler-editor.css +0 -8
- package/dist/collection/components/scheduler-editor/nylas-scheduler-editor/nylas-scheduler-editor.js +43 -10
- package/dist/collection/components/scheduler-editor/nylas-scheduler-editor/nylas-scheduler-editor.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-select-event-type/nylas-select-event-type.js +52 -7
- package/dist/collection/components/scheduler-editor/nylas-select-event-type/nylas-select-event-type.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-timeslot-interval/nylas-timeslot-interval.js +1 -1
- package/dist/collection/stores/scheduler-config-store.js.map +1 -1
- package/dist/components/constants.js +1 -5
- package/dist/components/constants.js.map +1 -1
- package/dist/components/nylas-editor-tabs-group2.js +8 -9
- package/dist/components/nylas-editor-tabs-group2.js.map +1 -1
- package/dist/components/nylas-editor-tabs2.js +2 -2
- package/dist/components/nylas-event-description2.js +1 -1
- package/dist/components/nylas-event-description2.js.map +1 -1
- package/dist/components/nylas-list-configurations2.js +6 -3
- package/dist/components/nylas-list-configurations2.js.map +1 -1
- package/dist/components/nylas-scheduler-editor.js +22 -14
- package/dist/components/nylas-scheduler-editor.js.map +1 -1
- package/dist/components/nylas-scheduling.js +3 -3
- package/dist/components/nylas-select-event-type2.js +32 -8
- package/dist/components/nylas-select-event-type2.js.map +1 -1
- package/dist/components/nylas-timeslot-interval2.js +1 -1
- package/dist/components/utils.js +9 -0
- package/dist/components/utils.js.map +1 -1
- package/dist/esm/calendar-agenda-fill-icon_36.entry.js +4 -4
- package/dist/esm/checkmark-icon_15.entry.js +4 -4
- package/dist/esm/checkmark-icon_15.entry.js.map +1 -1
- package/dist/esm/{constants-3d8016e3.js → constants-f51538ef.js} +2 -6
- package/dist/esm/constants-f51538ef.js.map +1 -0
- package/dist/esm/{customParseFormat-129be926.js → customParseFormat-d1de5ed0.js} +2 -2
- package/dist/esm/{customParseFormat-129be926.js.map → customParseFormat-d1de5ed0.js.map} +1 -1
- package/dist/esm/{feedbackSync-d943ffc7.js → feedbackSync-172f942c.js} +2 -2
- package/dist/esm/{feedbackSync-d943ffc7.js.map → feedbackSync-172f942c.js.map} +1 -1
- package/dist/esm/globe-icon_2.entry.js +3 -3
- package/dist/esm/google-logo-icon_6.entry.js +49 -25
- package/dist/esm/google-logo-icon_6.entry.js.map +1 -1
- package/dist/esm/{index.es-4615d47c.js → index.es-fc8588de.js} +2 -2
- package/dist/esm/{index.es-4615d47c.js.map → index.es-fc8588de.js.map} +1 -1
- package/dist/esm/index.js +2 -2
- package/dist/esm/input-component.entry.js +1 -1
- package/dist/esm/input-dropdown_2.entry.js +2 -2
- package/dist/esm/loader.js +1 -1
- package/dist/esm/multi-select-dropdown_2.entry.js +1 -1
- package/dist/esm/{nylas-api-request-acf12b47.js → nylas-api-request-3d7ced61.js} +2 -2
- package/dist/esm/{nylas-api-request-acf12b47.js.map → nylas-api-request-3d7ced61.js.map} +1 -1
- package/dist/esm/nylas-booked-event-card_12.entry.js +3 -3
- package/dist/esm/nylas-event-calendar_3.entry.js +4 -4
- package/dist/esm/nylas-form-card.entry.js +2 -2
- package/dist/esm/nylas-scheduler-editor.entry.js +22 -16
- package/dist/esm/nylas-scheduler-editor.entry.js.map +1 -1
- package/dist/esm/nylas-scheduling.entry.js +7 -7
- package/dist/esm/nylas-web-elements.js +1 -1
- package/dist/esm/{register-component-083eb961.js → register-component-62d792d4.js} +2 -2
- package/dist/esm/{register-component-083eb961.js.map → register-component-62d792d4.js.map} +1 -1
- package/dist/esm/textarea-component.entry.js +1 -1
- package/dist/esm/{utils-6c05ecaf.js → utils-bb88dd4d.js} +10 -1
- package/dist/esm/utils-bb88dd4d.js.map +1 -0
- package/dist/nylas-web-elements/index.esm.js +1 -1
- package/dist/nylas-web-elements/nylas-web-elements.esm.js +1 -1
- package/dist/nylas-web-elements/nylas-web-elements.esm.js.map +1 -1
- package/dist/nylas-web-elements/{p-865721fd.entry.js → p-05204c68.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-2b38054f.entry.js → p-0d422938.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-c59787f4.js → p-0d6ecada.js} +2 -2
- package/dist/nylas-web-elements/{p-e2632a60.js → p-198f05a6.js} +2 -2
- package/dist/nylas-web-elements/p-1d8c55c6.entry.js +11 -0
- package/dist/nylas-web-elements/p-1d8c55c6.entry.js.map +1 -0
- package/dist/nylas-web-elements/{p-4e1e01e4.entry.js → p-29f601d9.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-60b48bf7.js → p-3a3c5e17.js} +2 -2
- package/dist/nylas-web-elements/{p-6bb6a0b8.entry.js → p-447837c2.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-faa723fc.entry.js → p-49c8d4d9.entry.js} +2 -2
- package/dist/nylas-web-elements/p-49c8d4d9.entry.js.map +1 -0
- package/dist/nylas-web-elements/p-7e885253.js +2 -0
- package/dist/nylas-web-elements/p-7e885253.js.map +1 -0
- package/dist/nylas-web-elements/{p-3cc1072e.js → p-84109239.js} +2 -2
- package/dist/nylas-web-elements/{p-d16cd88b.entry.js → p-a7d2a211.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-bea31f39.entry.js → p-a9107606.entry.js} +2 -2
- package/dist/nylas-web-elements/p-a9107606.entry.js.map +1 -0
- package/dist/nylas-web-elements/{p-a9a0dd64.entry.js → p-ab96941e.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-6fc7d11b.entry.js → p-af94512e.entry.js} +3 -3
- package/dist/nylas-web-elements/{p-bfe2bdbd.js → p-b3ca5d4d.js} +2 -2
- package/dist/nylas-web-elements/{p-80d57b5a.entry.js → p-cd24a45e.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-6364eb02.entry.js → p-e9369c76.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-b2241c3c.entry.js → p-f00d1bb3.entry.js} +2 -2
- package/dist/nylas-web-elements/p-f73e34dd.js +14 -0
- package/dist/nylas-web-elements/{p-2b97a896.js.map → p-f73e34dd.js.map} +1 -1
- package/dist/types/common/constants.d.ts +216 -1
- package/dist/types/components/scheduler-editor/nylas-editor-tabs-group/nylas-editor-tabs-group.d.ts +0 -2
- package/dist/types/components/scheduler-editor/nylas-scheduler-editor/ExpressFlow.d.ts +1 -2
- package/dist/types/components/scheduler-editor/nylas-scheduler-editor/nylas-scheduler-editor.d.ts +3 -1
- package/dist/types/components/scheduler-editor/nylas-select-event-type/nylas-select-event-type.d.ts +2 -1
- package/dist/types/components.d.ts +18 -2
- package/dist/types/stores/scheduler-config-store.d.ts +2 -1
- package/package.json +1 -1
- package/dist/cjs/constants-3b9fb535.js.map +0 -1
- package/dist/cjs/utils-0dfca9ec.js.map +0 -1
- package/dist/esm/constants-3d8016e3.js.map +0 -1
- package/dist/esm/utils-6c05ecaf.js.map +0 -1
- package/dist/nylas-web-elements/p-2b97a896.js +0 -14
- package/dist/nylas-web-elements/p-35b7d082.entry.js +0 -11
- package/dist/nylas-web-elements/p-35b7d082.entry.js.map +0 -1
- package/dist/nylas-web-elements/p-6f7cb609.js +0 -2
- package/dist/nylas-web-elements/p-6f7cb609.js.map +0 -1
- package/dist/nylas-web-elements/p-bea31f39.entry.js.map +0 -1
- package/dist/nylas-web-elements/p-faa723fc.entry.js.map +0 -1
- /package/dist/nylas-web-elements/{p-865721fd.entry.js.map → p-05204c68.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-2b38054f.entry.js.map → p-0d422938.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-c59787f4.js.map → p-0d6ecada.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-e2632a60.js.map → p-198f05a6.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-4e1e01e4.entry.js.map → p-29f601d9.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-60b48bf7.js.map → p-3a3c5e17.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-6bb6a0b8.entry.js.map → p-447837c2.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-3cc1072e.js.map → p-84109239.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-d16cd88b.entry.js.map → p-a7d2a211.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-a9a0dd64.entry.js.map → p-ab96941e.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-6fc7d11b.entry.js.map → p-af94512e.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-bfe2bdbd.js.map → p-b3ca5d4d.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-80d57b5a.entry.js.map → p-cd24a45e.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-6364eb02.entry.js.map → p-e9369c76.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-b2241c3c.entry.js.map → p-f00d1bb3.entry.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nylas-scheduler-editor.js","sourceRoot":"","sources":["../../../../src/components/scheduler-editor/nylas-scheduler-editor/nylas-scheduler-editor.tsx"],"names":[],"mappings":"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","sourcesContent":["import { NylasBaseProvider } from '@/common/abstract-provider';\nimport type { SchedulerEditorEventOverride } from '@/common/component-types';\nimport { AuthArgs, NylasIdentityRequestWrapper, User, type NylasApiRequest } from '@/common/nylas-api-request';\nimport { RegisteredComponent } from '@/common/register-component';\nimport { NylasSchedulerConfigConnector } from '@/connector/nylas-scheduler-config-connector';\nimport { CreateNylasSchedulerConfigStore, NylasSchedulerConfigStoreState, NylasSchedulerConfigStoreType } from '@/stores/scheduler-config-store';\nimport { debug } from '@/utils/utils';\nimport { Config, NylasSessions } from '@nylas/identity';\nimport { Component, Element, Event, EventEmitter, Host, Listen, Method, Prop, State, Watch, h } from '@stencil/core';\nimport { LoginRequired } from './LoginRequired';\nimport ExpressFlow from './ExpressFlow';\nimport { AdditionalParticipant, GroupConfiguration } from '@nylas/core';\nimport { Tab } from '../nylas-editor-tabs/tab-contents';\nimport i18next from '@/utils/i18n';\nimport { CONFIGURATION_EVENT_TYPE, EXPERIMENTAL_FEATURES, LANGUAGE_CODE, LANGUAGE_MAP, Locale } from '@/common/constants';\n\n/**\n * The `nylas-scheduler-editor` component is a form that allows users to configure the settings for the Nylas Scheduler.\n *\n * @slot login-required - This slot is used to display a message when the user is not logged in.\n * @slot custom-page-style-inputs - This slot is used in \"app\" mode to pass a custom page style form to the nylas-page-styling component.\n *\n * @part nse__header - The header of the scheduler editor.\n * @part nse__title - The title of the scheduler editor.\n * @part nse__close-button - The close button of the scheduler editor. Use this part to hide the close button.\n * @part nse__content - The content of the scheduler editor. Use this part to adjust the height of the editor.\n * @part nse__list-configurations - The list of configurations. Use this part to adjust the height of the list.\n * @part nse__login-required - The login required component.\n * @part nse__login-required-card - The card of the login required component.\n * @part nse__login-required-text - The text of the login required component.\n * @part nse__login-required-google-button - The Google button of the login required component.\n * @part nse__login-required-microsoft-button - The Microsoft button of the login required component.\n * @part nse__login-required-other-provider-button - The other provider button of the login required component.\n * @part nse__login-required-disclaimer-text - The icon of the login required component.\n */\n@Component({\n tag: 'nylas-scheduler-editor',\n styleUrl: 'nylas-scheduler-editor.scss',\n shadow: true,\n})\nexport class NylasSchedulerEditor {\n /**\n * Stores to be used by the provider.\n */\n private stores?: {\n schedulerConfig: NylasSchedulerConfigStoreType;\n };\n\n /**\n * This is a base provide that defines the common methods and properties\n * that all providers should have.\n *\n * Because stencil does not support abstract classes, we have to use a\n * property to store the base provider instance.\n */\n private baseProvider?: NylasBaseProvider<Exclude<typeof this.stores, undefined>>;\n\n /**\n * The Nylas Scheduler Config Connector instance.\n * The brains of the provider. It manages data fetching and state synchronization.\n */\n private nylasSchedulerConfigConnector?: NylasSchedulerConfigConnector;\n\n /**\n * The host element.\n * Used to manage the host element of the provider.\n */\n @Element() private host!: HTMLNylasSchedulerEditorElement;\n\n /***\n * The configuration id to use for the scheduler editor.\n * If provided, then the scheduler editor will try and fetch the configuration\n * with the provided id. If found, it will automatically load the editor\n * with the configuration settings for editing.\n */\n @Prop({ mutable: true }) configurationId?: string;\n\n /**\n * The Nylas Api Request instance.\n * Used to make requests to the Nylas API.\n */\n @Prop({ mutable: true }) nylasApiRequest?: NylasApiRequest;\n\n /**\n * The Nylas Sessions configuration.\n * Used to configure the Nylas Sessions instance.\n */\n @Prop() nylasSessionsConfig?: Config;\n\n /**\n * The default authentication arguments to use when authenticating a user.\n */\n @Prop() defaultAuthArgs?: AuthArgs[];\n\n /**\n * This provides a way to override the default event handlers.\n */\n @Prop() eventOverrides: SchedulerEditorEventOverride = {};\n\n /**\n * The scheduler preview link used when the user clicks the preview button.\n * If `requiresSlug` is true, you can use the placeholder `{slug}` to insert the slug in the link for Nylas hosted scheduling pages.\n * Additionally, you can use the placeholder `{config.id}` to insert the configuration ID anywhere in the link.\n * For example: `https://book.nylas.com/us/<YOUR_NYLAS_APP_CLIENT_ID>/{slug}`.\n * `us` denotes the region. Replace it with the appropriate region of your application.\n * Replace `<YOUR_NYLAS_APP_CLIENT_ID>` with your Nylas app client ID.\n * Note: Nylas hosted scheduling pages are only available for public configurations.\n */\n @Prop({ attribute: 'scheduler-preview-link' }) schedulerPreviewLink: string = '';\n\n /**\n * The default scheduler config store state.\n * Used to set the initial state of the scheduler config store.\n * This state can be used to pass defaults to newly created configurations.\n */\n @Prop({ attribute: 'default-scheduler-config-store-state' }) readonly defaultSchedulerConfigState?: Partial<NylasSchedulerConfigStoreState>;\n\n /**\n * This is used to set the mode for the scheduler config.\n * The mode can be 'app' or 'composable'.\n * The default mode is 'app'.\n */\n @Prop({ attribute: 'mode' }) readonly mode: 'app' | 'composable' = 'app';\n\n /**\n * This prop is used to populate the additional participants and\n * their availability in the scheduler editor.\n */\n @Prop({ attribute: 'additional-participants' }) additionalParticipants?: AdditionalParticipant[];\n\n /**\n * This optional prop is used to hide tabs in the editor. Available tabs are:\n * eventInfo, availability, participants, bookingOptions, bookingForm\n */\n @Prop({ attribute: 'hide-editor-tabs' }) hideEditorTabs?: Tab[] = [];\n\n /**\n * This prop will be used to populate the conference provider options in the editor.\n * The key is the provider name ('zoom') and the value is the grant id.\n * We currently support same provider ('google', 'microsoft') for all participants and 'zoom' for cross-provider conferencing.\n */\n @Prop({ attribute: 'conference-providers' }) conferenceProviders?: Record<string, string>;\n\n /**\n * Indicates if a slug is required for the configuration.\n * When set to true, the user must enter a slug when creating or editing a configuration.\n * The slug is used for hosted pages. If using Nylas hosted scheduling pages, the `schedulerPreviewLink` prop can be set to redirect to a public configuration as follows:\n * `https://book.nylas.com/us/<YOUR_NYLAS_APP_CLIENT_ID>/{slug}`.\n * `us` denotes the region. Replace it with the appropriate region of your application.\n * Replace `<YOUR_NYLAS_APP_CLIENT_ID>` with your Nylas app client ID. The `{slug}` placeholder is replaced with the appropriate slug when the scheduler preview button is clicked.\n * Note: Nylas hosted scheduling pages are only available for public configurations.\n */\n @Prop({ attribute: 'requires-slug' }) requiresSlug: boolean = false;\n\n /**\n * Indicates if the user feedback feature is enabled.\n * By default, this is set to true. When enabled, the user feedback\n * feature will be available in the edit mode.\n * To disable the user feedback feature, set this prop to false.\n */\n @Prop() readonly enableUserFeedback?: boolean = true;\n\n /**\n * This prop will allow to set a default language for the Nylas scheduling page.\n */\n @Prop() readonly defaultLanguage?: LANGUAGE_CODE;\n\n /**\n * This prop will allow to override the default localization strings for each language.\n * Nylas scheduling page currently support the following language codes: en, es, fr, de, sv, zh, ja, nl.\n */\n @Prop() readonly localization?: Partial<Record<LANGUAGE_CODE, Locale>>;\n\n /**\n * This prop will allow to show / hide the option to manage nylas branding in the email template.\n * By default, this is set to true. When enabled, the option to show/hide nylas branding will be shown in the email template.\n * To disable the option to show/hide nylas branding, set this prop to false.\n */\n @Prop() readonly nylasBranding?: boolean = true;\n\n /**\n * This prop is to opt in to experimental features.\n * Ex: { 'group_events': true }\n */\n @Prop() readonly experimentalFeatures?: Record<EXPERIMENTAL_FEATURES, boolean>;\n\n /**\n * This event is fired when the provider is initialized.\n * By default, this event handles determining if the user is logged in or not.\n * In addition, it fetches the provided configuration if a valid configuration id is provided.\n */\n @Event({ cancelable: true }) readonly init!: EventEmitter<HTMLNylasSchedulerEditorElement>;\n\n /**\n * This event is fired when the the NylasAuth isAuthenticated state changes\n * to true.\n */\n @Event({ cancelable: true }) readonly loggedIn!: EventEmitter<HTMLNylasSchedulerEditorElement>;\n\n /**\n * This event is fired when the the NylasAuth isAuthenticated state changes\n * to false.\n */\n @Event({ cancelable: true }) readonly loggedOut!: EventEmitter<HTMLNylasSchedulerEditorElement>;\n\n /**\n * This event is fired when the close button on scheduler config is clicked.\n */\n @Event({ cancelable: true }) readonly schedulerConfigCloseClicked!: EventEmitter<HTMLNylasSchedulerEditorElement>;\n\n /**\n * Automatically register components that have the `@RegisterComponent` decorator.\n * If this is set to false, you will need to manually register components using the\n * `registerComponent` method.\n * @default true\n */\n @State() automaticComponentRegistration: boolean = true;\n\n /**\n * This state will track the current selected language of the scheduler page.\n */\n @State() selectedLanguage: LANGUAGE_CODE = this.defaultLanguage || LANGUAGE_CODE.en;\n\n /**\n * This state will track the current language version of the state.\n * This is used to force the component to re-render when the localization prop is updated.\n */\n @State() langVersion: number = 0;\n\n connectedCallback() {\n debug(`[nylas-scheduler-editor] connectedCallback`);\n }\n\n async componentWillLoad() {\n debug(`[nylas-scheduler-editor] componentWillLoad`);\n const filteredAdditionalParticipants = this.additionalParticipants?.filter(participant => {\n const filteredCalendars = participant.calendars?.length > 0 ? participant.calendars.filter(calendar => calendar.id && calendar.name) : [];\n if (participant.name && participant.email && filteredCalendars.length > 0) {\n return {\n name: participant.name,\n email: participant.email,\n calendars: filteredCalendars,\n };\n }\n });\n this.stores = {\n schedulerConfig: CreateNylasSchedulerConfigStore({\n ...this.defaultSchedulerConfigState,\n additionalParticipants: filteredAdditionalParticipants,\n conferenceProviders: this.conferenceProviders,\n requiresSlug: this.requiresSlug,\n selectedLanguage: this.defaultLanguage || LANGUAGE_CODE.en,\n nylasBranding: this.nylasBranding,\n experimentalFeatures: this.experimentalFeatures,\n }),\n };\n\n if (!this.nylasApiRequest && this.nylasSessionsConfig) {\n const nylasSession = new NylasSessions(this.nylasSessionsConfig);\n\n // We must check if the user is logged in before continuing\n // otherwise, a PCKE code will not be generated and the user\n // will not be able to log in.\n await nylasSession.isLoggedIn();\n\n // Watch for login events so that we can automatically update the state\n nylasSession.onLoginSuccess(async () => {\n const currentUser = await this.nylasSchedulerConfigConnector?.schedulerConfig?.currentUser();\n if (currentUser) {\n const loggedInEvent = this.loggedIn.emit(this.host);\n if ('loggedIn' in this.eventOverrides) {\n await this.eventOverrides.loggedIn(loggedInEvent, this.nylasSchedulerConfigConnector);\n }\n if (!loggedInEvent.defaultPrevented) {\n await this.loggedInHandler(currentUser);\n }\n }\n });\n\n // Watch for logout events so that we can automatically update the state\n nylasSession.onLoginFail(async () => {\n this.stores?.schedulerConfig?.set('currentUser', null);\n const loggedOutEvent = this.loggedOut.emit(this.host);\n if ('loggedOut' in this.eventOverrides) {\n await this.eventOverrides.loggedOut(loggedOutEvent, this.nylasSchedulerConfigConnector);\n if (loggedOutEvent.defaultPrevented) {\n return;\n }\n }\n });\n\n this.nylasApiRequest = new NylasIdentityRequestWrapper(nylasSession);\n }\n\n if (this.nylasApiRequest && this.defaultAuthArgs) {\n this.nylasApiRequest.setDefaultAuthArgs(this.defaultAuthArgs);\n }\n\n this.baseProvider = new NylasBaseProvider(this.host, this.stores, this.automaticComponentRegistration, this.eventOverrides);\n\n const nylasSchedulerConfigStore = this.baseProvider.getStore('schedulerConfig');\n this.nylasSchedulerConfigConnector = new NylasSchedulerConfigConnector({\n nylasApiRequest: this.nylasApiRequest,\n nylasSchedulerConfigStore: nylasSchedulerConfigStore,\n });\n\n const initEvent = this.init.emit(this.host);\n if ('init' in this.eventOverrides) {\n await this.eventOverrides.init(initEvent, this.nylasSchedulerConfigConnector);\n }\n\n if (!initEvent.defaultPrevented) {\n const currentUser = await this.nylasSchedulerConfigConnector?.schedulerConfig?.currentUser();\n if (currentUser) {\n const loggedInEvent = this.loggedIn.emit(this.host);\n if ('loggedIn' in this.eventOverrides) {\n await this.eventOverrides.loggedIn(loggedInEvent, this.nylasSchedulerConfigConnector);\n }\n if (!loggedInEvent.defaultPrevented) {\n await this.loggedInHandler(currentUser);\n }\n } else {\n this.stores?.schedulerConfig?.set('currentUser', null);\n const loggedOutEvent = this.loggedOut.emit(this.host);\n if ('loggedOut' in this.eventOverrides) {\n await this.eventOverrides.loggedOut(loggedOutEvent, this.nylasSchedulerConfigConnector);\n if (loggedOutEvent.defaultPrevented) {\n return;\n }\n }\n }\n }\n\n // Watch for store changes\n this.stores?.schedulerConfig?.onChange('selectedConfiguration', async config => {\n if (config && config.id) {\n this.configurationId = config.id;\n }\n });\n\n this.baseProvider?.componentWillLoad(this.nylasSchedulerConfigConnector);\n }\n\n async componentDidLoad() {\n debug(`[nylas-scheduler-editor] componentDidLoad`);\n await this.baseProvider?.componentDidLoad();\n this.updateLocalization(this.localization);\n }\n\n async componentDisconnected() {\n await this.baseProvider?.componentDisconnected();\n }\n\n /**\n * Watch for changes to the configuration id and automatically fetch the configuration\n * when the configuration id changes. If the configuration id is cleared, then the\n * configuration is cleared as well.\n * @param newConfigurationId The new configuration id\n */\n @Watch('configurationId')\n async configurationIdChanged(newConfigurationId: string) {\n if (newConfigurationId) {\n await this.nylasSchedulerConfigConnector?.schedulerConfig?.getConfigurationById(newConfigurationId);\n this.stores?.schedulerConfig?.set('action', 'edit');\n } else {\n // Clear the configuration\n this.stores?.schedulerConfig?.set('selectedConfiguration', {});\n this.stores?.schedulerConfig?.set('action', null);\n }\n }\n\n @Watch('localization')\n updateLocalization(newVal?: Partial<Record<LANGUAGE_CODE, Locale>>) {\n if (!newVal) {\n return;\n }\n\n Object.keys(newVal).forEach(lang => {\n if (!(lang in LANGUAGE_CODE)) {\n return;\n }\n i18next.addResourceBundle(\n lang,\n 'translation',\n newVal[lang],\n false, // Merge with existing translations\n true, // Replace the existing translations with the same key\n );\n });\n this.langVersion++;\n }\n\n @Watch('nylasBranding')\n updateNylasBranding(newVal: boolean) {\n this.stores?.schedulerConfig?.set('nylasBranding', newVal);\n }\n\n @Watch('experimentalFeatures')\n updateExperimentalFeatures(newVal: Record<EXPERIMENTAL_FEATURES, boolean>) {\n this.stores?.schedulerConfig?.set('experimentalFeatures', newVal);\n }\n\n /**\n * This method is used to get the NylasSchedulerConfigStore instance.\n * You can use this instance to update or get the state of the store.\n * @returns Promise<NylasSchedulerConfigStoreType | undefined>\n */\n @Method()\n async store(): Promise<NylasSchedulerConfigStoreType | undefined> {\n return this.stores?.schedulerConfig;\n }\n\n /**\n * This method is used to get the NylasSchedulerConfigConnector instance.\n * You can use this instance to make requests to the Nylas API.\n * @returns Promise<NylasSchedulerConfigConnector | undefined>\n */\n @Method()\n async schedulerConnector(): Promise<NylasSchedulerConfigConnector | undefined> {\n return this.nylasSchedulerConfigConnector;\n }\n\n /**\n * This is a custom event handler that is used to register a component with the provider.\n * It is used by components that have the `@RegisterComponent` decorator.\n * @param event A custom event that contains the component to register\n * @returns Promise<void>\n */\n @Listen('registerComponent')\n async registerComponentHandler(event: CustomEvent<RegisteredComponent<any, any>>): Promise<void> {\n this.baseProvider?.registerComponent(event.detail);\n }\n\n /**\n * This is a custom event handler that is used to unregister a component with the provider.\n * It is used by components that have the `@RegisterComponent` decorator.\n * @param event A custom event that contains the component to unregister\n * @returns Promise<void>\n */\n @Listen('unregisterComponent')\n async unregisterComponentHandler(event: CustomEvent<RegisteredComponent<any, any>>): Promise<void> {\n this.baseProvider?.unregisterComponent(event.detail);\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 === 'language') {\n this.selectedLanguage = LANGUAGE_CODE[value as LANGUAGE_CODE];\n i18next.changeLanguage(this.selectedLanguage);\n this.stores?.schedulerConfig?.set('selectedLanguage', this.selectedLanguage);\n }\n }\n\n /**\n * Upon login, set the current user and fetch the configuration and calendars.\n * @param currentUser The current user that is logged in\n */\n private async loggedInHandler(currentUser: User) {\n this.stores?.schedulerConfig?.set('currentUser', currentUser);\n\n if (!this.nylasSchedulerConfigConnector) {\n return;\n }\n\n await this.nylasSchedulerConfigConnector.schedulerConfig?.getCalendars();\n\n if (this.configurationId) {\n const data = await this.nylasSchedulerConfigConnector.schedulerConfig?.getConfigurationById(this.configurationId);\n if (data && data[0]?.id) {\n this.stores?.schedulerConfig?.set('action', 'edit');\n }\n }\n }\n\n /**\n * This is a custom event handler that is used to update the state of the provider.\n */\n private handleSchedulerConfigCloseClicked = (_event: Event) => {\n const event = this.schedulerConfigCloseClicked.emit(this.host);\n if ('schedulerConfigCloseClicked' in this.eventOverrides) {\n this.eventOverrides.schedulerConfigCloseClicked(event, this.nylasSchedulerConfigConnector);\n }\n\n if (!event.defaultPrevented) {\n localStorage.removeItem('grant');\n localStorage.removeItem('user');\n window.location.reload();\n }\n };\n\n /**\n * This method is used to get the authentication URL for a provider.\n * @param provider The provider to get the authentication URL for (e.g. google, microsoft, etc.)\n * @returns Promise<string> The authentication URL to redirect the user for the provider\n */\n private authenticationUrl = async (provider?: string) => {\n if (!this.nylasApiRequest) {\n console.error(`[nylas-scheduler-editor] Nylas API Request is not initialized.`);\n return '';\n }\n const url = await this.nylasApiRequest.authenticationUrl({ provider });\n\n return url || '';\n };\n\n render() {\n const hasSlot = this.host.querySelector('[slot=\"custom-page-style-inputs\"]');\n const selectedConfigId = this.stores?.schedulerConfig?.state.selectedConfiguration?.id;\n const languageOptions = Object.keys(LANGUAGE_MAP).map(key => ({\n label: LANGUAGE_MAP[key],\n value: key,\n }));\n const isGroupType =\n this.stores?.schedulerConfig?.state.selectedEventType === CONFIGURATION_EVENT_TYPE.group ||\n (this.stores?.schedulerConfig?.state.selectedConfiguration as GroupConfiguration)?.type === CONFIGURATION_EVENT_TYPE.group;\n\n return (\n <Host>\n <div class=\"scheduler-editor-header\" part=\"nse__header\">\n <h1 class=\"scheduler-editor-title\" part=\"nse__title\">\n <calendar-icon width=\"18\" height=\"18\" />\n {i18next.t('schedulerEditorTitle')}\n </h1>\n <div\n class={{\n language: true,\n }}\n part=\"nse__language\"\n >\n <select-dropdown\n name=\"language\"\n searchPlaceholder={i18next.t('search')}\n options={languageOptions}\n withChevron={false}\n defaultSelectedOption={languageOptions.find(lang => lang.value == this.selectedLanguage)}\n exportparts=\"sd_dropdown: nse__language-dropdown, sd_dropdown-button: nse__language-drop-button, sd_dropdown-content: nse__language-drop-content, sd_dropdown_label: nse__language-drop-label\"\n >\n <span slot=\"select-icon\">\n <translate-icon width=\"20\" height=\"20\" />\n </span>\n </select-dropdown>\n </div>\n <button class=\"scheduler-editor-close\" title=\"logout\" onClick={e => this.handleSchedulerConfigCloseClicked(e)} part=\"nse__close-button\">\n <close-icon width=\"18\" height=\"18\" />\n </button>\n </div>\n <div\n class={{\n 'scheduler-editor-content': true,\n 'scheduler-editor-content--group_feature_enabled': !!this.stores?.schedulerConfig?.state.experimentalFeatures?.[EXPERIMENTAL_FEATURES.group_events],\n 'scheduler-editor-content--group': isGroupType,\n }}\n part=\"nse__content\"\n >\n {this.stores?.schedulerConfig?.state.currentUser && this.stores.schedulerConfig.state.action === null && (\n <div class=\"list-configurations\" part=\"nse__list-configurations\">\n <nylas-list-configurations exportparts=\"nlc__create-new-cta, actions__dropdown, actions__dropdown-button, actions__dropdown-content, actions-Copy, actions-Preview, actions-Delete\"></nylas-list-configurations>\n </div>\n )}\n {this.stores?.schedulerConfig?.state.currentUser &&\n this.stores.schedulerConfig.state.action === 'create-select' &&\n this.stores?.schedulerConfig?.state.experimentalFeatures?.[EXPERIMENTAL_FEATURES.group_events] && <nylas-select-event-type></nylas-select-event-type>}\n {this.stores?.schedulerConfig?.state.currentUser && this.stores.schedulerConfig.state.action === 'create' && isGroupType && (\n // If the mode is 'app', then render the editor tabs in a composable mode with children for creating a new configuration (Express flow).\n <nylas-editor-tabs-group mode=\"composable\">\n <ExpressFlow\n experimentalFeatures={this.stores?.schedulerConfig?.state?.experimentalFeatures}\n selectedEventType={this.stores?.schedulerConfig?.state?.selectedEventType || CONFIGURATION_EVENT_TYPE.one_on_one}\n currentUser={this.stores?.schedulerConfig?.state.currentUser}\n calendars={this.stores?.schedulerConfig?.state?.calendars}\n selectedConfiguration={this.stores?.schedulerConfig?.state?.selectedConfiguration}\n />\n </nylas-editor-tabs-group>\n )}\n {this.stores?.schedulerConfig?.state.currentUser && this.stores.schedulerConfig.state.action === 'create' && !isGroupType && (\n // If the mode is 'app', then render the editor tabs in a composable mode with children for creating a new configuration (Express flow).\n <nylas-editor-tabs mode=\"composable\">\n <ExpressFlow\n experimentalFeatures={this.stores?.schedulerConfig?.state?.experimentalFeatures}\n selectedEventType={this.stores?.schedulerConfig?.state?.selectedEventType || CONFIGURATION_EVENT_TYPE.one_on_one}\n currentUser={this.stores?.schedulerConfig?.state.currentUser}\n calendars={this.stores?.schedulerConfig?.state?.calendars}\n selectedConfiguration={this.stores?.schedulerConfig?.state?.selectedConfiguration}\n />\n </nylas-editor-tabs>\n )}\n {this.stores?.schedulerConfig?.state.currentUser && this.stores.schedulerConfig.state.action === 'edit' && isGroupType && (\n <nylas-editor-tabs-group key={selectedConfigId} mode={this.mode}>\n {this.mode === 'composable' && <slot />}\n {this.mode === 'app' && hasSlot && (\n <div style={{ display: 'none' }} slot=\"custom-page-style-inputs\" key={selectedConfigId}>\n <slot name=\"custom-page-style-inputs\" />\n </div>\n )}\n </nylas-editor-tabs-group>\n )}\n {this.stores?.schedulerConfig?.state.currentUser && this.stores.schedulerConfig.state.action === 'edit' && !isGroupType && (\n <nylas-editor-tabs key={selectedConfigId} mode={this.mode}>\n {this.mode === 'composable' && <slot />}\n {this.mode === 'app' && hasSlot && (\n <div style={{ display: 'none' }} slot=\"custom-page-style-inputs\" key={selectedConfigId}>\n <slot name=\"custom-page-style-inputs\" />\n </div>\n )}\n </nylas-editor-tabs>\n )}\n {!this.stores?.schedulerConfig?.state.currentUser && (\n <slot name=\"login-required\">\n <LoginRequired authenticationUrl={this.authenticationUrl} />\n </slot>\n )}\n </div>\n </Host>\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"nylas-scheduler-editor.js","sourceRoot":"","sources":["../../../../src/components/scheduler-editor/nylas-scheduler-editor/nylas-scheduler-editor.tsx"],"names":[],"mappings":"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","sourcesContent":["import { NylasBaseProvider } from '@/common/abstract-provider';\nimport type { SchedulerEditorEventOverride } from '@/common/component-types';\nimport { AuthArgs, NylasIdentityRequestWrapper, User, type NylasApiRequest } from '@/common/nylas-api-request';\nimport { RegisteredComponent } from '@/common/register-component';\nimport { NylasSchedulerConfigConnector } from '@/connector/nylas-scheduler-config-connector';\nimport { CreateNylasSchedulerConfigStore, NylasSchedulerConfigStoreState, NylasSchedulerConfigStoreType } from '@/stores/scheduler-config-store';\nimport { debug } from '@/utils/utils';\nimport { Config, NylasSessions } from '@nylas/identity';\nimport { Component, Element, Event, EventEmitter, Host, Listen, Method, Prop, State, Watch, h } from '@stencil/core';\nimport { LoginRequired } from './LoginRequired';\nimport ExpressFlow from './ExpressFlow';\nimport { AdditionalParticipant, GroupConfiguration, EnableEventTypes } from '@nylas/core';\nimport { Tab } from '../nylas-editor-tabs/tab-contents';\nimport i18next from '@/utils/i18n';\nimport { CONFIGURATION_EVENT_TYPE, EXPERIMENTAL_FEATURES, LANGUAGE_CODE, LANGUAGE_MAP, Locale } from '@/common/constants';\n\n/**\n * The `nylas-scheduler-editor` component is a form that allows users to configure the settings for the Nylas Scheduler.\n *\n * @slot login-required - This slot is used to display a message when the user is not logged in.\n * @slot custom-page-style-inputs - This slot is used in \"app\" mode to pass a custom page style form to the nylas-page-styling component.\n *\n * @part nse__header - The header of the scheduler editor.\n * @part nse__title - The title of the scheduler editor.\n * @part nse__close-button - The close button of the scheduler editor. Use this part to hide the close button.\n * @part nse__content - The content of the scheduler editor. Use this part to adjust the height of the editor.\n * @part nse__list-configurations - The list of configurations. Use this part to adjust the height of the list.\n * @part nse__login-required - The login required component.\n * @part nse__login-required-card - The card of the login required component.\n * @part nse__login-required-text - The text of the login required component.\n * @part nse__login-required-google-button - The Google button of the login required component.\n * @part nse__login-required-microsoft-button - The Microsoft button of the login required component.\n * @part nse__login-required-other-provider-button - The other provider button of the login required component.\n * @part nse__login-required-disclaimer-text - The icon of the login required component.\n */\n@Component({\n tag: 'nylas-scheduler-editor',\n styleUrl: 'nylas-scheduler-editor.scss',\n shadow: true,\n})\nexport class NylasSchedulerEditor {\n /**\n * Stores to be used by the provider.\n */\n private stores?: {\n schedulerConfig: NylasSchedulerConfigStoreType;\n };\n\n /**\n * This is a base provide that defines the common methods and properties\n * that all providers should have.\n *\n * Because stencil does not support abstract classes, we have to use a\n * property to store the base provider instance.\n */\n private baseProvider?: NylasBaseProvider<Exclude<typeof this.stores, undefined>>;\n\n /**\n * The Nylas Scheduler Config Connector instance.\n * The brains of the provider. It manages data fetching and state synchronization.\n */\n private nylasSchedulerConfigConnector?: NylasSchedulerConfigConnector;\n\n /**\n * The host element.\n * Used to manage the host element of the provider.\n */\n @Element() private host!: HTMLNylasSchedulerEditorElement;\n\n /***\n * The configuration id to use for the scheduler editor.\n * If provided, then the scheduler editor will try and fetch the configuration\n * with the provided id. If found, it will automatically load the editor\n * with the configuration settings for editing.\n */\n @Prop({ mutable: true }) configurationId?: string;\n\n /**\n * The Nylas Api Request instance.\n * Used to make requests to the Nylas API.\n */\n @Prop({ mutable: true }) nylasApiRequest?: NylasApiRequest;\n\n /**\n * The Nylas Sessions configuration.\n * Used to configure the Nylas Sessions instance.\n */\n @Prop() nylasSessionsConfig?: Config;\n\n /**\n * The default authentication arguments to use when authenticating a user.\n */\n @Prop() defaultAuthArgs?: AuthArgs[];\n\n /**\n * This provides a way to override the default event handlers.\n */\n @Prop() eventOverrides: SchedulerEditorEventOverride = {};\n\n /**\n * The scheduler preview link used when the user clicks the preview button.\n * If `requiresSlug` is true, you can use the placeholder `{slug}` to insert the slug in the link for Nylas hosted scheduling pages.\n * Additionally, you can use the placeholder `{config.id}` to insert the configuration ID anywhere in the link.\n * For example: `https://book.nylas.com/us/<YOUR_NYLAS_APP_CLIENT_ID>/{slug}`.\n * `us` denotes the region. Replace it with the appropriate region of your application.\n * Replace `<YOUR_NYLAS_APP_CLIENT_ID>` with your Nylas app client ID.\n * Note: Nylas hosted scheduling pages are only available for public configurations.\n */\n @Prop({ attribute: 'scheduler-preview-link' }) schedulerPreviewLink: string = '';\n\n /**\n * The default scheduler config store state.\n * Used to set the initial state of the scheduler config store.\n * This state can be used to pass defaults to newly created configurations.\n */\n @Prop({ attribute: 'default-scheduler-config-store-state' }) readonly defaultSchedulerConfigState?: Partial<NylasSchedulerConfigStoreState>;\n\n /**\n * This is used to set the mode for the scheduler config.\n * The mode can be 'app' or 'composable'.\n * The default mode is 'app'.\n */\n @Prop({ attribute: 'mode' }) readonly mode: 'app' | 'composable' = 'app';\n\n /**\n * This prop is used to populate the additional participants and\n * their availability in the scheduler editor.\n */\n @Prop({ attribute: 'additional-participants' }) additionalParticipants?: AdditionalParticipant[];\n\n /**\n * This optional prop is used to hide tabs in the editor. Available tabs are:\n * eventInfo, availability, participants, bookingOptions, bookingForm\n */\n @Prop({ attribute: 'hide-editor-tabs' }) hideEditorTabs?: Tab[] = [];\n\n /**\n * This prop will be used to populate the conference provider options in the editor.\n * The key is the provider name ('zoom') and the value is the grant id.\n * We currently support same provider ('google', 'microsoft') for all participants and 'zoom' for cross-provider conferencing.\n */\n @Prop({ attribute: 'conference-providers' }) conferenceProviders?: Record<string, string>;\n\n /**\n * Indicates if a slug is required for the configuration.\n * When set to true, the user must enter a slug when creating or editing a configuration.\n * The slug is used for hosted pages. If using Nylas hosted scheduling pages, the `schedulerPreviewLink` prop can be set to redirect to a public configuration as follows:\n * `https://book.nylas.com/us/<YOUR_NYLAS_APP_CLIENT_ID>/{slug}`.\n * `us` denotes the region. Replace it with the appropriate region of your application.\n * Replace `<YOUR_NYLAS_APP_CLIENT_ID>` with your Nylas app client ID. The `{slug}` placeholder is replaced with the appropriate slug when the scheduler preview button is clicked.\n * Note: Nylas hosted scheduling pages are only available for public configurations.\n */\n @Prop({ attribute: 'requires-slug' }) requiresSlug: boolean = false;\n\n /**\n * Indicates if the user feedback feature is enabled.\n * By default, this is set to true. When enabled, the user feedback\n * feature will be available in the edit mode.\n * To disable the user feedback feature, set this prop to false.\n */\n @Prop() readonly enableUserFeedback?: boolean = true;\n\n /**\n * This prop will allow to set a default language for the Nylas scheduling page.\n */\n @Prop() readonly defaultLanguage?: LANGUAGE_CODE;\n\n /**\n * This prop will allow to override the default localization strings for each language.\n * Nylas scheduling page currently support the following language codes: en, es, fr, de, sv, zh, ja, nl.\n */\n @Prop() readonly localization?: Partial<Record<LANGUAGE_CODE, Locale>>;\n\n /**\n * This prop will allow to show / hide the option to manage nylas branding in the email template.\n * By default, this is set to true. When enabled, the option to show/hide nylas branding will be shown in the email template.\n * To disable the option to show/hide nylas branding, set this prop to false.\n */\n @Prop() readonly nylasBranding?: boolean = true;\n\n /**\n * This prop is to opt in to experimental features.\n * Ex: { 'group_events': true }\n */\n @Prop() readonly experimentalFeatures?: Record<EXPERIMENTAL_FEATURES, boolean>;\n\n /**\n * Controls which event types are enabled in the Scheduler.\n *\n * - By default, all event types are enabled and users will see a selection screen when creating a new event.\n * - You can disable specific event types by setting them to `false`.\n * - At least one event type must remain enabled at all times.\n * - If only one event type is enabled, the event type selection screen will be skipped.\n */\n @Prop() readonly enableEventTypes?: EnableEventTypes = {\n one_on_one: true,\n collective: true,\n max_fairness: true,\n max_availability: true,\n group: true,\n };\n\n /**\n * This event is fired when the provider is initialized.\n * By default, this event handles determining if the user is logged in or not.\n * In addition, it fetches the provided configuration if a valid configuration id is provided.\n */\n @Event({ cancelable: true }) readonly init!: EventEmitter<HTMLNylasSchedulerEditorElement>;\n\n /**\n * This event is fired when the the NylasAuth isAuthenticated state changes\n * to true.\n */\n @Event({ cancelable: true }) readonly loggedIn!: EventEmitter<HTMLNylasSchedulerEditorElement>;\n\n /**\n * This event is fired when the the NylasAuth isAuthenticated state changes\n * to false.\n */\n @Event({ cancelable: true }) readonly loggedOut!: EventEmitter<HTMLNylasSchedulerEditorElement>;\n\n /**\n * This event is fired when the close button on scheduler config is clicked.\n */\n @Event({ cancelable: true }) readonly schedulerConfigCloseClicked!: EventEmitter<HTMLNylasSchedulerEditorElement>;\n\n /**\n * Automatically register components that have the `@RegisterComponent` decorator.\n * If this is set to false, you will need to manually register components using the\n * `registerComponent` method.\n * @default true\n */\n @State() automaticComponentRegistration: boolean = true;\n\n /**\n * This state will track the current selected language of the scheduler page.\n */\n @State() selectedLanguage: LANGUAGE_CODE = this.defaultLanguage || LANGUAGE_CODE.en;\n\n /**\n * This state will track the current language version of the state.\n * This is used to force the component to re-render when the localization prop is updated.\n */\n @State() langVersion: number = 0;\n\n connectedCallback() {\n debug(`[nylas-scheduler-editor] connectedCallback`);\n }\n\n async componentWillLoad() {\n debug(`[nylas-scheduler-editor] componentWillLoad`);\n const filteredAdditionalParticipants = this.additionalParticipants?.filter(participant => {\n const filteredCalendars = participant.calendars?.length > 0 ? participant.calendars.filter(calendar => calendar.id && calendar.name) : [];\n if (participant.name && participant.email && filteredCalendars.length > 0) {\n return {\n name: participant.name,\n email: participant.email,\n calendars: filteredCalendars,\n };\n }\n });\n this.stores = {\n schedulerConfig: CreateNylasSchedulerConfigStore({\n ...this.defaultSchedulerConfigState,\n additionalParticipants: filteredAdditionalParticipants,\n conferenceProviders: this.conferenceProviders,\n requiresSlug: this.requiresSlug,\n selectedLanguage: this.defaultLanguage || LANGUAGE_CODE.en,\n nylasBranding: this.nylasBranding,\n experimentalFeatures: this.experimentalFeatures,\n enableEventTypes: this.enableEventTypes,\n }),\n };\n\n if (!this.nylasApiRequest && this.nylasSessionsConfig) {\n const nylasSession = new NylasSessions(this.nylasSessionsConfig);\n\n // We must check if the user is logged in before continuing\n // otherwise, a PCKE code will not be generated and the user\n // will not be able to log in.\n await nylasSession.isLoggedIn();\n\n // Watch for login events so that we can automatically update the state\n nylasSession.onLoginSuccess(async () => {\n const currentUser = await this.nylasSchedulerConfigConnector?.schedulerConfig?.currentUser();\n if (currentUser) {\n const loggedInEvent = this.loggedIn.emit(this.host);\n if ('loggedIn' in this.eventOverrides) {\n await this.eventOverrides.loggedIn(loggedInEvent, this.nylasSchedulerConfigConnector);\n }\n if (!loggedInEvent.defaultPrevented) {\n await this.loggedInHandler(currentUser);\n }\n }\n });\n\n // Watch for logout events so that we can automatically update the state\n nylasSession.onLoginFail(async () => {\n this.stores?.schedulerConfig?.set('currentUser', null);\n const loggedOutEvent = this.loggedOut.emit(this.host);\n if ('loggedOut' in this.eventOverrides) {\n await this.eventOverrides.loggedOut(loggedOutEvent, this.nylasSchedulerConfigConnector);\n if (loggedOutEvent.defaultPrevented) {\n return;\n }\n }\n });\n\n this.nylasApiRequest = new NylasIdentityRequestWrapper(nylasSession);\n }\n\n if (this.nylasApiRequest && this.defaultAuthArgs) {\n this.nylasApiRequest.setDefaultAuthArgs(this.defaultAuthArgs);\n }\n\n this.baseProvider = new NylasBaseProvider(this.host, this.stores, this.automaticComponentRegistration, this.eventOverrides);\n\n const nylasSchedulerConfigStore = this.baseProvider.getStore('schedulerConfig');\n this.nylasSchedulerConfigConnector = new NylasSchedulerConfigConnector({\n nylasApiRequest: this.nylasApiRequest,\n nylasSchedulerConfigStore: nylasSchedulerConfigStore,\n });\n\n const initEvent = this.init.emit(this.host);\n if ('init' in this.eventOverrides) {\n await this.eventOverrides.init(initEvent, this.nylasSchedulerConfigConnector);\n }\n\n if (!initEvent.defaultPrevented) {\n const currentUser = await this.nylasSchedulerConfigConnector?.schedulerConfig?.currentUser();\n if (currentUser) {\n const loggedInEvent = this.loggedIn.emit(this.host);\n if ('loggedIn' in this.eventOverrides) {\n await this.eventOverrides.loggedIn(loggedInEvent, this.nylasSchedulerConfigConnector);\n }\n if (!loggedInEvent.defaultPrevented) {\n await this.loggedInHandler(currentUser);\n }\n } else {\n this.stores?.schedulerConfig?.set('currentUser', null);\n const loggedOutEvent = this.loggedOut.emit(this.host);\n if ('loggedOut' in this.eventOverrides) {\n await this.eventOverrides.loggedOut(loggedOutEvent, this.nylasSchedulerConfigConnector);\n if (loggedOutEvent.defaultPrevented) {\n return;\n }\n }\n }\n }\n\n // Watch for store changes\n this.stores?.schedulerConfig?.onChange('selectedConfiguration', async config => {\n if (config && config.id) {\n this.configurationId = config.id;\n }\n });\n\n this.baseProvider?.componentWillLoad(this.nylasSchedulerConfigConnector);\n }\n\n async componentDidLoad() {\n debug(`[nylas-scheduler-editor] componentDidLoad`);\n await this.baseProvider?.componentDidLoad();\n this.updateLocalization(this.localization);\n }\n\n async componentDisconnected() {\n await this.baseProvider?.componentDisconnected();\n }\n\n /**\n * Watch for changes to the configuration id and automatically fetch the configuration\n * when the configuration id changes. If the configuration id is cleared, then the\n * configuration is cleared as well.\n * @param newConfigurationId The new configuration id\n */\n @Watch('configurationId')\n async configurationIdChanged(newConfigurationId: string) {\n if (newConfigurationId) {\n await this.nylasSchedulerConfigConnector?.schedulerConfig?.getConfigurationById(newConfigurationId);\n this.stores?.schedulerConfig?.set('action', 'edit');\n } else {\n // Clear the configuration\n this.stores?.schedulerConfig?.set('selectedConfiguration', {});\n this.stores?.schedulerConfig?.set('action', null);\n }\n }\n\n @Watch('localization')\n updateLocalization(newVal?: Partial<Record<LANGUAGE_CODE, Locale>>) {\n if (!newVal) {\n return;\n }\n\n Object.keys(newVal).forEach(lang => {\n if (!(lang in LANGUAGE_CODE)) {\n return;\n }\n i18next.addResourceBundle(\n lang,\n 'translation',\n newVal[lang],\n false, // Merge with existing translations\n true, // Replace the existing translations with the same key\n );\n });\n this.langVersion++;\n }\n\n @Watch('nylasBranding')\n updateNylasBranding(newVal: boolean) {\n this.stores?.schedulerConfig?.set('nylasBranding', newVal);\n }\n\n @Watch('experimentalFeatures')\n updateExperimentalFeatures(newVal: Record<EXPERIMENTAL_FEATURES, boolean>) {\n this.stores?.schedulerConfig?.set('experimentalFeatures', newVal);\n }\n\n @Watch('enableEventTypes')\n updateEnableEventTypes(newVal: EnableEventTypes) {\n this.stores?.schedulerConfig?.set('enableEventTypes', newVal);\n }\n\n /**\n * This method is used to get the NylasSchedulerConfigStore instance.\n * You can use this instance to update or get the state of the store.\n * @returns Promise<NylasSchedulerConfigStoreType | undefined>\n */\n @Method()\n async store(): Promise<NylasSchedulerConfigStoreType | undefined> {\n return this.stores?.schedulerConfig;\n }\n\n /**\n * This method is used to get the NylasSchedulerConfigConnector instance.\n * You can use this instance to make requests to the Nylas API.\n * @returns Promise<NylasSchedulerConfigConnector | undefined>\n */\n @Method()\n async schedulerConnector(): Promise<NylasSchedulerConfigConnector | undefined> {\n return this.nylasSchedulerConfigConnector;\n }\n\n /**\n * This is a custom event handler that is used to register a component with the provider.\n * It is used by components that have the `@RegisterComponent` decorator.\n * @param event A custom event that contains the component to register\n * @returns Promise<void>\n */\n @Listen('registerComponent')\n async registerComponentHandler(event: CustomEvent<RegisteredComponent<any, any>>): Promise<void> {\n this.baseProvider?.registerComponent(event.detail);\n }\n\n /**\n * This is a custom event handler that is used to unregister a component with the provider.\n * It is used by components that have the `@RegisterComponent` decorator.\n * @param event A custom event that contains the component to unregister\n * @returns Promise<void>\n */\n @Listen('unregisterComponent')\n async unregisterComponentHandler(event: CustomEvent<RegisteredComponent<any, any>>): Promise<void> {\n this.baseProvider?.unregisterComponent(event.detail);\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 === 'language') {\n this.selectedLanguage = LANGUAGE_CODE[value as LANGUAGE_CODE];\n i18next.changeLanguage(this.selectedLanguage);\n this.stores?.schedulerConfig?.set('selectedLanguage', this.selectedLanguage);\n }\n }\n\n /**\n * Upon login, set the current user and fetch the configuration and calendars.\n * @param currentUser The current user that is logged in\n */\n private async loggedInHandler(currentUser: User) {\n this.stores?.schedulerConfig?.set('currentUser', currentUser);\n\n if (!this.nylasSchedulerConfigConnector) {\n return;\n }\n\n await this.nylasSchedulerConfigConnector.schedulerConfig?.getCalendars();\n\n if (this.configurationId) {\n const data = await this.nylasSchedulerConfigConnector.schedulerConfig?.getConfigurationById(this.configurationId);\n if (data && data[0]?.id) {\n this.stores?.schedulerConfig?.set('action', 'edit');\n }\n }\n }\n\n /**\n * This is a custom event handler that is used to update the state of the provider.\n */\n private handleSchedulerConfigCloseClicked = (_event: Event) => {\n const event = this.schedulerConfigCloseClicked.emit(this.host);\n if ('schedulerConfigCloseClicked' in this.eventOverrides) {\n this.eventOverrides.schedulerConfigCloseClicked(event, this.nylasSchedulerConfigConnector);\n }\n\n if (!event.defaultPrevented) {\n localStorage.removeItem('grant');\n localStorage.removeItem('user');\n window.location.reload();\n }\n };\n\n /**\n * This method is used to get the authentication URL for a provider.\n * @param provider The provider to get the authentication URL for (e.g. google, microsoft, etc.)\n * @returns Promise<string> The authentication URL to redirect the user for the provider\n */\n private authenticationUrl = async (provider?: string) => {\n if (!this.nylasApiRequest) {\n console.error(`[nylas-scheduler-editor] Nylas API Request is not initialized.`);\n return '';\n }\n const url = await this.nylasApiRequest.authenticationUrl({ provider });\n\n return url || '';\n };\n\n render() {\n const hasSlot = this.host.querySelector('[slot=\"custom-page-style-inputs\"]');\n const selectedConfigId = this.stores?.schedulerConfig?.state.selectedConfiguration?.id;\n const languageOptions = Object.keys(LANGUAGE_MAP).map(key => ({\n label: LANGUAGE_MAP[key],\n value: key,\n }));\n const isGroupType =\n this.stores?.schedulerConfig?.state.selectedEventType === CONFIGURATION_EVENT_TYPE.group ||\n (this.stores?.schedulerConfig?.state.selectedConfiguration as GroupConfiguration)?.type === CONFIGURATION_EVENT_TYPE.group;\n\n return (\n <Host>\n <div class=\"scheduler-editor-header\" part=\"nse__header\">\n <h1 class=\"scheduler-editor-title\" part=\"nse__title\">\n <calendar-icon width=\"18\" height=\"18\" />\n {i18next.t('schedulerEditorTitle')}\n </h1>\n <div\n class={{\n language: true,\n }}\n part=\"nse__language\"\n >\n <select-dropdown\n name=\"language\"\n searchPlaceholder={i18next.t('search')}\n options={languageOptions}\n withChevron={false}\n defaultSelectedOption={languageOptions.find(lang => lang.value == this.selectedLanguage)}\n exportparts=\"sd_dropdown: nse__language-dropdown, sd_dropdown-button: nse__language-drop-button, sd_dropdown-content: nse__language-drop-content, sd_dropdown_label: nse__language-drop-label\"\n >\n <span slot=\"select-icon\">\n <translate-icon width=\"20\" height=\"20\" />\n </span>\n </select-dropdown>\n </div>\n <button class=\"scheduler-editor-close\" title=\"logout\" onClick={e => this.handleSchedulerConfigCloseClicked(e)} part=\"nse__close-button\">\n <close-icon width=\"18\" height=\"18\" />\n </button>\n </div>\n <div\n class={{\n 'scheduler-editor-content': true,\n 'scheduler-editor-content--group': isGroupType,\n }}\n part=\"nse__content\"\n >\n {this.stores?.schedulerConfig?.state.currentUser && this.stores.schedulerConfig.state.action === null && (\n <div class=\"list-configurations\" part=\"nse__list-configurations\">\n <nylas-list-configurations exportparts=\"nlc__create-new-cta, actions__dropdown, actions__dropdown-button, actions__dropdown-content, actions-Copy, actions-Preview, actions-Delete\"></nylas-list-configurations>\n </div>\n )}\n {this.stores?.schedulerConfig?.state.currentUser && this.stores.schedulerConfig.state.action === 'create-select' && <nylas-select-event-type></nylas-select-event-type>}\n {this.stores?.schedulerConfig?.state.currentUser && this.stores.schedulerConfig.state.action === 'create' && isGroupType && (\n // If the mode is 'app', then render the editor tabs in a composable mode with children for creating a new configuration (Express flow).\n <nylas-editor-tabs-group mode=\"composable\">\n <ExpressFlow\n selectedEventType={this.stores?.schedulerConfig?.state?.selectedEventType || CONFIGURATION_EVENT_TYPE.one_on_one}\n currentUser={this.stores?.schedulerConfig?.state.currentUser}\n calendars={this.stores?.schedulerConfig?.state?.calendars}\n selectedConfiguration={this.stores?.schedulerConfig?.state?.selectedConfiguration}\n />\n </nylas-editor-tabs-group>\n )}\n {this.stores?.schedulerConfig?.state.currentUser && this.stores.schedulerConfig.state.action === 'create' && !isGroupType && (\n // If the mode is 'app', then render the editor tabs in a composable mode with children for creating a new configuration (Express flow).\n <nylas-editor-tabs mode=\"composable\">\n <ExpressFlow\n selectedEventType={this.stores?.schedulerConfig?.state?.selectedEventType || CONFIGURATION_EVENT_TYPE.one_on_one}\n currentUser={this.stores?.schedulerConfig?.state.currentUser}\n calendars={this.stores?.schedulerConfig?.state?.calendars}\n selectedConfiguration={this.stores?.schedulerConfig?.state?.selectedConfiguration}\n />\n </nylas-editor-tabs>\n )}\n {this.stores?.schedulerConfig?.state.currentUser && this.stores.schedulerConfig.state.action === 'edit' && isGroupType && (\n <nylas-editor-tabs-group key={selectedConfigId} mode={this.mode}>\n {this.mode === 'composable' && <slot />}\n {this.mode === 'app' && hasSlot && (\n <div style={{ display: 'none' }} slot=\"custom-page-style-inputs\" key={selectedConfigId}>\n <slot name=\"custom-page-style-inputs\" />\n </div>\n )}\n </nylas-editor-tabs-group>\n )}\n {this.stores?.schedulerConfig?.state.currentUser && this.stores.schedulerConfig.state.action === 'edit' && !isGroupType && (\n <nylas-editor-tabs key={selectedConfigId} mode={this.mode}>\n {this.mode === 'composable' && <slot />}\n {this.mode === 'app' && hasSlot && (\n <div style={{ display: 'none' }} slot=\"custom-page-style-inputs\" key={selectedConfigId}>\n <slot name=\"custom-page-style-inputs\" />\n </div>\n )}\n </nylas-editor-tabs>\n )}\n {!this.stores?.schedulerConfig?.state.currentUser && (\n <slot name=\"login-required\">\n <LoginRequired authenticationUrl={this.authenticationUrl} />\n </slot>\n )}\n </div>\n </Host>\n );\n }\n}\n"]}
|
|
@@ -22,6 +22,13 @@ export class NylasSelectEventType {
|
|
|
22
22
|
this.participantOptions = undefined;
|
|
23
23
|
this.name = 'select-event-type';
|
|
24
24
|
this.selectedLanguage = undefined;
|
|
25
|
+
this.enableEventTypes = {
|
|
26
|
+
one_on_one: true,
|
|
27
|
+
collective: true,
|
|
28
|
+
max_fairness: true,
|
|
29
|
+
max_availability: true,
|
|
30
|
+
group: true,
|
|
31
|
+
};
|
|
25
32
|
}
|
|
26
33
|
connectedCallback() {
|
|
27
34
|
debug('nylas-select-event-type', 'connectedCallback');
|
|
@@ -46,7 +53,14 @@ export class NylasSelectEventType {
|
|
|
46
53
|
i18next.changeLanguage(newVal);
|
|
47
54
|
}
|
|
48
55
|
render() {
|
|
49
|
-
const
|
|
56
|
+
const eventTypeKey = {
|
|
57
|
+
'one-on-one': 'one_on_one',
|
|
58
|
+
'collective': 'collective',
|
|
59
|
+
'max-fairness': 'max_fairness',
|
|
60
|
+
'max-availability': 'max_availability',
|
|
61
|
+
'group': 'group',
|
|
62
|
+
};
|
|
63
|
+
const allEventTypes = [
|
|
50
64
|
{
|
|
51
65
|
label: i18next.t('nylasSelectEventType.eventTypeOptions.oneOnOne.label'),
|
|
52
66
|
value: CONFIGURATION_EVENT_TYPE.one_on_one,
|
|
@@ -73,19 +87,27 @@ export class NylasSelectEventType {
|
|
|
73
87
|
description: i18next.t('nylasSelectEventType.eventTypeOptions.group.desc'),
|
|
74
88
|
},
|
|
75
89
|
];
|
|
90
|
+
const conditionalEventTypes = [CONFIGURATION_EVENT_TYPE.collective, CONFIGURATION_EVENT_TYPE.max_availability, CONFIGURATION_EVENT_TYPE.max_fairness];
|
|
76
91
|
const hasAdditionalParticipants = this.participantOptions &&
|
|
77
92
|
this.participantOptions?.length > 0 &&
|
|
78
93
|
!!this.participantOptions[0].email &&
|
|
79
94
|
!!this.participantOptions[0].name &&
|
|
80
95
|
!!this.participantOptions[0].calendars &&
|
|
81
96
|
this.participantOptions[0].calendars.length > 0;
|
|
82
|
-
const
|
|
83
|
-
|
|
84
|
-
|
|
97
|
+
const eventTypes = this.enableEventTypes
|
|
98
|
+
? allEventTypes.filter(eventType => {
|
|
99
|
+
const key = eventType.value;
|
|
100
|
+
const keyType = eventTypeKey[key];
|
|
101
|
+
console.log('key', key, this.enableEventTypes ? this.enableEventTypes[keyType] : 'no enableEventTypes');
|
|
102
|
+
if (conditionalEventTypes.includes(key) && !hasAdditionalParticipants) {
|
|
103
|
+
return false;
|
|
104
|
+
}
|
|
105
|
+
return this.enableEventTypes && this.enableEventTypes[keyType];
|
|
106
|
+
})
|
|
107
|
+
: allEventTypes;
|
|
108
|
+
return (h(Host, null, h("div", { class: "nylas-select-event-type", part: "nset" }, h("div", { class: "header", part: "nset__header" }, h("h2", null, i18next.t('nylasSelectEventType.createEventHeaderTitle')), h("button-component", { variant: "invisible", part: "nset__header__back-button", onClick: _event => {
|
|
85
109
|
this.returnToAllSchedulingPagesEvent.emit();
|
|
86
|
-
} }, h("chevron-icon", {
|
|
87
|
-
.filter(e => defaultEventTypes.includes(e.value) || (hasAdditionalParticipants && conditionalEventTypes.includes(e.value)))
|
|
88
|
-
.map(eventType => (h("div", { class: "event-type-option", onClick: _event => {
|
|
110
|
+
} }, h("chevron-icon", { width: "16", height: "16" }), h("span", null, i18next.t('nylasSelectEventType.returnToAllSchedulingPages')))), h("div", { class: "content", part: "nset__content" }, h("h3", null, i18next.t('nylasSelectEventType.eventTypeHeaderTitle')), h("div", { class: "event-type", part: "nset__content__event-type" }, eventTypes.length === 0 && h("p", null, i18next.t('nylasSelectEventType.noEventTypesEnabled')), eventTypes.map(eventType => (h("div", { class: "event-type-option", onClick: _event => {
|
|
89
111
|
this.createEventTypeSelected.emit({ eventType: eventType.value });
|
|
90
112
|
}, part: `nset__content__event-type-option-${eventType.value}` }, h("h4", null, eventType.label), h("p", null, eventType.description)))))))));
|
|
91
113
|
}
|
|
@@ -170,6 +192,28 @@ export class NylasSelectEventType {
|
|
|
170
192
|
},
|
|
171
193
|
"attribute": "selected-language",
|
|
172
194
|
"reflect": false
|
|
195
|
+
},
|
|
196
|
+
"enableEventTypes": {
|
|
197
|
+
"type": "unknown",
|
|
198
|
+
"mutable": false,
|
|
199
|
+
"complexType": {
|
|
200
|
+
"original": "EnableEventTypes",
|
|
201
|
+
"resolved": "undefined | { one_on_one: boolean; collective: boolean; max_fairness: boolean; max_availability: boolean; group: boolean; }",
|
|
202
|
+
"references": {
|
|
203
|
+
"EnableEventTypes": {
|
|
204
|
+
"location": "import",
|
|
205
|
+
"path": "@nylas/core",
|
|
206
|
+
"id": "../nylas-js-core/dist/index.d.ts::EnableEventTypes"
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
},
|
|
210
|
+
"required": false,
|
|
211
|
+
"optional": true,
|
|
212
|
+
"docs": {
|
|
213
|
+
"tags": [],
|
|
214
|
+
"text": "The enable event types."
|
|
215
|
+
},
|
|
216
|
+
"defaultValue": "{\n one_on_one: true,\n collective: true,\n max_fairness: true,\n max_availability: true,\n group: true,\n }"
|
|
173
217
|
}
|
|
174
218
|
};
|
|
175
219
|
}
|
|
@@ -229,6 +273,7 @@ __decorate([
|
|
|
229
273
|
stateToProps: new Map([
|
|
230
274
|
['schedulerConfig.selectedLanguage', 'selectedLanguage'],
|
|
231
275
|
['schedulerConfig.additionalParticipants', 'participantOptions'],
|
|
276
|
+
['schedulerConfig.enableEventTypes', 'enableEventTypes'],
|
|
232
277
|
]),
|
|
233
278
|
eventToProps: {
|
|
234
279
|
returnToAllSchedulingPagesEvent: async (_event, connector) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nylas-select-event-type.js","sourceRoot":"","sources":["../../../../src/components/scheduler-editor/nylas-select-event-type/nylas-select-event-type.tsx"],"names":[],"mappings":"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","sourcesContent":["import { RegisterComponent } from '@/common/register-component';\nimport { NylasSchedulerConfigConnector } from '@/connector/nylas-scheduler-config-connector';\nimport { debug } from '@/utils/utils';\nimport { Component, Element, Event, EventEmitter, Host, Prop, Watch, h } from '@stencil/core';\nimport { NylasSchedulerEditor } from '../nylas-scheduler-editor/nylas-scheduler-editor';\nimport i18next from '@/utils/i18n';\nimport { CONFIGURATION_EVENT_TYPE, LANGUAGE_CODE } from '@/common/constants';\nimport { AdditionalParticipant } from '@nylas/core';\n\n/**\n * The `nylas-select-event-type` component is a UI component that allows users to select the event type for the scheduler configuration.\n */\n@Component({\n tag: 'nylas-select-event-type',\n styleUrl: 'nylas-select-event-type.scss',\n shadow: true,\n})\nexport class NylasSelectEventType {\n @Element() host!: HTMLNylasSelectEventTypeElement;\n\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 /**\n * @standalone\n * The name of the component\n */\n @Prop() name: string = 'select-event-type';\n\n /**\n * The selected language.\n */\n @Prop() selectedLanguage?: LANGUAGE_CODE;\n\n /**\n * This event is fired when the return to all scheduling pages button is clicked.\n */\n @Event() returnToAllSchedulingPagesEvent!: EventEmitter<void>;\n\n /**\n * This event is fired when the event type is selected.\n */\n @Event() createEventTypeSelected!: EventEmitter<{ eventType: CONFIGURATION_EVENT_TYPE }>;\n\n // Lifecycle methods\n connectedCallback() {\n debug('nylas-select-event-type', 'connectedCallback');\n }\n\n disconnectedCallback() {\n debug('nylas-select-event-type', 'disconnectedCallback');\n }\n\n componentWillLoad() {\n debug('nylas-select-event-type', '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-select-event-type', 'componentDidLoad');\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-select-event-type', '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 @RegisterComponent<NylasSelectEventType, NylasSchedulerConfigConnector, Exclude<NylasSchedulerEditor['stores'], undefined>>({\n name: 'nylas-select-event-type',\n stateToProps: new Map([\n ['schedulerConfig.selectedLanguage', 'selectedLanguage'],\n ['schedulerConfig.additionalParticipants', 'participantOptions'],\n ]),\n eventToProps: {\n returnToAllSchedulingPagesEvent: async (_event: CustomEvent<void>, connector: NylasSchedulerConfigConnector) => {\n connector.schedulerConfigStore.state.action = null;\n connector.schedulerConfigStore.set('selectedEventType', undefined);\n },\n createEventTypeSelected: async (event: CustomEvent<{ eventType: CONFIGURATION_EVENT_TYPE }>, connector: NylasSchedulerConfigConnector) => {\n const { eventType } = event.detail;\n connector.schedulerConfigStore.state.action = 'create';\n connector.schedulerConfigStore.state.selectedEventType = eventType;\n },\n },\n fireRegisterEvent: true,\n })\n render() {\n const eventTypes = [\n {\n label: i18next.t('nylasSelectEventType.eventTypeOptions.oneOnOne.label'),\n value: CONFIGURATION_EVENT_TYPE.one_on_one,\n description: i18next.t('nylasSelectEventType.eventTypeOptions.oneOnOne.desc'),\n },\n {\n label: i18next.t('nylasSelectEventType.eventTypeOptions.collective.label'),\n value: CONFIGURATION_EVENT_TYPE.collective,\n description: i18next.t('nylasSelectEventType.eventTypeOptions.collective.desc'),\n },\n {\n label: i18next.t('nylasSelectEventType.eventTypeOptions.maxFairness.label'),\n value: CONFIGURATION_EVENT_TYPE.max_fairness,\n description: i18next.t('nylasSelectEventType.eventTypeOptions.maxFairness.desc'),\n },\n {\n label: i18next.t('nylasSelectEventType.eventTypeOptions.maxAvailability.label'),\n value: CONFIGURATION_EVENT_TYPE.max_availability,\n description: i18next.t('nylasSelectEventType.eventTypeOptions.maxAvailability.desc'),\n },\n {\n label: i18next.t('nylasSelectEventType.eventTypeOptions.group.label'),\n value: CONFIGURATION_EVENT_TYPE.group,\n description: i18next.t('nylasSelectEventType.eventTypeOptions.group.desc'),\n },\n ];\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 const conditionalEventTypes = [CONFIGURATION_EVENT_TYPE.collective, CONFIGURATION_EVENT_TYPE.max_availability, CONFIGURATION_EVENT_TYPE.max_fairness];\n const defaultEventTypes = [CONFIGURATION_EVENT_TYPE.one_on_one, CONFIGURATION_EVENT_TYPE.group];\n return (\n <Host>\n <div class=\"nylas-select-event-type\" part=\"nset\">\n <div class=\"header\" part=\"nset__header\">\n <h2>{i18next.t('nylasSelectEventType.createEventHeaderTitle')}</h2>\n <button-component\n variant=\"invisible\"\n part=\"nset__header__back-button\"\n onClick={_event => {\n this.returnToAllSchedulingPagesEvent.emit();\n }}\n >\n <chevron-icon width=\"16\" height=\"16\" />\n <span>{i18next.t('nylasSelectEventType.returnToAllSchedulingPages')}</span>\n </button-component>\n </div>\n <div class=\"content\" part=\"nset__content\">\n <h3>{i18next.t('nylasSelectEventType.eventTypeHeaderTitle')}</h3>\n <div class=\"event-type\" part=\"nset__content__event-type\">\n {eventTypes\n .filter(e => defaultEventTypes.includes(e.value) || (hasAdditionalParticipants && conditionalEventTypes.includes(e.value)))\n .map(eventType => (\n <div\n class=\"event-type-option\"\n onClick={_event => {\n this.createEventTypeSelected.emit({ eventType: eventType.value });\n }}\n part={`nset__content__event-type-option-${eventType.value}`}\n >\n <h4>{eventType.label}</h4>\n <p>{eventType.description}</p>\n </div>\n ))}\n </div>\n </div>\n </div>\n </Host>\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"nylas-select-event-type.js","sourceRoot":"","sources":["../../../../src/components/scheduler-editor/nylas-select-event-type/nylas-select-event-type.tsx"],"names":[],"mappings":"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","sourcesContent":["import { RegisterComponent } from '@/common/register-component';\nimport { NylasSchedulerConfigConnector } from '@/connector/nylas-scheduler-config-connector';\nimport { debug } from '@/utils/utils';\nimport { Component, Element, Event, EventEmitter, Host, Prop, Watch, h } from '@stencil/core';\nimport { NylasSchedulerEditor } from '../nylas-scheduler-editor/nylas-scheduler-editor';\nimport i18next from '@/utils/i18n';\nimport { CONFIGURATION_EVENT_TYPE, LANGUAGE_CODE } from '@/common/constants';\nimport { AdditionalParticipant, EnableEventTypes } from '@nylas/core';\n\n/**\n * The `nylas-select-event-type` component is a UI component that allows users to select the event type for the scheduler configuration.\n */\n@Component({\n tag: 'nylas-select-event-type',\n styleUrl: 'nylas-select-event-type.scss',\n shadow: true,\n})\nexport class NylasSelectEventType {\n @Element() host!: HTMLNylasSelectEventTypeElement;\n\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 /**\n * @standalone\n * The name of the component\n */\n @Prop() name: string = 'select-event-type';\n\n /**\n * The selected language.\n */\n @Prop() selectedLanguage?: LANGUAGE_CODE;\n\n /**\n * The enable event types.\n */\n @Prop() enableEventTypes?: EnableEventTypes = {\n one_on_one: true,\n collective: true,\n max_fairness: true,\n max_availability: true,\n group: true,\n };\n\n /**\n * This event is fired when the return to all scheduling pages button is clicked.\n */\n @Event() returnToAllSchedulingPagesEvent!: EventEmitter<void>;\n\n /**\n * This event is fired when the event type is selected.\n */\n @Event() createEventTypeSelected!: EventEmitter<{ eventType: CONFIGURATION_EVENT_TYPE }>;\n\n // Lifecycle methods\n connectedCallback() {\n debug('nylas-select-event-type', 'connectedCallback');\n }\n\n disconnectedCallback() {\n debug('nylas-select-event-type', 'disconnectedCallback');\n }\n\n componentWillLoad() {\n debug('nylas-select-event-type', '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-select-event-type', 'componentDidLoad');\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-select-event-type', '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 @RegisterComponent<NylasSelectEventType, NylasSchedulerConfigConnector, Exclude<NylasSchedulerEditor['stores'], undefined>>({\n name: 'nylas-select-event-type',\n stateToProps: new Map([\n ['schedulerConfig.selectedLanguage', 'selectedLanguage'],\n ['schedulerConfig.additionalParticipants', 'participantOptions'],\n ['schedulerConfig.enableEventTypes', 'enableEventTypes'],\n ]),\n eventToProps: {\n returnToAllSchedulingPagesEvent: async (_event: CustomEvent<void>, connector: NylasSchedulerConfigConnector) => {\n connector.schedulerConfigStore.state.action = null;\n connector.schedulerConfigStore.set('selectedEventType', undefined);\n },\n createEventTypeSelected: async (event: CustomEvent<{ eventType: CONFIGURATION_EVENT_TYPE }>, connector: NylasSchedulerConfigConnector) => {\n const { eventType } = event.detail;\n connector.schedulerConfigStore.state.action = 'create';\n connector.schedulerConfigStore.state.selectedEventType = eventType;\n },\n },\n fireRegisterEvent: true,\n })\n render() {\n interface EventTypeOption {\n label: string;\n value: CONFIGURATION_EVENT_TYPE;\n description: string;\n }\n\n const eventTypeKey = {\n 'one-on-one': 'one_on_one',\n 'collective': 'collective',\n 'max-fairness': 'max_fairness',\n 'max-availability': 'max_availability',\n 'group': 'group',\n };\n\n const allEventTypes: EventTypeOption[] = [\n {\n label: i18next.t('nylasSelectEventType.eventTypeOptions.oneOnOne.label'),\n value: CONFIGURATION_EVENT_TYPE.one_on_one,\n description: i18next.t('nylasSelectEventType.eventTypeOptions.oneOnOne.desc'),\n },\n {\n label: i18next.t('nylasSelectEventType.eventTypeOptions.collective.label'),\n value: CONFIGURATION_EVENT_TYPE.collective,\n description: i18next.t('nylasSelectEventType.eventTypeOptions.collective.desc'),\n },\n {\n label: i18next.t('nylasSelectEventType.eventTypeOptions.maxFairness.label'),\n value: CONFIGURATION_EVENT_TYPE.max_fairness,\n description: i18next.t('nylasSelectEventType.eventTypeOptions.maxFairness.desc'),\n },\n {\n label: i18next.t('nylasSelectEventType.eventTypeOptions.maxAvailability.label'),\n value: CONFIGURATION_EVENT_TYPE.max_availability,\n description: i18next.t('nylasSelectEventType.eventTypeOptions.maxAvailability.desc'),\n },\n {\n label: i18next.t('nylasSelectEventType.eventTypeOptions.group.label'),\n value: CONFIGURATION_EVENT_TYPE.group,\n description: i18next.t('nylasSelectEventType.eventTypeOptions.group.desc'),\n },\n ];\n const conditionalEventTypes = [CONFIGURATION_EVENT_TYPE.collective, CONFIGURATION_EVENT_TYPE.max_availability, CONFIGURATION_EVENT_TYPE.max_fairness];\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 const eventTypes = this.enableEventTypes\n ? allEventTypes.filter(eventType => {\n const key = eventType.value;\n const keyType = eventTypeKey[key];\n console.log('key', key, this.enableEventTypes ? this.enableEventTypes[keyType] : 'no enableEventTypes');\n if (conditionalEventTypes.includes(key) && !hasAdditionalParticipants) {\n return false;\n }\n return this.enableEventTypes && this.enableEventTypes[keyType];\n })\n : allEventTypes;\n return (\n <Host>\n <div class=\"nylas-select-event-type\" part=\"nset\">\n <div class=\"header\" part=\"nset__header\">\n <h2>{i18next.t('nylasSelectEventType.createEventHeaderTitle')}</h2>\n <button-component\n variant=\"invisible\"\n part=\"nset__header__back-button\"\n onClick={_event => {\n this.returnToAllSchedulingPagesEvent.emit();\n }}\n >\n <chevron-icon width=\"16\" height=\"16\" />\n <span>{i18next.t('nylasSelectEventType.returnToAllSchedulingPages')}</span>\n </button-component>\n </div>\n <div class=\"content\" part=\"nset__content\">\n <h3>{i18next.t('nylasSelectEventType.eventTypeHeaderTitle')}</h3>\n <div class=\"event-type\" part=\"nset__content__event-type\">\n {eventTypes.length === 0 && <p>{i18next.t('nylasSelectEventType.noEventTypesEnabled')}</p>}\n {eventTypes.map(eventType => (\n <div\n class=\"event-type-option\"\n onClick={_event => {\n this.createEventTypeSelected.emit({ eventType: eventType.value });\n }}\n part={`nset__content__event-type-option-${eventType.value}`}\n >\n <h4>{eventType.label}</h4>\n <p>{eventType.description}</p>\n </div>\n ))}\n </div>\n </div>\n </div>\n </Host>\n );\n }\n}\n"]}
|
|
@@ -136,7 +136,7 @@ export class NylasTimeslotInterval {
|
|
|
136
136
|
? intervalPreferenceOptions[0]
|
|
137
137
|
: intervalPreferenceOptions.find(op => op.value == this.selectedInterval.toString()) ?? intervalPreferenceOptions[0]
|
|
138
138
|
: undefined;
|
|
139
|
-
return (h(Host, { key: '
|
|
139
|
+
return (h(Host, { key: 'a2922db89671698745b040e04ed4ade53cb97856' }, h("div", { key: '6123febcf83c4f4a6735f704852a0b49ef86b8ae', class: "nylas-timeslot-interval", part: "nti" }, h("div", { key: '28ae252bbb1c197cb2af8c2404868de4eefc3755', class: "header", part: "nti__header" }, h("h3", { key: 'a0fa4565865befb21c24b19b0d6a3d35a2438e6a' }, i18next.t('nylasTimeslotInterval.headerTitle'))), h("div", { key: '9afa7b8311718c155c5a67484f75be07ea1a499c', class: "nylas-timeslot-interval__dropdown" }, h("span", { key: '27de62640dc1d5eb143f0b3c2638974e863e7052', class: "label", part: "nti__input-label" }, i18next.t('nylasTimeslotInterval.timeslotInterval.label')), defaultSelectedInterval?.label && (h("select-dropdown", { name: "interval-minutes", options: intervalPreferenceOptions, withSearch: false, exportparts: "sd_dropdown: nti__dropdown, sd_dropdown-button: nti__dropdown-button, sd_dropdown-content: nti__dropdown-content", defaultSelectedOption: defaultSelectedInterval })), h("span", { key: '8221c77ef67c8186ce9f32ebf548c49938e2e2e1', slot: "label", class: "label", part: "nti__input-label" }, i18next.t('nylasTimeslotInterval.timeslotRounding.label'), h("tooltip-component", { key: '75dc83d75698277295628af454b6129a135c8545' }, h("info-icon", { key: '7a8bd15f2d3579e854af3dadfcf93d2bc2142afb', slot: "tooltip-icon" }), h("span", { key: '0518fc031ef327b8d590e6b29cabdfcfbc473d50', slot: "tooltip-content" }, i18next.t('nylasTimeslotInterval.timeslotRounding.tooltip.desc')))), this.componentLoaded && (h("radio-button-group", { name: "interval-preference", defaultSelectedValue: this.selectedRoundTo ? 'rounding' : 'no-rounding', options: [
|
|
140
140
|
{
|
|
141
141
|
value: 'no-rounding',
|
|
142
142
|
label: i18next.t('nylasTimeslotInterval.timeslotRoundingOptions.noRounding.label'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scheduler-config-store.js","sourceRoot":"","sources":["../../src/stores/scheduler-config-store.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,WAAW,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"scheduler-config-store.js","sourceRoot":"","sources":["../../src/stores/scheduler-config-store.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,WAAW,EAAE,MAAM,gBAAgB,CAAC;AA8G5D,MAAM,UAAU,+BAA+B,CAAC,eAAwD,EAAE;IACxG,MAAM,2BAA2B,GAAmC;QAClE,qBAAqB,EAAE,EAAE;QACzB,cAAc,EAAE,EAAE;QAClB,WAAW,EAAE,EAAE;QACf,4BAA4B,EAAE,IAAI;QAClC,SAAS,EAAE,EAAE;QACb,WAAW,EAAE,IAAI;QACjB,MAAM,EAAE,IAAI;QACZ,sBAAsB,EAAE,EAAE;QAC1B,YAAY,EAAE,KAAK;QACnB,iBAAiB,EAAE,EAAE;QACrB,SAAS,EAAE,KAAK;QAChB,GAAG,YAAY;KAChB,CAAC;IACF,MAAM,KAAK,GAAG,WAAW,CAAiC,2BAA2B,CAAC,CAAC;IAMvF,SAAS,0BAA0B;QACjC,KAAK,CAAC,GAAG,CAAC,uBAAuB,EAAE,EAAE,GAAG,YAAY,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IACnF,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACtC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,0BAA0B,EAAE,CAAC;QAC/B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,GAAG,KAAK;QACR,0BAA0B;KAC3B,CAAC;AACJ,CAAC","sourcesContent":["import { AdditionalParticipant, Calendar, Configuration, EventDetails, GroupConfiguration, GroupEventAPIData, EnableEventTypes } from '@nylas/core';\nimport { ObservableMap, createStore } from '@stencil/store';\nimport { User } from '../common/nylas-api-request';\nimport { CONFIGURATION_EVENT_TYPE, EXPERIMENTAL_FEATURES } from '@/common/constants';\n\ntype RecursivePartial<T> = {\n [P in keyof T]?: T[P] extends (infer U)[] ? RecursivePartial<U>[] : T[P] extends object | undefined ? RecursivePartial<T[P]> : T[P];\n};\n\nexport interface NylasSchedulerConfigStoreState {\n /**\n * The selected configuration.\n * This is the configuration that is currently selected, use it to populate default values for new configurations.\n */\n selectedConfiguration: RecursivePartial<Configuration> | RecursivePartial<GroupConfiguration>;\n /**\n * The list of configurations.\n * This is the list of configurations that the user has created.\n */\n configurations: Configuration[];\n /**\n * The list of calendars.\n * This is the list of calendars that the user has access to.\n */\n calendars: Calendar[];\n /**\n * The current user.\n * This is the user that is currently logged in.\n */\n currentUser: User | null;\n /**\n * The current action.\n * This is the current action that the user is performing.\n */\n action: 'create' | 'create-select' | 'edit' | null;\n /**\n * The additional participants.\n */\n additionalParticipants: AdditionalParticipant[];\n /**\n * The next cursor for list configurations.\n */\n listConfigurationsNextCursor: string | null;\n /**\n * The conference providers.\n */\n conferenceProviders?: Record<'microsoft' | 'zoom' | 'google', string>;\n /**\n * The flag to determine if the slug is required\n */\n requiresSlug: boolean;\n /**\n * The selected language.\n */\n selectedLanguage?: string;\n /**\n * The flag to show or hide the option to manage nylas branding in the email template.\n */\n nylasBranding?: boolean;\n /**\n * The experimental features.\n */\n experimentalFeatures?: Record<EXPERIMENTAL_FEATURES, boolean>;\n /**\n * Controls which event types are enabled in the Scheduler.\n *\n * - By default, all event types are enabled and users will see a selection screen when creating a new event.\n * - You can disable specific event types by setting them to `false`.\n * - At least one event type must remain enabled at all times.\n * - If only one event type is enabled, the event type selection screen will be skipped.\n */\n enableEventTypes?: EnableEventTypes;\n /**\n * The selected event type for creating a new configuration.\n */\n selectedEventType?: CONFIGURATION_EVENT_TYPE;\n /**\n * The group events of the selected configuration.\n */\n groupEvents: GroupEventAPIData[];\n /**\n * The selected group event being edited.\n */\n selectedGroupEvent?: GroupEventAPIData;\n /**\n * The url params with the date and time range for the current view in the scheduler editor calendar.\n */\n calendarViewDateRange?: {\n start_time: string;\n end_time: string;\n };\n /**\n * The list of master group events.\n */\n masterGroupEvents: Record<string, EventDetails>;\n /**\n * The flag to determine if the form is loading.\n */\n isLoading: boolean;\n}\n\nexport type NylasSchedulerConfigStoreType = ReturnType<typeof CreateNylasSchedulerConfigStore>;\n\nexport type CreateNylasSchedulerConfigStoreReturnType = ObservableMap<NylasSchedulerConfigStoreState> & {\n /**\n * Reset the selected configuration to the default state.\n * This is used to reset the selected configuration to the default state instead of setting it to an empty object.\n */\n resetSelectedConfiguration: () => void;\n};\n\nexport function CreateNylasSchedulerConfigStore(defaultState: Partial<NylasSchedulerConfigStoreState> = {}): CreateNylasSchedulerConfigStoreReturnType {\n const defaultSchedulerConfigState: NylasSchedulerConfigStoreState = {\n selectedConfiguration: {},\n configurations: [],\n groupEvents: [],\n listConfigurationsNextCursor: null,\n calendars: [],\n currentUser: null,\n action: null,\n additionalParticipants: [],\n requiresSlug: false,\n masterGroupEvents: {},\n isLoading: false,\n ...defaultState,\n };\n const store = createStore<NylasSchedulerConfigStoreState>(defaultSchedulerConfigState);\n\n /**\n * Reset the selected configuration to the default state.\n * This is used to reset the selected configuration to the default state instead of setting it to an empty object.\n */\n function resetSelectedConfiguration() {\n store.set('selectedConfiguration', { ...defaultState['selectedConfiguration'] });\n }\n\n store.onChange('action', async action => {\n if (!action) {\n resetSelectedConfiguration();\n }\n });\n\n return {\n ...store,\n resetSelectedConfiguration,\n };\n}\n"]}
|
|
@@ -17,10 +17,6 @@ const TIME_PERIODS = [
|
|
|
17
17
|
{ label: 'month', value: 'month' },
|
|
18
18
|
{ label: 'year', value: 'year' },
|
|
19
19
|
];
|
|
20
|
-
var EXPERIMENTAL_FEATURES;
|
|
21
|
-
(function (EXPERIMENTAL_FEATURES) {
|
|
22
|
-
EXPERIMENTAL_FEATURES["group_events"] = "group_events";
|
|
23
|
-
})(EXPERIMENTAL_FEATURES || (EXPERIMENTAL_FEATURES = {}));
|
|
24
20
|
var CONFIGURATION_EVENT_TYPE;
|
|
25
21
|
(function (CONFIGURATION_EVENT_TYPE) {
|
|
26
22
|
CONFIGURATION_EVENT_TYPE["one_on_one"] = "one-on-one";
|
|
@@ -884,6 +880,6 @@ const editorGroupTabComponentNames = [
|
|
|
884
880
|
'event-timeslot',
|
|
885
881
|
];
|
|
886
882
|
|
|
887
|
-
export { CONFIGURATION_EVENT_TYPE as C, DEFAULT_OPEN_HOURS as D, EVENT_TITLE_TOKENS as E, FIELD_TYPES as F, LANGUAGE_CODE as L, PROVIDER_CONFERENCE_MAP as P, TIMEZONE_MAP as T, LANGUAGE_CODE_TO_LOCALE_MAP as a, DEFAULT_FORM_FIELD_TYPES as b, LANGUAGE_MAP as c, CONFERENCE_PROVIDER_MAP as d, editorTabComponentNames as e, TIME_PERIODS as f, editorGroupTabComponentNames as g
|
|
883
|
+
export { CONFIGURATION_EVENT_TYPE as C, DEFAULT_OPEN_HOURS as D, EVENT_TITLE_TOKENS as E, FIELD_TYPES as F, LANGUAGE_CODE as L, PROVIDER_CONFERENCE_MAP as P, TIMEZONE_MAP as T, LANGUAGE_CODE_TO_LOCALE_MAP as a, DEFAULT_FORM_FIELD_TYPES as b, LANGUAGE_MAP as c, CONFERENCE_PROVIDER_MAP as d, editorTabComponentNames as e, TIME_PERIODS as f, editorGroupTabComponentNames as g };
|
|
888
884
|
|
|
889
885
|
//# sourceMappingURL=constants.js.map
|