Skip to main content

Abstract Class: Bubble

Defined in: packages/blockly/core/bubbles/bubble.ts:42

The abstract pop-up bubble class. This creates a UI that looks like a speech bubble, where it has a "tail" that points to the block, and a "head" that displays arbitrary svg elements.

Extended by​

Implements​

Properties index​

PropertyDescription
BORDER_WIDTHThe width of the border around the bubble.
DOUBLE_BORDERDouble the width of the border around the bubble.
MIN_SIZEThe minimum size the bubble can have.
TAIL_THICKNESSThe thickness of the base of the tail in relation to the size of the bubble. Higher numbers result in thinner tails.
TAIL_ANGLEThe number of degrees that the tail bends counter-clockwise.
TAIL_BENDThe sharpness of the tail's bend. Higher numbers result in smoother tails.
ANCHOR_RADIUSDistance between arrow point and anchor point.
id-
svgRootThe SVG group containing all parts of the bubble.
contentContainerThe SVG group containing the contents of the bubble.
disposedTrue if the bubble has been disposed, false otherwise.
workspaceThe workspace this bubble belongs to.
anchorThe anchor location of the thing this bubble is attached to. The tail of the bubble will point to this location.
ownerRectAn optional rect we don't want the bubble to overlap with when automatically positioning.
ownerThe object responsible for hosting/spawning this bubble.

Methods index​

MethodDescription
disposeDispose of this bubble.
setAnchorLocationSet the location the tail of this bubble points to.
setPositionRelativeToAnchorSets the position of this bubble relative to its anchor.
getSizeReturns the size of this bubble.
setSizeSets the size of this bubble, including the border.
getColourReturns the colour of the background and tail of this bubble.
setColourSets the colour of the background and tail of this bubble.
onKeyDownHandles key events when this bubble is focused. By default, closes the bubble on Escape.
positionRelativeToAnchorPositions the bubble relative to its anchor. Does not render its tail.
moveByMoves the bubble by the given amounts in the x and y directions.
positionByRectPositions the bubble "optimally" so that the most of it is visible and it does not overlap the rect (if provided).
getBoundingRectangleReturns the bounds of this bubble.
setDraggingSets whether or not this bubble is being dragged.
isMovableReturns whether this bubble is movable or not.
startDragStarts a drag on the bubble.
dragDrags the bubble to the given location.
endDragEnds the drag on the bubble.
revertDragMoves the bubble back to where it was at the start of a drag.
selectSelect this. Highlight it visually.
unselectUnselect this. Unhighlight it visually.
getFocusableElementSee IFocusableNode.getFocusableElement.
getFocusableTreeSee IFocusableNode.getFocusableTree.
onNodeFocusSee IFocusableNode.onNodeFocus.
onNodeBlurSee IFocusableNode.onNodeBlur.
canBeFocusedSee IFocusableNode.canBeFocused.
getOwnerReturns the object that owns/hosts this bubble, if any.
recomputeAriaContextRecomputes the ARIA label and role for this bubble. This is automatically called during initialization, but implementations may find it useful to call this if the bubble's label should be changed.
setAriaLabelProviderSets a custom ARIA label provider for this bubble, or null if it should be reset to use the default method.
getAriaLabelReturns the ARIA label to use for this bubble based on the provider set via setAriaLabelProvider. This will return null if the provider is absent or returns null.

Constructors​

Constructor​

new Bubble(
workspace,
anchor,
ownerRect?,
overriddenFocusableElement?,
owner?
): Bubble;

Defined in: packages/blockly/core/bubbles/bubble.ts:124

Parameters​

