fix(i18n): localize admin user grid controls in Bokmal
This commit is contained in:
@@ -55,6 +55,15 @@ beforeEach(() => {
|
|||||||
function held<T>() { let resolve!: (value: T) => void; const promise=new Promise<T>(yes => { resolve=yes; }); return { promise, resolve }; }
|
function held<T>() { let resolve!: (value: T) => void; const promise=new Promise<T>(yes => { resolve=yes; }); return { promise, resolve }; }
|
||||||
function createDraft(email='new@example.test') { fireEvent.change(screen.getByLabelText('Email'), { target: { value: email } }); fireEvent.change(screen.getByLabelText('New password'), { target: { value: 'TestPassword123!' } }); }
|
function createDraft(email='new@example.test') { fireEvent.change(screen.getByLabelText('Email'), { target: { value: email } }); fireEvent.change(screen.getByLabelText('New password'), { target: { value: 'TestPassword123!' } }); }
|
||||||
|
|
||||||
|
test.each([['en', 'Rows per page:'], ['nb', 'Rader per side:']])('desktop user-grid pagination follows %s UI language', async (language, label) => {
|
||||||
|
window.localStorage.setItem('uiLanguage', language);
|
||||||
|
(window.matchMedia as jest.Mock).mockImplementation(() => ({ matches: false, addEventListener: jest.fn(), removeEventListener: jest.fn(), addListener: jest.fn(), removeListener: jest.fn() }));
|
||||||
|
renderPage([{ id: 'locale-user', email: 'locale@example.test', roles: [], emailConfirmed: true, isCurrentUser: false, canRemoveAdmin: true }]);
|
||||||
|
expect(await screen.findByText(label)).toBeInTheDocument();
|
||||||
|
expect(screen.getByLabelText(label)).toHaveTextContent('10');
|
||||||
|
expect(mockedApi.get).toHaveBeenCalledTimes(1);
|
||||||
|
});
|
||||||
|
|
||||||
test('failed users read stays unavailable and Retry only reads', async () => {
|
test('failed users read stays unavailable and Retry only reads', async () => {
|
||||||
mockedApi.get.mockRejectedValueOnce(new Error('offline')); renderPage([]);
|
mockedApi.get.mockRejectedValueOnce(new Error('offline')); renderPage([]);
|
||||||
const retry=await screen.findByRole('button', { name: 'Retry' });
|
const retry=await screen.findByRole('button', { name: 'Retry' });
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import {
|
|||||||
} from "@mui/material";
|
} from "@mui/material";
|
||||||
import useMediaQuery from "@mui/material/useMediaQuery";
|
import useMediaQuery from "@mui/material/useMediaQuery";
|
||||||
import { DataGrid, GridColDef } from "@mui/x-data-grid";
|
import { DataGrid, GridColDef } from "@mui/x-data-grid";
|
||||||
|
import { nbNO } from "@mui/x-data-grid/locales";
|
||||||
|
|
||||||
import { api, getApiErrorMessage } from "../api";
|
import { api, getApiErrorMessage } from "../api";
|
||||||
import { useToast } from "../toast";
|
import { useToast } from "../toast";
|
||||||
@@ -39,7 +40,7 @@ export default function AdminUsersPage() {
|
|||||||
const isMobile = useMediaQuery("(max-width:767.95px)");
|
const isMobile = useMediaQuery("(max-width:767.95px)");
|
||||||
const { toast } = useToast();
|
const { toast } = useToast();
|
||||||
const { confirmAction } = useDialogActions();
|
const { confirmAction } = useDialogActions();
|
||||||
const { t } = useI18n();
|
const { t, language } = useI18n();
|
||||||
const [busy, setBusy] = useState(false);
|
const [busy, setBusy] = useState(false);
|
||||||
const owner = useRef({ mounted: true, generation: 0, busy: false });
|
const owner = useRef({ mounted: true, generation: 0, busy: false });
|
||||||
const body = useRef<HTMLDivElement>(null);
|
const body = useRef<HTMLDivElement>(null);
|
||||||
@@ -293,6 +294,7 @@ export default function AdminUsersPage() {
|
|||||||
) : (
|
) : (
|
||||||
<Paper variant="outlined" role="region" aria-label={t("adminUsersTitle")} tabIndex={0} sx={{ borderRadius: 1, minWidth: 0, overflow: "auto" }}>
|
<Paper variant="outlined" role="region" aria-label={t("adminUsersTitle")} tabIndex={0} sx={{ borderRadius: 1, minWidth: 0, overflow: "auto" }}>
|
||||||
<DataGrid
|
<DataGrid
|
||||||
|
localeText={language === "nb" ? nbNO.components.MuiDataGrid.defaultProps.localeText : undefined}
|
||||||
autoHeight
|
autoHeight
|
||||||
getRowHeight={() => "auto"}
|
getRowHeight={() => "auto"}
|
||||||
rows={rows}
|
rows={rows}
|
||||||
|
|||||||
Reference in New Issue
Block a user