From 252989e261b58620771d71abde6ecccd910c3a75 Mon Sep 17 00:00:00 2001 From: Joffrey JAFFEUX Date: Fri, 7 Feb 2020 14:12:17 +0100 Subject: [PATCH] DEV: better detection of new item (#8889) --- .../select-kit/components/select-kit.js.es6 | 10 ++++++---- .../components/select-kit/select-kit-row.js.es6 | 3 ++- app/assets/javascripts/select-kit/mixins/utils.js.es6 | 4 ++-- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/app/assets/javascripts/select-kit/components/select-kit.js.es6 b/app/assets/javascripts/select-kit/components/select-kit.js.es6 index f8caaee209f..c1169723157 100644 --- a/app/assets/javascripts/select-kit/components/select-kit.js.es6 +++ b/app/assets/javascripts/select-kit/components/select-kit.js.es6 @@ -87,6 +87,7 @@ export default Component.extend( hasNoContent: true, highlighted: null, noneItem: null, + newItem: null, filter: null, modifyContent: bind(this, this._modifyContentWrapper), @@ -224,7 +225,8 @@ export default Component.extend( this.selectKit.setProperties({ hasSelection: !isEmpty(this.value), - noneItem: this._modifyNoSelectionWrapper() + noneItem: this._modifyNoSelectionWrapper(), + newItem: null }); if (this.selectKit.isExpanded) { @@ -563,7 +565,6 @@ export default Component.extend( } const noneItem = this.selectKit.noneItem; - if ( this.selectKit.options.allowAny && filter && @@ -571,7 +572,8 @@ export default Component.extend( ) { filter = this.createContentFromInput(filter); if (this.validateCreate(filter, content)) { - content.unshift(this.defaultItem(filter, filter)); + this.selectKit.set("newItem", this.defaultItem(filter, filter)); + content.unshift(this.selectKit.newItem); } } @@ -590,7 +592,7 @@ export default Component.extend( this.selectKit.setProperties({ highlighted: this.singleSelect && this.value - ? this.itemForValue(this.value) + ? this.itemForValue(this.value, this.mainCollection) : this.mainCollection.firstObject, isLoading: false, hasNoContent diff --git a/app/assets/javascripts/select-kit/components/select-kit/select-kit-row.js.es6 b/app/assets/javascripts/select-kit/components/select-kit/select-kit-row.js.es6 index 2eadd9a5fa0..6ec3cc6d055 100644 --- a/app/assets/javascripts/select-kit/components/select-kit/select-kit-row.js.es6 +++ b/app/assets/javascripts/select-kit/components/select-kit/select-kit-row.js.es6 @@ -47,7 +47,8 @@ export default Component.extend(UtilsMixin, { if ( this.selectKit.options.allowAny && this.rowValue === this.selectKit.filter && - this.getName(this.selectKit.noneItem) !== this.rowName + this.getName(this.selectKit.noneItem) !== this.rowName && + this.getName(this.selectKit.newItem) === this.rowName ) { return I18n.t("select_kit.create", { content: label }); } diff --git a/app/assets/javascripts/select-kit/mixins/utils.js.es6 b/app/assets/javascripts/select-kit/mixins/utils.js.es6 index 4ff1927b072..6940678b291 100644 --- a/app/assets/javascripts/select-kit/mixins/utils.js.es6 +++ b/app/assets/javascripts/select-kit/mixins/utils.js.es6 @@ -13,9 +13,9 @@ export default Mixin.create({ } }, - itemForValue(value) { + itemForValue(value, content) { if (this.selectKit.valueProperty) { - return this.mainCollection.findBy(this.selectKit.valueProperty, value); + return content.findBy(this.selectKit.valueProperty, value); } else { return value; }