Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagetypescript
app.registerStartupAction(Symbol.for('RegisterDemoBookmarkSerializer'), (app) => {
  const publicBookmarkProvider = app.get<IPublicBookmarkProvider>(PublicBookmarkProviderSymbol);
  publicBookmarkProvider.register(new DemoPublicBookmark(), Symbol.for('DemoBookmark'));
})
.moveTo(FrameworkStartupGroup);

Einbindung als iFrame

Es ist möglich, öffentliche Listen und Objekte als iFrame auf einer externen Webseite einzubinden.

Um gewisse Informationen über den eingebundenen Inhalt zu erhalten, werden Events per postMessage kommuniziert. Somit kann auf den Inhalt des iFrames reagiert werden. Mit diesen Informationen kann z.B. die Höhe des iFrames dynamisch angepasst werden.

Events

Liste wurde geladen

Objekt wurde geladen

Code Block
languagejson
{
  source: 'bloqs-list'
  event: 'loaded',
  content: {
    visibleElements: number
  }
}
Code Block
languagejson
{
  source: 'bloqs-detail',
  event: 'loaded'
  content: { 
    primaryKey: string
  }
}

Beispiel: Dynamische Höhe des iFrames

Code Block
languagejs
const iframe = document.getElementById('remote');
window.addEventListener("message", (event) => {
    
    const minHeight = 400;
    const maxHeight = 800;
    const drilldownHeight = 600;

    if (event.data && event.data.source === 'bloqs-list' && event.data.event === 'loaded') {
        const calculatedHeight = 250 + event.data.content.visibleElements * 33.5;
        if (calculatedHeight < minHeight) {
            iframe.height = minHeight
        } else if (calculatedHeight >= minHeight && calculatedHeight < maxHeight){
            iframe.height = calculatedHeight;
        } else {
            iframe.height = maxHeight;
        }
    }

    if (event.data && event.data.source === 'bloqs-detail' && event.data.event === 'loaded'){
        iframe.height = drilldownHeight;
    }
});