fix(ui): make pagination labels always visible to screenreader

- The pagination labels 'First', 'Previous', 'Next' and 'Last' are
hidden away when the screen width becomes smaller. However this also
hides them from the screen reader. Instead of using `display: none`, use
some well-known tricks to still make them visible to the screen reader.
- Add E2E test.
- Resolves Codeberg/Community#1858
This commit is contained in:
Gusted 2025-04-23 23:39:27 +02:00
parent 02c5ce77db
commit b6072496d4
No known key found for this signature in database
GPG key ID: FD821B732837125F
2 changed files with 24 additions and 1 deletions

View file

@ -0,0 +1,15 @@
// @watch start
// template/base/paginate.tmpl
// services/context/pagination.go
// @watch end
import {expect} from '@playwright/test';
import {test} from './utils_e2e.ts';
import {accessibilityCheck} from './shared/accessibility.ts';
test('Pagination a11y', async ({page}) => {
await page.goto('/explore/repos');
await expect(page.locator('.pagination')).toBeVisible();
await accessibilityCheck({page}, ['.pagination'], [], []);
});

View file

@ -952,7 +952,15 @@ img.ui.avatar,
@media (max-width: 767.98px) {
.ui.pagination.menu .item:not(.active,.navigation),
.ui.pagination.menu .item.navigation span.navigation_label {
display: none;
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border-width: 0;
}
}