This is an Angular component and decorator that wraps the ACPaaS UI Embeddable Widgets framework.
For more information on what embeddable widgets are see the link above.
There is a demo app, see below for instructions on running it.
> npm install @acpaas-ui/ngx-embeddable-widgets
Import the component in your module:
import { EmbeddableWidgetsModule } from '@acpaas-ui/ngx-embeddable-widgets';
@NgModule({
imports: [
...,
EmbeddableWidgetsModule
],
...
})
In your template:
<aui-embeddable-widget
widgetUrl="//example.com/widget/definition.json"
[props]="{ someProp: 'value' }">
</aui-embeddable-widget>
Supported attributes:
- widgetUrl: the URL of the widget's JSON definition (required)
- props: the props to pass to the embedded widget
- overrides: overrides to specify when the widget definition is loaded (only applied once per loaded tag)
- useGlobalLibrary: if true, uses window.auiEmbeddableWidgets instead of @acpaas-ui/embeddable-widgets
There are no events, since all event handlers are specified in props. To understand how to do this, look at the onClick
event inside the example
folder.
Create a page in your angular app that contains the widget.
Publish a JSON definition for your widget. For example, you can include a file widget-definition.json
in the assets folder. See example/assets/widget-definition.json
for an example.
Decorate the page's component:
import { EmbeddableWidget } from '@acpaas-ui/ngx-embeddable-widgets';
@Component({
selector: 'app-widget',
templateUrl: './widget.page.html'
})
@EmbeddableWidget('/assets/widget-definition.json')
export class WidgetPage {
// ...
public auiOnWidgetInit(props) {
// initialize from props here
}
This will do the following:
- Initialize the current page as the widget defined in the JSON.
- Call the
auiOnWidgetInit
method and pass it theprops
specified from the container app.
> npm install
> npm start
Browse to localhost:4200
The <aui-embeddable-widget>
component can be rendered with server-side rendering in Angular Universal.
-
Include the following code in
server.ts
of your Universal appif (typeof window === 'undefined') { global['window'] = {}; }
-
Use
<aui-embeddable-widget>
in the normal way
We welcome your bug reports and pull requests.
Please see our contribution guide.
Joeri Sebrechts (joeri.sebrechts@digipolis.be)
This project is published under the MIT license.