summaryrefslogtreecommitdiff
path: root/ishtar_common
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2023-07-06 12:48:33 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2023-07-06 15:00:29 +0200
commit9a6f1dccc4e24467e73dd2a9bb5f7e81b1116d19 (patch)
tree4e29aa55f38ef3e6482367ad51421302166c0330 /ishtar_common
parent6eee2676bde3fc72d57338540fc4ce89847c2cb6 (diff)
downloadIshtar-9a6f1dccc4e24467e73dd2a9bb5f7e81b1116d19.tar.bz2
Ishtar-9a6f1dccc4e24467e73dd2a9bb5f7e81b1116d19.zip
🐛 wizards: fix autofocus of first field
Diffstat (limited to 'ishtar_common')
-rw-r--r--ishtar_common/forms.py4
-rw-r--r--ishtar_common/static/js/ishtar.js5
-rw-r--r--ishtar_common/templates/blocks/JQueryAutocomplete.js2
-rw-r--r--ishtar_common/templates/ishtar/wizard/default_wizard.html1
-rw-r--r--ishtar_common/widgets.py3
-rw-r--r--ishtar_common/wizards.py3
6 files changed, 14 insertions, 4 deletions
diff --git a/ishtar_common/forms.py b/ishtar_common/forms.py
index 338c49bfc..b0bf64b46 100644
--- a/ishtar_common/forms.py
+++ b/ishtar_common/forms.py
@@ -919,8 +919,8 @@ class TableSelect(IshtarForm):
cls += " search-vector"
self.fields[k].widget.attrs["class"] = cls
self.fields[k].alt_name = alt_names[k].search_key if k in alt_names else k
- key = list(self.fields.keys())[0]
- self.fields[key].widget.attrs["autofocus"] = "autofocus"
+ if "search_vector" in self.fields.keys():
+ self.fields["search_vector"].widget.attrs["autofocus"] = True
def get_input_ids(self):
return list(self.fields.keys())
diff --git a/ishtar_common/static/js/ishtar.js b/ishtar_common/static/js/ishtar.js
index 56f4e157d..97fdaf13a 100644
--- a/ishtar_common/static/js/ishtar.js
+++ b/ishtar_common/static/js/ishtar.js
@@ -83,6 +83,7 @@ var current_modal;
var default_search_vector;
var pin_search_url;
var static_path = '/static/';
+var autofocus_field;
var datatables_default = {
"processing": true,
@@ -364,6 +365,10 @@ var load_alerts = function(){
html += '</a> ';
}
$("#alert-list").html(html);
+ if (autofocus_field) {
+ $(autofocus_field).focus();
+ autofocus_field = null;
+ }
},
error:function(XMLHttpRequest, textStatus, errorThrows){
close_wait();
diff --git a/ishtar_common/templates/blocks/JQueryAutocomplete.js b/ishtar_common/templates/blocks/JQueryAutocomplete.js
index 54b0cb645..47ff687e0 100644
--- a/ishtar_common/templates/blocks/JQueryAutocomplete.js
+++ b/ishtar_common/templates/blocks/JQueryAutocomplete.js
@@ -20,6 +20,8 @@ $(function() {
{{options}}
{% endif %}
});
+ {% if autofocus %}autofocus_field = "#id_select_{{field_id}}";
+ {% endif %}
$(document).on("click", '#id_select_{{field_id}}', function(){
$('#id_{{field_id}}').val(null);
diff --git a/ishtar_common/templates/ishtar/wizard/default_wizard.html b/ishtar_common/templates/ishtar/wizard/default_wizard.html
index 50e0662ae..405c52965 100644
--- a/ishtar_common/templates/ishtar/wizard/default_wizard.html
+++ b/ishtar_common/templates/ishtar/wizard/default_wizard.html
@@ -65,6 +65,7 @@ $(document).ready(function(){
{% if open_url %}load_window("{{open_url}}");{% endif %}
{% block "js_extra_ready" %}
{% endblock %}
+ if ($("[autofocus]").length > 0) autofocus_field = "#" + $($("[autofocus]")[0]).attr('id');
});
{% endlocalize %}</script>
{% endblock %}
diff --git a/ishtar_common/widgets.py b/ishtar_common/widgets.py
index 2bcc598bf..131051077 100644
--- a/ishtar_common/widgets.py
+++ b/ishtar_common/widgets.py
@@ -757,7 +757,6 @@ class JQueryAutoComplete(forms.TextInput):
)
else:
dynamic_limit.append("id_" + lim.replace("_", ""))
-
dct = {
"source": mark_safe(source),
"field_id": field_id,
@@ -765,6 +764,8 @@ class JQueryAutoComplete(forms.TextInput):
"modify": self.modify,
"dynamic_limit": dynamic_limit,
}
+ if self.attrs.get("autofocus", False):
+ dct["autofocus"] = True
if self.associated_model:
model_name = self.associated_model._meta.object_name.lower()
dct["model_name"] = model_name
diff --git a/ishtar_common/wizards.py b/ishtar_common/wizards.py
index 475c426bb..aa5e1804d 100644
--- a/ishtar_common/wizards.py
+++ b/ishtar_common/wizards.py
@@ -1227,7 +1227,8 @@ class Wizard(IshtarWizard):
first_field = None
for key in frm.fields:
field = frm.fields[key]
- if not field.widget.input_type == "hidden":
+ if not hasattr(field.widget, "input_type") \
+ or not field.widget.input_type == "hidden":
first_field = field
break
if first_field: