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.