Skip to content
Snippets Groups Projects
Commit f1d84826 authored by Reiter, Christoph's avatar Reiter, Christoph :snake:
Browse files

Make the select listen to the event itself and change the lang in update()

update() is called before the actual update so we need to change i18next there.

We now listen to our own signal so multiple language selects on the same page work
and are kept in sync.
parent e897cc29
No related branches found
No related tags found
No related merge requests found
...@@ -11,11 +11,15 @@ ...@@ -11,11 +11,15 @@
</head> </head>
<body> <body>
<vpu-language-select></vpu-language-select> Select 1: <vpu-language-select></vpu-language-select>
<br>
<br>
Select 2: <vpu-language-select></vpu-language-select>
<br>
<br> <br>
Current language 1: <vpu-language-select-demo></vpu-language-select-demo>
<br> <br>
<br> <br>
Current language: <vpu-language-select-demo></vpu-language-select-demo> Current language 2: <vpu-language-select-demo></vpu-language-select-demo>
</body> </body>
</html> </html>
...@@ -13,6 +13,8 @@ class LanguageSelect extends LitElement { ...@@ -13,6 +13,8 @@ class LanguageSelect extends LitElement {
i18n.t('de'); i18n.t('de');
i18n.t('en'); i18n.t('en');
this.onExternalChange = this.onExternalChange.bind(this);
} }
static get properties() { static get properties() {
...@@ -54,7 +56,21 @@ class LanguageSelect extends LitElement { ...@@ -54,7 +56,21 @@ class LanguageSelect extends LitElement {
`; `;
} }
updated(changedProperties) { onExternalChange(e) {
this.lang = e.detail.lang
}
connectedCallback() {
super.connectedCallback();
window.addEventListener('vpu-language-changed', this.onExternalChange);
}
disconnectedCallback() {
document.removeEventListener('vpu-language-changed', this.onExternalChange);
super.disconnectedCallback();
}
update(changedProperties) {
changedProperties.forEach((oldValue, propName) => { changedProperties.forEach((oldValue, propName) => {
if (propName === 'lang') { if (propName === 'lang') {
const event = new CustomEvent("vpu-language-changed", { const event = new CustomEvent("vpu-language-changed", {
...@@ -64,11 +80,10 @@ class LanguageSelect extends LitElement { ...@@ -64,11 +80,10 @@ class LanguageSelect extends LitElement {
window.dispatchEvent(event); window.dispatchEvent(event);
i18n.changeLanguage(this.lang); i18n.changeLanguage(this.lang);
this.requestUpdate();
} }
}); });
super.updated(changedProperties); super.update(changedProperties);
} }
onSelectChange(e) { onSelectChange(e) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment