From 45fcb6578aa6479d18fd3b6d907d220e856c4a33 Mon Sep 17 00:00:00 2001 From: Christoph Reiter <reiter.christoph@gmail.com> Date: Tue, 13 Aug 2019 11:52:49 +0200 Subject: [PATCH] Implement setter for the next language --- packages/language-select/src/language-select.js | 15 ++++++++++++--- packages/language-select/test/unit.js | 10 ++++++++++ 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/packages/language-select/src/language-select.js b/packages/language-select/src/language-select.js index 21d87172..da63a774 100644 --- a/packages/language-select/src/language-select.js +++ b/packages/language-select/src/language-select.js @@ -21,14 +21,22 @@ class LanguageSelect extends LitElement { i18n.t('en-action'); } - _getNextLanguage() { - var index = this.languages.indexOf(this.lang); + _getNextLanguage(lang) { + var index = this.languages.indexOf(lang); var next = this.languages[index + 1]; if (typeof next === 'undefined') next = this.languages[0]; return next; } + _getPreviousLanguage(lang) { + var index = this.languages.indexOf(lang); + var prev = this.languages[index - 1]; + if (typeof prev === 'undefined') + prev = this.languages[this.languages.length - 1]; + return prev; + } + static get properties() { return { lang: {type: String}, @@ -63,10 +71,11 @@ class LanguageSelect extends LitElement { } set next(value) { + this.lang = this._getPreviousLanguage(value); } get next() { - return this._getNextLanguage(); + return this._getNextLanguage(this.lang); } static get styles() { diff --git a/packages/language-select/test/unit.js b/packages/language-select/test/unit.js index 3511aa8a..1ac3cc0c 100644 --- a/packages/language-select/test/unit.js +++ b/packages/language-select/test/unit.js @@ -34,6 +34,16 @@ describe('vpu-language-select basics', () => { expect(node.next).to.equal('en'); expect(events.length).to.equal(2); }); + + it('change next', () => { + node.lang = 'en'; + expect(node.next).to.equal('de'); + expect(node.lang).to.equal('en'); + node.next = 'en'; + expect(node.next).to.equal('en'); + expect(node.lang).to.equal('de'); + expect(events.length).to.equal(2); + }); }); describe('vpu-language-select demo', () => { -- GitLab