feat(idaa): collapsible Meeting Info panel on recovery meetings list

Wrap the data store element in an accordion-style toggle. State persists
in idaa_loc (localStorage) so the user's preference survives page reloads.
Added ds_info_collapsed field to idaa_local_data_struct.recovery_meetings.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Scott Idem
2026-05-18 17:59:02 -04:00
parent 429f38996a
commit c69e40829f
2 changed files with 33 additions and 6 deletions

View File

@@ -103,7 +103,11 @@ const idaa_local_data_struct: key_val = {
// Favorites filter — when true, only show meetings the member has starred.
// Favorites are stored server-side in event.mod_meetings_json.favorite (array of Novi UUIDs),
// so they persist across browsers without requiring a Novi API write capability.
qry__favorites_only: false
qry__favorites_only: false,
// Collapse the "Meeting Info" data store panel between the search bar and results.
// Persisted so the user's preference survives page reloads.
ds_info_collapsed: false
}
};

View File

@@ -419,11 +419,34 @@ if (browser) {
<Comp__event_obj_qry />
<Element_data_store
ds_code="recovery_meetings_info"
ds_type="html"
class_li="rounded-lg preset-outlined-surface-200-800 m-auto p-2 space-y-2 w-full max-w-xl"
show_edit_btn={true} />
<div class="w-full max-w-xl mx-auto space-y-1">
<button
type="button"
onclick={() => {
$idaa_loc.recovery_meetings.ds_info_collapsed =
!($idaa_loc.recovery_meetings.ds_info_collapsed ?? false);
}}
class="novi_btn btn btn-sm w-full flex items-center justify-between
rounded-lg preset-outlined-surface-200-800 hover:preset-tonal-surface
opacity-60 hover:opacity-100 transition-all px-3 py-1"
title={$idaa_loc.recovery_meetings.ds_info_collapsed
? 'Show meeting info'
: 'Collapse meeting info'}>
<span class="text-sm">
<span class="fas fa-info-circle mr-1 text-xs"></span>Meeting Info
</span>
<span class="fas text-xs opacity-60
{$idaa_loc.recovery_meetings.ds_info_collapsed ? 'fa-chevron-down' : 'fa-chevron-up'}">
</span>
</button>
{#if !($idaa_loc.recovery_meetings.ds_info_collapsed ?? false)}
<Element_data_store
ds_code="recovery_meetings_info"
ds_type="html"
class_li="rounded-lg preset-outlined-surface-200-800 m-auto p-2 space-y-2 w-full"
show_edit_btn={true} />
{/if}
</div>
{#if Array.isArray(event_id_li) && event_id_li.length}
<Comp__event_obj_li_wrapper