From f8e549306abc24dbb8b30fc1c4e43e69920ae54c Mon Sep 17 00:00:00 2001 From: Jeff Sagal Date: Tue, 31 May 2016 18:35:01 -0700 Subject: [PATCH 1/6] use keydown for moving pointer, resolves #45 --- package.json | 2 +- src/components/Select.vue | 4 ++-- test/unit/specs/Select.spec.js | 16 ++++++++-------- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index 3725e6f..03dc557 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "vue-select", - "version": "1.1.1", + "version": "1.1.2", "description": "A Vue.js project", "author": "Jeff Sagal ", "private": false, diff --git a/src/components/Select.vue b/src/components/Select.vue index 336b536..0e216c8 100644 --- a/src/components/Select.vue +++ b/src/components/Select.vue @@ -138,8 +138,8 @@ v-model="search" @keydown.delete="maybeDeleteValue" @keyup.esc="onEscape" - @keyup.up.prevent="typeAheadUp" - @keyup.down.prevent="typeAheadDown" + @keydown.up.prevent="typeAheadUp" + @keydown.down.prevent="typeAheadDown" @keyup.enter.prevent="typeAheadSelect" @blur="open = false" @focus="open = true" diff --git a/test/unit/specs/Select.spec.js b/test/unit/specs/Select.spec.js index 23abfb9..099743e 100644 --- a/test/unit/specs/Select.spec.js +++ b/test/unit/specs/Select.spec.js @@ -327,7 +327,7 @@ describe('Select.vue', () => { }) }) - it('should move the pointer visually up the list on up arrow keyUp', () => { + it('should move the pointer visually up the list on up arrow keyDown', () => { const vm = new Vue({ template: '
', components: {vSelect}, @@ -338,11 +338,11 @@ describe('Select.vue', () => { vm.$children[0].typeAheadPointer = 1 - trigger(vm.$children[0].$els.search, 'keyup', (e) => e.keyCode = 38) + trigger(vm.$children[0].$els.search, 'keydown', (e) => e.keyCode = 38) expect(vm.$children[0].typeAheadPointer).toEqual(0) }) - it('should move the pointer visually down the list on down arrow keyUp', () => { + it('should move the pointer visually down the list on down arrow keyDown', () => { const vm = new Vue({ template: '
', components: {vSelect}, @@ -352,7 +352,7 @@ describe('Select.vue', () => { }).$mount() vm.$children[0].typeAheadPointer = 1 - trigger(vm.$children[0].$els.search, 'keyup', (e) => e.keyCode = 40) + trigger(vm.$children[0].$els.search, 'keydown', (e) => e.keyCode = 40) expect(vm.$children[0].typeAheadPointer).toEqual(2) }) @@ -371,7 +371,7 @@ describe('Select.vue', () => { }) describe('Automatic Scrolling', () => { - it('should check if the scroll position needs to be adjusted on up arrow keyUp', () => { + it('should check if the scroll position needs to be adjusted on up arrow keyDown', () => { const vm = new Vue({ template: '
', components: {vSelect}, @@ -382,11 +382,11 @@ describe('Select.vue', () => { vm.$children[0].typeAheadPointer = 1 spyOn(vm.$children[0], 'maybeAdjustScroll') - trigger(vm.$children[0].$els.search, 'keyup', (e) => e.keyCode = 38) + trigger(vm.$children[0].$els.search, 'keydown', (e) => e.keyCode = 38) expect(vm.$children[0].maybeAdjustScroll).toHaveBeenCalled() }) - it('should check if the scroll position needs to be adjusted on down arrow keyUp', () => { + it('should check if the scroll position needs to be adjusted on down arrow keyDown', () => { const vm = new Vue({ template: '
', components: {vSelect}, @@ -396,7 +396,7 @@ describe('Select.vue', () => { }).$mount() spyOn(vm.$children[0], 'maybeAdjustScroll') - trigger(vm.$children[0].$els.search, 'keyup', (e) => e.keyCode = 40) + trigger(vm.$children[0].$els.search, 'keydown', (e) => e.keyCode = 40) expect(vm.$children[0].maybeAdjustScroll).toHaveBeenCalled() }) From 3344c19e3c6a560b564add250dbb81057bd5abe5 Mon Sep 17 00:00:00 2001 From: Jeff Sagal Date: Wed, 1 Jun 2016 10:28:31 -0700 Subject: [PATCH 2/6] initial idea --- src/components/Select.vue | 39 +++++++++++++++++++++++---------------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/src/components/Select.vue b/src/components/Select.vue index 0e216c8..34a8a1b 100644 --- a/src/components/Select.vue +++ b/src/components/Select.vue @@ -264,6 +264,29 @@ default: 'label' }, + /** + * + */ + getOptionLabel: { + type: Function, + + /** + * Generate the option label text. If {option} + * is an object, return option[this.label]. + * + * @param {Object || String} option + * @return {String} + */ + default(option) { + if( typeof option === 'object' ) { + if( this.label && option[this.label] ) { + return option[this.label] + } + } + return option; + } + }, + /** * An optional callback function that is called each time the selected * value(s) change. When integrating with Vuex, use this callback to trigger @@ -423,22 +446,6 @@ return this.value === option }, - /** - * Generate the option label text. If {option} - * is an object, return option[this.label]. - * - * @param {Object || String} option - * @return {String} - */ - getOptionLabel( option ) { - if( typeof option === 'object' ) { - if( this.label && option[this.label] ) { - return option[this.label] - } - } - return option; - }, - /** * Move the typeAheadPointer visually up the list by * subtracting the current index by one. From 6f8e28dfe0eb4ad75b85b59342132f9f2f5560de Mon Sep 17 00:00:00 2001 From: Jeff Sagal Date: Wed, 1 Jun 2016 19:10:16 -0700 Subject: [PATCH 3/6] fix function comment --- src/components/Select.vue | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/src/components/Select.vue b/src/components/Select.vue index 34a8a1b..65b866d 100644 --- a/src/components/Select.vue +++ b/src/components/Select.vue @@ -265,18 +265,13 @@ }, /** - * + * Callback to generate the label text. If {option} + * is an object, returns option[this.label] by default. + * @param {Object || String} option + * @return {String} */ getOptionLabel: { type: Function, - - /** - * Generate the option label text. If {option} - * is an object, return option[this.label]. - * - * @param {Object || String} option - * @return {String} - */ default(option) { if( typeof option === 'object' ) { if( this.label && option[this.label] ) { From 30ad0e9e559cf3ab380b1b1c2e157a15bc8da41a Mon Sep 17 00:00:00 2001 From: Jeff Sagal Date: Wed, 1 Jun 2016 19:28:05 -0700 Subject: [PATCH 4/6] package bump --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 03dc557..c17a294 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "vue-select", - "version": "1.1.2", + "version": "1.1.3", "description": "A Vue.js project", "author": "Jeff Sagal ", "private": false, From 49be0a16946b92751c2714ea50bc108efe05529b Mon Sep 17 00:00:00 2001 From: Jeff Sagal Date: Thu, 2 Jun 2016 10:55:49 -0700 Subject: [PATCH 5/6] use module.exports for mixins --- package.json | 2 +- src/mixins/pointerScroll.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index c17a294..3148a81 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "vue-select", - "version": "1.1.3", + "version": "1.1.4", "description": "A Vue.js project", "author": "Jeff Sagal ", "private": false, diff --git a/src/mixins/pointerScroll.js b/src/mixins/pointerScroll.js index 11bcd74..1fad791 100644 --- a/src/mixins/pointerScroll.js +++ b/src/mixins/pointerScroll.js @@ -1,4 +1,4 @@ -export default { +module.exports = { methods: { /** * Adjust the scroll position of the dropdown list From 50b52b8f9ded9cceaf4c024cb6ee5e54a0be670a Mon Sep 17 00:00:00 2001 From: Jeff Sagal Date: Thu, 2 Jun 2016 11:01:58 -0700 Subject: [PATCH 6/6] update readme --- README.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 5091d36..7a3008c 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ - Supports Vuex - Select Single/Multiple Options - Bootstrap Friendly Markup -- +90% Test Coverage +- +95% Test Coverage #### Upcoming/In Progress @@ -18,12 +18,13 @@ - Rich Option Templating - Asyncronous Option Loading -## Demo +## Live Examples & Docs [http://sagalbot.github.io/vue-select/](http://sagalbot.github.io/vue-select/) ## Install / Usage +vue-select is now published on npm, **huge thanks to [@onefriendaday](https://github.com/onefriendaday)** for changing ownership of [his package](https://github.com/onefriendaday/vue-select). ``` bash -$ npm install sagalbot/vue-select +$ npm install vue-select ``` ```html