FocusManager: fix computation of focusable element for rule 'prepare'
diff --git a/eclipse-scout-core/src/focus/FocusManager.js b/eclipse-scout-core/src/focus/FocusManager.js
index a6dd528..3986bf0 100644
--- a/eclipse-scout-core/src/focus/FocusManager.js
+++ b/eclipse-scout-core/src/focus/FocusManager.js
@@ -162,7 +162,7 @@
*/
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 93e8f4d..4aec896 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 @@
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]);
+ });
+ });
});