# Otevření checkoutu

> Metoda book() otevře checkout pro jednu událost a přijímá přepsání nastavení pro jednotlivá volání i kontext klienta, který můžete předat do vlastních systémů.

`book()` je metoda, která otevírá checkout. Vše ostatní v klientovi ho konfiguruje nebo sleduje.

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

`eventID` je identifikátor plánované události, pro kterou chcete prodávat vstupenky. Jde o stejné id, jaké se používá v kódech pro sdílení a vložení vaší události.

Volání se vrátí okamžitě – otevře panel nebo okno a nečeká, až návštěvník dokončí proces. Pomocí [událostí](/developers/js-client/events.md) můžete reagovat na to, co se stane dál.

## Možnosti

| Název | Typ | Výchozí hodnota | Popis |
|---|---|---|---|
| `checkoutMode` | string | hodnota instance | `'pane'` nebo `'popup'` pouze pro tuto rezervaci. |
| `clientContext` | object | `null` | Libovolná data předaná checkoutu, jakmile bude připraven. Viz níže. |
| `collectConsent` | boolean | hodnota instance | Určuje, zda má být návštěvník požádán o přijetí oznámení o podmínkách. |
| `backdrop` | boolean | hodnota instance | Určuje, zda se má stránka za checkoutem ztmavit. |
| `backdropColor` | string | hodnota instance | Barva ztmavené oblasti. |
| `pane` | object | hodnota instance | `{ width, height }` pro vložený panel. |
| `popup` | object | hodnota instance | `{ width, height }` pro vyskakovací okno. |

Vše, co vynecháte, převezme hodnotu, se kterou byla instance vytvořena, takže možnosti pro jednotlivá volání se přidávají, namísto aby nahrazovaly celou sadu.

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

## Kontext klienta

`clientContext` je objekt podle vašeho návrhu. Klient ho uchovává, dokud checkout neoznámí, že je připraven, a poté jej předá. Použijte ho k přenášení informací, které zná pouze vaše stránka – na které tlačítko bylo kliknuto, z jaké kampaně návštěvník přišel, interní reference zákazníka – do relace checkoutu.

Kontext se ukládá pro každé id události zvlášť, takže při rezervaci dvou různých událostí ze stejné stránky zůstanou jejich kontexty oddělené.

Nevkládejte do něj nic citlivého. Do checkoutu putuje přes prohlížeč a je viditelný pro každého, kdo stránku kontroluje.

## Otevření několika událostí z jedné stránky

Jedna instance zvládne libovolný počet událostí. Vytvořte ji jednou a pokaždé předejte jiné 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 zrušení klienta

Volání `book()` u instance, kterou jste již zrušili, zapíše chybu do konzole a nic neotevře. Je to záměrné – zrušená instance již nenaslouchá zprávám z checkoutu, takže okno, které otevřela, by nebylo možné zavřít ani sledovat. Místo toho vytvořte novou instanci.

## Zavření checkoutu

Checkout zavírá sám návštěvník: klávesou Escape nebo kliknutím na ztmavenou oblast v režimu panelu, případně ovládacími prvky okna v režimu vyskakovacího okna. Checkout se také zavře sám po dokončení rezervace.

Neexistuje žádná veřejná metoda, jak jej zavřít z vašeho kódu. Pokud potřebujete vědět, kdy se zavřel, naslouchejte události `checkout.closed`.
