# Otvorenie checkoutu

> Metóda book() otvorí checkout pre jedno podujatie a prijíma prepísania pre jednotlivé volania aj kontext klienta, ktorý môžete preniesť do vlastných systémov.

`book()` je metóda, ktorá otvára checkout. Všetko ostatné na klientovi ho konfiguruje alebo sleduje.

```js
entase.book(eventID);
entase.book(eventID, options);
```

`eventID` je identifikátor plánovaného podujatia, pre ktoré chcete predávať vstupenky. Ide o rovnaké ID, aké sa používa v kódoch na zdieľanie a vloženie vášho podujatia.

Volanie sa vráti okamžite – otvorí panel alebo okno a nečaká, kým návštevník dokončí proces. Ak chcete reagovať na to, čo sa stane ďalej, použite [udalosti](/developers/js-client/events.md).

## Možnosti

| Názov | Typ | Predvolené | Popis |
|---|---|---|---|
| `checkoutMode` | reťazec | hodnota inštancie | `'pane'` alebo `'popup'` iba pre túto rezerváciu. |
| `clientContext` | objekt | `null` | Ľubovoľné údaje odovzdané checkoutu, keď bude pripravený. Pozrite nižšie. |
| `collectConsent` | boolean | hodnota inštancie | Či požiadať návštevníka o prijatie oznámenia o podmienkach. |
| `backdrop` | boolean | hodnota inštancie | Či stmaviť stránku za checkoutom. |
| `backdropColor` | reťazec | hodnota inštancie | Farba stmavenej oblasti. |
| `pane` | objekt | hodnota inštancie | `{ width, height }` pre vložený panel. |
| `popup` | objekt | hodnota inštancie | `{ width, height }` pre vyskakovacie okno. |

Všetko, čo neuvediete, použije hodnotu, s ktorou bola inštancia vytvorená, takže možnosti pre jednotlivé volania sa pridávajú, nie sú úplnou náhradou.

```js
entase.book('EVENT_ID', {
  pane: { width: '60vw' },
  backdrop: false,
  clientContext: { source: 'homepage-hero' }
});
```

## Kontext klienta

`clientContext` je objekt podľa vášho vlastného návrhu. Klient ho uchováva, kým checkout neoznámi, že je pripravený, a potom ho odovzdá. Použite ho na prenos informácií, ktoré pozná iba vaša stránka – na ktoré tlačidlo sa kliklo, z ktorej kampane návštevník prišiel, interný odkaz na zákazníka – do relácie checkoutu.

Kontext sa ukladá pre každé ID podujatia samostatne, takže pri rezervácii dvoch rôznych podujatí z tej istej stránky zostanú ich kontexty oddelené.

Nevkladajte doň nič citlivé. Do checkoutu sa prenáša cez prehliadač a je viditeľný pre každého, kto stránku skúma.

## Otvorenie viacerých podujatí z jednej stránky

Jedna inštancia spracuje ľubovoľný počet podujatí. Vytvorte ju raz a zakaždým jej odovzdajte iné ID:

```js
const entase = new Entase({ pk: 'YOUR_PUBLISHABLE_KEY' });

document.querySelectorAll('[data-event-id]').forEach(button => {
  button.addEventListener('click', () => {
    entase.book(button.dataset.eventId, {
      clientContext: { source: button.dataset.source }
    });
  });
});
```

## Po zničení klienta

Volanie `book()` na inštancii, ktorú ste už zničili, zaznamená chybu do konzoly a nič neotvorí. Je to zámerné – zničená inštancia už nepočúva správy z checkoutu, takže okno, ktoré otvorila, by nebolo možné zavrieť ani sledovať. Namiesto toho vytvorte novú inštanciu.

## Zatvorenie checkoutu

Checkout zatvára samotný návštevník: klávesom Escape alebo kliknutím na stmavenú oblasť v režime panela, ovládacími prvkami okna v režime vyskakovacieho okna. Checkout sa zatvorí aj sám po dokončení rezervácie.

Neexistuje verejná metóda na jeho zatvorenie z vášho kódu. Ak potrebujete vedieť, kedy sa zatvoril, počúvajte udalosť `checkout.closed`.
