Payload received by applyWorkspace platform provider method
A window that is part of a browser snapshot.
The payload received by a Custom Action.
The callerType
property can be used to determine what data is available in the payload and cast accordingly.
When callerType == CustomActionCallerType.API
, the payload is defined by the code directly invoking the action.
Configuration Object for the page lock/unlock button within the browser toolbar
Payload received by the openGlobalContextMenu provider override.
Payload received by the openViewTabContextMenu provider override.
Payload received by the openSaveButtonContextMenu provider override.
Request to create a save modal.
Payload received by the openViewTabContextMenu provider override.
Configuration of an individual fixed view panel
Example:
{
position: PanelPosition.Left,
width: '140px',
viewOptions: { url: 'https://example.com'}
}
Configuration Object for the show/hide tabs button within the browser toolbar
Buttons on the left of WindowStateButtonOptions
Buttons to the top far right of Browser
Extend or replace default functionality in order to customize behavior of a Workspace Platform Provider.
To implement your own handlers for Workspace Platform behavior, extend the provided class and override any methods you'd like to alter.
import * as WorkspacePlatform from '@openfin/workspace-platform';
import { UpdateSavedPageRequest } from '@client-platform/shapes';
const overrideCallback: WorkspacePlatform.WorkspacePlatformOverrideCallback = async (
WorkspacePlatformProvider
) => {
class Override extends WorkspacePlatformProvider {
// Override the default behavior of updateSavedPage
updateSavedPage = async (req: UpdateSavedPageRequest): Promise<void> => {
console.log(`saving page ${req.page.pageId}`);
// calling custom function to the save page here
};
// add a custom menu item in Global Context Menu
openGlobalContextMenu(req: WorkspacePlatform.OpenGlobalContextMenuPayload, callerIdentity: any) {
return super.openGlobalContextMenu(
{
...req,
template: [
...req.template,
{
label: 'Sample custom global option',
data: {
type: GlobalContextMenuOptionType.Custom,
action: {
// This action needs to be registered in customActions property in the call WorkspacePlatform.init
id: 'sample-custom-global-menu-action'
}
}
}
]
},
callerIdentity
);
}
// add a custom menu item in View Tab Context Menu
openViewTabContextMenu = async (payload: OpenViewTabContextMenuPayload, callerIdentity) => {
const viewsInfo = await Promise.all(payload.selectedViews.map(async (v) => fin.View.wrapSync(v).getInfo()));
const enableBack = viewsInfo.every((viewInfo) => viewInfo.canNavigateBack === true);
const enableForward = viewsInfo.every((viewInfo) => viewInfo.canNavigateForward === true);
return super.openViewTabContextMenu({
...payload,
template: [
{
label: 'Sample View Tab Context Menu',
data: {
type: ViewTabMenuOptionType.Custom,
action: {
// This action needs to be registered in customActions property in the call WorkspacePlatform.init
id: 'sample-viewtab-action',
customData: 'Custom View Tab Action'
}
}
},
{
type: 'normal',
label: 'Back',
data: {
type: ViewTabMenuOptionType.Back
},
enabled: enableBack
},
{
type: 'normal',
label: 'Forward',
data: {
type: ViewTabMenuOptionType.Forward
},
enabled: enableForward
},
...payload.template
]
}, callerIdentity);
};
// add a custom menu item in Save Context Menu
openSaveButtonContextMenu = (req: WorkspacePlatform.OpenSaveButtonContextMenuPayload, callerIdentity: OpenFin.Identity) => {
return super.openSaveButtonContextMenu(
{
...req,
template: [
...req.template,
{
label: 'Save custom option',
data: {
type: SaveButtonContextMenuOptionType.Custom,
action: {
id: 'sample-custom-action-name',
customData: {
someProp: 'Save Button task'
}
}
}
}
]
},
callerIdentity
);
}
}
return new Override();
};
await WorkspacePlatform.init({
browser: {
title: "My Workspace Platform"
}
overrideCallback,
customActions: {
'sample-custom-global-menu-action': (payload: CustomActionPayload) => {
alert('This custom action works ' + JSON.stringify(payload));
return 'someresponse';
},
'sample-viewtab-action': (payload: ViewTabCustomActionPayload) => {
alert('This custom action works ' + JSON.stringify(payload));
return 'someresponse';
}
}
});
Synchronously returns a Platform object that represents the current platform.
import * as WorkspacePlatform from '@openfin/workspace-platform';
// get current Workspace Platform
const workspacePlatform = WorkspacePlatform.getCurrentSync();
// do something with workspacePlatform. e.g. get snapshot of browser window with pages
const snapshot = await workspacePlatform.getSnapshot();
Initilaize a Workspace Platform.
import * as WorkspacePlatform from '@openfin/workspace-platform';
const customThemes: WorkspacePlatform.CustomThemes = [{
label: "OpenFin's Custom Theme",
palette: {
// Required color options
brandPrimary: '#F51F63',
brandSecondary: '#1FF58A',
backgroundPrimary: '#F8E71C', // hex, rgb/rgba, hsl/hsla only - no string colors: 'red'
}
}];
const overrideCallback: WorkspacePlatform.WorkspacePlatformOverrideCallback = async (
WorkspacePlatformProvider
) => {
class Override extends WorkspacePlatformProvider {
async quit(payload, callerIdentity) {
return super.quit(payload, callerIdentity);
}
}
return new Override();
};
await WorkspacePlatform.init({
browser: { overrideCallback },
theme: customThemes
});
options for configuring the platform.
Synchronously returns a Platform object that represents an existing platform.
import * as WorkspacePlatform from '@openfin/workspace-platform';
// declare platform identity
const myPlatformIdentity: OpenFin.ApplicationIdentity = {
uuid: 'testPlatform',
name: 'Test Platform'
};
// get the platform representing myPlatformIdentity
const platform = WorkspacePlatform.wrapSync(myPlatformIdentity);
// do something with platform. e.g. create a window
platform.createWindow({
layout: {
content: [
{
type: 'component',
componentName: 'Example View',
componentState: {
name: 'example_view_1'
url: 'https://cdn.openfin.co/docs/javascript/canary/Platform.html'
}
}
]
}
});
Generated using TypeDoc
Event for analytics