5. Learn. Connect. Collaborate.
Extensibility
Features
• Custom pages and routes
• Document List layouts
• Navigation sidebar
• Context menu
• Sidebar (aka Info Drawer)
• Toolbars
• Viewer content and toolbars
• Content metadata
+ new endpoints with every release
+ your own content and extensions
7. Learn. Connect. Collaborate.
Format
• JSON files
• Files are merged at runtime
• Custom order of loading
• Extensions can
– Rewrite properties
– Extend objects and collections
– Disable existing features
22. Learn. Connect. Collaborate.
Routes
• Expand the app by adding new routes
• New pages
• Custom content to show
• Application layout and styles
• Authentication guards
• Register actions to redirect to your content
• Register buttons to invoke your actions
• Redefine and customize other routes
26. Learn. Connect. Collaborate.
Actions
• Trigger application features
• App is split into reusable actions, i.e.:
– Remove node
– Invoke “Create Folder” dialog
– Preview node
– ... and many more
• Extensions can invoke or customize every
application action exposed
• Based on NgRx (inspired by Redux)
• You can provide custom handlers
• You can replace Action Engine
31. Learn. Connect. Collaborate.
Rules
• Rules are plain JavaScript functions
• Can access runtime context
• Can be composed from other rules
– NOT, OR, AND
– Rule negation via “!” (not) operator
• Unlimited level of chaining
• You can replace any rule with your own
• Extensions can register extra rules
37. Learn. Connect. Collaborate.
Distribution
• Standard Angular Libraries
• Published to NPM or custom sources
• Single metadata file as part of the library
• Single command to install into the app
• Installing from local tarball packages
See more details on NGI tool: https://bit.ly/2RcKtvw
39. Learn. Connect. Collaborate.
Core features
• Extension loader
• Application services to back extensibility
• Core evaluators (”every”, “not”, “all”, etc.)
• Dynamic components
40. Learn. Connect. Collaborate.
What’s next
• More extension points for ADF and ACA
• More developer tooling for extensions
– Validation and linting
– Upgrades and versioning
– Distribution
• Automatic installation and deployment
• Web Components support
• Improvements based on community feedback