refactor: harden type safety and modernize core forms for Svelte 5

- Standardize 'ae_BaseObj' and event types in 'ae_types.ts' to handle nullable fields from V3 API/Dexie.
- Modernize Person, Address, and Contact forms with Svelte 5 Runes and reactive synchronization.
- Refactor Event Settings and its sub-components to use the 'onsave' callback pattern, removing deprecated dispatchers.
- Hardened 'element_data_store_v2' with safe initialization and localStorage caching logic.
- Clean up unused 'element_data_store.svelte' (V1) and suppress Electron environment type errors in 'tmp_shell_handlers.ts'.
- Update documentation and workspace settings to reflect Phase 5 reactive patterns.
This commit is contained in:
Scott Idem
2026-01-28 14:40:20 -05:00
parent bc1d74f817
commit 55773a332d
24 changed files with 31006 additions and 1139 deletions

View File

@@ -19,19 +19,36 @@
// Form State (Runes)
let formData = $state({
title: contact?.title ?? '',
tagline: contact?.tagline ?? '',
email: contact?.email ?? '',
phone_mobile: contact?.phone_mobile ?? '',
phone_office: contact?.phone_office ?? '',
website_url: contact?.website_url ?? '',
facebook_url: contact?.facebook_url ?? '',
instagram_url: contact?.instagram_url ?? '',
linkedin_url: contact?.linkedin_url ?? '',
notes: contact?.notes ?? '',
enable: contact?.enable ?? true,
hide: contact?.hide ?? false,
priority: contact?.priority ?? false
title: '',
tagline: '',
email: '',
phone_mobile: '',
phone_office: '',
website_url: '',
facebook_url: '',
instagram_url: '',
linkedin_url: '',
notes: '',
enable: true,
hide: false,
priority: false
});
// Reset form when contact prop changes
$effect(() => {
formData.title = contact?.title ?? '';
formData.tagline = contact?.tagline ?? '';
formData.email = contact?.email ?? '';
formData.phone_mobile = contact?.phone_mobile ?? '';
formData.phone_office = contact?.phone_office ?? '';
formData.website_url = contact?.website_url ?? '';
formData.facebook_url = contact?.facebook_url ?? '';
formData.instagram_url = contact?.instagram_url ?? '';
formData.linkedin_url = contact?.linkedin_url ?? '';
formData.notes = contact?.notes ?? '';
formData.enable = contact?.enable ?? true;
formData.hide = contact?.hide ?? false;
formData.priority = contact?.priority ?? false;
});
let is_loading = $state(false);