Switch to searchable view when trigger search menu

Closes #12743
This commit is contained in:
Cédric Krier
2024-12-31 01:15:42 +01:00
parent 9a26aa923b
commit 492fb7731b
5 changed files with 33 additions and 13 deletions
+12 -1
View File
@@ -221,6 +221,12 @@
}
this.el.append(this.content_box);
},
grab_focus: function() {
this.filter_box.toggleClass('hidden-xs', false);
window.setTimeout(() => {
this.search_entry.focus();
}, 0);
},
set_text: function(value) {
this.search_entry.val(value);
this.bookmark_match();
@@ -937,7 +943,8 @@
return next_view;
},
switch_view: function(
view_type=null, view_id=null, creatable=null, display=true) {
view_type=null, view_id=null, creatable=null, searchable=null,
display=true) {
if (view_id !== null) {
view_id = Number(view_id);
}
@@ -971,6 +978,10 @@
if (creatable !== null) {
result &= this.current_view.creatable == creatable;
}
if (searchable !== null) {
result &= Boolean(~['tree', 'graph', 'calendar'].indexOf(
this.current_view.view_type)) == searchable;
}
return result;
};
const _switch = () => {
+8 -8
View File
@@ -987,14 +987,14 @@
});
},
search: function() {
var search_entry = this.screen.screen_container.search_entry;
search_entry.parents('.filter-box').toggleClass('hidden-xs');
if (search_entry.is(':visible')) {
window.setTimeout(function() {
search_entry.focus();
}, 0);
}
return jQuery.when();
return this.modified_save().then(() => {
return this.screen.switch_view(
null, null, null, true, false).then(() => {
return this.screen.display().done(() => {
this.screen.screen_container.grab_focus();
});
});
});
},
logs: function() {
var record = this.screen.current_record;
+5 -3
View File
@@ -556,9 +556,11 @@ class Form(TabContent):
self.buttons['copy_url'].props.active = True
def sig_search(self, widget):
search_container = self.screen.screen_container
if hasattr(search_container, 'search_entry'):
search_container.search_entry.grab_focus()
if not self.modified_save():
return
self.screen.switch_view(searchable=True, display=False)
self.screen.display()
self.screen.screen_container.grab_focus()
def action_popup(self, widget):
button, = widget.get_children()
@@ -559,7 +559,8 @@ class Screen:
return next_view
def switch_view(
self, view_type=None, view_id=None, creatable=None, display=True):
self, view_type=None, view_id=None, creatable=None,
searchable=None, display=True):
if view_id is not None:
view_id = int(view_id)
if self.current_view:
@@ -585,6 +586,9 @@ class Screen:
result &= self.current_view.view_id == view_id
if creatable is not None:
result &= self.current_view.creatable == creatable
if searchable is not None:
result &= (self.current_view.view_type in {
'tree', 'graph', 'calendar'}) == searchable
return result
for i in range(len(self.views) + len(self.view_to_load)):
if len(self.view_to_load):
@@ -349,6 +349,9 @@ class ScreenContainer(object):
tooltips.enable()
def grab_focus(self):
self.search_entry.grab_focus()
def widget_get(self):
return self.vbox