@agendize/vue-event-booking-widget
Version:
Vue agendize's widget booking component
829 lines • 32.4 kB
TypeScript
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