Merge branch 'main' into codex/fix-packaging-type-filter-functionality-8h0e1y

This commit is contained in:
beatz174-bit authored and GitHub committed 2025-11-24 16:44:52 +10:00
commit 068dbad6f6
4 files changed
+218 -16

No files matched your search

+37 -10
View File
@@ -25,6 +25,8 @@ import { PickItemRow } from '../components/PickItemRow';
import { PickItem } from '../models/PickItem';
import { Product } from '../models/Product';
const normalizeName = (name: string) => name.trim().toLowerCase();
export const ActivePickListScreen = () => {
const { id } = useParams();
const pickList = usePickList(id);
@@ -84,8 +86,8 @@ export const ActivePickListScreen = () => {
const productA = productMap.get(a.product_id);
const productB = productMap.get(b.product_id);
const nameA = productA?.name.trim().toLowerCase() ?? '';
const nameB = productB?.name.trim().toLowerCase() ?? '';
const nameA = productA ? normalizeName(productA.name) : '';
const nameB = productB ? normalizeName(productB.name) : '';
const nameComparison = nameA.localeCompare(nameB, undefined, { sensitivity: 'base' });
if (nameComparison !== 0) {
@@ -124,9 +126,20 @@ export const ActivePickListScreen = () => {
}
});
return Array.from(dedupedByName.values()).sort((a, b) =>
a.name.localeCompare(b.name, undefined, { sensitivity: 'base' }),
);
return Array.from(dedupedByName.values()).sort((a, b) => {
const normalizedNameA = normalizeName(a.name);
const normalizedNameB = normalizeName(b.name);
const nameComparison = normalizedNameA.localeCompare(normalizedNameB, undefined, {
sensitivity: 'base',
});
if (nameComparison !== 0) {
return nameComparison;
}
return a.name.localeCompare(b.name, undefined, { sensitivity: 'base' });
});
}, [products]);
const categoryFilteredProducts = useMemo(() => {
@@ -151,11 +164,9 @@ export const ActivePickListScreen = () => {
() => itemsVisibleByStatus.some((item) => item.status !== 'picked'),
[itemsVisibleByStatus],
);
const packagingFiltersDisabled =
!showPicked || itemsVisibleByStatus.length === 0 || !visibleHasPicked || !visibleHasUnpicked;
const appliedItemFilter = packagingFiltersDisabled ? 'all' : itemFilter;
const packagingTypeCount = Number(hasCartonItems) + Number(hasUnitItems);
const singlePackagingType = packagingTypeCount === 1;
const packagingFiltersDisabled = !showPicked || allItemsPicked || allItemsUnpicked;
const productIdsInList = useMemo(
() => new Set(itemState.map((item) => item.product_id)),
@@ -195,6 +206,22 @@ export const ActivePickListScreen = () => {
}
}, [itemFilter, packagingFiltersDisabled]);
useEffect(() => {
if (packagingTypeCount <= 1) {
if (itemFilter !== 'all') {
setItemFilter('all');
}
return;
}
if (itemFilter === 'cartons' && !hasCartonItems) {
setItemFilter('units');
} else if (itemFilter === 'units' && !hasUnitItems) {
setItemFilter('cartons');
}
}, [itemFilter, packagingFiltersDisabled]);
const visibleItems = useMemo(() => {
let filteredItems = showPicked
? sortedItems