@jupyterlab/apputils
Version:
JupyterLab - Application Utilities
122 lines (121 loc) • 4.26 kB
TypeScript
import { CommandRegistry } from '@lumino/commands';
import { ReadonlyPartialJSONObject } from '@lumino/coreutils';
import { IDisposable } from '@lumino/disposable';
import { ElementDataset } from '@lumino/virtualdom';
/**
* A static class that provides helper methods to generate clickable nodes that
* execute registered commands with pre-populated arguments.
*/
export declare class CommandLinker implements IDisposable {
/**
* Instantiate a new command linker.
*/
constructor(options: CommandLinker.IOptions);
/**
* Test whether the linker is disposed.
*/
get isDisposed(): boolean;
/**
* Dispose of the resources held by the linker.
*/
dispose(): void;
/**
* Connect a command/argument pair to a given node so that when it is clicked,
* the command will execute.
*
* @param node - The node being connected.
*
* @param command - The command ID to execute upon click.
*
* @param args - The arguments with which to invoke the command.
*
* @returns The same node that was passed in, after it has been connected.
*
* #### Notes
* Only `click` events will execute the command on a connected node. So, there
* are two considerations that are relevant:
* 1. If a node is connected, the default click action will be prevented.
* 2. The `HTMLElement` passed in should be clickable.
*/
connectNode(node: HTMLElement, command: string, args?: ReadonlyPartialJSONObject): HTMLElement;
/**
* Disconnect a node that has been connected to execute a command on click.
*
* @param node - The node being disconnected.
*
* @returns The same node that was passed in, after it has been disconnected.
*
* #### Notes
* This method is safe to call multiple times and is safe to call on nodes
* that were never connected.
*
* This method can be called on rendered virtual DOM nodes that were populated
* using the `populateVNodeDataset` method in order to disconnect them from
* executing their command/argument pair.
*/
disconnectNode(node: HTMLElement): HTMLElement;
/**
* Handle the DOM events for the command linker helper class.
*
* @param event - The DOM event sent to the class.
*
* #### Notes
* This method implements the DOM `EventListener` interface and is
* called in response to events on the panel's DOM node. It should
* not be called directly by user code.
*/
handleEvent(event: Event): void;
/**
* Populate the `dataset` attribute within the collection of attributes used
* to instantiate a virtual DOM node with the values necessary for its
* rendered DOM node to respond to clicks by executing a command/argument
* pair.
*
* @param command - The command ID to execute upon click.
*
* @param args - The arguments with which to invoke the command.
*
* @returns A `dataset` collection for use within virtual node attributes.
*
* #### Notes
* The return value can be used on its own as the value for the `dataset`
* attribute of a virtual element, or it can be added to an existing `dataset`
* as in the example below.
*
* #### Example
* ```typescript
* let command = 'some:command-id';
* let args = { alpha: 'beta' };
* let anchor = h.a({
* className: 'some-class',
* dataset: {
* foo: '1',
* bar: '2',
* ../...linker.populateVNodeDataset(command, args)
* }
* }, 'some text');
* ```
*/
populateVNodeDataset(command: string, args?: ReadonlyPartialJSONObject): ElementDataset;
/**
* The global click handler that deploys commands/argument pairs that are
* attached to the node being clicked.
*/
private _evtClick;
private _commands;
private _isDisposed;
}
/**
* A namespace for command linker statics.
*/
export declare namespace CommandLinker {
/**
* The instantiation options for a command linker.
*/
interface IOptions {
/**
* The command registry instance that all linked commands will use.
*/
commands: CommandRegistry;
}
}