ParameterTypeDescription
workspaceWorkspaceSvgThe workspace this bubble belongs to.
anchorCoordinateThe anchor location of the thing this bubble is attached to. The tail of the bubble will point to this location.
ownerRect?RectAn optional rect we don't want the bubble to overlap with when automatically positioning.
overriddenFocusableElement?HTMLElement | SVGElementAn optional replacement to the focusable element that's represented by this bubble (as a focusable node). This element will have its ID overwritten. If not provided, the focusable element of this node will default to the bubble's SVG root.
owner?IHasBubble & IFocusableNodeThe object responsible for hosting/spawning this bubble.

Returns​

Bubble

Properties​

BORDER_WIDTH​

readonly static BORDER_WIDTH: 6 = 6;

Defined in: packages/blockly/core/bubbles/bubble.ts:46

The width of the border around the bubble.


DOUBLE_BORDER​

readonly static DOUBLE_BORDER: number;

Defined in: packages/blockly/core/bubbles/bubble.ts:49

Double the width of the border around the bubble.


MIN_SIZE​

readonly static MIN_SIZE: number;

Defined in: packages/blockly/core/bubbles/bubble.ts:52

The minimum size the bubble can have.


TAIL_THICKNESS​

readonly static TAIL_THICKNESS: 1 = 1;

Defined in: packages/blockly/core/bubbles/bubble.ts:58

The thickness of the base of the tail in relation to the size of the bubble. Higher numbers result in thinner tails.


TAIL_ANGLE​

readonly static TAIL_ANGLE: 20 = 20;

Defined in: packages/blockly/core/bubbles/bubble.ts:61

The number of degrees that the tail bends counter-clockwise.


TAIL_BEND​

readonly static TAIL_BEND: 4 = 4;

Defined in: packages/blockly/core/bubbles/bubble.ts:67

The sharpness of the tail's bend. Higher numbers result in smoother tails.


ANCHOR_RADIUS​

readonly static ANCHOR_RADIUS: 8 = 8;

Defined in: packages/blockly/core/bubbles/bubble.ts:70

Distance between arrow point and anchor point.


id​

id: string;

Defined in: packages/blockly/core/bubbles/bubble.ts:72

Implementation of​

ISelectable.id


svgRoot​

protected svgRoot: SVGGElement;

Defined in: packages/blockly/core/bubbles/bubble.ts:75

The SVG group containing all parts of the bubble.


contentContainer​

protected contentContainer: SVGGElement;

Defined in: packages/blockly/core/bubbles/bubble.ts:84

The SVG group containing the contents of the bubble.


disposed​

disposed: boolean = false;

Defined in: packages/blockly/core/bubbles/bubble.ts:95

True if the bubble has been disposed, false otherwise.


workspace​

readonly workspace: WorkspaceSvg;

Defined in: packages/blockly/core/bubbles/bubble.ts:125

The workspace this bubble belongs to.

Implementation of​

ISelectable.workspace


anchor​

protected anchor: Coordinate;

Defined in: packages/blockly/core/bubbles/bubble.ts:126

The anchor location of the thing this bubble is attached to. The tail of the bubble will point to this location.


ownerRect?​

protected optional ownerRect?: Rect;

Defined in: packages/blockly/core/bubbles/bubble.ts:127

An optional rect we don't want the bubble to overlap with when automatically positioning.


owner?​

protected optional owner?: IHasBubble & IFocusableNode;

Defined in: packages/blockly/core/bubbles/bubble.ts:129

The object responsible for hosting/spawning this bubble.

Methods​

dispose()​

dispose(): void;

Defined in: packages/blockly/core/bubbles/bubble.ts:180

Dispose of this bubble.

Returns​

void

Implementation of​

IBubble.dispose


setAnchorLocation()​

setAnchorLocation(anchor, relayout?): void;

Defined in: packages/blockly/core/bubbles/bubble.ts:193

Set the location the tail of this bubble points to.

Parameters​

ParameterTypeDefault valueDescription
anchorCoordinateundefinedThe location the tail of this bubble points to.
relayoutbooleanfalseIf true, reposition the bubble from scratch so that it is optimally visible. If false, reposition it so it maintains the same position relative to the anchor.

