diff --git a/src/frontend/apps/impress/src/features/docs/docs-grid/components/DocsGrid.tsx b/src/frontend/apps/impress/src/features/docs/docs-grid/components/DocsGrid.tsx
index 90592be7..9d63d472 100644
--- a/src/frontend/apps/impress/src/features/docs/docs-grid/components/DocsGrid.tsx
+++ b/src/frontend/apps/impress/src/features/docs/docs-grid/components/DocsGrid.tsx
@@ -1,5 +1,4 @@
import { DataGrid, SortModel, usePagination } from '@openfun/cunningham-react';
-import { DateTime, DateTimeFormatOptions } from 'luxon';
import React, { useEffect, useState } from 'react';
import { useTranslation } from 'react-i18next';
import { createGlobalStyle } from 'styled-components';
@@ -14,6 +13,7 @@ import {
useDocs,
useTransRole,
} from '@/features/docs/doc-management';
+import { useDate } from '@/hook/';
import { PAGE_SIZE } from '../conf';
@@ -47,18 +47,11 @@ function formatSortModel(sortModel: SortModelItem): DocsOrdering | undefined {
}
}
-const format: DateTimeFormatOptions = {
- month: '2-digit',
- day: '2-digit',
- year: 'numeric',
- hour: '2-digit',
- minute: '2-digit',
-};
-
export const DocsGrid = () => {
const { colorsTokens } = useCunninghamTheme();
const transRole = useTransRole();
- const { t, i18n } = useTranslation();
+ const { t } = useTranslation();
+ const { formatDate } = useDate();
const pagination = usePagination({
pageSize: PAGE_SIZE,
});
@@ -121,7 +114,7 @@ export const DocsGrid = () => {
$padding="xtiny"
$radius="3px"
>
- {row.is_public ? 'Public' : ''}
+ {row.is_public ? t('Public') : ''}
)}
@@ -145,13 +138,9 @@ export const DocsGrid = () => {
headerName: t('Created at'),
field: 'created_at',
renderCell: ({ row }) => {
- const created_at = DateTime.fromISO(row.created_at)
- .setLocale(i18n.language)
- .toLocaleString(format);
-
return (
- {created_at}
+ {formatDate(row.created_at)}
);
},
@@ -160,13 +149,9 @@ export const DocsGrid = () => {
headerName: t('Updated at'),
field: 'updated_at',
renderCell: ({ row }) => {
- const updated_at = DateTime.fromISO(row.updated_at)
- .setLocale(i18n.language)
- .toLocaleString(format);
-
return (
- {updated_at}
+ {formatDate(row.updated_at)}
);
},
diff --git a/src/frontend/apps/impress/src/hook/index.ts b/src/frontend/apps/impress/src/hook/index.ts
new file mode 100644
index 00000000..8b401809
--- /dev/null
+++ b/src/frontend/apps/impress/src/hook/index.ts
@@ -0,0 +1 @@
+export * from './useDate';
diff --git a/src/frontend/apps/impress/src/hook/useDate.tsx b/src/frontend/apps/impress/src/hook/useDate.tsx
new file mode 100644
index 00000000..bfe2bd4c
--- /dev/null
+++ b/src/frontend/apps/impress/src/hook/useDate.tsx
@@ -0,0 +1,22 @@
+import { DateTime, DateTimeFormatOptions } from 'luxon';
+import { useTranslation } from 'react-i18next';
+
+const format: DateTimeFormatOptions = {
+ month: '2-digit',
+ day: '2-digit',
+ year: 'numeric',
+ hour: '2-digit',
+ minute: '2-digit',
+};
+
+export const useDate = () => {
+ const { i18n } = useTranslation();
+
+ const formatDate = (date: string): string => {
+ return DateTime.fromISO(date)
+ .setLocale(i18n.language)
+ .toLocaleString(format);
+ };
+
+ return { formatDate };
+};