UNPKG

@agendize/vue-event-booking-widget

Version:
829 lines 32.4 kB
import { ApiErrors, CalendarApi, CompanyEntity, ContactEntity, EventEntity, FormEntity, FormItemEntity, Logger, ServiceEntity, StaffEntity, UserEntity } from "@agendize/js-calendar-api"; import { Locale } from "@agendize/az-i18n"; import { FormField } from "@agendize/design-system"; import { Ref } from "vue"; import { WidgetErrorDefinition } from "./error"; export declare const PAGES: { company: { component: import("vue").DefineComponent<{ api: { type: import("vue").PropType<CalendarApi>; required: true; }; organisationEmail: { type: import("vue").PropType<string>; required: true; }; connectedUser: { type: import("vue").PropType<UserEntity>; required: true; }; acl: { type: import("vue").PropType<any>; required: true; }; locale: { type: import("vue").PropType<Locale>; required: true; }; position: { type: import("vue").PropType<number>; required: true; }; counter: { type: import("vue").PropType<number>; required: true; }; possibleCompaniesId: { type: import("vue").PropType<string[]>; }; }, () => void, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, { onReady: () => void; } & { onSelect: (item: CompanyEntity) => void; } & { onError: (apiError: ApiErrors, item: any, error: any) => void; }, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{ api: { type: import("vue").PropType<CalendarApi>; required: true; }; organisationEmail: { type: import("vue").PropType<string>; required: true; }; connectedUser: { type: import("vue").PropType<UserEntity>; required: true; }; acl: { type: import("vue").PropType<any>; required: true; }; locale: { type: import("vue").PropType<Locale>; required: true; }; position: { type: import("vue").PropType<number>; required: true; }; counter: { type: import("vue").PropType<number>; required: true; }; possibleCompaniesId: { type: import("vue").PropType<string[]>; }; }>> & { onOnReady?: (() => any) | undefined; onOnSelect?: ((item: CompanyEntity) => any) | undefined; onOnError?: ((apiError: ApiErrors, item: any, error: any) => any) | undefined; }, {}, {}>; pageCount: number; }; staff: { component: import("vue").DefineComponent<{ api: { type: import("vue").PropType<CalendarApi>; required: true; }; acl: { type: import("vue").PropType<any>; required: true; }; connectedUser: { type: import("vue").PropType<UserEntity>; required: true; }; locale: { type: import("vue").PropType<Locale>; required: true; }; position: { type: import("vue").PropType<number>; required: true; }; counter: { type: import("vue").PropType<number>; required: true; }; company: { type: import("vue").PropType<CompanyEntity>; required: true; }; service: { type: import("vue").PropType<ServiceEntity>; }; }, () => void, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, { onReady: () => void; } & { onSelect: (item: StaffEntity) => void; } & { onError: (apiError: ApiErrors, item: any, error: any) => void; }, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{ api: { type: import("vue").PropType<CalendarApi>; required: true; }; acl: { type: import("vue").PropType<any>; required: true; }; connectedUser: { type: import("vue").PropType<UserEntity>; required: true; }; locale: { type: import("vue").PropType<Locale>; required: true; }; position: { type: import("vue").PropType<number>; required: true; }; counter: { type: import("vue").PropType<number>; required: true; }; company: { type: import("vue").PropType<CompanyEntity>; required: true; }; service: { type: import("vue").PropType<ServiceEntity>; }; }>> & { onOnReady?: (() => any) | undefined; onOnSelect?: ((item: StaffEntity) => any) | undefined; onOnError?: ((apiError: ApiErrors, item: any, error: any) => any) | undefined; }, {}, {}>; pageCount: number; }; service: { component: import("vue").DefineComponent<{ api: { type: import("vue").PropType<CalendarApi>; required: true; }; locale: { type: import("vue").PropType<Locale>; required: true; }; position: { type: import("vue").PropType<number>; required: true; }; counter: { type: import("vue").PropType<number>; required: true; }; company: { type: import("vue").PropType<CompanyEntity>; required: true; }; staff: { type: import("vue").PropType<StaffEntity>; }; }, () => void, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, { onReady: () => void; } & { onSelect: (item: ServiceEntity) => void; } & { onError: (apiError: ApiErrors, item: any, error: any) => void; }, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{ api: { type: import("vue").PropType<CalendarApi>; required: true; }; locale: { type: import("vue").PropType<Locale>; required: true; }; position: { type: import("vue").PropType<number>; required: true; }; counter: { type: import("vue").PropType<number>; required: true; }; company: { type: import("vue").PropType<CompanyEntity>; required: true; }; staff: { type: import("vue").PropType<StaffEntity>; }; }>> & { onOnReady?: (() => any) | undefined; onOnSelect?: ((item: ServiceEntity) => any) | undefined; onOnError?: ((apiError: ApiErrors, item: any, error: any) => any) | undefined; }, {}, {}>; pageCount: number; }; date: { component: import("vue").DefineComponent<{ api: { type: import("vue").PropType<CalendarApi>; required: true; }; locale: { type: import("vue").PropType<Locale>; required: true; }; position: { type: import("vue").PropType<number>; required: true; }; counter: { type: import("vue").PropType<number>; required: true; }; timeZone: { type: import("vue").PropType<string>; required: true; }; company: { type: import("vue").PropType<CompanyEntity>; }; staff: { type: import("vue").PropType<StaffEntity>; }; service: { type: import("vue").PropType<ServiceEntity>; }; numberOfDays: { type: import("vue").PropType<number>; } & { default: number; }; }, () => void, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, { onSelect: (item: Date) => void; } & { onError: (apiError: ApiErrors, item: any, error: any) => void; }, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{ api: { type: import("vue").PropType<CalendarApi>; required: true; }; locale: { type: import("vue").PropType<Locale>; required: true; }; position: { type: import("vue").PropType<number>; required: true; }; counter: { type: import("vue").PropType<number>; required: true; }; timeZone: { type: import("vue").PropType<string>; required: true; }; company: { type: import("vue").PropType<CompanyEntity>; }; staff: { type: import("vue").PropType<StaffEntity>; }; service: { type: import("vue").PropType<ServiceEntity>; }; numberOfDays: { type: import("vue").PropType<number>; } & { default: number; }; }>> & { onOnSelect?: ((item: Date) => any) | undefined; onOnError?: ((apiError: ApiErrors, item: any, error: any) => any) | undefined; }, { numberOfDays: number; }, {}>; pageCount: number; }; contactQualif: { component: import("vue").DefineComponent<{ api: { type: import("vue").PropType<CalendarApi>; required: true; }; locale: { type: import("vue").PropType<Locale>; required: true; }; counter: { type: import("vue").PropType<number>; required: true; }; position: { type: import("vue").PropType<number>; required: true; }; }, () => void, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, { onSelect: (item: boolean) => void; } & { onError: (apiError: ApiErrors, item: any, error: any) => void; }, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{ api: { type: import("vue").PropType<CalendarApi>; required: true; }; locale: { type: import("vue").PropType<Locale>; required: true; }; counter: { type: import("vue").PropType<number>; required: true; }; position: { type: import("vue").PropType<number>; required: true; }; }>> & { onOnSelect?: ((item: boolean) => any) | undefined; onOnError?: ((apiError: ApiErrors, item: any, error: any) => any) | undefined; }, {}, {}>; pageCount: number; }; contactNew: { component: import("vue").DefineComponent<{ api: { type: import("vue").PropType<CalendarApi>; required: true; }; locale: { type: import("vue").PropType<Locale>; required: true; }; position: { type: import("vue").PropType<number>; required: true; }; counter: { type: import("vue").PropType<number>; required: true; }; logger: { type: import("vue").PropType<Logger>; }; contact: { type: import("vue").PropType<ContactEntity>; }; company: { type: import("vue").PropType<CompanyEntity>; }; }, () => void, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, { onValidate: (isValid: boolean, item: ContactEntity) => void; } & { onLoading: (item: boolean) => void; } & { onError: (apiError: ApiErrors, item: any, error: any) => void; }, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{ api: { type: import("vue").PropType<CalendarApi>; required: true; }; locale: { type: import("vue").PropType<Locale>; required: true; }; position: { type: import("vue").PropType<number>; required: true; }; counter: { type: import("vue").PropType<number>; required: true; }; logger: { type: import("vue").PropType<Logger>; }; contact: { type: import("vue").PropType<ContactEntity>; }; company: { type: import("vue").PropType<CompanyEntity>; }; }>> & { onOnError?: ((apiError: ApiErrors, item: any, error: any) => any) | undefined; onOnValidate?: ((isValid: boolean, item: ContactEntity) => any) | undefined; onOnLoading?: ((item: boolean) => any) | undefined; }, {}, {}>; pageCount: number; }; contactSelect: { component: import("vue").DefineComponent<{ api: { type: import("vue").PropType<CalendarApi>; required: true; }; locale: { type: import("vue").PropType<Locale>; required: true; }; position: { type: import("vue").PropType<number>; required: true; }; counter: { type: import("vue").PropType<number>; required: true; }; company: { type: import("vue").PropType<CompanyEntity>; required: true; }; }, () => void, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, { onReady: () => void; } & { onSelect: (item: ContactEntity) => void; } & { onError: (apiError: ApiErrors, item: any, error: any) => void; }, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{ api: { type: import("vue").PropType<CalendarApi>; required: true; }; locale: { type: import("vue").PropType<Locale>; required: true; }; position: { type: import("vue").PropType<number>; required: true; }; counter: { type: import("vue").PropType<number>; required: true; }; company: { type: import("vue").PropType<CompanyEntity>; required: true; }; }>> & { onOnReady?: (() => any) | undefined; onOnSelect?: ((item: ContactEntity) => any) | undefined; onOnError?: ((apiError: ApiErrors, item: any, error: any) => any) | undefined; }, {}, {}>; pageCount: number; }; field: { component: import("vue").DefineComponent<{ api: { type: import("vue").PropType<CalendarApi>; required: true; }; locale: { type: import("vue").PropType<Locale>; required: true; }; position: { type: import("vue").PropType<number>; required: true; }; counter: { type: import("vue").PropType<number>; required: true; }; companyId: { type: import("vue").PropType<string>; }; logger: { type: import("vue").PropType<Logger>; }; fields: { type: import("vue").PropType<FormField[]>; }; additionalFields: { type: import("vue").PropType<FormEntity[]>; }; contact: { type: import("vue").PropType<ContactEntity>; }; }, () => void, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, { onValidate: (isValid: boolean, items: FormEntity[]) => void; } & { onLoading: (loading: boolean) => void; } & { onError: (apiError: ApiErrors, item: any, error: any) => void; }, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{ api: { type: import("vue").PropType<CalendarApi>; required: true; }; locale: { type: import("vue").PropType<Locale>; required: true; }; position: { type: import("vue").PropType<number>; required: true; }; counter: { type: import("vue").PropType<number>; required: true; }; companyId: { type: import("vue").PropType<string>; }; logger: { type: import("vue").PropType<Logger>; }; fields: { type: import("vue").PropType<FormField[]>; }; additionalFields: { type: import("vue").PropType<FormEntity[]>; }; contact: { type: import("vue").PropType<ContactEntity>; }; }>> & { onOnError?: ((apiError: ApiErrors, item: any, error: any) => any) | undefined; onOnValidate?: ((isValid: boolean, items: FormEntity[]) => any) | undefined; onOnLoading?: ((loading: boolean) => any) | undefined; }, {}, {}>; pageCount: number; }; recap: { component: import("vue").DefineComponent<{ api: { type: import("vue").PropType<CalendarApi>; required: true; }; locale: { type: import("vue").PropType<Locale>; required: true; }; position: { type: import("vue").PropType<number>; required: true; }; counter: { type: import("vue").PropType<number>; required: true; }; timeZone: { type: import("vue").PropType<string>; required: true; }; company: { type: import("vue").PropType<CompanyEntity>; required: true; }; contact: { type: import("vue").PropType<ContactEntity>; required: true; }; date: { type: import("vue").PropType<Date>; required: true; }; service: { type: import("vue").PropType<ServiceEntity>; required: true; }; staff: { type: import("vue").PropType<StaffEntity>; required: true; }; additionalFields: { type: import("vue").PropType<FormItemEntity[]>; }; logger: { type: import("vue").PropType<Logger>; }; }, () => void, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, { onBooked: (event: EventEntity) => void; } & { onValidate: (isValid: boolean) => void; } & { onLoading: (item: boolean) => void; } & { onSubmit: (item: boolean) => void; } & { onError: (apiError: ApiErrors, item: any, error: any) => void; }, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{ api: { type: import("vue").PropType<CalendarApi>; required: true; }; locale: { type: import("vue").PropType<Locale>; required: true; }; position: { type: import("vue").PropType<number>; required: true; }; counter: { type: import("vue").PropType<number>; required: true; }; timeZone: { type: import("vue").PropType<string>; required: true; }; company: { type: import("vue").PropType<CompanyEntity>; required: true; }; contact: { type: import("vue").PropType<ContactEntity>; required: true; }; date: { type: import("vue").PropType<Date>; required: true; }; service: { type: import("vue").PropType<ServiceEntity>; required: true; }; staff: { type: import("vue").PropType<StaffEntity>; required: true; }; additionalFields: { type: import("vue").PropType<FormItemEntity[]>; }; logger: { type: import("vue").PropType<Logger>; }; }>> & { onOnError?: ((apiError: ApiErrors, item: any, error: any) => any) | undefined; onOnValidate?: ((isValid: boolean) => any) | undefined; onOnLoading?: ((item: boolean) => any) | undefined; onOnSubmit?: ((item: boolean) => any) | undefined; onOnBooked?: ((event: EventEntity) => any) | undefined; }, {}, {}>; pageCount: number; }; confirm: { component: import("vue").DefineComponent<{ api: { type: import("vue").PropType<CalendarApi>; required: true; }; locale: { type: import("vue").PropType<Locale>; required: true; }; position: { type: import("vue").PropType<number>; required: true; }; counter: { type: import("vue").PropType<number>; required: true; }; event: { type: import("vue").PropType<EventEntity>; }; }, () => void, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, { onBooking: (item: EventEntity) => void; } & { onError: (apiError: ApiErrors, item: any, error: any) => void; }, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{ api: { type: import("vue").PropType<CalendarApi>; required: true; }; locale: { type: import("vue").PropType<Locale>; required: true; }; position: { type: import("vue").PropType<number>; required: true; }; counter: { type: import("vue").PropType<number>; required: true; }; event: { type: import("vue").PropType<EventEntity>; }; }>> & { onOnError?: ((apiError: ApiErrors, item: any, error: any) => any) | undefined; onOnBooking?: ((item: EventEntity) => any) | undefined; }, {}, {}>; pageCount: number; }; error: { component: import("vue").DefineComponent<{ api: { type: import("vue").PropType<CalendarApi>; required: true; }; locale: { type: import("vue").PropType<Locale>; required: true; }; position: { type: import("vue").PropType<number>; required: true; }; counter: { type: import("vue").PropType<number>; required: true; }; company: { type: import("vue").PropType<CompanyEntity>; }; error: { type: import("vue").PropType<WidgetErrorDefinition>; }; }, () => void, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, { onClose: (pageState: string) => void; } & { onError: (apiError: ApiErrors, item: any, error: any) => void; }, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{ api: { type: import("vue").PropType<CalendarApi>; required: true; }; locale: { type: import("vue").PropType<Locale>; required: true; }; position: { type: import("vue").PropType<number>; required: true; }; counter: { type: import("vue").PropType<number>; required: true; }; company: { type: import("vue").PropType<CompanyEntity>; }; error: { type: import("vue").PropType<WidgetErrorDefinition>; }; }>> & { onOnError?: ((apiError: ApiErrors, item: any, error: any) => any) | undefined; onOnClose?: ((pageState: string) => any) | undefined; }, {}, {}>; pageCount: number; }; }; export declare abstract class PageState { readonly component: any; readonly props: any; readonly on: any; readonly pageIndex: number; readonly hasTitle: boolean; isLoading: boolean; footerButton?: { label: string; disabled: Ref<boolean>; action?: () => void; }; constructor(pageIndex: number, component: any, hasTitle: boolean, props: any, on: any); } export declare class InitialState extends PageState { constructor(); } export declare class SelectCompanyState extends PageState { constructor(locale: Locale, api: CalendarApi, organisationEmail: string, connectedUser: UserEntity, acl: any, pageIndex: number, pageCount: number, possibleCompaniesId: string[] | undefined, onSelect: (company: CompanyEntity) => void, onError?: (errorCode: ApiErrors, item: any, error: any) => void); } export declare class SelectStaffState extends PageState { readonly company: CompanyEntity; constructor(locale: Locale, api: CalendarApi, acl: any, connectedUser: UserEntity, pageIndex: number, pageCount: number, company: CompanyEntity, onSelect: (staff: StaffEntity) => void, onError?: (errorCode: ApiErrors, item: any, error: any) => void); } export declare class SelectServiceState extends PageState { constructor(locale: Locale, api: CalendarApi, pageIndex: number, pageCount: number, company: CompanyEntity, staff: StaffEntity, onSelect: (service: ServiceEntity) => void, onError?: (errorCode: ApiErrors, item: any, error: any) => void); } export declare class SelectDateState extends PageState { constructor(locale: Locale, api: CalendarApi, pageIndex: number, pageCount: number, company: CompanyEntity, staff: StaffEntity, service: ServiceEntity, onSelect: (date: Date) => void, onError?: (errorCode: ApiErrors, item: any, error: any) => void); } export declare class QualifContactState extends PageState { constructor(locale: Locale, api: CalendarApi, pageIndex: number, pageCount: number, onSelect: (newContact: boolean) => void, onError?: (errorCode: ApiErrors, item: any, error: any) => void); } export declare class NewContactState extends PageState { constructor(locale: Locale, api: CalendarApi, pageIndex: number, pageCount: number, company: CompanyEntity, contact?: ContactEntity, onValid?: (contact: ContactEntity) => void, action?: () => void, onError?: (errorCode: ApiErrors, item: any, error: any) => void); } export declare class SelectContactState extends PageState { constructor(locale: Locale, api: CalendarApi, pageIndex: number, pageCount: number, company: CompanyEntity, onSelect: (contact: ContactEntity) => void, onError?: (errorCode: ApiErrors, item: any, error: any) => void); } export declare class FillFieldsState extends PageState { constructor(locale: Locale, api: CalendarApi, pageIndex: number, pageCount: number, fields?: FormField[], additionalFields?: FormEntity[], contact?: ContactEntity, onValid?: (items: FormEntity[]) => void, action?: () => void, onError?: (errorCode: ApiErrors, item: any, error: any) => void); } export declare class RecapState extends PageState { constructor(locale: Locale, api: CalendarApi, pageIndex: number, pageCount: number, company: CompanyEntity, date: Date, service: ServiceEntity, staff: StaffEntity, contact: ContactEntity, additionalFields?: FormItemEntity[], onBooked?: (event: EventEntity) => void, action?: () => void, onError?: (errorCode: ApiErrors, item: any, error: any) => void); } export declare class ConfirmationState extends PageState { constructor(locale: Locale, api: CalendarApi, pageIndex: number, event: EventEntity, onError?: (errorCode: ApiErrors, item: any, error: any) => void); } export declare class ErrorState extends PageState { constructor(locale: Locale, api: CalendarApi, pageIndex: number, company: CompanyEntity, error: WidgetErrorDefinition, onClose?: (pageState: string) => void); } export declare type WidgetState = SelectCompanyState | SelectServiceState | SelectStaffState | SelectDateState | QualifContactState | SelectContactState | NewContactState | FillFieldsState | RecapState | ConfirmationState | ErrorState; export declare const initialState: InitialState; //# sourceMappingURL=WidgetState.d.ts.map