Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -783,6 +783,10 @@ One other thing is that the type of the return is precisely the same type requir
- panel:
- open: this function will open the sidekick options panel automatically;
- close: this function will close the sidekick options panel automatically (and also the sidebar content if open, to avoid inconsistencies in ui);
- panel:
- open: this function will open a generic content sidekick area panel. It optionally takes the ID of that area (as returned by `setGenericContentItems`) to select which one to open;
- openCorePanel: this function will open one of the core panels, such as Polls, described by the `SidekickAreaCorePanelEnum`. Polls, Timer and Breakout are ignored unless the user could already open them from the sidebar navigation;
- close: this function will close the panel currently displayed in the sidekick area;
- sidekick-options-container:
- open: this function will open the sidekick options panel automatically;
- close: this function will close the sidekick options panel automatically (and also the sidebar content if open, to avoid inconsistencies in ui);
Expand Down Expand Up @@ -837,6 +841,14 @@ One other thing is that the type of the return is precisely the same type requir
'New Section Name'
);

// Open a specific sidekick panel
pluginApi.uiCommands.sidekickArea.panel.open('my-content-id');

// Open a core panel
pluginApi.uiCommands.sidekickArea.panel.openCorePanel(
SidekickAreaCorePanelEnum.POLL
);

// Camera commands
pluginApi.uiCommands.camera.setSelfViewDisableAllDevices(true);
pluginApi.uiCommands.camera.setSelfViewDisable('camera-stream-id', false);
Expand Down
1 change: 1 addition & 0 deletions src/ui-commands/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ export { ChangeEnforcedLayoutTypeEnum, EnforcedLayoutTypeEnum } from './layout/e
export { CaptionsLanguageEnum } from './captions/enums';
export { ChatUiCommandsEnum } from './chat/enums';
export { ScreenshareCommandsEnum } from './screenshare/enums';
export { SidekickAreaCorePanelEnum } from './sidekick-area/panel/enums';
2 changes: 2 additions & 0 deletions src/ui-commands/sidekick-area/commands.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import { sidekickAreaOptions } from './options/commands';
import { sidekickAreaPanel } from './panel/commands';
import { UiCommandsSidekickArea } from './types';

export const sidekickArea: UiCommandsSidekickArea = {
options: sidekickAreaOptions,
panel: sidekickAreaPanel,
};
49 changes: 49 additions & 0 deletions src/ui-commands/sidekick-area/panel/commands.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import { SidekickAreaCorePanelEnum, SidekickAreaPanelEnum } from './enums';
import {
OpenSidekickAreaCorePanelCommandArguments,
OpenSidekickAreaPanelCommandArguments,
UiCommandsSidekickAreaPanelObject,
} from './types';

export const sidekickAreaPanel: UiCommandsSidekickAreaPanelObject = {
/**
* Opens a generic content sidekick area panel.
*
* @param id Id of the generic content sidekick area, as returned by
* `pluginApi.setGenericContentItems`. When omitted, no panel is selected.
*/
open: (id?: string) => {
window.dispatchEvent(new CustomEvent<OpenSidekickAreaPanelCommandArguments>(
SidekickAreaPanelEnum.OPEN,
{
detail: {
id,
},
},
));
},

/**
* Opens one of the core panels, such as Polls.
*
* @param panel Core panel to be opened. Polls, Timer and Breakout are ignored
* unless the user could already open them from the sidebar navigation.
*/
openCorePanel: (panel: SidekickAreaCorePanelEnum) => {
window.dispatchEvent(new CustomEvent<OpenSidekickAreaCorePanelCommandArguments>(
SidekickAreaPanelEnum.OPEN_CORE_PANEL,
{
detail: {
panel,
},
},
));
},

/**
* Closes the panel currently displayed in the sidekick area.
*/
close: () => {
window.dispatchEvent(new Event(SidekickAreaPanelEnum.CLOSE));
},
};
19 changes: 19 additions & 0 deletions src/ui-commands/sidekick-area/panel/enums.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
export enum SidekickAreaPanelEnum {
OPEN = 'OPEN_SIDEKICK_AREA_PANEL_COMMAND',
OPEN_CORE_PANEL = 'OPEN_SIDEKICK_AREA_CORE_PANEL_COMMAND',
CLOSE = 'CLOSE_SIDEKICK_AREA_PANEL_COMMAND',
}

/**
* Core panels a plugin is allowed to open. Polls, Timer and Breakout are only
* opened when the user could already open them from the sidebar navigation.
*/
export enum SidekickAreaCorePanelEnum {
CHAT = 'chat',
USER_LIST = 'userlist',
SHARED_NOTES = 'shared-notes',
APPS_GALLERY = 'apps-gallery',
POLL = 'poll',
TIMER = 'timer',
BREAKOUT = 'breakoutroom',
}
15 changes: 15 additions & 0 deletions src/ui-commands/sidekick-area/panel/types.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import { SidekickAreaCorePanelEnum } from './enums';

export interface UiCommandsSidekickAreaPanelObject {
open: (id?: string) => void;
openCorePanel: (panel: SidekickAreaCorePanelEnum) => void;
close: () => void;
}

export interface OpenSidekickAreaPanelCommandArguments {
id?: string;
}

export interface OpenSidekickAreaCorePanelCommandArguments {
panel: SidekickAreaCorePanelEnum;
}
2 changes: 2 additions & 0 deletions src/ui-commands/sidekick-area/types.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import { UiCommandsSidekickAreaOptionsObject } from './options/types';
import { UiCommandsSidekickAreaPanelObject } from './panel/types';

export interface UiCommandsSidekickArea {
options: UiCommandsSidekickAreaOptionsObject;
panel: UiCommandsSidekickAreaPanelObject;
}
Loading