Add font load event to allow the header to redraw as the fonts load

This commit is contained in:
Dean 2024-05-08 09:23:30 +01:00
parent 1ffe9bda6f
commit 31fccf23a8
2 changed files with 30 additions and 11 deletions

View File

@ -104,6 +104,10 @@
} }
onMount(async () => { onMount(async () => {
document.fonts.onloadingdone = e => {
builderStore.loadFonts(e.fontfaces)
}
if (!hasSynced && application) { if (!hasSynced && application) {
try { try {
await API.syncApp(application) await API.syncApp(application)
@ -144,6 +148,8 @@
/> />
</span> </span>
<Tabs {selected} size="M"> <Tabs {selected} size="M">
{#key $builderStore?.fonts}
<span style="display:contents">
{#each $layout.children as { path, title }} {#each $layout.children as { path, title }}
<TourWrap stepKeys={[`builder-${title}-section`]}> <TourWrap stepKeys={[`builder-${title}-section`]}>
<Tab <Tab
@ -155,6 +161,8 @@
/> />
</TourWrap> </TourWrap>
{/each} {/each}
</span>
{/key}
</Tabs> </Tabs>
</div> </div>
<div class="topcenternav"> <div class="topcenternav">

View File

@ -14,6 +14,7 @@ export const INITIAL_BUILDER_STATE = {
tourKey: null, tourKey: null,
tourStepKey: null, tourStepKey: null,
hoveredComponentId: null, hoveredComponentId: null,
fonts: null,
} }
export class BuilderStore extends BudiStore { export class BuilderStore extends BudiStore {
@ -36,6 +37,16 @@ export class BuilderStore extends BudiStore {
this.websocket this.websocket
} }
loadFonts(fontFaces) {
const ff = fontFaces.map(
fontFace => `${fontFace.family}-${fontFace.weight}`
)
this.update(state => ({
...state,
fonts: [...(state.fonts || []), ...ff],
}))
}
init(app) { init(app) {
if (!app?.appId) { if (!app?.appId) {
console.error("BuilderStore: No appId supplied for websocket") console.error("BuilderStore: No appId supplied for websocket")