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.
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'}
}
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 {
// ovrride 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 registed 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) => {
return super.openViewTabContextMenu({
...payload,
template: [
{
label: 'Sample View Tab Context Menu',
data: {
type: ViewTabMenuOptionType.Custom,
action: {
// This action needs to be registed in customActions property in the call WorkspacePlatform.init
id: 'sample-viewtab-action',
customData: 'Custom View Tab Action'
}
}
},
...payload.template
]
}, callerIdentity);
};
// add a custom menu item (forward/back) 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: [
{
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 Workpace 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';
}
}
});
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.
Generated using TypeDoc
Event for analytics