fix(core): resolve 68 compiler errors and stabilize Svelte 5 reactivity

- Fixed 'Captured initial value' warnings in 65+ components by implementing
  proper sync effects with 'untrack' and derived states.
- Hardened Event Settings JSON editors using a temporary string-buffer pattern
  to safely decouple object-based data from CodeMirror's string requirements.
- Resolved strict TypeScript mismatches across core routes (Accounts, Sites, etc.)
  and improved property indexing safety in views.
- Patched Flowbite-Svelte Drawer transitions for Svelte 5 compatibility using
  prop spreading.
- Added comprehensive safety comments to high-risk reactivity blocks.
- Synchronized 'ae_types.ts' with V3 backend models.
This commit is contained in:
Scott Idem
2026-02-08 16:05:35 -05:00
parent 356eda5ab4
commit 88bc18cf15
64 changed files with 1175 additions and 1014 deletions

View File

@@ -34,10 +34,12 @@
// *** Variables
// let test_event_id = data.params.event_id;
let event_badge_id = data.params.badge_id;
let event_badge_id = $derived(data.params.badge_id);
// console.log(`Data Params: event_id=${test_event_id}; badge_id=${test_event_badge_id}`);
let url_test_val = data.url.searchParams.get('test_val');
console.log(`URL test_val = ${url_test_val}`);
let url_test_val = $derived(data.url.searchParams.get('test_val'));
$effect(() => {
console.log(`URL test_val = ${url_test_val}`);
});
let lq__event_badge_obj = $derived(
liveQuery(async () => {

View File

@@ -70,7 +70,9 @@
];
// *** Set initial variables
$slct.event_badge_id = event_badge_id; // $page['page_for']['event_badge_id'];
$effect(() => {
$slct.event_badge_id = event_badge_id; // $page['page_for']['event_badge_id'];
});
let trigger = $state(null);
let initial_loading_promise = $state(null);
@@ -320,8 +322,8 @@
// Use 'vcard' as the qr_type, passing all required params
// const data_url = await core_func.js_generate_qr_code('obj', params);
qr_data_url = core_func.js_generate_qr_code('obj', params);
} catch (error) {
qr_error_message = error.message;
} catch (error: any) {
qr_error_message = error?.message || 'Unknown error';
console.error(error);
}
}
@@ -353,8 +355,8 @@
qrParams
);
qr_data_url = dataUrl;
} catch (error) {
qr_error_message = error.message;
} catch (error: any) {
qr_error_message = error?.message || 'Unknown error';
console.error(error);
}
}

View File

@@ -12,15 +12,15 @@
const dispatch = createEventDispatcher();
let full_name_override: string = '';
let professional_title_override: string = '';
let affiliations_override: string = '';
let location_override: string = '';
let email: string = '';
let allow_tracking: boolean = false;
let badge_type_code: string = '';
let full_name_override: string = $state('');
let professional_title_override: string = $state('');
let affiliations_override: string = $state('');
let location_override: string = $state('');
let email: string = $state('');
let allow_tracking: boolean = $state(false);
let badge_type_code: string = $state('');
let submit_status: string = 'idle'; // idle, loading, success, error
let submit_status: string = $state('idle'); // idle, loading, success, error
// Example badge type codes (from ae_comp__badge_search.svelte)
let badge_type_code_li = [

View File

@@ -12,12 +12,12 @@
const dispatch = createEventDispatcher();
let file_input: HTMLInputElement;
let selected_file: File | null = null;
let upload_status: string = 'idle'; // idle, loading, processing, success, error
let upload_message: string = '';
let processed_badges_count: number = 0;
let total_badges_in_file: number = 0;
let file_input: HTMLInputElement | undefined = $state();
let selected_file: File | null = $state(null);
let upload_status: string = $state('idle'); // idle, loading, processing, success, error
let upload_message: string = $state('');
let processed_badges_count: number = $state(0);
let total_badges_in_file: number = $state(0);
// A very basic CSV parser that assumes the first row is headers
function parse_csv(text: string): key_val[] {
@@ -98,9 +98,9 @@
upload_status = 'success';
upload_message = `Successfully uploaded ${processed_badges_count} out of ${total_badges_in_file} badges.`;
dispatch('success');
} catch (error) {
} catch (error: any) {
upload_status = 'error';
upload_message = `Error processing file: ${error.message}`;
upload_message = `Error processing file: ${error?.message || 'Unknown error'}`;
console.error('Error during file upload:', error);
dispatch('error', error);
}

View File

@@ -12,11 +12,13 @@
let { data }: Props = $props();
let event_id: string = data.params.event_id;
let printed_status_filter: string | null =
data.url.searchParams.get('printed_status');
let badge_type_code_filter: string | null =
data.url.searchParams.get('badge_type_code');
let event_id = $derived(data.params.event_id);
let printed_status_filter = $derived(
data.url.searchParams.get('printed_status')
);
let badge_type_code_filter = $derived(
data.url.searchParams.get('badge_type_code')
);
let lq__filtered_badges = $derived(
liveQuery(async () => {