Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
63156f9
Remove old keyboard navigation plugin
mjgallag Mar 23, 2026
a502616
Update dependencies for Blockly 12
mjgallag Mar 11, 2026
178fe57
Blockly 12 renamed icon and checkbox CSS classes
mjgallag Mar 29, 2026
34f8f39
Blockly 12 no longer preserves IDs when pasting
mjgallag Mar 12, 2026
e1b6cf8
Blockly 12 selects next block after deleting a block
mjgallag Mar 24, 2026
f84c3e2
Blockly 12 focuses workspace after deleting comment
mjgallag Apr 14, 2026
e0230a4
Blockly 12 temporarily removes highlight during interactions
mjgallag Apr 6, 2026
88e32a7
Blockly 12 deselects block when opening toolbox
mjgallag Apr 6, 2026
6a51947
Blockly 12 deselects block when clicking comment/mutator icon
mjgallag Apr 7, 2026
9bdc14e
Blockly 12 uses ephemeral focus during context menus and field edits
mjgallag Apr 7, 2026
1f5e6a0
Keep multiselection when clicking comment/mutator icon
mjgallag Apr 7, 2026
841ef59
Blockly 12 renamed setEnabled to setDisabledReason
mjgallag Mar 24, 2026
9784834
Blockly 12 recreates DropDownDiv when clearing it
mjgallag Apr 1, 2026
712191a
Blockly 12 added FocusManager API to workspace
mjgallag Apr 1, 2026
545790e
Remove no-op setSelected(null) inside !getSelected() check
mjgallag Apr 8, 2026
cf76c28
Blockly 12 replaced setSelected(null) with focusTree(workspace)
mjgallag Apr 7, 2026
1ce23c9
Blockly 12 made ISelectable extend IFocusableNode
mjgallag Apr 7, 2026
3b63933
Blockly 12 asynchronously focuses pasted blocks
mjgallag Apr 7, 2026
c6dae73
Blockly 12 dispatches right clicks via IContextMenu
mjgallag Apr 7, 2026
06b0fe2
Blockly 12 deselects multiselection on empty space click
mjgallag Apr 8, 2026
51c32bd
Blockly 12 fires focusout before FocusManager updates
mjgallag Apr 8, 2026
3dce8ac
Blockly 12 deselects multiselection during drag
mjgallag Apr 14, 2026
db5245e
Update Blockly to 12.5.1
mjgallag Apr 8, 2026
f69960d
Blockly 12 dropped Ctrl shortcut key on Mac
mjgallag Apr 8, 2026
230ed0d
Update Backpack to 7.0.10
mjgallag Apr 8, 2026
5fd4e8f
Add new keyboard navigation plugin
mjgallag Apr 16, 2026
63c862e
Update context menu tests for keyboard nav labels
mjgallag Apr 16, 2026
4b0b2bb
Keyboard nav expects shortcuts registered under core names
mjgallag Apr 16, 2026
221325d
Fix copy/cut disabled in keyboard nav context menus
mjgallag Apr 17, 2026
a049992
Add multiselect counts to keyboard nav context menus
mjgallag Apr 17, 2026
375e862
Fix remaining block not highlighted after multiselect cut
mjgallag Apr 17, 2026
478dc48
Fix paste disabled in keyboard nav context menus
mjgallag Apr 17, 2026
42bbce1
Remove duplicate clipboard context menu items when using keyboard nav
mjgallag Apr 17, 2026
2f85b35
Fix workspace context menu empty via keyboard nav
mjgallag Apr 18, 2026
121d911
Add navigation for multiselect
mjgallag Apr 18, 2026
bcedae9
Add right-click context menu tests
mjgallag Apr 20, 2026
31bd1c0
Add Cmd+Enter context menu shortcut for multiselect
mjgallag Apr 19, 2026
200fd0c
Hide move menu item for multiselect and right-click comments
mjgallag Apr 20, 2026
684f287
Add tests for dragging blocks out of stacks
mjgallag Apr 19, 2026
72c4534
Add single-select keyboard move tests
mjgallag Apr 19, 2026
ca1258c
Add configurable keybindings for keyboard navigation shortcuts
mjgallag Apr 20, 2026
f26447c
Fix D duplicate multiselect shortcut
mjgallag May 16, 2026
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
17 changes: 10 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -134,13 +134,15 @@ scope of its wrapped input function.
For more information, please check out the following [issue page](https://github.com/mit-cml/workspace-multiselect/issues/50).

### Note on keyboard navigation plugin
Currently, the keyboard navigation plugin has no compatibility issues with the multiselect plugin. It is enabled by default
in the test files. However, one thing that developers and users should note is that the regular Blockly core's copy/cut/paste shortcuts
and multiselect plugin's copy/cut/paste shortcuts are completely disabled when the keyboard navigation mode is turned on. This was assumed
to be the expected behavior of the user as it defeats the purpose of having the keyboard navigation mode turned on and the user would try to
select blocks using the cursor and copy/cut/paste with that selection. However, if a developer wants to allow for either copy/cut/paste behavior
(Blockly Core or multiselect plugin) while the keyboard navigation mode is turned on, we would have to make the following changes described in this
[issue](https://github.com/google/blockly-samples/issues/2424).
The keyboard navigation plugin must be initialized after the multiselect plugin. Set `multiselectCopyPaste.menu` to `false` to avoid duplicate clipboard context menu items, pass `allowCrossWorkspacePaste: true` to keyboard navigation, and call `onKeyboardNavigationInit()` after:

```javascript
const multiselectPlugin = new Multiselect(workspace);
multiselectPlugin.init({multiselectCopyPaste: {menu: false}});

new KeyboardNavigation(workspace, {allowCrossWorkspacePaste: true});
multiselectPlugin.onKeyboardNavigationInit();
```

### Note on disable top blocks plugin
The disable top blocks plugin has to be initialized after the multiselect plugin. The main reason behind this is that
Expand All @@ -151,6 +153,7 @@ customization. If we install the disable top blocks plugin after the multiselect
## API

- `Multiselect.init`: Initialize the plugin.
- `Multiselect.onKeyboardNavigationInit`: Call after initializing the keyboard navigation plugin.
- `Multiselect.dispose`: Dispose the plugin.
- `MultiselectDraggable`: The customized draggable object unique to each workspace that contains the blocks in the multiselection.
- `dragSelectionWeakMap`: The WeakMap storing set of currently selected block ids by workspace svg.
Expand Down
Loading