Merge pull request #55 from beatz174-bit/codex/disable-show-picked-checkbox-when-all-checked
Disable show picked toggle when all items picked
This commit is contained in:
2 files changed
+39
No files matched your search
@@ -180,4 +180,31 @@ describe('ActivePickListScreen product search', () => {
|
|||||||
await user.click(togglePicked);
|
await user.click(togglePicked);
|
||||||
expect(screen.getByText('Cola')).toBeVisible();
|
expect(screen.getByText('Cola')).toBeVisible();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('disables show picked toggle when all items are picked', async () => {
|
||||||
|
pickItemsMock.mockReturnValue([
|
||||||
|
{
|
||||||
|
id: 'item-1',
|
||||||
|
pick_list_id: 'list-1',
|
||||||
|
product_id: 'prod-1',
|
||||||
|
quantity: 1,
|
||||||
|
is_carton: false,
|
||||||
|
status: 'picked',
|
||||||
|
created_at: 0,
|
||||||
|
updated_at: 0,
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
|
||||||
|
render(
|
||||||
|
<MemoryRouter initialEntries={['/pick-lists/1']}>
|
||||||
|
<Routes>
|
||||||
|
<Route path="/pick-lists/:id" element={<ActivePickListScreen />} />
|
||||||
|
</Routes>
|
||||||
|
</MemoryRouter>,
|
||||||
|
);
|
||||||
|
|
||||||
|
const togglePicked = screen.getByLabelText(/show picked/i);
|
||||||
|
expect(togglePicked).toBeDisabled();
|
||||||
|
expect(togglePicked).toBeChecked();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
@@ -38,6 +38,11 @@ export const ActivePickListScreen = () => {
|
|||||||
const [itemFilter, setItemFilter] = useState<'all' | 'cartons' | 'units'>('all');
|
const [itemFilter, setItemFilter] = useState<'all' | 'cartons' | 'units'>('all');
|
||||||
const [showPicked, setShowPicked] = useState(true);
|
const [showPicked, setShowPicked] = useState(true);
|
||||||
|
|
||||||
|
const allItemsPicked = useMemo(
|
||||||
|
() => items.length > 0 && items.every((item) => item.status === 'picked'),
|
||||||
|
[items],
|
||||||
|
);
|
||||||
|
|
||||||
const areaName = useMemo(
|
const areaName = useMemo(
|
||||||
() => areas.find((area) => area.id === pickList?.area_id)?.name ?? 'Area',
|
() => areas.find((area) => area.id === pickList?.area_id)?.name ?? 'Area',
|
||||||
[areas, pickList?.area_id],
|
[areas, pickList?.area_id],
|
||||||
@@ -60,6 +65,12 @@ export const ActivePickListScreen = () => {
|
|||||||
}
|
}
|
||||||
}, [filteredProducts, selectedProduct]);
|
}, [filteredProducts, selectedProduct]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (allItemsPicked && !showPicked) {
|
||||||
|
setShowPicked(true);
|
||||||
|
}
|
||||||
|
}, [allItemsPicked, showPicked]);
|
||||||
|
|
||||||
const visibleItems = useMemo(() => {
|
const visibleItems = useMemo(() => {
|
||||||
let filteredItems = showPicked ? items : items.filter((item) => item.status !== 'picked');
|
let filteredItems = showPicked ? items : items.filter((item) => item.status !== 'picked');
|
||||||
|
|
||||||
@@ -257,6 +268,7 @@ export const ActivePickListScreen = () => {
|
|||||||
<Checkbox
|
<Checkbox
|
||||||
checked={showPicked}
|
checked={showPicked}
|
||||||
onChange={(event) => setShowPicked(event.target.checked)}
|
onChange={(event) => setShowPicked(event.target.checked)}
|
||||||
|
disabled={allItemsPicked}
|
||||||
/>
|
/>
|
||||||
}
|
}
|
||||||
label="Show picked"
|
label="Show picked"
|
||||||
|
|||||||
Reference in new issue
Block a user