@ticketlayer/elements 0.3.3 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -2
- package/dist/cjs/{index-BpfoKd9Q.js → index-DanPUX0s.js} +1 -1
- package/dist/cjs/index.cjs.js +2 -1
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/ticket-selector-BYVL13k_.js +3623 -0
- package/dist/cjs/ticketlayer-elements.cjs.js +2 -2
- package/dist/cjs/tl-buy-modal.cjs.entry.js +4 -4
- package/dist/cjs/tl-buy-tickets-button.cjs.entry.js +89 -71
- package/dist/cjs/tl-buy-tickets-wrapper.cjs.entry.js +62 -31
- package/dist/cjs/tl-cart-badge.cjs.entry.js +75 -62
- package/dist/cjs/tl-cart-drawer.cjs.entry.js +52 -24
- package/dist/cjs/tl-cart.cjs.entry.js +72 -98
- package/dist/cjs/tl-checkout-wrapper.cjs.entry.js +52 -30
- package/dist/cjs/tl-event-card.cjs.entry.js +44 -105
- package/dist/cjs/tl-event-list.cjs.entry.js +73 -36
- package/dist/cjs/tl-login.cjs.entry.js +75 -141
- package/dist/cjs/tl-my-orders.cjs.entry.js +53 -92
- package/dist/cjs/tl-occurrence-selector_2.cjs.entry.js +205 -641
- package/dist/cjs/tl-order-confirmation.cjs.entry.js +72 -105
- package/dist/cjs/tl-order-tickets_2.cjs.entry.js +50 -76
- package/dist/cjs/tl-promo-code.cjs.entry.js +51 -47
- package/dist/cjs/tl-seat-map.cjs.entry.js +4 -4
- package/dist/cjs/web-query-Ce73jB4k.js +16 -0
- package/dist/collection/components/tl-buy-modal/tl-buy-modal.css +12 -19
- package/dist/collection/components/tl-buy-modal/tl-buy-modal.js +2 -2
- package/dist/collection/components/tl-buy-tickets-button/tl-buy-tickets-button.css +41 -4
- package/dist/collection/components/tl-buy-tickets-button/tl-buy-tickets-button.js +105 -76
- package/dist/collection/components/tl-buy-tickets-wrapper/tl-buy-tickets-wrapper.css +2 -2
- package/dist/collection/components/tl-buy-tickets-wrapper/tl-buy-tickets-wrapper.js +73 -30
- package/dist/collection/components/tl-cart/tl-cart.css +52 -51
- package/dist/collection/components/tl-cart/tl-cart.js +82 -101
- package/dist/collection/components/tl-cart-badge/tl-cart-badge.css +11 -11
- package/dist/collection/components/tl-cart-badge/tl-cart-badge.js +62 -62
- package/dist/collection/components/tl-cart-drawer/tl-cart-drawer.css +6 -6
- package/dist/collection/components/tl-cart-drawer/tl-cart-drawer.js +56 -24
- package/dist/collection/components/tl-checkout-wrapper/tl-checkout-wrapper.css +2 -2
- package/dist/collection/components/tl-checkout-wrapper/tl-checkout-wrapper.js +61 -29
- package/dist/collection/components/tl-event-card/event-card-adapter.js +11 -23
- package/dist/collection/components/tl-event-card/tl-event-card.css +22 -22
- package/dist/collection/components/tl-event-card/tl-event-card.js +51 -84
- package/dist/collection/components/tl-event-list/tl-event-list.css +17 -17
- package/dist/collection/components/tl-event-list/tl-event-list.js +82 -38
- package/dist/collection/components/tl-login/tl-login.css +26 -26
- package/dist/collection/components/tl-login/tl-login.js +83 -147
- package/dist/collection/components/tl-my-orders/tl-my-orders.css +40 -40
- package/dist/collection/components/tl-my-orders/tl-my-orders.js +58 -96
- package/dist/collection/components/tl-occurrence-selector/tl-occurrence-selector.css +54 -65
- package/dist/collection/components/tl-occurrence-selector/tl-occurrence-selector.js +137 -516
- package/dist/collection/components/tl-order-confirmation/tl-order-confirmation.css +38 -38
- package/dist/collection/components/tl-order-confirmation/tl-order-confirmation.js +81 -113
- package/dist/collection/components/tl-order-tickets/tl-order-tickets.css +9 -9
- package/dist/collection/components/tl-order-tickets/tl-order-tickets.js +57 -92
- package/dist/collection/components/tl-promo-code/tl-promo-code.css +25 -25
- package/dist/collection/components/tl-promo-code/tl-promo-code.js +55 -50
- package/dist/collection/components/tl-seat-map/tl-seat-map.css +10 -10
- package/dist/collection/components/tl-seat-map/tl-seat-map.js +2 -2
- package/dist/collection/components/tl-ticket/tl-ticket.css +13 -13
- package/dist/collection/components/tl-ticket-selector/tl-ticket-selector.css +74 -49
- package/dist/collection/components/tl-ticket-selector/tl-ticket-selector.js +95 -135
- package/dist/collection/utils/cart-totals.js +9 -0
- package/dist/collection/utils/order-summary.js +15 -99
- package/dist/collection/utils/testing/deep-text.js +29 -0
- package/dist/collection/utils/testing/fixtures.js +290 -0
- package/dist/collection/utils/testing/mock-sdk.js +13 -2
- package/dist/collection/utils/web-query.js +12 -0
- package/dist/collection/utils/web-storage.js +22 -0
- package/dist/components/ticket-selector.js +1 -0
- package/dist/components/tl-buy-modal.js +1 -1
- package/dist/components/tl-buy-tickets-button.js +1 -1
- package/dist/components/tl-buy-tickets-wrapper2.js +1 -1
- package/dist/components/tl-cart-badge.js +1 -1
- package/dist/components/tl-cart-drawer.js +1 -1
- package/dist/components/tl-cart2.js +1 -1
- package/dist/components/tl-checkout-wrapper2.js +1 -1
- package/dist/components/tl-event-card2.js +1 -1
- package/dist/components/tl-event-list.js +1 -1
- package/dist/components/tl-login2.js +1 -1
- package/dist/components/tl-my-orders.js +1 -1
- package/dist/components/tl-occurrence-selector2.js +1 -1
- package/dist/components/tl-order-confirmation.js +1 -1
- package/dist/components/tl-order-tickets2.js +1 -1
- package/dist/components/tl-promo-code.js +1 -1
- package/dist/components/tl-seat-map.js +1 -1
- package/dist/components/tl-ticket-selector2.js +1 -1
- package/dist/components/tl-ticket2.js +1 -1
- package/dist/components/web-query.js +1 -0
- package/dist/elements.docs.json +36 -36
- package/dist/esm/{index-CNX8hZa8.js → index-imfxp765.js} +1 -1
- package/dist/esm/index.js +2 -1
- package/dist/esm/loader.js +3 -3
- package/dist/esm/ticket-selector-BwChnHVC.js +3606 -0
- package/dist/esm/ticketlayer-elements.js +3 -3
- package/dist/esm/tl-buy-modal.entry.js +4 -4
- package/dist/esm/tl-buy-tickets-button.entry.js +90 -72
- package/dist/esm/tl-buy-tickets-wrapper.entry.js +63 -32
- package/dist/esm/tl-cart-badge.entry.js +76 -63
- package/dist/esm/tl-cart-drawer.entry.js +53 -25
- package/dist/esm/tl-cart.entry.js +73 -99
- package/dist/esm/tl-checkout-wrapper.entry.js +53 -31
- package/dist/esm/tl-event-card.entry.js +45 -106
- package/dist/esm/tl-event-list.entry.js +74 -37
- package/dist/esm/tl-login.entry.js +76 -142
- package/dist/esm/tl-my-orders.entry.js +54 -93
- package/dist/esm/tl-occurrence-selector_2.entry.js +206 -642
- package/dist/esm/tl-order-confirmation.entry.js +73 -106
- package/dist/esm/tl-order-tickets_2.entry.js +51 -77
- package/dist/esm/tl-promo-code.entry.js +52 -48
- package/dist/esm/tl-seat-map.entry.js +4 -4
- package/dist/esm/web-query-Bdbb2lk5.js +14 -0
- package/dist/ticketlayer-elements/index.esm.js +1 -1
- package/dist/ticketlayer-elements/p-45923d2c.entry.js +1 -0
- package/dist/ticketlayer-elements/p-492adc77.entry.js +1 -0
- package/dist/ticketlayer-elements/p-4cfc9e53.entry.js +1 -0
- package/dist/ticketlayer-elements/p-5135630e.entry.js +1 -0
- package/dist/ticketlayer-elements/p-5bbce3b5.entry.js +1 -0
- package/dist/ticketlayer-elements/p-7d547721.entry.js +1 -0
- package/dist/ticketlayer-elements/p-7fe7b6ba.entry.js +1 -0
- package/dist/ticketlayer-elements/p-8122f0c1.entry.js +1 -0
- package/dist/ticketlayer-elements/p-98d40869.entry.js +1 -0
- package/dist/ticketlayer-elements/p-Bdbb2lk5.js +1 -0
- package/dist/ticketlayer-elements/p-BwChnHVC.js +1 -0
- package/dist/ticketlayer-elements/p-abec290a.entry.js +1 -0
- package/dist/ticketlayer-elements/p-ac79a3f6.entry.js +1 -0
- package/dist/ticketlayer-elements/p-d01f4429.entry.js +1 -0
- package/dist/ticketlayer-elements/p-d7ffaf46.entry.js +1 -0
- package/dist/ticketlayer-elements/p-e7170f3c.entry.js +1 -0
- package/dist/ticketlayer-elements/p-e787e862.entry.js +1 -0
- package/dist/ticketlayer-elements/p-f1ff931f.entry.js +1 -0
- package/dist/ticketlayer-elements/p-imfxp765.js +3 -0
- package/dist/ticketlayer-elements/ticketlayer-elements.css +1 -1
- package/dist/ticketlayer-elements/ticketlayer-elements.esm.js +1 -1
- package/dist/types/components/tl-buy-tickets-button/tl-buy-tickets-button.d.ts +40 -8
- package/dist/types/components/tl-buy-tickets-wrapper/tl-buy-tickets-wrapper.d.ts +20 -1
- package/dist/types/components/tl-cart/tl-cart.d.ts +40 -32
- package/dist/types/components/tl-cart-badge/tl-cart-badge.d.ts +22 -7
- package/dist/types/components/tl-cart-drawer/tl-cart-drawer.d.ts +28 -5
- package/dist/types/components/tl-checkout-wrapper/tl-checkout-wrapper.d.ts +18 -1
- package/dist/types/components/tl-event-card/event-card-adapter.d.ts +9 -20
- package/dist/types/components/tl-event-card/tl-event-card.d.ts +25 -28
- package/dist/types/components/tl-event-list/tl-event-list.d.ts +46 -6
- package/dist/types/components/tl-login/tl-login.d.ts +68 -22
- package/dist/types/components/tl-my-orders/tl-my-orders.d.ts +30 -12
- package/dist/types/components/tl-occurrence-selector/tl-occurrence-selector.d.ts +73 -161
- package/dist/types/components/tl-order-confirmation/tl-order-confirmation.d.ts +48 -15
- package/dist/types/components/tl-order-tickets/tl-order-tickets.d.ts +29 -31
- package/dist/types/components/tl-promo-code/tl-promo-code.d.ts +28 -10
- package/dist/types/components/tl-ticket/tl-ticket.d.ts +2 -11
- package/dist/types/components/tl-ticket-selector/tl-ticket-selector.d.ts +61 -32
- package/dist/types/components.d.ts +302 -62
- package/dist/types/utils/cart-totals.d.ts +10 -0
- package/dist/types/utils/order-summary.d.ts +16 -65
- package/dist/types/utils/testing/deep-text.d.ts +13 -0
- package/dist/types/utils/testing/fixtures.d.ts +225 -0
- package/dist/types/utils/testing/mock-sdk.d.ts +14 -1
- package/dist/types/utils/web-query.d.ts +18 -0
- package/dist/types/utils/web-storage.d.ts +16 -0
- package/elements.catalogue.json +676 -55
- package/package.json +14 -6
- package/dist/cjs/order-summary-ZMkJ5bez.js +0 -116
- package/dist/components/order-summary.js +0 -1
- package/dist/esm/order-summary-BGekdjN9.js +0 -103
- package/dist/ticketlayer-elements/p-0b1d16f8.entry.js +0 -1
- package/dist/ticketlayer-elements/p-1471f6d8.entry.js +0 -1
- package/dist/ticketlayer-elements/p-1c51cbc1.entry.js +0 -1
- package/dist/ticketlayer-elements/p-5169f68b.entry.js +0 -1
- package/dist/ticketlayer-elements/p-895ba1f3.entry.js +0 -1
- package/dist/ticketlayer-elements/p-8d5722e1.entry.js +0 -1
- package/dist/ticketlayer-elements/p-917d8e09.entry.js +0 -1
- package/dist/ticketlayer-elements/p-9629029a.entry.js +0 -1
- package/dist/ticketlayer-elements/p-BGekdjN9.js +0 -1
- package/dist/ticketlayer-elements/p-CNX8hZa8.js +0 -3
- package/dist/ticketlayer-elements/p-a22714d0.entry.js +0 -1
- package/dist/ticketlayer-elements/p-bf73044b.entry.js +0 -1
- package/dist/ticketlayer-elements/p-e02079fa.entry.js +0 -1
- package/dist/ticketlayer-elements/p-e04ace15.entry.js +0 -1
- package/dist/ticketlayer-elements/p-e6fab1d5.entry.js +0 -1
- package/dist/ticketlayer-elements/p-f826b753.entry.js +0 -1
- package/dist/ticketlayer-elements/p-fa639d88.entry.js +0 -1
- package/dist/ticketlayer-elements/p-fbaca948.entry.js +0 -1
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
:host {
|
|
2
|
-
/* Local
|
|
3
|
-
|
|
4
|
-
--
|
|
5
|
-
--
|
|
6
|
-
--_muted: var(--tl-muted
|
|
7
|
-
--
|
|
8
|
-
--
|
|
9
|
-
--_primary: var(--tl-primary
|
|
10
|
-
--
|
|
11
|
-
--
|
|
12
|
-
--_font: var(--tl-font-family, system-ui, -apple-system, sans-serif);
|
|
2
|
+
/* Local shorthands over the theme tokens, which pierce the shadow boundary. */
|
|
3
|
+
--_bg: var(--tl-background);
|
|
4
|
+
--_fg: var(--tl-foreground);
|
|
5
|
+
--_muted: var(--tl-muted);
|
|
6
|
+
--_muted-fg: var(--tl-muted-foreground);
|
|
7
|
+
--_border: var(--tl-border);
|
|
8
|
+
--_primary: var(--tl-primary);
|
|
9
|
+
--_primary-fg: var(--tl-primary-foreground);
|
|
10
|
+
--_radius: var(--tl-radius-lg);
|
|
11
|
+
--_font: var(--tl-font-family);
|
|
13
12
|
|
|
14
13
|
font-family: var(--_font);
|
|
15
14
|
}
|
|
@@ -53,12 +52,6 @@
|
|
|
53
52
|
|
|
54
53
|
/* Floating chrome beneath the panel: platform links left, brand right. */
|
|
55
54
|
.powered-by {
|
|
56
|
-
/* The dashes are a cut-out, so they have to be the colour BEHIND the ticket.
|
|
57
|
-
This chrome floats on the modal's dark backdrop rather than on the page
|
|
58
|
-
surface, so --tl-background (a light value in most themes) would draw
|
|
59
|
-
white dashes on a white icon and vanish. The drawer's footer sits on the
|
|
60
|
-
panel itself and takes the default. */
|
|
61
|
-
--tl-pb-perforation: rgba(8, 8, 16, 0.6);
|
|
62
55
|
width: 100%;
|
|
63
56
|
max-width: 460px;
|
|
64
57
|
display: flex;
|
|
@@ -267,7 +260,7 @@
|
|
|
267
260
|
width: 100%;
|
|
268
261
|
padding: 13px;
|
|
269
262
|
border: 0;
|
|
270
|
-
border-radius: var(--tl-radius-md
|
|
263
|
+
border-radius: var(--tl-radius-md);
|
|
271
264
|
background: var(--_primary);
|
|
272
265
|
color: var(--_primary-fg);
|
|
273
266
|
font-size: 0.98rem;
|
|
@@ -285,7 +278,7 @@
|
|
|
285
278
|
margin-top: 8px;
|
|
286
279
|
padding: 12px;
|
|
287
280
|
border: 1px solid var(--_border);
|
|
288
|
-
border-radius: var(--tl-radius-md
|
|
281
|
+
border-radius: var(--tl-radius-md);
|
|
289
282
|
background: transparent;
|
|
290
283
|
color: var(--_fg);
|
|
291
284
|
font-size: 0.95rem;
|
|
@@ -126,10 +126,10 @@ export class TlBuyModal {
|
|
|
126
126
|
}
|
|
127
127
|
}
|
|
128
128
|
render() {
|
|
129
|
-
return (h(Host, { key: '
|
|
129
|
+
return (h(Host, { key: 'f28be761216b4a84904c1e325dc34d848625db14' }, h("div", { key: '0f36708a6b52d19ee987b211588e759aaf82ac03', class: "overlay", onClick: (e) => {
|
|
130
130
|
if (e.target === e.currentTarget)
|
|
131
131
|
this.close();
|
|
132
|
-
} }, h("div", { key: '
|
|
132
|
+
} }, h("div", { key: '0b2bc062c89e8b821763e163bdedc44047571390', class: { panel: true, 'panel--wide': this.step === 'occurrence' }, role: "dialog", "aria-modal": "true", "aria-label": this.eventName }, h("header", { key: 'c9e3cc54615dace1842ceed226acff23ed0dc0d3', class: "panel-header" }, this.imageUrl && (h("div", { key: '18ffd6168344f65231fa40252361b03ac65ae91a', class: "event-thumb", style: { backgroundImage: `url(${this.imageUrl})` } })), h("div", { key: '4ccbf9a0477948bcb4202310f80cceb1d6e5ad0f', class: "titles" }, h("span", { key: '1a72eb71baaf9eff16aabc5d20c22b02e9b5cc99', class: "kicker" }, this.stepKicker()), h("h2", { key: 'f7dbc184bb016652c1ffe2fe24a551207f226942', class: "event-name" }, this.eventName), this.venueLabel && h("p", { key: 'db7ebd34f688b36b5610aa6adf0d8ab766f00ac2', class: "event-meta" }, this.venueLabel), this.dateSummary && h("p", { key: '00812c8b7b9abf85343f3d6bda433251468da1d9', class: "event-meta" }, this.dateSummary)), h("button", { key: 'e3f7252979794959d6e5070d549010567c0aa349', class: "close-btn", "aria-label": "Close", onClick: this.close }, h("svg", { key: 'd692c47bb8c614b41e19866c5fe4a65b0e083686', viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2" }, h("path", { key: 'cbb9a7bd3ce4ed2685a781729110bccd36b425a9', d: "M6 6l12 12M18 6L6 18", "stroke-linecap": "round" })))), h("div", { key: 'c14af096c9e1cfd9bcead143c1b8a106a4b28018', class: "panel-body" }, this.step === 'loading' && (h("div", { key: '108d1073d572f841f1945147a787b8bdea66cfba', class: "state-msg" }, h("span", { key: '27c2b7473c6edb14ade3b7104f728136c0a2b052', class: "spinner" }), " Loading\u2026")), this.step === 'error' && h("div", { key: '0e3f927f626d51dffc30bb7da7093b6a7cd90a2a', class: "state-msg error" }, this.error), this.step === 'occurrence' && (h("tl-occurrence-selector", { key: 'bfab02d294de3eb1bce39d3e39c21f450b474c99', eventId: this.eventId, onTlSelect: this.handleOccurrenceSelect })), this.step === 'tickets' && this.selectedOccurrenceId && (h("div", { key: '109be73c93b0b604b435cbbd540d5dd5c48eacfe', class: "tickets-step" }, this.occurrenceCount > 1 && (h("button", { key: '2769d896476487e1412ac37309cd2e162b4bd275', class: "back-link", onClick: this.backToDates }, "\u2190 Change date")), this.occurrenceLabel && h("p", { key: '0c709ed8ba75b9e13a141ae755353fc694532935', class: "occ-label" }, this.occurrenceLabel), h("tl-ticket-selector", { key: 'cdf66533a591e89dc265532a2578c30327fd06c8', eventId: this.eventId, occurrenceId: this.selectedOccurrenceId, onTlAddToCart: this.handleAdded }))), this.step === 'done' && (h("div", { key: '6c4b294a4b9412e643a230f4064d15a587f79383', class: "done-step" }, h("div", { key: 'ba0e663e731402192675db509c886c2ce6a2418b', class: "done-mark" }, "\uD83C\uDF9F\uFE0F"), h("p", { key: '8d0f07758d3978080177a99e580f59fbcfefb611', class: "done-title" }, "Added to your cart"), h("p", { key: 'bbf4bd073f021a2f516f91528311d494c40faa85', class: "done-sub" }, "Held for you while you check out."), h("button", { key: '71c90ad945ced314321d964795beed8301c989ac', class: "primary-btn", onClick: this.goCheckout }, "Go to checkout"), h("button", { key: 'b37ad6f8adeb1edb7c786b33974b845c31b963f2', class: "ghost-btn", onClick: this.close }, "Keep browsing"))))), h("div", { key: '5a175094620f6837ae91a5a394f16c79df94c859', class: "powered-by" }, h("div", { key: '63c095dc7e954042c5fb36ccd8ca92a33d7b6632', class: "pb-links" }, h("a", { key: '875fa14d6218853b96d4d817a243701b228b20f0', href: "https://ticketlayer.com/privacy", target: "_blank", rel: "noopener noreferrer" }, "Privacy Policy"), h("a", { key: '7de77189ecd8277acade45437819b4fa9ef2002b', href: "https://ticketlayer.com/report-abuse", target: "_blank", rel: "noopener noreferrer" }, "Report Abuse")), h("a", { key: '5f62bbe303398e9ad09703fbd706953502f441a1', class: "pb-brand", href: "https://ticketlayer.com", target: "_blank", rel: "noopener noreferrer" }, h("span", { key: '0101948057126320d180a452870eade9f540b119', class: "pb-pre" }, "Powered by"), h("svg", { key: 'c93e4184b3bd8bbb89b5909ec886b22d22322bb1', width: "14", height: "14", viewBox: "0 0 50 50", fill: "none", "aria-hidden": "true" }, h("g", { key: '5461e514631e1cb670e974b47ecc144e1a62e7a3', transform: "matrix(0.0129 0 0 -0.0129 25.4752 25.4752)" }, h("path", { key: 'af6f137d33f09ef4befb9a4b31834d6d2f04ab3d', fill: "currentColor", transform: "translate(-1781.5, -1759.4003)", d: "M 41 2973 c 1 -285 5 -734 9 -998 c 7 -444 9 -488 30 -580 c 81 -364 235 -634 512 -900 c 135 -130 263 -220 423 -299 c 156 -77 249 -109 409 -143 c 110 -23 142 -25 354 -24 c 230 1 310 8 427 37 c 241 60 453 162 640 309 c 82 64 252 234 317 315 c 210 264 340 604 355 926 l 6 121 l -69 6 c -86 8 -706 9 -755 1 l -36 -6 l -21 -125 c -34 -191 -98 -317 -236 -462 c -111 -115 -249 -198 -396 -238 c -98 -27 -356 -24 -463 5 c -100 27 -183 69 -273 137 c -226 173 -353 409 -354 660 c 0 44 -5 120 -10 169 c -6 49 -8 91 -6 94 c 3 3 65 -22 138 -55 c 140 -64 251 -103 358 -127 c 71 -17 295 -46 347 -46 l 33 0 l 0 434 l 0 434 l -67 7 c -147 14 -269 56 -393 133 c -222 139 -378 393 -397 648 l -6 71 l -75 7 c -41 3 -239 6 -439 6 l -363 0 l 1 -517 z" }))), h("span", { key: 'd4f15a3fb911e2f78eb203fdd5079d3119ee9803', class: "pb-word" }, "ticketlayer"))))));
|
|
133
133
|
}
|
|
134
134
|
static get is() { return "tl-buy-modal"; }
|
|
135
135
|
static get encapsulation() { return "shadow"; }
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
:host {
|
|
6
6
|
display: inline-block;
|
|
7
|
-
font-family: var(--tl-font-family
|
|
7
|
+
font-family: var(--tl-font-family);
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
:host(.full-width) {
|
|
@@ -16,6 +16,43 @@
|
|
|
16
16
|
width: 100%;
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
+
/* Sale states
|
|
20
|
+
*
|
|
21
|
+
* One state, one @ticketlayer/theme token family, and the hover derived from
|
|
22
|
+
* the same token rather than written down a second time, so a themed palette
|
|
23
|
+
* carries every state with it (TKT-203). These used to be literal hex in the
|
|
24
|
+
* component: red for sold out, blue for the waitlist, amber for coming soon,
|
|
25
|
+
* and a themed channel painted the available state and none of the others.
|
|
26
|
+
*
|
|
27
|
+
* The class comes from the core (`derived.stateClass`), which names the state
|
|
28
|
+
* and nothing more: a core may hold no value and has no shape for saying WHICH
|
|
29
|
+
* family a status paints with, so that decision is made here, exactly as
|
|
30
|
+
* tl-event-card's status badge makes it.
|
|
31
|
+
*/
|
|
32
|
+
.state-available {
|
|
33
|
+
--button-color: var(--tl-primary);
|
|
34
|
+
--button-hover-color: color-mix(in srgb, var(--tl-primary) 90%, black);
|
|
35
|
+
--button-foreground: var(--tl-primary-foreground);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.state-sold-out {
|
|
39
|
+
--button-color: var(--tl-error);
|
|
40
|
+
--button-hover-color: color-mix(in srgb, var(--tl-error) 90%, black);
|
|
41
|
+
--button-foreground: var(--tl-error-foreground);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.state-waitlist {
|
|
45
|
+
--button-color: var(--tl-info);
|
|
46
|
+
--button-hover-color: color-mix(in srgb, var(--tl-info) 90%, black);
|
|
47
|
+
--button-foreground: var(--tl-info-foreground);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.state-coming-soon {
|
|
51
|
+
--button-color: var(--tl-warning);
|
|
52
|
+
--button-hover-color: color-mix(in srgb, var(--tl-warning) 90%, black);
|
|
53
|
+
--button-foreground: var(--tl-warning-foreground);
|
|
54
|
+
}
|
|
55
|
+
|
|
19
56
|
.buy-button {
|
|
20
57
|
display: inline-flex;
|
|
21
58
|
align-items: center;
|
|
@@ -51,19 +88,19 @@
|
|
|
51
88
|
.buy-button.size-sm {
|
|
52
89
|
padding: 0.5rem 1rem;
|
|
53
90
|
font-size: 0.875rem;
|
|
54
|
-
border-radius: var(--tl-radius-sm
|
|
91
|
+
border-radius: var(--tl-radius-sm);
|
|
55
92
|
}
|
|
56
93
|
|
|
57
94
|
.buy-button.size-md {
|
|
58
95
|
padding: 0.75rem 1.5rem;
|
|
59
96
|
font-size: 1rem;
|
|
60
|
-
border-radius: var(--tl-radius-md
|
|
97
|
+
border-radius: var(--tl-radius-md);
|
|
61
98
|
}
|
|
62
99
|
|
|
63
100
|
.buy-button.size-lg {
|
|
64
101
|
padding: 1rem 2rem;
|
|
65
102
|
font-size: 1.125rem;
|
|
66
|
-
border-radius: var(--tl-radius-lg
|
|
103
|
+
border-radius: var(--tl-radius-lg);
|
|
67
104
|
min-height: 51px;
|
|
68
105
|
}
|
|
69
106
|
|
|
@@ -5,11 +5,20 @@
|
|
|
5
5
|
*
|
|
6
6
|
* @element tl-buy-tickets-button
|
|
7
7
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* -
|
|
11
|
-
*
|
|
12
|
-
*
|
|
8
|
+
* The web harness for `buyTicketsButtonCore`. What a press does, which states
|
|
9
|
+
* are not pressable, the label each state defaults to and how the price reads
|
|
10
|
+
* are all in `@ticketlayer/elements-core` (AGENTS.md, TKT-11); what is left
|
|
11
|
+
* here is the Stencil surface, the icons, the hover, and which key counts as a
|
|
12
|
+
* press.
|
|
13
|
+
*
|
|
14
|
+
* Each state is painted from a @ticketlayer/theme token family rather than
|
|
15
|
+
* from a literal, so a channel theme reaches every one of them. The core says
|
|
16
|
+
* which state the button is in and the stylesheet says which family that
|
|
17
|
+
* state paints with, because a core cannot map a status onto one:
|
|
18
|
+
* - available: "Buy Tickets", the primary family
|
|
19
|
+
* - soldOut: "Sold Out", the error family
|
|
20
|
+
* - waitlist: "Join Waitlist", the info family
|
|
21
|
+
* - comingSoon: "On Sale Soon", the warning family
|
|
13
22
|
*
|
|
14
23
|
* @example
|
|
15
24
|
* <tl-buy-tickets-button event-id="evt_xxx"></tl-buy-tickets-button>
|
|
@@ -17,34 +26,8 @@
|
|
|
17
26
|
* <tl-buy-tickets-button event-id="evt_xxx" price="2500" currency="GBP"></tl-buy-tickets-button>
|
|
18
27
|
*/
|
|
19
28
|
import { h, Host } from "@stencil/core";
|
|
20
|
-
import {
|
|
21
|
-
|
|
22
|
-
const STATE_CONFIGS = {
|
|
23
|
-
available: {
|
|
24
|
-
defaultLabel: 'Buy Tickets',
|
|
25
|
-
color: 'var(--tl-primary, #e64b12)',
|
|
26
|
-
hoverColor: 'var(--tl-primary, #d4440f)',
|
|
27
|
-
foreground: 'var(--tl-primary-foreground, #ffffff)',
|
|
28
|
-
},
|
|
29
|
-
soldOut: {
|
|
30
|
-
defaultLabel: 'Sold Out',
|
|
31
|
-
color: '#dc2626',
|
|
32
|
-
hoverColor: '#b91c1c',
|
|
33
|
-
foreground: '#ffffff',
|
|
34
|
-
},
|
|
35
|
-
waitlist: {
|
|
36
|
-
defaultLabel: 'Join Waitlist',
|
|
37
|
-
color: '#2563eb',
|
|
38
|
-
hoverColor: '#1d4ed8',
|
|
39
|
-
foreground: '#ffffff',
|
|
40
|
-
},
|
|
41
|
-
comingSoon: {
|
|
42
|
-
defaultLabel: 'On Sale Soon',
|
|
43
|
-
color: '#d97706',
|
|
44
|
-
hoverColor: '#b45309',
|
|
45
|
-
foreground: '#ffffff',
|
|
46
|
-
},
|
|
47
|
-
};
|
|
29
|
+
import { buyTicketsButtonCore, createElement, } from "@ticketlayer/elements-core";
|
|
30
|
+
import { getSDK, whenSDK } from "../../utils/sdk-connector";
|
|
48
31
|
export class TlBuyTicketsButton {
|
|
49
32
|
constructor() {
|
|
50
33
|
/** Button state - determines colour, label, and icon */
|
|
@@ -64,65 +47,74 @@ export class TlBuyTicketsButton {
|
|
|
64
47
|
// -------------------------------------------------------------------------
|
|
65
48
|
// State
|
|
66
49
|
// -------------------------------------------------------------------------
|
|
50
|
+
/**
|
|
51
|
+
* Whether the pointer is over the button. A pointer is not a fact every
|
|
52
|
+
* runtime has, so this stays here for the same reason the key handling
|
|
53
|
+
* does: the core knows nothing of mice.
|
|
54
|
+
*/
|
|
67
55
|
this.isHovered = false;
|
|
68
56
|
// -------------------------------------------------------------------------
|
|
69
|
-
//
|
|
57
|
+
// The core
|
|
70
58
|
// -------------------------------------------------------------------------
|
|
59
|
+
this.element = createElement(buyTicketsButtonCore, {
|
|
60
|
+
client: () => getSDK(),
|
|
61
|
+
clientReady: () => whenSDK(),
|
|
62
|
+
emit: (event, detail) => this.forward(event, detail),
|
|
63
|
+
});
|
|
64
|
+
/** The core's whole view. Assigning it is what makes Stencil re-render. */
|
|
65
|
+
this.view = this.element.view;
|
|
71
66
|
this.handleClick = () => {
|
|
72
|
-
|
|
73
|
-
if (this.disabled || this.state === 'soldOut' || this.state === 'comingSoon') {
|
|
74
|
-
return;
|
|
75
|
-
}
|
|
76
|
-
// Emit click event
|
|
77
|
-
this.tlClick.emit({ eventId: this.eventId, occurrenceId: this.occurrenceId });
|
|
78
|
-
// Open modal via SDK if available
|
|
79
|
-
if (hasSDK()) {
|
|
80
|
-
try {
|
|
81
|
-
const sdk = getSDK();
|
|
82
|
-
sdk.event(this.eventId).openModal({
|
|
83
|
-
occurrenceId: this.occurrenceId,
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
catch (err) {
|
|
87
|
-
console.error('[tl-buy-tickets-button] Failed to open modal:', err);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
67
|
+
this.element.actions.activate();
|
|
90
68
|
};
|
|
91
69
|
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
70
|
+
syncProps() {
|
|
71
|
+
this.element.setProps({
|
|
72
|
+
eventId: this.eventId,
|
|
73
|
+
occurrenceId: this.occurrenceId,
|
|
74
|
+
state: this.state,
|
|
75
|
+
label: this.label,
|
|
76
|
+
variant: this.variant,
|
|
77
|
+
size: this.size,
|
|
78
|
+
fullWidth: this.fullWidth,
|
|
79
|
+
price: this.price,
|
|
97
80
|
currency: this.currency,
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
})
|
|
81
|
+
pricePrefix: this.pricePrefix,
|
|
82
|
+
disabled: this.disabled,
|
|
83
|
+
});
|
|
101
84
|
}
|
|
102
|
-
|
|
103
|
-
|
|
85
|
+
connectedCallback() {
|
|
86
|
+
this.syncProps();
|
|
87
|
+
this.unsubscribe ?? (this.unsubscribe = this.element.subscribe((view) => {
|
|
88
|
+
this.view = view;
|
|
89
|
+
}));
|
|
90
|
+
this.view = this.element.view;
|
|
91
|
+
// This core has nothing to do on mount, and is mounted anyway: a harness
|
|
92
|
+
// calls mount() unconditionally and pairs it with its teardown (TKT-197).
|
|
93
|
+
this.teardown = this.element.mount();
|
|
104
94
|
}
|
|
105
|
-
|
|
106
|
-
|
|
95
|
+
disconnectedCallback() {
|
|
96
|
+
this.teardown?.();
|
|
97
|
+
this.teardown = undefined;
|
|
98
|
+
this.unsubscribe?.();
|
|
99
|
+
this.unsubscribe = undefined;
|
|
100
|
+
}
|
|
101
|
+
forward(event, detail) {
|
|
102
|
+
if (event === 'tlClick')
|
|
103
|
+
this.tlClick.emit(detail);
|
|
107
104
|
}
|
|
108
105
|
// -------------------------------------------------------------------------
|
|
109
106
|
// Render
|
|
110
107
|
// -------------------------------------------------------------------------
|
|
111
108
|
render() {
|
|
112
|
-
const
|
|
113
|
-
|
|
114
|
-
const isInteractive = this.isInteractive();
|
|
115
|
-
return (h(Host, { key: '10c8c36d12223afcfd13c9807c2ef6b0f4c34266', class: { 'full-width': this.fullWidth } }, h("button", { key: 'c7f6a39a837c90ced0176b5d017687afabf99a5a', type: "button", class: {
|
|
109
|
+
const { interactive, buttonLabel, stateClass, priceLabel } = this.view.derived;
|
|
110
|
+
return (h(Host, { key: '6d5dddb3fc486c5a877a3718fecbee80a648b274', class: { 'full-width': this.fullWidth } }, h("button", { key: '88f7f0688fb42e97eb2ce352f316b2a085c3bab5', type: "button", class: {
|
|
116
111
|
'buy-button': true,
|
|
112
|
+
[stateClass]: true,
|
|
117
113
|
[`variant-${this.variant}`]: true,
|
|
118
114
|
[`size-${this.size}`]: true,
|
|
119
|
-
'disabled': !
|
|
120
|
-
'hovered': this.isHovered &&
|
|
121
|
-
},
|
|
122
|
-
'--button-color': config.color,
|
|
123
|
-
'--button-hover-color': config.hoverColor,
|
|
124
|
-
'--button-foreground': config.foreground,
|
|
125
|
-
}, disabled: !isInteractive, onClick: this.handleClick, onMouseEnter: () => (this.isHovered = true), onMouseLeave: () => (this.isHovered = false) }, h("span", { key: 'e2bc1edc9fbd2a9c81da8cc3293170b1c4275125', class: "icon" }, this.state === 'soldOut' && this.renderSoldOutIcon(), this.state === 'waitlist' && this.renderWaitlistIcon(), this.state === 'comingSoon' && this.renderComingSoonIcon(), this.state === 'available' && this.renderTicketIcon()), h("span", { key: '8371c85dcc24c5ac040744edefe80618421025ef', class: "label" }, buttonLabel), this.price !== undefined && (h("span", { key: 'c02cb5b646ade8866deafb9b3e698115abec5708', class: "price" }, h("span", { key: 'cb0ab272460115a5edebd674362c83711735a70d', class: "price-prefix" }, this.pricePrefix), h("span", { key: 'e28ba56d3928076b624513de95682351f3e0d92b', class: "price-value" }, this.formatPrice(this.price)))))));
|
|
115
|
+
'disabled': !interactive,
|
|
116
|
+
'hovered': this.isHovered && interactive,
|
|
117
|
+
}, disabled: !interactive, onClick: this.handleClick, onMouseEnter: () => (this.isHovered = true), onMouseLeave: () => (this.isHovered = false) }, h("span", { key: 'e88c2f05c7bc782d08d78fc8ab53b213ab3c833f', class: "icon" }, this.state === 'soldOut' && this.renderSoldOutIcon(), this.state === 'waitlist' && this.renderWaitlistIcon(), this.state === 'comingSoon' && this.renderComingSoonIcon(), this.state === 'available' && this.renderTicketIcon()), h("span", { key: '7290a58779e884886f26e64c405fd319811613a1', class: "label" }, buttonLabel), priceLabel !== null && (h("span", { key: 'bdf3bcdbfa29d4799f7a64bc0072a4c06c09c393', class: "price" }, h("span", { key: '32b075fc6793ef21e9a2cd188058992f95c10680', class: "price-prefix" }, this.pricePrefix), h("span", { key: 'ff3805b660b2af72a94fabc315507ce063ff02d2', class: "price-value" }, priceLabel))))));
|
|
126
118
|
}
|
|
127
119
|
renderTicketIcon() {
|
|
128
120
|
return (h("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }, h("path", { d: "M2 9a3 3 0 0 1 0 6v2a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-2a3 3 0 0 1 0-6V7a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2Z" }), h("path", { d: "M13 5v2" }), h("path", { d: "M13 17v2" }), h("path", { d: "M13 11v2" })));
|
|
@@ -388,7 +380,8 @@ export class TlBuyTicketsButton {
|
|
|
388
380
|
}
|
|
389
381
|
static get states() {
|
|
390
382
|
return {
|
|
391
|
-
"isHovered": {}
|
|
383
|
+
"isHovered": {},
|
|
384
|
+
"view": {}
|
|
392
385
|
};
|
|
393
386
|
}
|
|
394
387
|
static get events() {
|
|
@@ -409,4 +402,40 @@ export class TlBuyTicketsButton {
|
|
|
409
402
|
}
|
|
410
403
|
}];
|
|
411
404
|
}
|
|
405
|
+
static get watchers() {
|
|
406
|
+
return [{
|
|
407
|
+
"propName": "eventId",
|
|
408
|
+
"methodName": "syncProps"
|
|
409
|
+
}, {
|
|
410
|
+
"propName": "occurrenceId",
|
|
411
|
+
"methodName": "syncProps"
|
|
412
|
+
}, {
|
|
413
|
+
"propName": "state",
|
|
414
|
+
"methodName": "syncProps"
|
|
415
|
+
}, {
|
|
416
|
+
"propName": "label",
|
|
417
|
+
"methodName": "syncProps"
|
|
418
|
+
}, {
|
|
419
|
+
"propName": "variant",
|
|
420
|
+
"methodName": "syncProps"
|
|
421
|
+
}, {
|
|
422
|
+
"propName": "size",
|
|
423
|
+
"methodName": "syncProps"
|
|
424
|
+
}, {
|
|
425
|
+
"propName": "fullWidth",
|
|
426
|
+
"methodName": "syncProps"
|
|
427
|
+
}, {
|
|
428
|
+
"propName": "price",
|
|
429
|
+
"methodName": "syncProps"
|
|
430
|
+
}, {
|
|
431
|
+
"propName": "currency",
|
|
432
|
+
"methodName": "syncProps"
|
|
433
|
+
}, {
|
|
434
|
+
"propName": "pricePrefix",
|
|
435
|
+
"methodName": "syncProps"
|
|
436
|
+
}, {
|
|
437
|
+
"propName": "disabled",
|
|
438
|
+
"methodName": "syncProps"
|
|
439
|
+
}];
|
|
440
|
+
}
|
|
412
441
|
}
|
|
@@ -10,9 +10,9 @@ tl-buy-tickets-wrapper,
|
|
|
10
10
|
|
|
11
11
|
tl-buy-tickets-wrapper:focus,
|
|
12
12
|
.tl-buy-tickets-wrapper:focus {
|
|
13
|
-
outline: 2px solid var(--tl-ring
|
|
13
|
+
outline: 2px solid var(--tl-ring);
|
|
14
14
|
outline-offset: 2px;
|
|
15
|
-
border-radius: var(--tl-radius-sm
|
|
15
|
+
border-radius: var(--tl-radius-sm);
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
tl-buy-tickets-wrapper[disabled],
|
|
@@ -1,11 +1,18 @@
|
|
|
1
1
|
import { h, Host } from "@stencil/core";
|
|
2
|
-
import {
|
|
2
|
+
import { buyTicketsWrapperCore, createElement, } from "@ticketlayer/elements-core";
|
|
3
|
+
import { getSDK, whenSDK } from "../../utils/sdk-connector";
|
|
3
4
|
/**
|
|
4
5
|
* @component tl-buy-tickets-wrapper
|
|
5
6
|
*
|
|
6
7
|
* Wraps any content and opens the Ticketlayer modal when clicked.
|
|
7
8
|
* Uses the SDK's modal manager which handles the iframe overlay.
|
|
8
9
|
*
|
|
10
|
+
* The web harness for `buyTicketsWrapperCore`. What a press does, what it
|
|
11
|
+
* announces and what happens when no client has been published are all in
|
|
12
|
+
* `@ticketlayer/elements-core` (AGENTS.md, TKT-11); what is left here is the
|
|
13
|
+
* Stencil surface, the accessibility attributes and the one genuinely web
|
|
14
|
+
* question the core refuses to answer - which key counts as a press.
|
|
15
|
+
*
|
|
9
16
|
* @slot - Content to display (typically a button)
|
|
10
17
|
*
|
|
11
18
|
* @example
|
|
@@ -24,41 +31,61 @@ export class TlBuyTicketsWrapper {
|
|
|
24
31
|
* Whether the wrapper is disabled
|
|
25
32
|
*/
|
|
26
33
|
this.disabled = false;
|
|
34
|
+
this.element = createElement(buyTicketsWrapperCore, {
|
|
35
|
+
client: () => getSDK(),
|
|
36
|
+
clientReady: () => whenSDK(),
|
|
37
|
+
emit: (event, detail) => this.forward(event, detail),
|
|
38
|
+
});
|
|
39
|
+
/** The core's whole view. Assigning it is what makes Stencil re-render. */
|
|
40
|
+
this.view = this.element.view;
|
|
27
41
|
this.handleClick = () => {
|
|
28
|
-
|
|
29
|
-
return;
|
|
30
|
-
if (!hasSDK()) {
|
|
31
|
-
console.error('[tl-buy-tickets-wrapper] SDK not initialized. Call setSDK(ticketlayer) first.');
|
|
32
|
-
this.tlError.emit({ message: 'SDK not initialized' });
|
|
33
|
-
return;
|
|
34
|
-
}
|
|
35
|
-
const sdk = getSDK();
|
|
36
|
-
// Open the modal via SDK
|
|
37
|
-
sdk.event(this.eventId).openModal({
|
|
38
|
-
occurrenceId: this.occurrenceId,
|
|
39
|
-
onComplete: (order) => {
|
|
40
|
-
this.tlComplete.emit(order);
|
|
41
|
-
},
|
|
42
|
-
onError: (err) => {
|
|
43
|
-
this.tlError.emit({ message: err.message });
|
|
44
|
-
},
|
|
45
|
-
onClose: () => {
|
|
46
|
-
this.tlClose.emit();
|
|
47
|
-
},
|
|
48
|
-
});
|
|
42
|
+
this.element.actions.activate();
|
|
49
43
|
};
|
|
44
|
+
/** Enter and Space are a press on the web. The core knows nothing of keys. */
|
|
50
45
|
this.handleKeyDown = (e) => {
|
|
51
46
|
if (e.key === 'Enter' || e.key === ' ') {
|
|
52
47
|
e.preventDefault();
|
|
53
|
-
this.
|
|
48
|
+
this.element.actions.activate();
|
|
54
49
|
}
|
|
55
50
|
};
|
|
56
51
|
}
|
|
52
|
+
syncProps() {
|
|
53
|
+
this.element.setProps({
|
|
54
|
+
eventId: this.eventId,
|
|
55
|
+
occurrenceId: this.occurrenceId,
|
|
56
|
+
disabled: this.disabled,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
connectedCallback() {
|
|
60
|
+
this.syncProps();
|
|
61
|
+
this.unsubscribe ?? (this.unsubscribe = this.element.subscribe((view) => {
|
|
62
|
+
this.view = view;
|
|
63
|
+
}));
|
|
64
|
+
this.view = this.element.view;
|
|
65
|
+
// This core has nothing to do on mount, and is mounted anyway: a harness
|
|
66
|
+
// calls mount() unconditionally and pairs it with its teardown (TKT-197).
|
|
67
|
+
this.teardown = this.element.mount();
|
|
68
|
+
}
|
|
69
|
+
disconnectedCallback() {
|
|
70
|
+
this.teardown?.();
|
|
71
|
+
this.teardown = undefined;
|
|
72
|
+
this.unsubscribe?.();
|
|
73
|
+
this.unsubscribe = undefined;
|
|
74
|
+
}
|
|
75
|
+
forward(event, detail) {
|
|
76
|
+
if (event === 'tlComplete')
|
|
77
|
+
this.tlComplete.emit(detail);
|
|
78
|
+
else if (event === 'tlError')
|
|
79
|
+
this.tlError.emit(detail);
|
|
80
|
+
else if (event === 'tlClose')
|
|
81
|
+
this.tlClose.emit();
|
|
82
|
+
}
|
|
57
83
|
render() {
|
|
58
|
-
|
|
84
|
+
const { interactive } = this.view.derived;
|
|
85
|
+
return (h(Host, { key: '14e91259c1401322f969d43bb16b6d3f20327c65', class: {
|
|
59
86
|
'tl-buy-tickets-wrapper': true,
|
|
60
|
-
'tl-buy-tickets-wrapper--disabled':
|
|
61
|
-
}, onClick: this.handleClick, onKeyDown: this.handleKeyDown, role: "button", tabindex:
|
|
87
|
+
'tl-buy-tickets-wrapper--disabled': !interactive,
|
|
88
|
+
}, onClick: this.handleClick, onKeyDown: this.handleKeyDown, role: "button", tabindex: interactive ? 0 : -1, "aria-disabled": interactive ? null : 'true' }, h("slot", { key: '3fb33786e09f5ecdf20ff0ea8e7336ccfc43b216' })));
|
|
62
89
|
}
|
|
63
90
|
static get is() { return "tl-buy-tickets-wrapper"; }
|
|
64
91
|
static get originalStyleUrls() {
|
|
@@ -133,10 +160,15 @@ export class TlBuyTicketsWrapper {
|
|
|
133
160
|
}
|
|
134
161
|
};
|
|
135
162
|
}
|
|
163
|
+
static get states() {
|
|
164
|
+
return {
|
|
165
|
+
"view": {}
|
|
166
|
+
};
|
|
167
|
+
}
|
|
136
168
|
static get events() {
|
|
137
169
|
return [{
|
|
138
170
|
"method": "tlComplete",
|
|
139
|
-
"name": "
|
|
171
|
+
"name": "tlComplete",
|
|
140
172
|
"bubbles": true,
|
|
141
173
|
"cancelable": true,
|
|
142
174
|
"composed": true,
|
|
@@ -158,7 +190,7 @@ export class TlBuyTicketsWrapper {
|
|
|
158
190
|
}
|
|
159
191
|
}, {
|
|
160
192
|
"method": "tlError",
|
|
161
|
-
"name": "
|
|
193
|
+
"name": "tlError",
|
|
162
194
|
"bubbles": true,
|
|
163
195
|
"cancelable": true,
|
|
164
196
|
"composed": true,
|
|
@@ -173,7 +205,7 @@ export class TlBuyTicketsWrapper {
|
|
|
173
205
|
}
|
|
174
206
|
}, {
|
|
175
207
|
"method": "tlClose",
|
|
176
|
-
"name": "
|
|
208
|
+
"name": "tlClose",
|
|
177
209
|
"bubbles": true,
|
|
178
210
|
"cancelable": true,
|
|
179
211
|
"composed": true,
|
|
@@ -188,5 +220,16 @@ export class TlBuyTicketsWrapper {
|
|
|
188
220
|
}
|
|
189
221
|
}];
|
|
190
222
|
}
|
|
191
|
-
static get
|
|
223
|
+
static get watchers() {
|
|
224
|
+
return [{
|
|
225
|
+
"propName": "eventId",
|
|
226
|
+
"methodName": "syncProps"
|
|
227
|
+
}, {
|
|
228
|
+
"propName": "occurrenceId",
|
|
229
|
+
"methodName": "syncProps"
|
|
230
|
+
}, {
|
|
231
|
+
"propName": "disabled",
|
|
232
|
+
"methodName": "syncProps"
|
|
233
|
+
}];
|
|
234
|
+
}
|
|
192
235
|
}
|