decide.nolog.cz/app/components/language-select.ts

39 lines
1.1 KiB
TypeScript
Raw Normal View History

import Component from '@glimmer/component';
2018-12-29 01:27:37 +01:00
import { inject as service } from '@ember/service';
2016-06-20 19:28:10 +02:00
import localesMeta from 'croodle/locales/meta';
import { action } from '@ember/object';
import type IntlService from 'ember-intl/services/intl';
import type PowerCalendarService from 'ember-power-calendar/services/power-calendar';
2015-11-20 02:18:19 +01:00
export default class LanguageSelect extends Component {
@service declare intl: IntlService;
@service declare powerCalendar: PowerCalendarService;
2015-11-20 02:18:19 +01:00
get currentLocale() {
return this.intl.primaryLocale;
}
locales = localesMeta;
2015-11-20 02:18:19 +01:00
@action
handleChange(event: Event) {
const selectElement = event.target as HTMLSelectElement;
const locale = selectElement.value as keyof typeof this.locales;
2018-12-29 20:35:04 +01:00
this.intl.locale = locale.includes('-')
? [locale, locale.split('-')[0] as string]
: [locale];
this.powerCalendar.locale = locale;
2018-12-29 20:35:04 +01:00
if (window.localStorage) {
window.localStorage.setItem('locale', locale);
}
2015-11-20 02:18:19 +01:00
}
}
declare module '@glint/environment-ember-loose/registry' {
export default interface Registry {
LanguageSelect: typeof LanguageSelect;
}
}