{% comment %} Renders each selected item in the TomSelect input. {% endcomment %} {% load i18n %} item: function(data, escape) { {% include "django_tomselect/helpers/decode_if_needed.html" %} {% if 'data_template_item' in widget.attrs.keys and widget.attrs.data_template_item %} var template = {{ widget.attrs.data_template_item|safe }}; var result = template.replace(/\$\{data\.(\w+)\}/g, function(match, fieldName) { var value = data[fieldName]; if (value === undefined || value === null) return ''; return escape(String(value)); }); // Also support ${escape(data.fieldName)} pattern for explicit escaping result = result.replace(/\$\{escape\(data\.(\w+)\)\}/g, function(match, fieldName) { var value = data[fieldName]; if (value === undefined || value === null) return ''; return escape(String(value)); }); return result; {% else %} let item = ''; const safeValue = escape(decodeIfNeeded(data['{{ widget.label_field|escapejs }}'])); item += `
${safeValue}`; {% if "show_detail" in widget and widget.show_detail %} if (data.detail_url) { item += ` `; } {% endif %} {% if "show_delete" in widget and widget.show_delete %} if (data.delete_url) { item += ` `; } {% endif %} {% if "show_update" in widget and widget.show_update %} if (data.update_url) { item += ` `; } {% endif %} item += '
'; return item; {% endif %} },