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:
@@ -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 () => {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 = [
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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 () => {
|
||||
|
||||
Reference in New Issue
Block a user