fix update of value from autocomplete, #1557

This commit is contained in:
zadam 2021-02-13 12:11:58 +01:00
parent d616a77d6b
commit 00c106aba6
3 changed files with 43 additions and 38 deletions

View File

@ -40,7 +40,12 @@ function initAttributeNameAutocomplete({ $el, attributeType, open }) {
} }
async function initLabelValueAutocomplete({ $el, open, nameCallback }) { async function initLabelValueAutocomplete({ $el, open, nameCallback }) {
if (!$el.hasClass("aa-input")) { if ($el.hasClass("aa-input")) {
// we reinit everytime because autocomplete seems to have a bug where it retains state from last
// open even though the value was resetted
$el.autocomplete('destroy');
}
const attributeName = nameCallback(); const attributeName = nameCallback();
if (attributeName.trim() === "") { if (attributeName.trim() === "") {
@ -57,12 +62,13 @@ async function initLabelValueAutocomplete({ $el, open, nameCallback }) {
$el.autocomplete({ $el.autocomplete({
appendTo: document.querySelector('body'), appendTo: document.querySelector('body'),
hint: false, hint: false,
openOnFocus: true, openOnFocus: false, // handled manually
minLength: 0, minLength: 0,
tabAutocomplete: false tabAutocomplete: false
}, [{ }, [{
displayKey: 'value', displayKey: 'value',
source: function (term, cb) { cache: false,
source: async function (term, cb) {
term = term.toLowerCase(); term = term.toLowerCase();
const filtered = attributeValues.filter(attr => attr.value.toLowerCase().includes(term)); const filtered = attributeValues.filter(attr => attr.value.toLowerCase().includes(term));
@ -75,8 +81,7 @@ async function initLabelValueAutocomplete({ $el, open, nameCallback }) {
if ($el.attr("readonly")) { if ($el.attr("readonly")) {
$el.autocomplete('close'); $el.autocomplete('close');
} }
}) });
}
if (open) { if (open) {
$el.autocomplete("open"); $el.autocomplete("open");

View File

@ -24,8 +24,6 @@ function setupSplit(left, right) {
rightPaneWidth = 5; rightPaneWidth = 5;
} }
console.log(leftPaneWidth, rightPaneWidth);
if (left && right) { if (left && right) {
instance = Split(['#left-pane', '#center-pane', '#right-pane'], { instance = Split(['#left-pane', '#center-pane', '#right-pane'], {
sizes: [leftPaneWidth, 100 - leftPaneWidth - rightPaneWidth, rightPaneWidth], sizes: [leftPaneWidth, 100 - leftPaneWidth - rightPaneWidth, rightPaneWidth],

View File

@ -248,6 +248,8 @@ export default class AttributeDetailWidget extends TabAwareWidget {
this.$rowValue = this.$widget.find('.attr-row-value'); this.$rowValue = this.$widget.find('.attr-row-value');
this.$inputValue = this.$widget.find('.attr-input-value'); this.$inputValue = this.$widget.find('.attr-input-value');
this.$inputValue.on('keyup', () => this.userEditedAttribute()); this.$inputValue.on('keyup', () => this.userEditedAttribute());
this.$inputValue.on('change', () => this.userEditedAttribute());
this.$inputValue.on('autocomplete:closed', () => this.userEditedAttribute());
this.$inputValue.on('focus', () => { this.$inputValue.on('focus', () => {
attributeAutocompleteService.initLabelValueAutocomplete({ attributeAutocompleteService.initLabelValueAutocomplete({
$el: this.$inputValue, $el: this.$inputValue,