feat: add async demo support and enhance template resolution
- Introduced async demo functionality in the README, allowing for asynchronous data preparation before rendering components. - Updated WccDashboard, WccProperties, and WccSidebar to support Promise-based template factories. - Implemented resolveTemplateFactory to handle both synchronous and asynchronous template results. - Added tests for resolveTemplateFactory to ensure correct behavior for both sync and async templates. - Updated pnpm workspace configuration.
This commit is contained in:
22
test/test.demoresolver.node.ts
Normal file
22
test/test.demoresolver.node.ts
Normal file
@@ -0,0 +1,22 @@
|
||||
import { tap, expect } from '@git.zone/tstest/tapbundle';
|
||||
import { resolveTemplateFactory } from '../ts_web/elements/wcctools.helpers.js';
|
||||
import { html } from 'lit';
|
||||
|
||||
const waitFor = (durationMs: number) => new Promise(resolve => setTimeout(resolve, durationMs));
|
||||
|
||||
tap.test('resolveTemplateFactory returns sync TemplateResult', async () => {
|
||||
const template = html`<p>sync demo</p>`;
|
||||
const resolvedTemplate = await resolveTemplateFactory(() => template);
|
||||
expect(resolvedTemplate).toEqual(template);
|
||||
});
|
||||
|
||||
tap.test('resolveTemplateFactory awaits async TemplateResult', async () => {
|
||||
const template = html`<p>async demo</p>`;
|
||||
const resolvedTemplate = await resolveTemplateFactory(async () => {
|
||||
await waitFor(5);
|
||||
return template;
|
||||
});
|
||||
expect(resolvedTemplate).toEqual(template);
|
||||
});
|
||||
|
||||
export default tap.start();
|
Reference in New Issue
Block a user