Widget: add unique html_id to use in labels, etc.

This commit is contained in:
Richard Schreiber
2024-12-11 08:30:44 +01:00
committed by GitHub
parent e5f29bd592
commit 18801f2d1c

View File

@@ -2028,7 +2028,7 @@ function get_ga_client_id(tracking_id) {
return null; return null;
} }
var create_widget = function (element) { var create_widget = function (element, html_id=null) {
var target_url = element.attributes.event.value; var target_url = element.attributes.event.value;
if (!target_url.match(/\/$/)) { if (!target_url.match(/\/$/)) {
target_url += "/"; target_url += "/";
@@ -2052,6 +2052,7 @@ var create_widget = function (element) {
widget_data[attrib.name.replace(/^data-/, '')] = attrib.value; widget_data[attrib.name.replace(/^data-/, '')] = attrib.value;
} }
} }
html_id = html_id || element.id || makeid(16);
var observer = new MutationObserver((mutationList) => { var observer = new MutationObserver((mutationList) => {
mutationList.forEach((mutation) => { mutationList.forEach((mutation) => {
@@ -2111,6 +2112,7 @@ var create_widget = function (element) {
widget_data: widget_data, widget_data: widget_data,
loading: 1, loading: 1,
widget_id: 'pretix-widget-' + widget_id, widget_id: 'pretix-widget-' + widget_id,
html_id: html_id,
vouchers_exist: false, vouchers_exist: false,
disable_vouchers: disable_vouchers, disable_vouchers: disable_vouchers,
disable_filters: disable_filters, disable_filters: disable_filters,
@@ -2148,7 +2150,7 @@ var create_widget = function (element) {
return app; return app;
}; };
var create_button = function (element) { var create_button = function (element, html_id=null) {
var target_url = element.attributes.event.value; var target_url = element.attributes.event.value;
if (!target_url.match(/\/$/)) { if (!target_url.match(/\/$/)) {
target_url += "/"; target_url += "/";
@@ -2166,6 +2168,7 @@ var create_button = function (element) {
widget_data[attrib.name.replace(/^data-/, '')] = attrib.value; widget_data[attrib.name.replace(/^data-/, '')] = attrib.value;
} }
} }
html_id = html_id || element.id || makeid(16);
var observer = new MutationObserver((mutationList) => { var observer = new MutationObserver((mutationList) => {
mutationList.forEach((mutation) => { mutationList.forEach((mutation) => {
@@ -2207,6 +2210,7 @@ var create_button = function (element) {
frame_dismissed: false, frame_dismissed: false,
widget_data: widget_data, widget_data: widget_data,
widget_id: 'pretix-widget-' + widget_id, widget_id: 'pretix-widget-' + widget_id,
html_id: html_id,
button_text: button_text button_text: button_text
} }
}, },
@@ -2241,14 +2245,14 @@ window.PretixWidget.buildWidgets = function () {
var wlength = widgets.length; var wlength = widgets.length;
for (var i = 0; i < wlength; i++) { for (var i = 0; i < wlength; i++) {
var widget = widgets[i]; var widget = widgets[i];
widgetlist.push(create_widget(widget)); widgetlist.push(create_widget(widget, widget.id || "pretix-widget-"+i));
} }
var buttons = document.querySelectorAll("pretix-button, div.pretix-button-compat"); var buttons = document.querySelectorAll("pretix-button, div.pretix-button-compat");
var blength = buttons.length; var blength = buttons.length;
for (var i = 0; i < blength; i++) { for (var i = 0; i < blength; i++) {
var button = buttons[i]; var button = buttons[i];
buttonlist.push(create_button(button)); buttonlist.push(create_button(button, button.id || "pretix-button-"+i));
} }
}); });
}; };