diff --git a/frappe/public/js/frappe/ui/tag_editor.js b/frappe/public/js/frappe/ui/tag_editor.js index 059d8bb48e..7fb42caa51 100644 --- a/frappe/public/js/frappe/ui/tag_editor.js +++ b/frappe/public/js/frappe/ui/tag_editor.js @@ -99,6 +99,21 @@ frappe.ui.TagEditor = class TagEditor { $input.trigger("input"); } }); + $input.on("enter-pressed-in-addtag", function (e) { + var value = e.target.value; + frappe.call({ + method: "frappe.desk.doctype.tag.tag.get_tags", + args: { + doctype: me.frm.doctype, + txt: value.toLowerCase(), + }, + callback: function (r) { + // Updates input to suggestion value (if any) on + if (r.message.length) $input.val(r.message[0]); + $input.trigger("input-selected"); + }, + }); + }); } get_args(tag) { return { diff --git a/frappe/public/js/frappe/ui/tags.js b/frappe/public/js/frappe/ui/tags.js index 7def9272b6..6795f04cc3 100644 --- a/frappe/public/js/frappe/ui/tags.js +++ b/frappe/public/js/frappe/ui/tags.js @@ -38,10 +38,19 @@ frappe.ui.Tags = class { }; this.$input.keypress((e) => { - if (e.which == 13 || e.keyCode == 13) select_tag(); + if (e.which == 13 || e.keyCode == 13) { + // Triggers event when is pressed + this.$input.trigger("enter-pressed-in-addtag"); + } }); this.$input.focusout(select_tag); + this.$input.on("input-selected", () => { + // Adds tag if a input is selected + select_tag(); + this.deactivate(); + }); + this.$input.on("blur", () => { this.deactivate(); });