fix: preserve hidden tool visibility
This commit is contained in:
@@ -124,6 +124,34 @@ describe('portal UI', () => {
|
||||
).not.toBeInTheDocument();
|
||||
});
|
||||
|
||||
it('keeps remaining hidden tools visible while editing the hidden set', async () => {
|
||||
vi.stubGlobal('fetch', vi.fn(catalogueFetch()));
|
||||
const user = userEvent.setup();
|
||||
render(<App />);
|
||||
await screen.findByRole('heading', { name: 'PDF Workbench' });
|
||||
|
||||
await user.click(
|
||||
screen.getByRole('button', { name: 'Hide PDF Workbench' })
|
||||
);
|
||||
const showHidden = screen.getByRole('checkbox', {
|
||||
name: 'Show hidden (1)',
|
||||
});
|
||||
await user.click(showHidden);
|
||||
await user.click(
|
||||
screen.getByRole('button', { name: 'Hide XSLT Workbench' })
|
||||
);
|
||||
expect(showHidden).toHaveAccessibleName('Show hidden (2)');
|
||||
await user.click(
|
||||
screen.getByRole('button', { name: 'Show PDF Workbench' })
|
||||
);
|
||||
|
||||
expect(showHidden).toBeChecked();
|
||||
expect(showHidden).toHaveAccessibleName('Show hidden (1)');
|
||||
expect(
|
||||
screen.getByRole('heading', { name: 'XSLT Workbench' })
|
||||
).toBeInTheDocument();
|
||||
});
|
||||
|
||||
it('clears search filters without revealing hidden tools', async () => {
|
||||
vi.stubGlobal('fetch', vi.fn(catalogueFetch()));
|
||||
const user = userEvent.setup();
|
||||
|
||||
@@ -123,7 +123,8 @@ export default function App() {
|
||||
const [preferences, setPreferences, storageAvailable] = usePreferences();
|
||||
const closeHelp = useCallback(() => setHelpOpen(false), []);
|
||||
const showHidden =
|
||||
preferences.hidden.length > 0 && shownHiddenIds === preferences.hidden;
|
||||
preferences.hidden.length > 0 &&
|
||||
shownHiddenIds?.some((id) => preferences.hidden.includes(id)) === true;
|
||||
const sensors = useSensors(
|
||||
useSensor(PointerSensor, { activationConstraint: { distance: 8 } }),
|
||||
useSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates })
|
||||
@@ -205,6 +206,9 @@ export default function App() {
|
||||
}));
|
||||
|
||||
function toggleListItem(field: 'pinned' | 'hidden', id: string) {
|
||||
if (field === 'hidden' && showHidden && !preferences.hidden.includes(id)) {
|
||||
setShownHiddenIds((current) => [...new Set([...(current ?? []), id])]);
|
||||
}
|
||||
setPreferences((current) => ({
|
||||
...current,
|
||||
[field]: current[field].includes(id)
|
||||
@@ -332,7 +336,7 @@ export default function App() {
|
||||
disabled={preferences.hidden.length === 0}
|
||||
onChange={(event) =>
|
||||
setShownHiddenIds(
|
||||
event.target.checked ? preferences.hidden : null
|
||||
event.target.checked ? [...preferences.hidden] : null
|
||||
)
|
||||
}
|
||||
/>
|
||||
|
||||
Reference in New Issue
Block a user