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_location: HTMLInputElement | undefined;
|
||||||
let input_ref_pronouns: HTMLInputElement | undefined;
|
let input_ref_pronouns: HTMLInputElement | undefined;
|
||||||
let input_ref_allow_tracking: 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(() => {
|
$effect(() => {
|
||||||
const field = active_field;
|
const field = active_field;
|
||||||
|
|||||||
@@ -26,6 +26,9 @@
|
|||||||
on_toggle
|
on_toggle
|
||||||
}: Props = $props();
|
}: Props = $props();
|
||||||
|
|
||||||
|
// Uppercase alias required: Svelte 5 treats lowercase tags as HTML elements.
|
||||||
|
let Icon = $derived(icon);
|
||||||
|
|
||||||
function toggle_expand() {
|
function toggle_expand() {
|
||||||
if (state === 'collapsed') {
|
if (state === 'collapsed') {
|
||||||
state = 'auto';
|
state = 'auto';
|
||||||
@@ -72,8 +75,7 @@
|
|||||||
onclick={toggle_expand}
|
onclick={toggle_expand}
|
||||||
>
|
>
|
||||||
<div class="flex items-center gap-3">
|
<div class="flex items-center gap-3">
|
||||||
<svelte:component
|
<Icon
|
||||||
this={icon}
|
|
||||||
size="1em"
|
size="1em"
|
||||||
class="w-5 text-center opacity-70 {state === 'auto'
|
class="w-5 text-center opacity-70 {state === 'auto'
|
||||||
? 'text-primary-500'
|
? 'text-primary-500'
|
||||||
|
|||||||
@@ -309,7 +309,7 @@
|
|||||||
</span>
|
</span>
|
||||||
{:then result}
|
{:then result}
|
||||||
{@const FileIcon = ae_util.file_extension_icon_lucide(event_file_obj.extension)}
|
{@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}
|
{event_file_obj.extension}
|
||||||
{#if result === null || result === false}
|
{#if result === null || result === false}
|
||||||
<span class="text-error-500"
|
<span class="text-error-500"
|
||||||
|
|||||||
@@ -58,8 +58,9 @@ const mock_template = {
|
|||||||
|
|
||||||
/** Injects records into ae_events_db IndexedDB tables via raw IDB API.
|
/** Injects records into ae_events_db IndexedDB tables via raw IDB API.
|
||||||
* Must be called from page.evaluate() after the page has navigated (Dexie
|
* Must be called from page.evaluate() after the page has navigated (Dexie
|
||||||
* schema is already initialised from the app's first open). */
|
* schema is already initialised from the app's first open).
|
||||||
async function inject_idb(badge: object, template: object): Promise<void> {
|
* 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 db = await new Promise<IDBDatabase>((resolve, reject) => {
|
||||||
const req = indexedDB.open('ae_events_db');
|
const req = indexedDB.open('ae_events_db');
|
||||||
req.onsuccess = () => resolve(req.result as IDBDatabase);
|
req.onsuccess = () => resolve(req.result as IDBDatabase);
|
||||||
@@ -120,7 +121,7 @@ test.describe('Badge Print Page — print layout centering', () => {
|
|||||||
await page.waitForLoadState('domcontentloaded');
|
await page.waitForLoadState('domcontentloaded');
|
||||||
|
|
||||||
// Inject badge + template directly into IndexedDB so LiveQuery fires
|
// 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
|
// Wait for LiveQuery to render the badge wrapper
|
||||||
await page.waitForSelector('.event_badge_wrapper', { timeout: 8000 });
|
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.goto(`/events/${event_id}/badges/${badge_id}/print`);
|
||||||
await page.waitForLoadState('domcontentloaded');
|
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.waitForSelector('.event_badge_wrapper', { timeout: 8000 });
|
||||||
await page.emulateMedia({ media: 'print' });
|
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.goto(`/events/${event_id}/badges/${badge_id}/print`);
|
||||||
await page.waitForLoadState('domcontentloaded');
|
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.waitForSelector('.event_badge_wrapper', { timeout: 8000 });
|
||||||
await page.emulateMedia({ media: 'print' });
|
await page.emulateMedia({ media: 'print' });
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user