Configuración
Esta página describe en detalle todas las opciones appConfig de BookingJs: referenciación, visualización, comportamiento, identificación del cliente y callbacks.
Resumen
Las opciones appConfig controlan directamente el comportamiento de timum y le permiten reaccionar a distintos eventos.
Los tres argumentos de init()
init() acepta hasta tres argumentos en este orden:
| Argumento | Descripción |
|---|---|
appConfig | Objeto con todas las opciones de comportamiento: referencias, callbacks, localización, campos de formulario, etc. (esta página) |
muiTheme | Objeto de tema MUI para la apariencia (PRO, ver Styling) |
fcConfig | Opciones de FullCalendar – relevantes solo cuando calendarFrontend está establecido en fullCalendar (ver más abajo) |
Opciones de referenciación
| Opción | Tipo | Descripción |
|---|---|---|
ref | string | string[] | Referencia del recurso o recursos. Campo obligatorio (o tslRefs) |
tslRefs | string | string[] | Referencias de citas específicas |
prdRefs | string | string[] | Referencias de productos específicos, para el filtrado |
channelKey | string | Tipo de canal (RESOURCE_PUBLIC, RESOURCE_EXCLUSIVE, etc.) |
platform | string | Parte de plataforma de la referencia (hardcodeada) |
prvUuid | string | Parte UUID del provider de la referencia (hardcodeada) |
Opciones de visualización
| Opción | Tipo | Descripción |
|---|---|---|
height | string | Altura del widget (por defecto: 500px) |
calendarFrontend | string | Modo de visualización (ver más abajo) |
culture | string | Idioma (de, en, fr, es, it) |
allResourcesOption | boolean | Opción "Todos los recursos" en multi-recurso |
Valores de calendarFrontend
fullCalendar- Vista FullCalendardetailsFullCalendar- FullCalendar con detalles de recursospureListView- Vista de lista puradetailsListView- Vista de lista con detallescondensedView- Vista compactadetailsCondensedView- Vista compacta con detalles
Variantes «details»:
Opciones de comportamiento
| Opción | Tipo | Descripción |
|---|---|---|
host | string | URL del servidor (https://www.timum.de o https://staging.timum.de) |
allowCloseOnBooking | boolean | Se puede cerrar la vista de confirmación tras una reserva exitosa |
allowCloseOnCancel | boolean | Se puede cerrar la vista de cancelación |
constrainDialogsToContainer | boolean | Limitar los diálogos al contenedor (en lugar de pantalla completa) |
hideTimumFooter | boolean | Ocultar "Powered by timum" (PRO) |
hiddenForAnonymous | boolean | Ocultar el widget si no hay ID de cliente |
sendCustomValuesInMessage | boolean | Enviar campos personalizados como mensaje |
Identificación del cliente
| Opción | Tipo | Descripción |
|---|---|---|
pData | object | Identificación del cliente (platform, personId) |
Opciones avanzadas
| Opción | Tipo | Descripción |
|---|---|---|
callbacks | object | Callbacks de eventos (ver la página Callbacks) |
postMessageTarget | string | URL para eventos postMessage (escenario iframe) |
fields | object | Configuración de campos de formulario (PRO) |
localization | object | Personalizaciones de texto (PRO) |
fcConfig: opciones de FullCalendar
Si utiliza fullCalendar o detailsFullCalendar como calendarFrontend, configure FullCalendar a través del tercer argumento de init(). Además de las opciones oficiales de FullCalendar, están disponibles las siguientes opciones específicas de BookingJs:
| Opción | Tipo | Descripción |
|---|---|---|
largeView | string | Vista para anchos de pantalla superiores a 601px |
smallView | string | Vista para anchos de pantalla inferiores a 601px |
useCustomTimumCss | boolean | Establecer en false para desactivar las sobrescrituras CSS de FullCalendar de timum |
timum.init(
{
ref: 'ihre-ressourcen-referenz',
calendarFrontend: 'fullCalendar',
},
undefined,
// Tercer argumento: opciones de FullCalendar
{
largeView: 'dayGridMonth',
smallView: 'listWeek',
}
);
Nota:
Configuración global: window.timumBookingConfig
Además de los objetos que se pasan directamente a init(), BookingJs lee una configuración global opcional desde la página anfitriona: window.timumBookingConfig. Esto le permite adaptar BookingJs sin modificar el propio código de inserción – ideal cuando el snippet es generado por un plugin de CMS o un backend, pero usted controla el HTML circundante.
Orden de resolución
Las configuraciones se resuelven en este orden – las fuentes posteriores sobrescriben a las anteriores, mediante una fusión profunda a nivel de clave:
- Valores predeterminados de BookingJs
- appConfig / muiTheme / fcConfig, pasados directamente a init()
- window.timumBookingConfig.appConfig / .muiTheme / .fcConfig – se aplica a todas las instancias de la página
- window.timumBookingConfig[rootElId] – se aplica únicamente a la instancia con el appConfig.rootElId correspondiente
- Parámetros de URL (máxima prioridad)
window.timumBookingConfig = {
// Se aplica a cada instancia de BookingJs en la página
appConfig: { culture: 'de' },
muiTheme: { palette: { primary: { main: '#337ab7' } } },
// Solo para la instancia con este rootElId (p. ej., un snippet de provider channel)
'bookingjs-dd8d32cc-b53b-4ab4-af52-41325000592b': {
appConfig: { height: 700 },
muiTheme: { palette: { primary: { main: '#ff5722' } } },
},
};
Configurar snippets de provider channel de forma específica
Cada snippet generado en la interfaz de timum representa un provider channel y ya contiene rootElId: "bookingjs-<provider-channel-uuid>" en su llamada a init(). Utilice exactamente esta clave en window.timumBookingConfig para configurar un único snippet sin modificar el código generado.
Momento:
Componente React:
Ejemplo completo
timum.init({
// Referenciación
ref: 'ihre-ressourcen-referenz',
prdRefs: ['besichtigung', 'beratung'],
channelKey: 'RESOURCE_PUBLIC',
// Visualización
height: '600px',
calendarFrontend: 'detailsListView',
culture: 'de',
// Comportamiento
allowCloseOnBooking: true,
constrainDialogsToContainer: true,
hideTimumFooter: true,
// Identificación del cliente
pData: {
platform: 'onoffice',
personId: '12345'
},
// Callbacks
callbacks: {
createBookingSuccessful: ({ timeslot, data }) => {
console.log('Buchung erfolgreich:', timeslot);
// Analítica, redirección, etc.
},
fetchingBookablesSucceeded: ({ bookables }) => {
console.log('Termine geladen:', bookables);
}
}
});
