Svelte: fix 3 svelte-check warnings (non-IDAA) + Playwright test type error
- ae_comp__badge_print_controls: select_ref_badge_type declared as $state()
so Svelte 5 tracks DOM ref assignment correctly (was plain let).
- launcher_cfg_section: <svelte:component this={icon}> replaced with
let Icon = $derived(icon) + <Icon /> — svelte_component_deprecated fix.
- launcher_file_cont: same svelte_component_deprecated fix for FileIcon.
- badge_print_layout.test.ts: inject_idb signature changed from (badge, template)
to ({ badge, template }) — page.evaluate() passes exactly one argument;
all three call sites updated to pass { badge: mock_badge, template: mock_template }.
This commit is contained in:
@@ -293,7 +293,7 @@
|
||||
let input_ref_location: HTMLInputElement | undefined;
|
||||
let input_ref_pronouns: HTMLInputElement | undefined;
|
||||
let input_ref_allow_tracking: HTMLInputElement | undefined;
|
||||
let select_ref_badge_type: HTMLSelectElement | undefined;
|
||||
let select_ref_badge_type: HTMLSelectElement | undefined = $state();
|
||||
|
||||
$effect(() => {
|
||||
const field = active_field;
|
||||
|
||||
@@ -26,6 +26,9 @@
|
||||
on_toggle
|
||||
}: Props = $props();
|
||||
|
||||
// Uppercase alias required: Svelte 5 treats lowercase tags as HTML elements.
|
||||
let Icon = $derived(icon);
|
||||
|
||||
function toggle_expand() {
|
||||
if (state === 'collapsed') {
|
||||
state = 'auto';
|
||||
@@ -72,8 +75,7 @@
|
||||
onclick={toggle_expand}
|
||||
>
|
||||
<div class="flex items-center gap-3">
|
||||
<svelte:component
|
||||
this={icon}
|
||||
<Icon
|
||||
size="1em"
|
||||
class="w-5 text-center opacity-70 {state === 'auto'
|
||||
? 'text-primary-500'
|
||||
|
||||
@@ -309,7 +309,7 @@
|
||||
</span>
|
||||
{:then result}
|
||||
{@const FileIcon = ae_util.file_extension_icon_lucide(event_file_obj.extension)}
|
||||
<svelte:component this={FileIcon} size="1em" class="inline mx-0.5" />
|
||||
<FileIcon size="1em" class="inline mx-0.5" />
|
||||
{event_file_obj.extension}
|
||||
{#if result === null || result === false}
|
||||
<span class="text-error-500"
|
||||
|
||||
@@ -58,8 +58,9 @@ const mock_template = {
|
||||
|
||||
/** Injects records into ae_events_db IndexedDB tables via raw IDB API.
|
||||
* Must be called from page.evaluate() after the page has navigated (Dexie
|
||||
* schema is already initialised from the app's first open). */
|
||||
async function inject_idb(badge: object, template: object): Promise<void> {
|
||||
* schema is already initialised from the app's first open).
|
||||
* Single-argument form required: page.evaluate() passes exactly one arg. */
|
||||
async function inject_idb({ badge, template }: { badge: object; template: object }): Promise<void> {
|
||||
const db = await new Promise<IDBDatabase>((resolve, reject) => {
|
||||
const req = indexedDB.open('ae_events_db');
|
||||
req.onsuccess = () => resolve(req.result as IDBDatabase);
|
||||
@@ -120,7 +121,7 @@ test.describe('Badge Print Page — print layout centering', () => {
|
||||
await page.waitForLoadState('domcontentloaded');
|
||||
|
||||
// Inject badge + template directly into IndexedDB so LiveQuery fires
|
||||
await page.evaluate(inject_idb, [mock_badge, mock_template] as any);
|
||||
await page.evaluate(inject_idb, { badge: mock_badge, template: mock_template });
|
||||
|
||||
// Wait for LiveQuery to render the badge wrapper
|
||||
await page.waitForSelector('.event_badge_wrapper', { timeout: 8000 });
|
||||
@@ -154,7 +155,7 @@ test.describe('Badge Print Page — print layout centering', () => {
|
||||
await page.goto(`/events/${event_id}/badges/${badge_id}/print`);
|
||||
await page.waitForLoadState('domcontentloaded');
|
||||
|
||||
await page.evaluate(inject_idb, [mock_badge, mock_template] as any);
|
||||
await page.evaluate(inject_idb, { badge: mock_badge, template: mock_template });
|
||||
await page.waitForSelector('.event_badge_wrapper', { timeout: 8000 });
|
||||
await page.emulateMedia({ media: 'print' });
|
||||
|
||||
@@ -199,7 +200,7 @@ test.describe('Badge Print Page — print layout centering', () => {
|
||||
|
||||
await page.goto(`/events/${event_id}/badges/${badge_id}/print`);
|
||||
await page.waitForLoadState('domcontentloaded');
|
||||
await page.evaluate(inject_idb, [mock_badge, mock_template] as any);
|
||||
await page.evaluate(inject_idb, { badge: mock_badge, template: mock_template });
|
||||
await page.waitForSelector('.event_badge_wrapper', { timeout: 8000 });
|
||||
await page.emulateMedia({ media: 'print' });
|
||||
|
||||
|
||||
Reference in New Issue
Block a user