combo/combo/apps/maps/templates/maps/colour_or_text_input.html

30 lines
1.7 KiB
HTML

{% load i18n %}
{% with widget_value=widget.value|stringformat:'s' %}
{% spaceless %}
<span id="{{ widget.name }}-joined-buttons" class="gadjo-joined-buttons">
<button data-mode="color" aria-pressed="{% if widget.value is None or widget_value|slice:":1" == '#' %}true{% else %}false{% endif %}" role="button">{% trans "Fixed" %}</button>
<button data-mode="text" aria-pressed="{% if widget.value != None and widget_value|slice:":1" != '#' %}true{% else %}false{% endif %}" role="button">{% trans "Variable" %}</button>
</span>
{% endspaceless %}
<input id="{{ widget.name }}-input" {% if widget.value is None or widget_value|slice:":1" == '#' %}type="color"{% else %}type="text"{% endif %} name="{{ widget.name }}"{% if widget.value != None %} value="{{ widget_value }}"{% endif %}{% include "django/forms/widgets/attrs.html" %}>
{% endwith %}
<script>
$(function() {
$('#{{ widget.name }}-joined-buttons button').on('click', function() {
var $current_mode = $('#{{ widget.name }}-joined-buttons button[aria-pressed=true]');
$current_mode.data('previous-value', $('#{{ widget.name }}-input').val());
if ($(this).is('[aria-pressed=true]')) {
$('#{{ widget.name }}-joined-buttons button').attr('aria-pressed', 'true');
$(this).attr('aria-pressed', 'false');
} else {
$('#{{ widget.name }}-joined-buttons button').attr('aria-pressed', 'false');
$(this).attr('aria-pressed', 'true');
}
var $new_mode = $('#{{ widget.name }}-joined-buttons button[aria-pressed=true]');
var mode = $new_mode.data('mode');
$('#{{ widget.name }}-input').prop('type', mode).val($new_mode.data('previous-value'));
return false;
});
});
</script>