@gomusdev/web-components 3.8.3 → 3.9.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 CHANGED
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## 3.9.0 (2026-06-30)
4
+
5
+ ### Features
6
+
7
+ * **ticket-selection:** add per-ticket info button via with-content
8
+ * **ticket-selection:** extend with-content info button to event-admission filters
9
+
10
+ ### Bug Fixes
11
+
12
+ * Add per_page to TicketContent endpoint
13
+ * **ticket-selection:** info toggle aria-controls resolves while collapsed (IB-02)
14
+
3
15
  ## 3.8.3 (2026-06-30)
4
16
 
5
17
  ### Bug Fixes
@@ -11804,7 +11804,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
11804
11804
  normal: "day",
11805
11805
  annual: "annual"
11806
11806
  }[apiTicket.ticket_type],
11807
- shop_order: apiTicket.shop_order ?? 0
11807
+ shop_order: apiTicket.shop_order ?? 0,
11808
+ content: void 0
11808
11809
  };
11809
11810
  }
11810
11811
  function initUITimeslotTickets(tickets, selectedTime = "") {
@@ -13545,6 +13546,12 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
13545
13546
  query: assign({ per_page: 100 }, params ?? {})
13546
13547
  });
13547
13548
  }
13549
+ ticketsContent(ticketIds) {
13550
+ return this.fetchAndCache("/api/v4/tickets/content", `ticketsContent-${JSON.stringify(ticketIds)}`, "data", {
13551
+ cache: 300,
13552
+ query: assign({ "ticket_ids[]": ticketIds }, { per_page: 100 })
13553
+ });
13554
+ }
13548
13555
  signIn(params) {
13549
13556
  return this.apiPost(SIGN_IN_ENDPOINT, {
13550
13557
  body: params,
@@ -15195,8 +15202,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
15195
15202
  var root$46 = /* @__PURE__ */ from_html(`<s class="go-cart-item-price-original"> </s> <span class="go-cart-item-price-discounted"> </span>`, 1);
15196
15203
  var root_1$14 = /* @__PURE__ */ from_html(`<span class="go-cart-item-price-discounted"> </span>`);
15197
15204
  var root_2$10 = /* @__PURE__ */ from_html(`<span> </span>`);
15198
- var root_3$6 = /* @__PURE__ */ from_html(`<option> </option>`);
15199
- var root_4$3 = /* @__PURE__ */ from_html(`<select class="go-cart-item-select"></select>`);
15205
+ var root_3$7 = /* @__PURE__ */ from_html(`<option> </option>`);
15206
+ var root_4$4 = /* @__PURE__ */ from_html(`<select class="go-cart-item-select"></select>`);
15200
15207
  var root_5$2 = /* @__PURE__ */ from_html(`<li class="go-cart-item-remove"><button class="go-cart-remove">⨉</button></li>`);
15201
15208
  var root_6$2 = /* @__PURE__ */ from_html(`<article class="go-cart-item-content"><ul><li class="go-cart-item-title-container"><!></li> <li class="go-cart-item-price"><!></li> <li class="go-cart-item-count"><!></li> <!> <li class="go-cart-item-sum"> </li></ul></article>`);
15202
15209
  function Item$1($$anchor, $$props) {
@@ -15318,9 +15325,9 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
15318
15325
  append($$anchor, span_2);
15319
15326
  };
15320
15327
  var alternate_1 = ($$anchor) => {
15321
- var select = root_4$3();
15328
+ var select = root_4$4();
15322
15329
  each(select, 21, () => generateQuantityOptions(get$2(capacity).min, get$2(capacity).max, { floor: 1 }), (q) => q.value, ($$anchor, q) => {
15323
- var option = root_3$6();
15330
+ var option = root_3$7();
15324
15331
  var text_4 = child(option, true);
15325
15332
  reset(option);
15326
15333
  var option_value = {};
@@ -30305,8 +30312,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
30305
30312
  var root$15 = /* @__PURE__ */ from_html(`<span class="go-field-star" aria-hidden="true">*</span>`);
30306
30313
  var root_1$7 = /* @__PURE__ */ from_html(` <!>`, 1);
30307
30314
  var root_2$6 = /* @__PURE__ */ from_html(`<label><!></label> <input/>`, 1);
30308
- var root_3$5 = /* @__PURE__ */ from_html(`<label><!></label> <textarea></textarea>`, 1);
30309
- var root_4$2 = /* @__PURE__ */ from_html(`<figure role="status" aria-live="polite"><img class="go-file-preview"/> <figcaption class="go-file-preview-caption"> </figcaption></figure>`);
30315
+ var root_3$6 = /* @__PURE__ */ from_html(`<label><!></label> <textarea></textarea>`, 1);
30316
+ var root_4$3 = /* @__PURE__ */ from_html(`<figure role="status" aria-live="polite"><img class="go-file-preview"/> <figcaption class="go-file-preview-caption"> </figcaption></figure>`);
30310
30317
  var root_5$1 = /* @__PURE__ */ from_html(`<label><!></label> <input/> <!>`, 1);
30311
30318
  var root_6$1 = /* @__PURE__ */ from_html(`<label><input/> <span class="go-checkbox-label"><!></span></label>`);
30312
30319
  var root_7$1 = /* @__PURE__ */ from_html(`<img src="" alt=""/> <option> </option>`, 1);
@@ -30357,7 +30364,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
30357
30364
  append($$anchor, fragment_1);
30358
30365
  };
30359
30366
  const textarea = ($$anchor) => {
30360
- var fragment_2 = root_3$5();
30367
+ var fragment_2 = root_3$6();
30361
30368
  var label_2 = first_child(fragment_2);
30362
30369
  labelText(child(label_2));
30363
30370
  reset(label_2);
@@ -30400,7 +30407,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
30400
30407
  }), void 0, void 0, void 0, void 0, true);
30401
30408
  var node_4 = sibling(input_2, 2);
30402
30409
  var consequent_1 = ($$anchor) => {
30403
- var figure = root_4$2();
30410
+ var figure = root_4$3();
30404
30411
  var img = child(figure);
30405
30412
  var figcaption = sibling(img, 2);
30406
30413
  var text_1 = child(figcaption, true);
@@ -30717,7 +30724,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
30717
30724
  var root$14 = /* @__PURE__ */ from_html(`<span> </span>`);
30718
30725
  var root_1$6 = /* @__PURE__ */ from_html(`<li> </li>`);
30719
30726
  var root_2$5 = /* @__PURE__ */ from_html(`<ul class="go-field-errors"></ul>`);
30720
- var root_3$4 = /* @__PURE__ */ from_html(`<!> <!> <!>`, 1);
30727
+ var root_3$5 = /* @__PURE__ */ from_html(`<!> <!> <!>`, 1);
30721
30728
  function Field($$anchor, $$props) {
30722
30729
  push($$props, true);
30723
30730
  let key = prop($$props, "key", 7), required = prop($$props, "required", 7, false), labelClass = prop($$props, "labelClass", 7), inputClass = prop($$props, "inputClass", 7);
@@ -30775,7 +30782,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
30775
30782
  flushSync();
30776
30783
  }
30777
30784
  };
30778
- var fragment = root_3$4();
30785
+ var fragment = root_3$5();
30779
30786
  var node = first_child(fragment);
30780
30787
  InputAndLabel(node, {
30781
30788
  get describedByIds() {
@@ -30875,7 +30882,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
30875
30882
  var root$12 = /* @__PURE__ */ from_html(`<p aria-hidden="true"> </p>`);
30876
30883
  var root_1$5 = /* @__PURE__ */ from_html(`<li> </li>`);
30877
30884
  var root_2$4 = /* @__PURE__ */ from_html(`<ul class="go-error-feedback-api-errors"></ul>`);
30878
- var root_3$3 = /* @__PURE__ */ from_html(`<div><p aria-live="assertive" class="sr-only"><!></p> <!> <!></div>`);
30885
+ var root_3$4 = /* @__PURE__ */ from_html(`<div><p aria-live="assertive" class="sr-only"><!></p> <!> <!></div>`);
30879
30886
  function ErrorsFeedback($$anchor, $$props) {
30880
30887
  push($$props, true);
30881
30888
  const _details = getDetails$1($$props.$$host);
@@ -30896,7 +30903,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
30896
30903
  $$props.$$host.classList.toggle("go-feedback", true);
30897
30904
  $$props.$$host.setAttribute("data-num-errors", get$2(numErrors).toString());
30898
30905
  });
30899
- var div = root_3$3();
30906
+ var div = root_3$4();
30900
30907
  var p = child(div);
30901
30908
  var node = child(p);
30902
30909
  var consequent = ($$anchor) => {
@@ -32437,6 +32444,33 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
32437
32444
  //#region src/components/ticketSelection/filters/_helpers.ts
32438
32445
  var TWO_HOURS_MS = 7200 * 1e3;
32439
32446
  /**
32447
+ * When a segment opts into content attributes (with-content), batch-fetch
32448
+ * tickets/content for the given tickets and merge each entry's `content` onto
32449
+ * the matching ticket by id (mirrors the legacy `ticket.content = item.content`).
32450
+ * Mutates the tickets in place; call before adding them to the preCart so the
32451
+ * content is present on first render. No-op — and no request — when the segment
32452
+ * hasn't enabled the feature or there are no tickets to enrich.
32453
+ *
32454
+ * Best-effort: the content is an optional, additive sidecar, so a failed or
32455
+ * absent fetch degrades to "no info buttons" and must never empty the ticket
32456
+ * list (see audit finding IB-01). Note this does NOT cover a hung request — a
32457
+ * never-settling fetch is a separate core-infra concern (IB-05).
32458
+ */
32459
+ async function enrichTicketsWithContent(segment, tickets) {
32460
+ if (!segment.withContent) return;
32461
+ const ids = tickets.map((t) => t.id).filter((id) => typeof id === "number");
32462
+ if (!ids.length) return;
32463
+ try {
32464
+ const entries = await shop.asyncFetch(() => shop.ticketsContent(ids)) ?? [];
32465
+ const byId = new Map(entries.map((e) => [e.id, e.content]));
32466
+ for (const ticket of tickets) {
32467
+ if (typeof ticket.id !== "number") continue;
32468
+ const content = byId.get(ticket.id);
32469
+ if (content) ticket.content = content;
32470
+ }
32471
+ } catch {}
32472
+ }
32473
+ /**
32440
32474
  * Load quotas fetched by a filter's loadTimeslots into the shared quota store and
32441
32475
  * record which ticket ids this selection loaded for its picker. timeslotsOn() reads
32442
32476
  * tsd.timeslotTicketIds, so only these tickets' slots render — a foreign
@@ -32512,6 +32546,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
32512
32546
  }));
32513
32547
  shop.capacityManager.addQuotas(quotas);
32514
32548
  const uiTickets = initUITimeslotTickets(filterAvailabletickets(tickets, tsd.selectedTime), tsd.selectedTime);
32549
+ await enrichTicketsWithContent(segment, uiTickets);
32515
32550
  for (const ticket of uiTickets) segment.preCart.addItem(createCartItem(ticket, { time: tsd.selectedTime }));
32516
32551
  }
32517
32552
  },
@@ -32543,6 +32578,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
32543
32578
  const firstQuota = Object.values(quotas)[0];
32544
32579
  const timeslot = firstQuota ? Object.keys(firstQuota.capacities)[0] : void 0;
32545
32580
  const uiTickets = initUITimeslotTickets(filterAvailabletickets(tickets, timeslot), timeslot);
32581
+ await enrichTicketsWithContent(segment, uiTickets);
32546
32582
  for (const ticket of uiTickets) segment.preCart.addItem(createCartItem(ticket, { time: timeslot }));
32547
32583
  }
32548
32584
  },
@@ -32564,7 +32600,9 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
32564
32600
  "by_ticket_ids[]": tsd.ticketIds,
32565
32601
  "by_ticket_group_ids[]": segment.ticketGroupIds ?? tsd.ticketGroupIds
32566
32602
  }));
32567
- for (const t of Object.values(tickets)) segment.preCart.addItem(createCartItem(createUITicket(t)));
32603
+ const uiTickets = Object.values(tickets).map((t) => createUITicket(t));
32604
+ await enrichTicketsWithContent(segment, uiTickets);
32605
+ for (const ticket of uiTickets) segment.preCart.addItem(createCartItem(ticket));
32568
32606
  }
32569
32607
  },
32570
32608
  "event:admission": {
@@ -32603,6 +32641,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
32603
32641
  }));
32604
32642
  shop.capacityManager.addQuotas(quotas);
32605
32643
  const uiTickets = initUITimeslotTickets(filterAvailabletickets(tickets, tsd.selectedTime), tsd.selectedTime);
32644
+ await enrichTicketsWithContent(segment, uiTickets);
32606
32645
  for (const ticket of uiTickets) segment.preCart.addItem(createCartItem(ticket, { time: tsd.selectedTime }));
32607
32646
  }
32608
32647
  },
@@ -32635,6 +32674,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
32635
32674
  const firstQuota = Object.values(quotas)[0];
32636
32675
  const time = firstQuota ? Object.keys(firstQuota.capacities)[0] : void 0;
32637
32676
  const uiTickets = initUITimeslotTickets(filterAvailabletickets(tickets, time), time);
32677
+ await enrichTicketsWithContent(segment, uiTickets);
32638
32678
  for (const t of uiTickets) segment.preCart.addItem(createCartItem(t, { time }));
32639
32679
  }
32640
32680
  },
@@ -32683,6 +32723,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
32683
32723
  }));
32684
32724
  shop.capacityManager.addQuotas(quotas);
32685
32725
  const uiTickets = initUITimeslotTickets(filterAvailabletickets(tickets, tsd.selectedTime), tsd.selectedTime);
32726
+ await enrichTicketsWithContent(segment, uiTickets);
32686
32727
  for (const t of uiTickets) segment.preCart.addItem(createCartItem(t, { time: tsd.selectedTime }));
32687
32728
  }
32688
32729
  },
@@ -32750,6 +32791,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
32750
32791
  }));
32751
32792
  shop.capacityManager.addQuotas(quotas);
32752
32793
  const uiTickets = initUITimeslotTickets(filterAvailabletickets(tickets, date.start_time), date.start_time);
32794
+ await enrichTicketsWithContent(segment, uiTickets);
32753
32795
  for (const ticket of uiTickets) segment.preCart.addItem(createCartItem(ticket, { time: date.start_time }));
32754
32796
  }
32755
32797
  }
@@ -32795,6 +32837,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
32795
32837
  const firstQuota = Object.values(quotas)[0];
32796
32838
  const time = firstQuota ? Object.keys(firstQuota.capacities)[0] : date.start_time;
32797
32839
  const uiTickets = initUITimeslotTickets(filterAvailabletickets(tickets, time), time);
32840
+ await enrichTicketsWithContent(segment, uiTickets);
32798
32841
  for (const t of uiTickets) segment.preCart.addItem(createCartItem(t, { time }));
32799
32842
  }
32800
32843
  }
@@ -32838,6 +32881,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
32838
32881
  }));
32839
32882
  shop.capacityManager.addQuotas(quotas);
32840
32883
  const uiTickets = initUITimeslotTickets(filterAvailabletickets(tickets, date.start_time), date.start_time);
32884
+ await enrichTicketsWithContent(segment, uiTickets);
32841
32885
  for (const t of uiTickets) segment.preCart.addItem(createCartItem(t, { time: date.start_time }));
32842
32886
  }
32843
32887
  }
@@ -33287,7 +33331,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
33287
33331
  var root$9 = /* @__PURE__ */ from_html(`<span class="go-cart-item-date" data-testid="cart-item-date"> </span> <span class="go-cart-item-time" data-testid="cart-item-time"> </span>`, 1);
33288
33332
  var root_1$4 = /* @__PURE__ */ from_html(`<br/> <span class="go-order-item-quantities"> </span>`, 1);
33289
33333
  var root_2$3 = /* @__PURE__ */ from_html(`<a aria-label="iCal link"> </a>`);
33290
- var root_3$2 = /* @__PURE__ */ from_html(`<li><article><ul><li class="go-order-breakdown-count">1</li> <li class="go-order-breakdown-product"><span class="go-order-item-title"> </span> <!> <!> <a class="go-ticket-download" target="_blank" rel="noopener noreferrer"> </a></li> <li class="go-order-breakdown-item-price"> </li> <li class="go-order-breakdown-passbook"></li> <li class="go-order-breakdown-ical"><!></li></ul></article></li>`);
33334
+ var root_3$3 = /* @__PURE__ */ from_html(`<li><article><ul><li class="go-order-breakdown-count">1</li> <li class="go-order-breakdown-product"><span class="go-order-item-title"> </span> <!> <!> <a class="go-ticket-download" target="_blank" rel="noopener noreferrer"> </a></li> <li class="go-order-breakdown-item-price"> </li> <li class="go-order-breakdown-passbook"></li> <li class="go-order-breakdown-ical"><!></li></ul></article></li>`);
33291
33335
  function Event$1($$anchor, $$props) {
33292
33336
  push($$props, true);
33293
33337
  let item = prop($$props, "item", 7), orderDetails = prop($$props, "orderDetails", 7);
@@ -33307,7 +33351,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
33307
33351
  flushSync();
33308
33352
  }
33309
33353
  };
33310
- var li = root_3$2();
33354
+ var li = root_3$3();
33311
33355
  var article = child(li);
33312
33356
  var ul = child(article);
33313
33357
  var li_1 = sibling(child(ul), 2);
@@ -33392,8 +33436,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
33392
33436
  var root$8 = /* @__PURE__ */ from_html(`<span class="go-cart-item-date"> </span> <span class="go-cart-item-time"> </span>`, 1);
33393
33437
  var root_1$3 = /* @__PURE__ */ from_html(`<span class="go-cart-item-date"> </span>`);
33394
33438
  var root_2$2 = /* @__PURE__ */ from_html(`<!> <br/> <a class="go-ticket-download" target="_blank" rel="noopener noreferrer"> </a>`, 1);
33395
- var root_3$1 = /* @__PURE__ */ from_html(`<br/> <a class="go-ticket-personalization"> </a>`, 1);
33396
- var root_4$1 = /* @__PURE__ */ from_html(`<a aria-label="passbook link"><img alt="apple wallet icon"/></a>`);
33439
+ var root_3$2 = /* @__PURE__ */ from_html(`<br/> <a class="go-ticket-personalization"> </a>`, 1);
33440
+ var root_4$2 = /* @__PURE__ */ from_html(`<a aria-label="passbook link"><img alt="apple wallet icon"/></a>`);
33397
33441
  var root_5 = /* @__PURE__ */ from_html(`<a aria-label="iCal link"> </a>`);
33398
33442
  var root_6 = /* @__PURE__ */ from_html(`<li><article><ul><li class="go-order-breakdown-count"></li> <li class="go-order-breakdown-product"><span class="go-order-item-title"> </span> <!></li> <li class="go-order-breakdown-item-price"> </li> <li class="go-order-breakdown-passbook"><!></li> <li class="go-order-breakdown-ical"><!></li></ul></article></li>`);
33399
33443
  var root_7 = /* @__PURE__ */ from_html(`<a class="go-ticket-download" target="_blank" rel="noopener noreferrer"> </a>`);
@@ -33479,7 +33523,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
33479
33523
  append($$anchor, fragment_2);
33480
33524
  };
33481
33525
  var alternate = ($$anchor) => {
33482
- var fragment_4 = root_3$1();
33526
+ var fragment_4 = root_3$2();
33483
33527
  var a_1 = sibling(first_child(fragment_4), 2);
33484
33528
  var text_5 = child(a_1, true);
33485
33529
  reset(a_1);
@@ -33500,7 +33544,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
33500
33544
  var li_4 = sibling(li_3, 2);
33501
33545
  var node_4 = child(li_4);
33502
33546
  var consequent_3 = ($$anchor) => {
33503
- var a_2 = root_4$1();
33547
+ var a_2 = root_4$2();
33504
33548
  var img = child(a_2);
33505
33549
  reset(a_2);
33506
33550
  template_effect(() => {
@@ -34086,6 +34130,13 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
34086
34130
  set museumIds(value) {
34087
34131
  set(this.#museumIds, value, true);
34088
34132
  }
34133
+ #withContent = /* @__PURE__ */ state(false);
34134
+ get withContent() {
34135
+ return get$2(this.#withContent);
34136
+ }
34137
+ set withContent(value) {
34138
+ set(this.#withContent, value, true);
34139
+ }
34089
34140
  constructor(filters, tsdWrapper) {
34090
34141
  this.filters = filters === void 0 ? void 0 : Array.isArray(filters) ? filters : [filters];
34091
34142
  this.#ticketSelectionDetails = /* @__PURE__ */ user_derived(() => tsdWrapper.value);
@@ -34116,7 +34167,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
34116
34167
  //#region src/components/ticketSelection/subcomponents/tickets/subcomponents/segment/TicketSegment.svelte
34117
34168
  function TicketSegment($$anchor, $$props) {
34118
34169
  push($$props, true);
34119
- const filters = prop($$props, "filters", 7), dateId = prop($$props, "dateId", 7), query = prop($$props, "query", 7), limit = prop($$props, "limit", 7), ticketGroupIds = prop($$props, "ticketGroupIds", 7), languageIds = prop($$props, "languageIds", 7), catchWordIds = prop($$props, "catchWordIds", 7), museumIds = prop($$props, "museumIds", 7);
34170
+ const filters = prop($$props, "filters", 7), dateId = prop($$props, "dateId", 7), query = prop($$props, "query", 7), limit = prop($$props, "limit", 7), ticketGroupIds = prop($$props, "ticketGroupIds", 7), languageIds = prop($$props, "languageIds", 7), catchWordIds = prop($$props, "catchWordIds", 7), museumIds = prop($$props, "museumIds", 7), withContent = prop($$props, "withContent", 7);
34120
34171
  function parseFilters(value) {
34121
34172
  if (!value) return void 0;
34122
34173
  const out = value.split(",").map((s) => s.trim()).filter(Boolean);
@@ -34135,6 +34186,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
34135
34186
  details.languageIds = parseIds(languageIds());
34136
34187
  details.catchWordIds = parseIds(catchWordIds());
34137
34188
  details.museumIds = parseIds(museumIds());
34189
+ details.withContent = Boolean(withContent());
34138
34190
  });
34139
34191
  user_effect(() => {
34140
34192
  details.dateId;
@@ -34145,6 +34197,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
34145
34197
  details.catchWordIds;
34146
34198
  details.query;
34147
34199
  details.limit;
34200
+ details.withContent;
34148
34201
  tsd?.filters;
34149
34202
  tsd?.selectedTimeslot;
34150
34203
  tsd?.selectedTime;
@@ -34219,6 +34272,13 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
34219
34272
  set museumIds($$value) {
34220
34273
  museumIds($$value);
34221
34274
  flushSync();
34275
+ },
34276
+ get withContent() {
34277
+ return withContent();
34278
+ },
34279
+ set withContent($$value) {
34280
+ withContent($$value);
34281
+ flushSync();
34222
34282
  }
34223
34283
  });
34224
34284
  }
@@ -34262,6 +34322,11 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
34262
34322
  attribute: "museum-ids",
34263
34323
  reflect: true,
34264
34324
  type: "String"
34325
+ },
34326
+ withContent: {
34327
+ attribute: "with-content",
34328
+ reflect: true,
34329
+ type: "Boolean"
34265
34330
  }
34266
34331
  }, [], ["details"]));
34267
34332
  //#endregion
@@ -36132,9 +36197,12 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
36132
36197
  //#endregion
36133
36198
  //#region src/components/ticketSelection/subcomponents/tickets/subcomponents/segment/Item.svelte
36134
36199
  var root$3 = /* @__PURE__ */ from_html(`<span class="go-tickets-item-title-event-title"> </span> <span class="go-tickets-item-title-product-title"> </span>`, 1);
36135
- var root_1$2 = /* @__PURE__ */ from_html(`<option> </option>`);
36136
- var root_2$1 = /* @__PURE__ */ from_html(`<li><article><ul><li class="go-tickets-item-title"><!></li> <li class="go-tickets-item-description" data-go-tickets-description=""></li> <li class="go-tickets-item-price" data-go-tickets-price=""> </li> <li class="go-tickets-item-quality" data-go-tickets-quality=""><select class="go-tickets-item-select"></select></li></ul></article></li>`);
36200
+ var root_1$2 = /* @__PURE__ */ from_html(`<li class="go-tickets-item-info"><button type="button" data-testid="ticket-info-toggle"></button></li>`);
36201
+ var root_2$1 = /* @__PURE__ */ from_html(`<li class="go-ticket-additional-info" data-testid="ticket-additional-info"> </li>`);
36202
+ var root_3$1 = /* @__PURE__ */ from_html(`<option> </option>`);
36203
+ var root_4$1 = /* @__PURE__ */ from_html(`<li><article><ul><li class="go-tickets-item-title"><!></li> <!> <li class="go-tickets-item-description" data-go-tickets-description=""></li> <!> <li class="go-tickets-item-price" data-go-tickets-price=""> </li> <li class="go-tickets-item-quality" data-go-tickets-quality=""><select class="go-tickets-item-select"></select></li></ul></article></li>`);
36137
36204
  function Item($$anchor, $$props) {
36205
+ const uid = props_id();
36138
36206
  push($$props, true);
36139
36207
  const scaled_title = ($$anchor) => {
36140
36208
  var fragment = root$3();
@@ -36158,6 +36226,9 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
36158
36226
  };
36159
36227
  let item = prop($$props, "item", 7), details = prop($$props, "details", 7);
36160
36228
  let capacity = /* @__PURE__ */ state(void 0);
36229
+ let infoExpanded = /* @__PURE__ */ state(false);
36230
+ const reductionReason = /* @__PURE__ */ user_derived(() => item().product?.content?.reduction_reason);
36231
+ const infoPanelId = `go-ticket-info-${uid}`;
36161
36232
  user_effect(() => {
36162
36233
  details().preCart.items.map((i) => i.quantity);
36163
36234
  untrack(() => {
@@ -36187,55 +36258,87 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
36187
36258
  };
36188
36259
  var fragment_2 = comment();
36189
36260
  var node = first_child(fragment_2);
36190
- var consequent = ($$anchor) => {
36191
- var li = root_2$1();
36261
+ var consequent_2 = ($$anchor) => {
36262
+ var li = root_4$1();
36192
36263
  var article = child(li);
36193
36264
  var ul = child(article);
36194
36265
  var li_1 = child(ul);
36195
36266
  var node_1 = child(li_1);
36196
36267
  titleSnippet(node_1);
36197
36268
  reset(li_1);
36198
- var li_2 = sibling(li_1, 2);
36199
- html$2(li_2, () => purify.sanitize(item().product.description), true);
36200
- reset(li_2);
36201
- var li_3 = sibling(li_2, 2);
36202
- var text_3 = child(li_3, true);
36269
+ var node_2 = sibling(li_1, 2);
36270
+ var consequent = ($$anchor) => {
36271
+ var li_2 = root_1$2();
36272
+ var button = child(li_2);
36273
+ reset(li_2);
36274
+ template_effect(($0) => {
36275
+ set_class(button, 1, clsx(["go-ticket-info-icon", get$2(infoExpanded) && "is-active"]));
36276
+ set_attribute(button, "aria-expanded", get$2(infoExpanded));
36277
+ set_attribute(button, "aria-controls", infoPanelId);
36278
+ set_attribute(button, "aria-label", $0);
36279
+ }, [() => shop.t("ticket.list.additionalInfo")]);
36280
+ delegated("click", button, () => set(infoExpanded, !get$2(infoExpanded)));
36281
+ append($$anchor, li_2);
36282
+ };
36283
+ if_block(node_2, ($$render) => {
36284
+ if (get$2(reductionReason)) $$render(consequent);
36285
+ });
36286
+ var li_3 = sibling(node_2, 2);
36287
+ html$2(li_3, () => purify.sanitize(item().product.description), true);
36203
36288
  reset(li_3);
36204
- var li_4 = sibling(li_3, 2);
36205
- var select = child(li_4);
36289
+ var node_3 = sibling(li_3, 2);
36290
+ var consequent_1 = ($$anchor) => {
36291
+ var li_4 = root_2$1();
36292
+ var text_3 = child(li_4, true);
36293
+ reset(li_4);
36294
+ template_effect(($0) => {
36295
+ set_attribute(li_4, "id", infoPanelId);
36296
+ set_attribute(li_4, "hidden", !get$2(infoExpanded));
36297
+ set_text(text_3, $0);
36298
+ }, [() => shop.t(get$2(reductionReason))]);
36299
+ append($$anchor, li_4);
36300
+ };
36301
+ if_block(node_3, ($$render) => {
36302
+ if (get$2(reductionReason)) $$render(consequent_1);
36303
+ });
36304
+ var li_5 = sibling(node_3, 2);
36305
+ var text_4 = child(li_5, true);
36306
+ reset(li_5);
36307
+ var li_6 = sibling(li_5, 2);
36308
+ var select = child(li_6);
36206
36309
  each(select, 21, () => generateQuantityOptions(get$2(capacity).min, get$2(capacity).max), (q) => q.value, ($$anchor, q) => {
36207
- var option = root_1$2();
36208
- var text_4 = child(option, true);
36310
+ var option = root_3$1();
36311
+ var text_5 = child(option, true);
36209
36312
  reset(option);
36210
36313
  var option_value = {};
36211
36314
  template_effect(() => {
36212
36315
  set_selected(option, item().quantity === get$2(q).value);
36213
- set_text(text_4, get$2(q).label);
36316
+ set_text(text_5, get$2(q).label);
36214
36317
  if (option_value !== (option_value = get$2(q).value)) option.value = (option.__value = get$2(q).value) ?? "";
36215
36318
  });
36216
36319
  append($$anchor, option);
36217
36320
  });
36218
36321
  reset(select);
36219
- reset(li_4);
36322
+ reset(li_6);
36220
36323
  reset(ul);
36221
36324
  reset(article);
36222
36325
  reset(li);
36223
36326
  template_effect(($0) => {
36224
36327
  set_class(article, 1, clsx(["go-tickets-item", get$2(capacity).bookedOut && "is-booked-out"]));
36225
36328
  set_attribute(article, "data-testid", item().uuid);
36226
- set_text(text_3, item().price_formatted);
36329
+ set_text(text_4, item().price_formatted);
36227
36330
  set_attribute(select, "aria-label", $0);
36228
36331
  }, [() => shop.t("cart.content.table.edit")]);
36229
36332
  delegated("change", select, (e) => update(item(), e.target, details()?.ticketSelectionDetails));
36230
36333
  append($$anchor, li);
36231
36334
  };
36232
36335
  if_block(node, ($$render) => {
36233
- if (get$2(capacity) && !get$2(capacity).unavailable) $$render(consequent);
36336
+ if (get$2(capacity) && !get$2(capacity).unavailable) $$render(consequent_2);
36234
36337
  });
36235
36338
  append($$anchor, fragment_2);
36236
36339
  return pop($$exports);
36237
36340
  }
36238
- delegate(["change"]);
36341
+ delegate(["click", "change"]);
36239
36342
  create_custom_element(Item, {
36240
36343
  item: {},
36241
36344
  details: {}