Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBeat Schwarzentrub2019-12-03 12:58:09 +0000
committerBeat Schwarzentrub2019-12-03 16:57:37 +0000
commitada5bf02ea4b8512e78622389dd4b20149466164 (patch)
tree1890c989dbac963976bfbf05370cb894d5fffb76
parent8c6f4d095d7bdc5c0ea0f180b25728a4f1db7759 (diff)
downloadorg.eclipse.scout.rt-features/bschwarzent/focusmanager_100.tar.gz
org.eclipse.scout.rt-features/bschwarzent/focusmanager_100.tar.xz
org.eclipse.scout.rt-features/bschwarzent/focusmanager_100.zip
FocusManager: fix computation of focusable element for rule 'prepare'features/bschwarzent/focusmanager_100
-rw-r--r--eclipse-scout-core/src/focus/FocusManager.js2
-rw-r--r--eclipse-scout-core/test/focus/FocusManagerSpec.js16
2 files changed, 16 insertions, 2 deletions
diff --git a/eclipse-scout-core/src/focus/FocusManager.js b/eclipse-scout-core/src/focus/FocusManager.js
index a6dd528f52..3986bf02bc 100644
--- a/eclipse-scout-core/src/focus/FocusManager.js
+++ b/eclipse-scout-core/src/focus/FocusManager.js
@@ -162,7 +162,7 @@ export default class FocusManager {
*/
evaluateFocusRule($container, focusRuleOrElement) {
var elementToFocus;
- if (!focusRuleOrElement || focusRuleOrElement === FocusRule.AUTO) {
+ if (!focusRuleOrElement || scout.isOneOf(focusRuleOrElement, FocusRule.AUTO, FocusRule.PREPARE)) {
elementToFocus = this.findFirstFocusableElement($container);
} else if (focusRuleOrElement === FocusRule.NONE) {
elementToFocus = null;
diff --git a/eclipse-scout-core/test/focus/FocusManagerSpec.js b/eclipse-scout-core/test/focus/FocusManagerSpec.js
index 93e8f4d17c..4aec8962b2 100644
--- a/eclipse-scout-core/test/focus/FocusManagerSpec.js
+++ b/eclipse-scout-core/test/focus/FocusManagerSpec.js
@@ -9,7 +9,7 @@
* BSI Business Systems Integration AG - initial API and implementation
*/
import {FocusManagerSpecHelper, FormSpecHelper, TableSpecHelper, TreeSpecHelper} from '@eclipse-scout/testing';
-import {Device, focusUtils, scout} from '../../src/index';
+import {Device, FocusRule, focusUtils, scout} from '../../src/index';
/* global FocusManagerSpecHelper */
jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000;
@@ -307,4 +307,18 @@ describe('scout.FocusManager', function() {
focusManager.uninstallFocusContext($container1);
});
});
+
+ describe('evaluateFocusRule', function() {
+ it('should find first focusable element', function() {
+ var $container = createDivWithTwoInputs().appendTo(session.$entryPoint);
+ focusManager.installFocusContext($container);
+
+ expect(focusManager.evaluateFocusRule($container, FocusRule.NONE)).toBe(null);
+ expect(focusManager.evaluateFocusRule($container, FocusRule.AUTO)).toBe($container.children('.input1')[0]);
+ expect(focusManager.evaluateFocusRule($container, FocusRule.PREPARE)).toBe($container.children('.input1')[0]);
+ expect(focusManager.evaluateFocusRule($container, null)).toBe($container.children('.input1')[0]);
+ expect(focusManager.evaluateFocusRule($container, 'invalid-rule')).toBe('invalid-rule');
+ expect(focusManager.evaluateFocusRule($container, $container.children('.input2')[0])).toBe($container.children('.input2')[0]);
+ });
+ });
});

Back to the top