From 96cdc4e66e686846db3e698a5f4b2420f010c0a5 Mon Sep 17 00:00:00 2001 From: Joffrey JAFFEUX Date: Fri, 24 Nov 2017 13:15:02 +0100 Subject: [PATCH] FIX: makes allowInitialValueMutation more restrictive --- .../templates/components/edit-category-security.hbs | 2 +- .../select-kit/components/single-select.js.es6 | 10 +++++----- test/javascripts/components/single-select-test.js.es6 | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/app/assets/javascripts/discourse/templates/components/edit-category-security.hbs b/app/assets/javascripts/discourse/templates/components/edit-category-security.hbs index a389e2ceab..eb6626fdcf 100644 --- a/app/assets/javascripts/discourse/templates/components/edit-category-security.hbs +++ b/app/assets/javascripts/discourse/templates/components/edit-category-security.hbs @@ -15,7 +15,7 @@ {{/each}} {{#if editingPermissions}} - {{combo-box content=category.availableGroups value=selectedGroup}} + {{combo-box allowInitialValueMutation=true content=category.availableGroups value=selectedGroup}} {{combo-box class="permission-selector" nameProperty="description" content=category.availablePermissions diff --git a/app/assets/javascripts/select-kit/components/single-select.js.es6 b/app/assets/javascripts/select-kit/components/single-select.js.es6 index 6dfb2a9e9f..bf9df8207c 100644 --- a/app/assets/javascripts/select-kit/components/single-select.js.es6 +++ b/app/assets/javascripts/select-kit/components/single-select.js.es6 @@ -11,7 +11,7 @@ export default SelectKitComponent.extend({ classNames: "single-select", computedValue: null, value: null, - allowInitialValueMutation: true, + allowInitialValueMutation: false, @on("didReceiveAttrs") _compute() { @@ -47,6 +47,10 @@ export default SelectKitComponent.extend({ }, _beforeWillComputeValue(value) { + if (!isEmpty(this.get("content")) && isEmpty(value) && isNone(this.get("none"))) { + value = this.valueForContentItem(get(this.get("content"), "firstObject")); + } + switch (typeof value) { case "string": case "number": @@ -58,10 +62,6 @@ export default SelectKitComponent.extend({ willComputeValue(value) { return value; }, computeValue(value) { return value; }, _beforeDidComputeValue(value) { - if (!isEmpty(this.get("content")) && isEmpty(value) && isNone(this.get("none"))) { - value = this.valueForContentItem(get(this.get("content"), "firstObject")); - } - this.setProperties({ computedValue: value }); return value; }, diff --git a/test/javascripts/components/single-select-test.js.es6 b/test/javascripts/components/single-select-test.js.es6 index 56487e4b5d..1093fea0d0 100644 --- a/test/javascripts/components/single-select-test.js.es6 +++ b/test/javascripts/components/single-select-test.js.es6 @@ -282,8 +282,8 @@ componentTest('supports keyboard events', { }); -componentTest('supports mutating value when no value given', { - template: '{{single-select value=value content=content}}', +componentTest('with allowInitialValueMutation', { + template: '{{single-select value=value content=content allowInitialValueMutation=true}}', beforeEach() { this.set("value", ""); @@ -292,7 +292,7 @@ componentTest('supports mutating value when no value given', { test(assert) { andThen(() => { - assert.equal(this.get("value"), "1"); + assert.equal(this.get("value"), "1", "it mutates the value on initial rendering"); }); } });