mirror of
https://github.com/google/blockly.git
synced 2026-03-17 18:50:11 +01:00
feat!: Make everything ISelectable focusable (#9004)
* feat!: Make bubbles, comments, and icons focusable * feat!: Make ISelectable and ICopyable focusable. * feat: Consolidate selection calls. Now everything is based on focus with selection only being used as a proxy. * feat: Invert responsibility for setSelected(). Now setSelected() is only for quasi-external use. * feat: Push up shadow check to getters. Needed new common-level helper. * chore: Lint fixes. * feat!: Allow IFocusableNode to disable focus. * chore: post-merge lint fixes * fix: Fix tests + text bubble focusing. This fixed then regressed a circular dependency causing the node and advanced compilation steps to fail. This investigation is ongoing. * fix: Clean up & fix imports. This ensures the node and advanced compilation test steps now pass. * fix: Lint fixes + revert commented out logic. * chore: Remove unnecessary cast. Addresses reviewer comment. * fix: Some issues and a bunch of clean-ups. This addresses a bunch of review comments, and fixes selecting workspace comments. * chore: Lint fix. * fix: Remove unnecessary shadow consideration. * chore: Revert import. * chore: Some doc updates & added a warn statement.
This commit is contained in:
@@ -4,7 +4,6 @@
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
import * as common from '../../build/src/core/common.js';
|
||||
import {ConnectionType} from '../../build/src/core/connection_type.js';
|
||||
import {EventType} from '../../build/src/core/events/type.js';
|
||||
import * as eventUtils from '../../build/src/core/events/utils.js';
|
||||
@@ -463,20 +462,6 @@ suite('Blocks', function () {
|
||||
teardown(function () {
|
||||
workspaceTeardown.call(this, this.workspace);
|
||||
});
|
||||
|
||||
test('Disposing selected shadow unhighlights parent', function () {
|
||||
const parentBlock = this.parentBlock;
|
||||
common.setSelected(this.shadowChild);
|
||||
assert.isTrue(
|
||||
parentBlock.pathObject.svgRoot.classList.contains('blocklySelected'),
|
||||
'Expected parent to be highlighted after selecting shadow child',
|
||||
);
|
||||
this.shadowChild.dispose();
|
||||
assert.isFalse(
|
||||
parentBlock.pathObject.svgRoot.classList.contains('blocklySelected'),
|
||||
'Expected parent to be unhighlighted after deleting shadow child',
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -31,6 +31,10 @@ class FocusableNodeImpl {
|
||||
onNodeFocus() {}
|
||||
|
||||
onNodeBlur() {}
|
||||
|
||||
canBeFocused() {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
class FocusableTreeImpl {
|
||||
|
||||
@@ -29,6 +29,10 @@ class FocusableNodeImpl {
|
||||
onNodeFocus() {}
|
||||
|
||||
onNodeBlur() {}
|
||||
|
||||
canBeFocused() {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
class FocusableTreeImpl {
|
||||
|
||||
@@ -34,6 +34,22 @@ export class MockIcon {
|
||||
onLocationChange() {}
|
||||
|
||||
onClick() {}
|
||||
|
||||
getFocusableElement() {
|
||||
throw new Error('Unsupported operation in mock.');
|
||||
}
|
||||
|
||||
getFocusableTree() {
|
||||
throw new Error('Unsupported operation in mock.');
|
||||
}
|
||||
|
||||
onNodeFocus() {}
|
||||
|
||||
onNodeBlur() {}
|
||||
|
||||
canBeFocused() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
export class MockSerializableIcon extends MockIcon {
|
||||
|
||||
Reference in New Issue
Block a user