fix(i18n): localize admin user grid controls in Bokmal

This commit is contained in:
cesnimda
2026-10-22 21:45:39 +02:00
parent 25a481cd57
commit e982ff7938
2 changed files with 12 additions and 1 deletions
@@ -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 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 () => {
mockedApi.get.mockRejectedValueOnce(new Error('offline')); renderPage([]);
const retry=await screen.findByRole('button', { name: 'Retry' });
+3 -1
View File
@@ -15,6 +15,7 @@ import {
} from "@mui/material";
import useMediaQuery from "@mui/material/useMediaQuery";
import { DataGrid, GridColDef } from "@mui/x-data-grid";
import { nbNO } from "@mui/x-data-grid/locales";
import { api, getApiErrorMessage } from "../api";
import { useToast } from "../toast";
@@ -39,7 +40,7 @@ export default function AdminUsersPage() {
const isMobile = useMediaQuery("(max-width:767.95px)");
const { toast } = useToast();
const { confirmAction } = useDialogActions();
const { t } = useI18n();
const { t, language } = useI18n();
const [busy, setBusy] = useState(false);
const owner = useRef({ mounted: true, generation: 0, busy: false });
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" }}>
<DataGrid
localeText={language === "nb" ? nbNO.components.MuiDataGrid.defaultProps.localeText : undefined}
autoHeight
getRowHeight={() => "auto"}
rows={rows}