Skip to content
Docs
Reference

<tl-seat-explorer>

The seat map: the venue's sections, flown into one at a time, and its seats in their categories' colours.

HTML tag<tl-seat-explorer>
Reactimport { TlSeatExplorer } from '@ticketlayer/elements-react'
CategoryPurchase
Runs inweb (browser DOM), native (planned React Native set)

The seat map: the venue's sections, flown into one at a time, and its seats in their categories' colours. A tap reserves a seat on its category's default ticket type and pins a card beside it with the type to change; a tap on a held seat gives it back. Keyboard navigation over sections and seats, a list of each section's seats, and every reserve, release and lost seat announced. When the seat map publishes a venue model, a toggle shows the venue in 3D, read only when it opens, with the same seats, taps and keys.

The seat card and the map key are other Elements placed here as a host would place them (tl-seat-card, tl-map-key), each unstyled when this one is.

Properties#

PropertyAttributeDescriptionTypeDefault
dimensiondimensionStart on the flat map (2d) or in the venue in 3D (3d). 3D is offered only when the seat map publishes a venue model, and is read only when it opens; the buyer can switch, and a browser that cannot draw it stays on the flat map"2d" | "3d"'2d'
eventId (required)event-idThe event, for its pricesstringundefined
focusSectionfocus-sectionStart flown into this section, by its idstring | undefinedundefined
modemodeStart on the map, or on the list of each section's seats (the buyer can switch)"list" | "map"'map'
occurrenceId (required)occurrence-idThe occurrence whose seats to showstringundefined
showKeyshow-keyShow the map key (the venue minimap and the price bands) in the cornerbooleantrue
staffstaffBox office mode, on a client that offers the staff capabilities: holds, comps, sales, other carts and allocations drawn and counted in the map key's Status tab, kills released on the occurrence drawn as on sale, a compact seat card, a held seat sold after a confirm, a single seat gap sold after a confirm, and no hold countdownbooleanfalse
unstyledunstyledRender into the light DOM with no stylesheet, for a page that styles the element itself: every node carries a tl-seat-explorer__* class. Without it the element is styled, and each node is a ::part() of the same name.booleanfalse
viewHostview-hostWhere the view from a seat opens: over this map (self), or in a tl-seat-view the page places over something bigger (page), as the buy modal does over its whole panel"page" | "self"'self'

Events#

EventDescriptionType
tlCartChangeThe seats this buyer holds for the occurrence changedCustomEvent<{ seats: number[]; }>
tlErrorThe seat map could not be loaded, or a seat could not be writtenCustomEvent<{ message: string; }>
tlRecommendationSelectA best available suggestion was taken: its seats are being reservedCustomEvent<{ seats: number[]; }>
tlSeatSelectA seat was reserved (selected) or given back (not selected)CustomEvent<{ seat: number; sectionId: string | null; selected: boolean; }>
tlSeatViewThe buyer opened the view from a seatCustomEvent<{ seat: number; }>
tlSectionFocusThe map flew into a section, or back out to the venue (null)CustomEvent<{ sectionId: string | null; sectionName: string | null; }>

Events are CustomEvents; the payload is on event.detail. In HTML, listen with element.addEventListener('tlXxx', handler); in React the wrapper exposes each one as an onTlXxx prop.

Renders: <tl-seat-card>, <tl-map-key>, <tl-seat-view>

Used by: <tl-buy-modal>