diff --git a/src/components/Select.vue b/src/components/Select.vue index 1d5d2be..a80efdd 100644 --- a/src/components/Select.vue +++ b/src/components/Select.vue @@ -508,7 +508,7 @@ created() { this.mutableLoading = this.loading; - if (this.value !== null && this.isTrackingValues) { + if (typeof this.value !== "undefined" && this.isTrackingValues) { this.setInternalValueFromOptions(this.value) } diff --git a/tests/unit/Reduce.spec.js b/tests/unit/Reduce.spec.js index 6d9d288..e14001c 100755 --- a/tests/unit/Reduce.spec.js +++ b/tests/unit/Reduce.spec.js @@ -166,6 +166,20 @@ describe("When reduce prop is defined", () => { expect(Select.vm.selectedValue).toEqual([option]); }); + it('works with null values', () => { + const option = {value: null, label: 'No'}; + const Select = shallowMount(VueSelect, { + propsData: { + reduce: option => option.value, + options: [option, {value: 1, label: 'Yes'}], + value: null, + }, + }); + + expect(Select.vm.findOptionFromReducedValue(option)).toEqual(option); + expect(Select.vm.selectedValue).toEqual([option]); + }); + describe("And when a reduced option is a nested object", () => { it("can determine if an object is pre-selected", () => { const nestedOption = { value: { nested: true }, label: "foo" };