diff --git a/src/routes/events/[event_id]/(badges)/badges/ae_comp__badge_obj_li.svelte b/src/routes/events/[event_id]/(badges)/badges/ae_comp__badge_obj_li.svelte index 8aa939dd..5b185f96 100644 --- a/src/routes/events/[event_id]/(badges)/badges/ae_comp__badge_obj_li.svelte +++ b/src/routes/events/[event_id]/(badges)/badges/ae_comp__badge_obj_li.svelte @@ -21,6 +21,7 @@ let { import { ae_loc } from '$lib/stores/ae_stores'; import { events_loc } from '$lib/stores/ae_events_stores'; +import { badges_loc } from '$lib/stores/ae_events_stores__badges.svelte'; import { ae_util } from '$lib/ae_utils/ae_utils'; import { Check, @@ -98,11 +99,17 @@ let visible_badge_obj_li = $derived( const filtered = list.filter((item: any) => { if (!item) return false; if (is_trusted && is_edit_mode) { - // Edit Mode: show all non-hidden, including already-printed - return !item.hide; + // Trusted + edit mode: the Printed Status filter dropdown controls visibility. + // This is the only context where the filter is accessible, so it is the + // authoritative control — no separate edit_mode override needed. + const ps = badges_loc.current.qry_printed_status; + if (ps === 'printed') return (item.print_count ?? 0) >= 1 && !item.hide; + if (ps === 'not_printed') return (item.print_count ?? 0) < 1 && !item.hide; + return !item.hide; // 'all' — show everything non-hidden } - // Everyone else (non-trusted or trusted not in edit mode): - // Only show badges that have not been printed yet + // Kiosk / attendee / below-trusted: only unprinted badges. + // The filter dropdown is not visible at these access levels, so + // qry_printed_status is not a reliable signal here. return (item.print_count ?? 0) < 1 && !item.hide; });