mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-14 01:15:44 +01:00
Merged in feature/fix_sonar_and_lifecycle (pull request #345)
Feature/fix sonar and lifecycle
This commit is contained in:
25
scm-ui/ui-components/src/DateFromNow.test.ts
Normal file
25
scm-ui/ui-components/src/DateFromNow.test.ts
Normal file
@@ -0,0 +1,25 @@
|
||||
import { chooseLocale, supportedLocales } from "./DateFromNow";
|
||||
|
||||
describe("test choose locale", () => {
|
||||
|
||||
it("should choose de", () => {
|
||||
const locale = chooseLocale("de_DE", ["de", "en"]);
|
||||
expect(locale).toBe(supportedLocales.de);
|
||||
});
|
||||
|
||||
it("should choose de, even without language array", () => {
|
||||
const locale = chooseLocale("de", []);
|
||||
expect(locale).toBe(supportedLocales.de);
|
||||
});
|
||||
|
||||
it("should choose es", () => {
|
||||
const locale = chooseLocale("de", ["af", "be", "es"]);
|
||||
expect(locale).toBe(supportedLocales.es);
|
||||
});
|
||||
|
||||
it("should fallback en", () => {
|
||||
const locale = chooseLocale("af", ["af", "be"]);
|
||||
expect(locale).toBe(supportedLocales.en);
|
||||
});
|
||||
|
||||
});
|
||||
@@ -10,8 +10,9 @@ type LocaleMap = {
|
||||
|
||||
type DateInput = Date | string;
|
||||
|
||||
const supportedLocales: LocaleMap = {
|
||||
export const supportedLocales: LocaleMap = {
|
||||
enUS,
|
||||
en: enUS,
|
||||
de,
|
||||
es
|
||||
};
|
||||
@@ -40,14 +41,26 @@ const DateElement = styled.time`
|
||||
cursor: help;
|
||||
`;
|
||||
|
||||
export const chooseLocale = (language: string, languages?: string[]) => {
|
||||
for (const lng of languages || []) {
|
||||
const locale = supportedLocales[lng];
|
||||
if (locale) {
|
||||
return locale;
|
||||
}
|
||||
}
|
||||
|
||||
const locale = supportedLocales[language];
|
||||
if (locale) {
|
||||
return locale;
|
||||
}
|
||||
|
||||
return enUS;
|
||||
};
|
||||
|
||||
class DateFromNow extends React.Component<Props> {
|
||||
getLocale = (): Locale => {
|
||||
const { i18n } = this.props;
|
||||
const locale = supportedLocales[i18n.language];
|
||||
if (!locale) {
|
||||
return enUS;
|
||||
}
|
||||
return locale;
|
||||
return chooseLocale(i18n.language, i18n.languages);
|
||||
};
|
||||
|
||||
createOptions = () => {
|
||||
@@ -64,7 +77,7 @@ class DateFromNow extends React.Component<Props> {
|
||||
|
||||
toDate = (value: DateInput): Date => {
|
||||
if (value instanceof Date) {
|
||||
return value as Date;
|
||||
return value;
|
||||
}
|
||||
return parseISO(value);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user