From f2f334c3e33112a2e127da0a7bc0e22cbf96495d Mon Sep 17 00:00:00 2001 From: Aaron Dodson Date: Thu, 30 Apr 2026 08:29:24 -0700 Subject: [PATCH 1/2] chore: Improve docs on positionables --- packages/docs/docs/guides/configure/web/focus.mdx | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/docs/docs/guides/configure/web/focus.mdx b/packages/docs/docs/guides/configure/web/focus.mdx index f4290cfc1f0..fe7d4af85e4 100644 --- a/packages/docs/docs/guides/configure/web/focus.mdx +++ b/packages/docs/docs/guides/configure/web/focus.mdx @@ -370,4 +370,14 @@ implement [`IPositionable`](/reference/blockly.ipositionable). Examples are the trashcan and the backpack in the [backpack plugin](https://www.npmjs.com/package/@blockly/workspace-backpack). -Positionables are not yet integrated into the focus system. +Built-in positionables are integrated with the focus system, but if you create +your own you should ensure that they work well with it. The built-in ones follow +this pattern: + +* Implement `IFocusableNode` +* Ensure that the root DOM element (the one returned from + `getFocusableElement()`) has `tabindex="0" + +Depending on the purpose of your positionable, you should also consider +registering a keyboard shortcut to perform its action (e.g. zoom in) or to +directly focus it (e.g. a workspace search field). From e0b8f6e6677a33859e141b7d4637891ca312293c Mon Sep 17 00:00:00 2001 From: Aaron Dodson Date: Fri, 1 May 2026 10:41:07 -0700 Subject: [PATCH 2/2] fix: Fix docs --- packages/docs/docs/guides/configure/web/focus.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/docs/docs/guides/configure/web/focus.mdx b/packages/docs/docs/guides/configure/web/focus.mdx index fe7d4af85e4..cdd618b91e8 100644 --- a/packages/docs/docs/guides/configure/web/focus.mdx +++ b/packages/docs/docs/guides/configure/web/focus.mdx @@ -375,8 +375,8 @@ your own you should ensure that they work well with it. The built-in ones follow this pattern: * Implement `IFocusableNode` -* Ensure that the root DOM element (the one returned from - `getFocusableElement()`) has `tabindex="0" +* Ensure that the focusable DOM element (the one returned from + `getFocusableElement()`) has `tabindex="0"` Depending on the purpose of your positionable, you should also consider registering a keyboard shortcut to perform its action (e.g. zoom in) or to