ソースを参照

Maintain search field focus

Dan Kaplun 10 年 前
コミット
5e04e26f6a

+ 5 - 1
dist/extensions/angular/bootstrap-table-angular.js

@@ -1,6 +1,8 @@
 // JavaScript source code
 (function () {
   angular.module('bsTable', []).directive('bsTableControl', function () {
+    var SEARCH_SELECTOR = '.search input';
+    var CONTAINER_SELECTOR = '.bootstrap-table';
     return {
       restrict: 'EA',
       scope: {options: '='},
@@ -25,6 +27,7 @@
         $s.$watch('options', function (newOptions) {
           if (!newOptions) return;
 
+          var searchHasFocus = $el.closest(CONTAINER_SELECTOR).find(SEARCH_SELECTOR).is(':focus');
           if (options) {
             scroll = $el.bootstrapTable('getScrollPosition');
             $el.bootstrapTable('destroy');
@@ -36,10 +39,11 @@
           options = newOptions;
           $el.bootstrapTable(options);
           if (scroll) $el.bootstrapTable('scrollTo', scroll);
+          if (searchHasFocus) $el.closest(CONTAINER_SELECTOR).find(SEARCH_SELECTOR).focus(); // $el gets detached so have to recompute whole chain
         }, true);
         $(window).resize(function () {
           if (options) $el.bootstrapTable('resetView');
-        })
+        });
       }
     };
   })

ファイルの差分が大きいため隠しています
+ 1 - 1
dist/extensions/angular/bootstrap-table-angular.min.js


+ 5 - 1
docs/dist/extensions/angular/bootstrap-table-angular.js

@@ -1,6 +1,8 @@
 // JavaScript source code
 (function () {
   angular.module('bsTable', []).directive('bsTableControl', function () {
+    var SEARCH_SELECTOR = '.search input';
+    var CONTAINER_SELECTOR = '.bootstrap-table';
     return {
       restrict: 'EA',
       scope: {options: '='},
@@ -25,6 +27,7 @@
         $s.$watch('options', function (newOptions) {
           if (!newOptions) return;
 
+          var searchHasFocus = $el.closest(CONTAINER_SELECTOR).find(SEARCH_SELECTOR).is(':focus');
           if (options) {
             scroll = $el.bootstrapTable('getScrollPosition');
             $el.bootstrapTable('destroy');
@@ -36,10 +39,11 @@
           options = newOptions;
           $el.bootstrapTable(options);
           if (scroll) $el.bootstrapTable('scrollTo', scroll);
+          if (searchHasFocus) $el.closest(CONTAINER_SELECTOR).find(SEARCH_SELECTOR).focus(); // $el gets detached so have to recompute whole chain
         }, true);
         $(window).resize(function () {
           if (options) $el.bootstrapTable('resetView');
-        })
+        });
       }
     };
   })

ファイルの差分が大きいため隠しています
+ 1 - 1
docs/dist/extensions/angular/bootstrap-table-angular.min.js


+ 4 - 0
src/extensions/angular/bootstrap-table-angular.js

@@ -1,6 +1,8 @@
 // JavaScript source code
 (function () {
   angular.module('bsTable', []).directive('bsTableControl', function () {
+    var SEARCH_SELECTOR = '.search input';
+    var CONTAINER_SELECTOR = '.bootstrap-table';
     return {
       restrict: 'EA',
       scope: {options: '='},
@@ -25,6 +27,7 @@
         $s.$watch('options', function (newOptions) {
           if (!newOptions) return;
 
+          var searchHasFocus = $el.closest(CONTAINER_SELECTOR).find(SEARCH_SELECTOR).is(':focus');
           if (options) {
             scroll = $el.bootstrapTable('getScrollPosition');
             $el.bootstrapTable('destroy');
@@ -36,6 +39,7 @@
           options = newOptions;
           $el.bootstrapTable(options);
           if (scroll) $el.bootstrapTable('scrollTo', scroll);
+          if (searchHasFocus) $el.closest(CONTAINER_SELECTOR).find(SEARCH_SELECTOR).focus(); // $el gets detached so have to recompute whole chain
         }, true);
         $(window).resize(function () {
           if (options) $el.bootstrapTable('resetView');