Returns​

void


setPositionRelativeToAnchor()​

setPositionRelativeToAnchor(left, top): void;

Defined in: packages/blockly/core/bubbles/bubble.ts:204

Sets the position of this bubble relative to its anchor.

Parameters​

ParameterType
leftnumber
topnumber

Returns​

void


getSize()​

protected getSize(): Size;

Defined in: packages/blockly/core/bubbles/bubble.ts:212

Returns​

Size

the size of this bubble.


setSize()​

protected setSize(size, relayout?): void;

Defined in: packages/blockly/core/bubbles/bubble.ts:224

Sets the size of this bubble, including the border.

Parameters​

ParameterTypeDefault valueDescription
sizeSizeundefinedSets the size of this bubble, including the border.
relayoutbooleanfalseIf true, reposition the bubble from scratch so that it is optimally visible. If false, reposition it so it maintains the same position relative to the anchor.

Returns​

void


getColour()​

protected getColour(): string;

Defined in: packages/blockly/core/bubbles/bubble.ts:241

Returns the colour of the background and tail of this bubble.

Returns​

string


setColour()​

setColour(colour): void;

Defined in: packages/blockly/core/bubbles/bubble.ts:246

Sets the colour of the background and tail of this bubble.

Parameters​

ParameterType
colourstring

Returns​

void


onKeyDown()​

protected onKeyDown(e): void;

Defined in: packages/blockly/core/bubbles/bubble.ts:267

Handles key events when this bubble is focused. By default, closes the bubble on Escape.

Parameters​

ParameterTypeDescription
eKeyboardEventThe keyboard event to handle.

Returns​

void


positionRelativeToAnchor()​

protected positionRelativeToAnchor(): void;

Defined in: packages/blockly/core/bubbles/bubble.ts:275

Positions the bubble relative to its anchor. Does not render its tail.

Returns​

void


moveBy()​

moveBy(
dx,
dy,
_reason?
): void;

Defined in: packages/blockly/core/bubbles/bubble.ts:302

Moves the bubble by the given amounts in the x and y directions.

Parameters​

ParameterTypeDescription
dxnumberThe distance to move along the x axis.
dynumberThe distance to move along the y axis.
_reason?string[]A description of why this move is happening.

Returns​

void

Implementation of​

IBoundedElement.moveBy


positionByRect()​

protected positionByRect(rect?): void;

Defined in: packages/blockly/core/bubbles/bubble.ts:311

Positions the bubble "optimally" so that the most of it is visible and it does not overlap the rect (if provided).

Parameters​

ParameterType
rectRect

Returns​

void


getBoundingRectangle()​

getBoundingRectangle(): Rect;

Defined in: packages/blockly/core/bubbles/bubble.ts:655

Returns the bounds of this bubble.

Returns​

Rect

A bounding box for this bubble.

Implementation of​

IBoundedElement.getBoundingRectangle


setDragging()​

setDragging(_start): void;

Defined in: packages/blockly/core/bubbles/bubble.ts:687

Sets whether or not this bubble is being dragged.

Parameters​

ParameterType
_startboolean

Returns​

void

Implementation of​

IBubble.setDragging


isMovable()​

isMovable(): boolean;

Defined in: packages/blockly/core/bubbles/bubble.ts:707

Returns whether this bubble is movable or not.

Returns​

boolean

Implementation of​

IBubble.isMovable


startDrag()​

startDrag(): IBubble;

Defined in: packages/blockly/core/bubbles/bubble.ts:712

Starts a drag on the bubble.

Returns​

IBubble

Implementation of​

IBubble.startDrag


drag()​

drag(newLoc): void;

Defined in: packages/blockly/core/bubbles/bubble.ts:717

Drags the bubble to the given location.

Parameters​

ParameterType
newLocCoordinate

Returns​

void

Implementation of​

IBubble.drag


endDrag()​

