Repository: ambari
Updated Branches:
  refs/heads/trunk 33ed5921d -> ad9b02b15


AMBARI-7728 Dialog overlays do not receive keyboard focus (apenniston via jaoki)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/ad9b02b1
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/ad9b02b1
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/ad9b02b1

Branch: refs/heads/trunk
Commit: ad9b02b155d3b1e7f9a47b20a5dc4328fe016081
Parents: 33ed592
Author: Jun Aoki <ja...@apache.org>
Authored: Fri Oct 24 18:04:46 2014 -0700
Committer: Jun Aoki <ja...@apache.org>
Committed: Fri Oct 24 18:04:46 2014 -0700

----------------------------------------------------------------------
 ambari-web/app/assets/test/tests.js             |  1 +
 ambari-web/app/views/common/modal_popup.js      | 21 ++++++---
 .../test/views/common/modal_popup_test.js       | 46 ++++++++++++++++++++
 3 files changed, 62 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/ad9b02b1/ambari-web/app/assets/test/tests.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/assets/test/tests.js 
b/ambari-web/app/assets/test/tests.js
index ed515cb..3061733 100644
--- a/ambari-web/app/assets/test/tests.js
+++ b/ambari-web/app/assets/test/tests.js
@@ -140,6 +140,7 @@ var files = ['test/init_model_test',
   'test/views/common/table_view_test',
   'test/views/common/quick_link_view_test',
   'test/views/common/rolling_restart_view_test',
+  'test/views/common/modal_popup_test',
   'test/views/common/configs/config_history_flow_test',
   'test/views/main/dashboard_test',
   'test/views/main/menu_test',

http://git-wip-us.apache.org/repos/asf/ambari/blob/ad9b02b1/ambari-web/app/views/common/modal_popup.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/common/modal_popup.js 
b/ambari-web/app/views/common/modal_popup.js
index 223a77a..78c9387 100644
--- a/ambari-web/app/views/common/modal_popup.js
+++ b/ambari-web/app/views/common/modal_popup.js
@@ -63,21 +63,30 @@ App.ModalPopup = Ember.View.extend({
 
   didInsertElement: function () {
     if (this.autoHeight) {
-      var block = this.$().find('#modal > .modal-body').first();
-      block.css('max-height', $(window).height() - block.offset().top - 300 + 
$(window).scrollTop()); // fix popup height
+      var block = $('#modal > .modal-body').first();
+      if(block.offset()) {
+        block.css('max-height', $(window).height() - block.offset().top  - 300 
+ $(window).scrollTop()); // fix popup height
+      }
     }
     // If popup is opened from another popup it should be displayed above
-    var existedPopups = $(document).find('.modal-backdrop');
+    var existedPopups = $('.modal-backdrop');
     if (existedPopups) {
       var maxZindex = 1;
       existedPopups.each(function(index, popup) {
         if ($(popup).css('z-index') > maxZindex) {
           maxZindex = $(popup).css('z-index');
-        }
+      }
       });
-      this.$().find('.modal-backdrop').css('z-index', maxZindex * 2);
-      this.$().find('.modal').css('z-index', maxZindex * 2 + 1);
+      $('.modal-backdrop').css('z-index', maxZindex * 2);
+      $('.modal').css('z-index', maxZindex * 2 + 1);
     }
+
+    var firstInputElement = 
$('#modal').find(':input').not(':disabled').first();
+    this.focusElement(firstInputElement);
+  },
+
+  focusElement: function(elem) {
+    elem.focus();
   },
 
   fitHeight: function () {

http://git-wip-us.apache.org/repos/asf/ambari/blob/ad9b02b1/ambari-web/test/views/common/modal_popup_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/views/common/modal_popup_test.js 
b/ambari-web/test/views/common/modal_popup_test.js
new file mode 100644
index 0000000..cd473aa
--- /dev/null
+++ b/ambari-web/test/views/common/modal_popup_test.js
@@ -0,0 +1,46 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var App = require('app');
+require('views/common/modal_popup');
+
+describe('App.ModalPopup', function() {
+
+  var popup;
+
+  beforeEach(function () {
+    popup = App.ModalPopup.create(
+        {
+          primary: 'test',
+          secondary: 'test',
+          header: 'test',
+          body: '<p>text</p><input type="text"><input type="checkbox"><input 
type="button">'
+        }
+    );
+  });
+
+  describe('#didInsertElement', function () {
+
+    it('should focus on the first input element', function () {
+      var spy = sinon.spy(popup, "focusElement");
+      popup.didInsertElement();
+      expect(spy.called);
+    });
+  });
+
+});
\ No newline at end of file

Reply via email to