endDrag(): void;

Defined in: packages/blockly/core/bubbles/bubble.ts:722

Ends the drag on the bubble.

Returns​

void

Implementation of​

IBubble.endDrag


revertDrag()​

revertDrag(): void;

Defined in: packages/blockly/core/bubbles/bubble.ts:727

Moves the bubble back to where it was at the start of a drag.

Returns​

void

Implementation of​

IBubble.revertDrag


select()​

select(): void;

Defined in: packages/blockly/core/bubbles/bubble.ts:731

Select this. Highlight it visually.

Returns​

void

Implementation of​

ISelectable.select


unselect()​

unselect(): void;

Defined in: packages/blockly/core/bubbles/bubble.ts:736

Unselect this. Unhighlight it visually.

Returns​

void

Implementation of​

ISelectable.unselect


getFocusableElement()​

getFocusableElement(): HTMLElement | SVGElement;

Defined in: packages/blockly/core/bubbles/bubble.ts:742

See IFocusableNode.getFocusableElement.

Returns​

HTMLElement | SVGElement

Implementation of​

IFocusableNode.getFocusableElement


getFocusableTree()​

getFocusableTree(): IFocusableTree;

Defined in: packages/blockly/core/bubbles/bubble.ts:747

See IFocusableNode.getFocusableTree.

Returns​

IFocusableTree

Implementation of​

IFocusableNode.getFocusableTree


onNodeFocus()​

onNodeFocus(): void;

Defined in: packages/blockly/core/bubbles/bubble.ts:752

See IFocusableNode.onNodeFocus.

Returns​

void

Implementation of​

IFocusableNode.onNodeFocus


onNodeBlur()​

onNodeBlur(): void;

Defined in: packages/blockly/core/bubbles/bubble.ts:762

See IFocusableNode.onNodeBlur.

Returns​

void

Implementation of​

IFocusableNode.onNodeBlur


canBeFocused()​

canBeFocused(): boolean;

Defined in: packages/blockly/core/bubbles/bubble.ts:767

See IFocusableNode.canBeFocused.

Returns​

boolean

Implementation of​

IFocusableNode.canBeFocused


getOwner()​

getOwner():
| IHasBubble & IFocusableNode
| undefined;

Defined in: packages/blockly/core/bubbles/bubble.ts:774

Returns the object that owns/hosts this bubble, if any.

Returns​

| IHasBubble & IFocusableNode | undefined


recomputeAriaContext()​

protected recomputeAriaContext(): void;

Defined in: packages/blockly/core/bubbles/bubble.ts:787

Recomputes the ARIA label and role for this bubble. This is automatically called during initialization, but implementations may find it useful to call this if the bubble's label should be changed.

Bubbles use a default non-specific label unless they're customized otherwise which is the responsibility of the bubble's owner rather than bubble implementations. Customization can be done via setAriaLabelProvider.

Returns​

void


setAriaLabelProvider()​

setAriaLabelProvider(provider): void;

Defined in: packages/blockly/core/bubbles/bubble.ts:815

Sets a custom ARIA label provider for this bubble, or null if it should be reset to use the default method.

Bubbles do not compute ARIA labels specifically to their implementation since they can be rather general-purpose. Instead, owners of the specific bubble instance (such as an icon) are responsible for defining custom label providers for their bubbles.

Note that calling this isn't sufficient for it to actually be used. recomputeAriaContext will likely also need to be called to actually apply the custom label to the bubble's focusable element.

Parameters​

ParameterType
providerAriaLabelProvider | null

Returns​

void


getAriaLabel()​

getAriaLabel(): string | null;

Defined in: packages/blockly/core/bubbles/bubble.ts:827

Returns the ARIA label to use for this bubble based on the provider set via setAriaLabelProvider. This will return null if the provider is absent or returns null.

Returns​

string | null

The ARIA label to use for this bubble, or null if one is not provided.