bootstrap-table-rails 1.16.0 → 1.18.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (104) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +142 -33
  3. data/lib/bootstrap-table-rails/version.rb +1 -1
  4. data/vendor/assets/javascripts/bootstrap-table/bootstrap-table-locale-all.js +1017 -129
  5. data/vendor/assets/javascripts/bootstrap-table/bootstrap-table-vue.esm.js +7 -1
  6. data/vendor/assets/javascripts/bootstrap-table/bootstrap-table-vue.js +7 -1
  7. data/vendor/assets/javascripts/bootstrap-table/bootstrap-table.css +18 -8
  8. data/vendor/assets/javascripts/bootstrap-table/bootstrap-table.js +1055 -457
  9. data/vendor/assets/javascripts/bootstrap-table/extensions/addrbar/bootstrap-table-addrbar.js +58 -13
  10. data/vendor/assets/javascripts/bootstrap-table/extensions/auto-refresh/bootstrap-table-auto-refresh.js +64 -14
  11. data/vendor/assets/javascripts/bootstrap-table/extensions/cookie/bootstrap-table-cookie.js +1040 -241
  12. data/vendor/assets/javascripts/bootstrap-table/extensions/copy-rows/bootstrap-table-copy-rows.js +84 -17
  13. data/vendor/assets/javascripts/bootstrap-table/extensions/custom-view/bootstrap-table-custom-view.js +1198 -0
  14. data/vendor/assets/javascripts/bootstrap-table/extensions/defer-url/bootstrap-table-defer-url.js +1 -1
  15. data/vendor/assets/javascripts/bootstrap-table/extensions/editable/bootstrap-table-editable.js +1054 -209
  16. data/vendor/assets/javascripts/bootstrap-table/extensions/export/bootstrap-table-export.js +110 -31
  17. data/vendor/assets/javascripts/bootstrap-table/extensions/filter-control/bootstrap-table-filter-control.js +928 -726
  18. data/vendor/assets/javascripts/bootstrap-table/extensions/{cell-input/bootstrap-table-cell-input.js → filter-control/utils.js} +1152 -1028
  19. data/vendor/assets/javascripts/bootstrap-table/extensions/fixed-columns/bootstrap-table-fixed-columns.js +52 -1
  20. data/vendor/assets/javascripts/bootstrap-table/extensions/group-by-v2/bootstrap-table-group-by.css +3 -2
  21. data/vendor/assets/javascripts/bootstrap-table/extensions/group-by-v2/bootstrap-table-group-by.js +196 -523
  22. data/vendor/assets/javascripts/bootstrap-table/extensions/i18n-enhance/bootstrap-table-i18n-enhance.js +1 -1
  23. data/vendor/assets/javascripts/bootstrap-table/extensions/key-events/bootstrap-table-key-events.js +3 -2
  24. data/vendor/assets/javascripts/bootstrap-table/extensions/mobile/bootstrap-table-mobile.js +6 -8
  25. data/vendor/assets/javascripts/bootstrap-table/extensions/multiple-sort/bootstrap-table-multiple-sort.js +122 -470
  26. data/vendor/assets/javascripts/bootstrap-table/extensions/page-jump-to/bootstrap-table-page-jump-to.js +27 -4
  27. data/vendor/assets/javascripts/bootstrap-table/extensions/pipeline/bootstrap-table-pipeline.js +9 -10
  28. data/vendor/assets/javascripts/bootstrap-table/extensions/print/bootstrap-table-print.js +267 -35
  29. data/vendor/assets/javascripts/bootstrap-table/extensions/reorder-columns/bootstrap-table-reorder-columns.js +17 -6
  30. data/vendor/assets/javascripts/bootstrap-table/extensions/reorder-rows/bootstrap-table-reorder-rows.js +6 -3
  31. data/vendor/assets/javascripts/bootstrap-table/extensions/resizable/bootstrap-table-resizable.js +1 -1
  32. data/vendor/assets/javascripts/bootstrap-table/extensions/sticky-header/bootstrap-table-sticky-header.js +21 -7
  33. data/vendor/assets/javascripts/bootstrap-table/extensions/toolbar/bootstrap-table-toolbar.js +120 -28
  34. data/vendor/assets/javascripts/bootstrap-table/extensions/treegrid/bootstrap-table-treegrid.js +14 -1
  35. data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-af-ZA.js +17 -2
  36. data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-ar-SA.js +17 -2
  37. data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-bg-BG.js +777 -0
  38. data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-ca-ES.js +17 -2
  39. data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-cs-CZ.js +17 -2
  40. data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-da-DK.js +17 -2
  41. data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-de-DE.js +18 -3
  42. data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-el-GR.js +17 -2
  43. data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-en-US.js +17 -2
  44. data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-es-AR.js +16 -1
  45. data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-es-CL.js +33 -18
  46. data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-es-CR.js +16 -1
  47. data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-es-ES.js +31 -16
  48. data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-es-MX.js +16 -1
  49. data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-es-NI.js +16 -1
  50. data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-es-SP.js +16 -1
  51. data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-et-EE.js +17 -2
  52. data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-eu-EU.js +17 -2
  53. data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-fa-IR.js +17 -2
  54. data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-fi-FI.js +17 -2
  55. data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-fr-BE.js +16 -1
  56. data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-fr-CH.js +16 -1
  57. data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-fr-FR.js +25 -10
  58. data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-fr-LU.js +16 -1
  59. data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-he-IL.js +17 -2
  60. data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-hr-HR.js +17 -2
  61. data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-hu-HU.js +17 -2
  62. data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-id-ID.js +17 -2
  63. data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-it-IT.js +32 -17
  64. data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-ja-JP.js +17 -2
  65. data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-ka-GE.js +17 -2
  66. data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-ko-KR.js +17 -2
  67. data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-ms-MY.js +17 -2
  68. data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-nb-NO.js +17 -2
  69. data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-nl-BE.js +17 -2
  70. data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-nl-NL.js +17 -2
  71. data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-pl-PL.js +35 -19
  72. data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-pt-BR.js +19 -3
  73. data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-pt-PT.js +17 -2
  74. data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-ro-RO.js +17 -2
  75. data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-ru-RU.js +17 -2
  76. data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-sk-SK.js +31 -16
  77. data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-sr-Cyrl-RS.js +17 -2
  78. data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-sr-Latn-RS.js +16 -1
  79. data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-sv-SE.js +17 -2
  80. data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-th-TH.js +17 -2
  81. data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-tr-TR.js +17 -2
  82. data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-uk-UA.js +17 -2
  83. data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-ur-PK.js +17 -2
  84. data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-uz-Latn-UZ.js +17 -2
  85. data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-vi-VN.js +17 -2
  86. data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-zh-CN.js +17 -2
  87. data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-zh-TW.js +16 -1
  88. data/vendor/assets/javascripts/bootstrap-table/themes/bootstrap-table/bootstrap-table.css +781 -0
  89. data/vendor/assets/javascripts/bootstrap-table/themes/bootstrap-table/bootstrap-table.js +1049 -0
  90. data/vendor/assets/javascripts/bootstrap-table/themes/bootstrap-table/fonts/bootstrap-table.eot +0 -0
  91. data/vendor/assets/javascripts/bootstrap-table/themes/bootstrap-table/fonts/bootstrap-table.svg +28 -0
  92. data/vendor/assets/javascripts/bootstrap-table/themes/bootstrap-table/fonts/bootstrap-table.ttf +0 -0
  93. data/vendor/assets/javascripts/bootstrap-table/themes/bootstrap-table/fonts/bootstrap-table.woff +0 -0
  94. data/vendor/assets/javascripts/bootstrap-table/themes/bulma/bootstrap-table-bulma.css +17 -7
  95. data/vendor/assets/javascripts/bootstrap-table/themes/bulma/bootstrap-table-bulma.js +55 -3
  96. data/vendor/assets/javascripts/bootstrap-table/themes/foundation/bootstrap-table-foundation.css +22 -7
  97. data/vendor/assets/javascripts/bootstrap-table/themes/foundation/bootstrap-table-foundation.js +63 -5
  98. data/vendor/assets/javascripts/bootstrap-table/themes/materialize/bootstrap-table-materialize.css +22 -7
  99. data/vendor/assets/javascripts/bootstrap-table/themes/materialize/bootstrap-table-materialize.js +63 -5
  100. data/vendor/assets/javascripts/bootstrap-table/themes/semantic/bootstrap-table-semantic.css +17 -7
  101. data/vendor/assets/javascripts/bootstrap-table/themes/semantic/bootstrap-table-semantic.js +54 -2
  102. metadata +10 -4
  103. data/vendor/assets/javascripts/bootstrap-table/extensions/accent-neutralise/bootstrap-table-accent-neutralise.js +0 -2647
  104. data/vendor/assets/javascripts/bootstrap-table/extensions/cell-input/bootstrap-table-cell-input.css +0 -12
@@ -4,7 +4,7 @@
4
4
  (global = global || self, factory(global.jQuery));
5
5
  }(this, (function ($) { 'use strict';
6
6
 
7
- $ = $ && $.hasOwnProperty('default') ? $['default'] : $;
7
+ $ = $ && Object.prototype.hasOwnProperty.call($, 'default') ? $['default'] : $;
8
8
 
9
9
  var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
10
10
 
@@ -526,33 +526,10 @@
526
526
  }
527
527
  };
528
528
 
529
- var aFunction$1 = function (it) {
530
- if (typeof it != 'function') {
531
- throw TypeError(String(it) + ' is not a function');
532
- } return it;
533
- };
534
-
535
- // optional / simple context binding
536
- var bindContext = function (fn, that, length) {
537
- aFunction$1(fn);
538
- if (that === undefined) return fn;
539
- switch (length) {
540
- case 0: return function () {
541
- return fn.call(that);
542
- };
543
- case 1: return function (a) {
544
- return fn.call(that, a);
545
- };
546
- case 2: return function (a, b) {
547
- return fn.call(that, a, b);
548
- };
549
- case 3: return function (a, b, c) {
550
- return fn.call(that, a, b, c);
551
- };
552
- }
553
- return function (/* ...args */) {
554
- return fn.apply(that, arguments);
555
- };
529
+ // `IsArray` abstract operation
530
+ // https://tc39.github.io/ecma262/#sec-isarray
531
+ var isArray = Array.isArray || function isArray(arg) {
532
+ return classofRaw(arg) == 'Array';
556
533
  };
557
534
 
558
535
  // `ToObject` abstract operation
@@ -561,10 +538,10 @@
561
538
  return Object(requireObjectCoercible(argument));
562
539
  };
563
540
 
564
- // `IsArray` abstract operation
565
- // https://tc39.github.io/ecma262/#sec-isarray
566
- var isArray = Array.isArray || function isArray(arg) {
567
- return classofRaw(arg) == 'Array';
541
+ var createProperty = function (object, key, value) {
542
+ var propertyKey = toPrimitive(key);
543
+ if (propertyKey in object) objectDefineProperty.f(object, propertyKey, createPropertyDescriptor(0, value));
544
+ else object[propertyKey] = value;
568
545
  };
569
546
 
570
547
  var nativeSymbol = !!Object.getOwnPropertySymbols && !fails(function () {
@@ -607,6 +584,119 @@
607
584
  } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);
608
585
  };
609
586
 
587
+ var userAgent = getBuiltIn('navigator', 'userAgent') || '';
588
+
589
+ var process = global_1.process;
590
+ var versions = process && process.versions;
591
+ var v8 = versions && versions.v8;
592
+ var match, version;
593
+
594
+ if (v8) {
595
+ match = v8.split('.');
596
+ version = match[0] + match[1];
597
+ } else if (userAgent) {
598
+ match = userAgent.match(/Edge\/(\d+)/);
599
+ if (!match || match[1] >= 74) {
600
+ match = userAgent.match(/Chrome\/(\d+)/);
601
+ if (match) version = match[1];
602
+ }
603
+ }
604
+
605
+ var v8Version = version && +version;
606
+
607
+ var SPECIES$1 = wellKnownSymbol('species');
608
+
609
+ var arrayMethodHasSpeciesSupport = function (METHOD_NAME) {
610
+ // We can't use this feature detection in V8 since it causes
611
+ // deoptimization and serious performance degradation
612
+ // https://github.com/zloirock/core-js/issues/677
613
+ return v8Version >= 51 || !fails(function () {
614
+ var array = [];
615
+ var constructor = array.constructor = {};
616
+ constructor[SPECIES$1] = function () {
617
+ return { foo: 1 };
618
+ };
619
+ return array[METHOD_NAME](Boolean).foo !== 1;
620
+ });
621
+ };
622
+
623
+ var IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');
624
+ var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;
625
+ var MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';
626
+
627
+ // We can't use this feature detection in V8 since it causes
628
+ // deoptimization and serious performance degradation
629
+ // https://github.com/zloirock/core-js/issues/679
630
+ var IS_CONCAT_SPREADABLE_SUPPORT = v8Version >= 51 || !fails(function () {
631
+ var array = [];
632
+ array[IS_CONCAT_SPREADABLE] = false;
633
+ return array.concat()[0] !== array;
634
+ });
635
+
636
+ var SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');
637
+
638
+ var isConcatSpreadable = function (O) {
639
+ if (!isObject(O)) return false;
640
+ var spreadable = O[IS_CONCAT_SPREADABLE];
641
+ return spreadable !== undefined ? !!spreadable : isArray(O);
642
+ };
643
+
644
+ var FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;
645
+
646
+ // `Array.prototype.concat` method
647
+ // https://tc39.github.io/ecma262/#sec-array.prototype.concat
648
+ // with adding support of @@isConcatSpreadable and @@species
649
+ _export({ target: 'Array', proto: true, forced: FORCED }, {
650
+ concat: function concat(arg) { // eslint-disable-line no-unused-vars
651
+ var O = toObject(this);
652
+ var A = arraySpeciesCreate(O, 0);
653
+ var n = 0;
654
+ var i, k, length, len, E;
655
+ for (i = -1, length = arguments.length; i < length; i++) {
656
+ E = i === -1 ? O : arguments[i];
657
+ if (isConcatSpreadable(E)) {
658
+ len = toLength(E.length);
659
+ if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);
660
+ for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);
661
+ } else {
662
+ if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);
663
+ createProperty(A, n++, E);
664
+ }
665
+ }
666
+ A.length = n;
667
+ return A;
668
+ }
669
+ });
670
+
671
+ var aFunction$1 = function (it) {
672
+ if (typeof it != 'function') {
673
+ throw TypeError(String(it) + ' is not a function');
674
+ } return it;
675
+ };
676
+
677
+ // optional / simple context binding
678
+ var bindContext = function (fn, that, length) {
679
+ aFunction$1(fn);
680
+ if (that === undefined) return fn;
681
+ switch (length) {
682
+ case 0: return function () {
683
+ return fn.call(that);
684
+ };
685
+ case 1: return function (a) {
686
+ return fn.call(that, a);
687
+ };
688
+ case 2: return function (a, b) {
689
+ return fn.call(that, a, b);
690
+ };
691
+ case 3: return function (a, b, c) {
692
+ return fn.call(that, a, b, c);
693
+ };
694
+ }
695
+ return function (/* ...args */) {
696
+ return fn.apply(that, arguments);
697
+ };
698
+ };
699
+
610
700
  var push = [].push;
611
701
 
612
702
  // `Array.prototype.{ forEach, map, filter, some, every, find, findIndex }` methods implementation
@@ -667,42 +757,6 @@
667
757
  findIndex: createMethod$1(6)
668
758
  };
669
759
 
670
- var userAgent = getBuiltIn('navigator', 'userAgent') || '';
671
-
672
- var process = global_1.process;
673
- var versions = process && process.versions;
674
- var v8 = versions && versions.v8;
675
- var match, version;
676
-
677
- if (v8) {
678
- match = v8.split('.');
679
- version = match[0] + match[1];
680
- } else if (userAgent) {
681
- match = userAgent.match(/Edge\/(\d+)/);
682
- if (!match || match[1] >= 74) {
683
- match = userAgent.match(/Chrome\/(\d+)/);
684
- if (match) version = match[1];
685
- }
686
- }
687
-
688
- var v8Version = version && +version;
689
-
690
- var SPECIES$1 = wellKnownSymbol('species');
691
-
692
- var arrayMethodHasSpeciesSupport = function (METHOD_NAME) {
693
- // We can't use this feature detection in V8 since it causes
694
- // deoptimization and serious performance degradation
695
- // https://github.com/zloirock/core-js/issues/677
696
- return v8Version >= 51 || !fails(function () {
697
- var array = [];
698
- var constructor = array.constructor = {};
699
- constructor[SPECIES$1] = function () {
700
- return { foo: 1 };
701
- };
702
- return array[METHOD_NAME](Boolean).foo !== 1;
703
- });
704
- };
705
-
706
760
  var $filter = arrayIteration.filter;
707
761
 
708
762
 
@@ -871,12 +925,6 @@
871
925
  }
872
926
  });
873
927
 
874
- var createProperty = function (object, key, value) {
875
- var propertyKey = toPrimitive(key);
876
- if (propertyKey in object) objectDefineProperty.f(object, propertyKey, createPropertyDescriptor(0, value));
877
- else object[propertyKey] = value;
878
- };
879
-
880
928
  var SPECIES$2 = wellKnownSymbol('species');
881
929
  var nativeSlice = [].slice;
882
930
  var max$1 = Math.max;
@@ -926,11 +974,11 @@
926
974
  // Old WebKit
927
975
  var SLOPPY_METHOD$1 = sloppyArrayMethod('sort');
928
976
 
929
- var FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || SLOPPY_METHOD$1;
977
+ var FORCED$1 = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || SLOPPY_METHOD$1;
930
978
 
931
979
  // `Array.prototype.sort` method
932
980
  // https://tc39.github.io/ecma262/#sec-array.prototype.sort
933
- _export({ target: 'Array', proto: true, forced: FORCED }, {
981
+ _export({ target: 'Array', proto: true, forced: FORCED$1 }, {
934
982
  sort: function sort(comparefn) {
935
983
  return comparefn === undefined
936
984
  ? nativeSort.call(toObject(this))
@@ -1010,405 +1058,6 @@
1010
1058
  assign: objectAssign
1011
1059
  });
1012
1060
 
1013
- // `RegExp.prototype.flags` getter implementation
1014
- // https://tc39.github.io/ecma262/#sec-get-regexp.prototype.flags
1015
- var regexpFlags = function () {
1016
- var that = anObject(this);
1017
- var result = '';
1018
- if (that.global) result += 'g';
1019
- if (that.ignoreCase) result += 'i';
1020
- if (that.multiline) result += 'm';
1021
- if (that.dotAll) result += 's';
1022
- if (that.unicode) result += 'u';
1023
- if (that.sticky) result += 'y';
1024
- return result;
1025
- };
1026
-
1027
- // babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError,
1028
- // so we use an intermediate function.
1029
- function RE(s, f) {
1030
- return RegExp(s, f);
1031
- }
1032
-
1033
- var UNSUPPORTED_Y = fails(function () {
1034
- // babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError
1035
- var re = RE('a', 'y');
1036
- re.lastIndex = 2;
1037
- return re.exec('abcd') != null;
1038
- });
1039
-
1040
- var BROKEN_CARET = fails(function () {
1041
- // https://bugzilla.mozilla.org/show_bug.cgi?id=773687
1042
- var re = RE('^r', 'gy');
1043
- re.lastIndex = 2;
1044
- return re.exec('str') != null;
1045
- });
1046
-
1047
- var regexpStickyHelpers = {
1048
- UNSUPPORTED_Y: UNSUPPORTED_Y,
1049
- BROKEN_CARET: BROKEN_CARET
1050
- };
1051
-
1052
- var nativeExec = RegExp.prototype.exec;
1053
- // This always refers to the native implementation, because the
1054
- // String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,
1055
- // which loads this file before patching the method.
1056
- var nativeReplace = String.prototype.replace;
1057
-
1058
- var patchedExec = nativeExec;
1059
-
1060
- var UPDATES_LAST_INDEX_WRONG = (function () {
1061
- var re1 = /a/;
1062
- var re2 = /b*/g;
1063
- nativeExec.call(re1, 'a');
1064
- nativeExec.call(re2, 'a');
1065
- return re1.lastIndex !== 0 || re2.lastIndex !== 0;
1066
- })();
1067
-
1068
- var UNSUPPORTED_Y$1 = regexpStickyHelpers.UNSUPPORTED_Y || regexpStickyHelpers.BROKEN_CARET;
1069
-
1070
- // nonparticipating capturing group, copied from es5-shim's String#split patch.
1071
- var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;
1072
-
1073
- var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y$1;
1074
-
1075
- if (PATCH) {
1076
- patchedExec = function exec(str) {
1077
- var re = this;
1078
- var lastIndex, reCopy, match, i;
1079
- var sticky = UNSUPPORTED_Y$1 && re.sticky;
1080
- var flags = regexpFlags.call(re);
1081
- var source = re.source;
1082
- var charsAdded = 0;
1083
- var strCopy = str;
1084
-
1085
- if (sticky) {
1086
- flags = flags.replace('y', '');
1087
- if (flags.indexOf('g') === -1) {
1088
- flags += 'g';
1089
- }
1090
-
1091
- strCopy = String(str).slice(re.lastIndex);
1092
- // Support anchored sticky behavior.
1093
- if (re.lastIndex > 0 && (!re.multiline || re.multiline && str[re.lastIndex - 1] !== '\n')) {
1094
- source = '(?: ' + source + ')';
1095
- strCopy = ' ' + strCopy;
1096
- charsAdded++;
1097
- }
1098
- // ^(? + rx + ) is needed, in combination with some str slicing, to
1099
- // simulate the 'y' flag.
1100
- reCopy = new RegExp('^(?:' + source + ')', flags);
1101
- }
1102
-
1103
- if (NPCG_INCLUDED) {
1104
- reCopy = new RegExp('^' + source + '$(?!\\s)', flags);
1105
- }
1106
- if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;
1107
-
1108
- match = nativeExec.call(sticky ? reCopy : re, strCopy);
1109
-
1110
- if (sticky) {
1111
- if (match) {
1112
- match.input = match.input.slice(charsAdded);
1113
- match[0] = match[0].slice(charsAdded);
1114
- match.index = re.lastIndex;
1115
- re.lastIndex += match[0].length;
1116
- } else re.lastIndex = 0;
1117
- } else if (UPDATES_LAST_INDEX_WRONG && match) {
1118
- re.lastIndex = re.global ? match.index + match[0].length : lastIndex;
1119
- }
1120
- if (NPCG_INCLUDED && match && match.length > 1) {
1121
- // Fix browsers whose `exec` methods don't consistently return `undefined`
1122
- // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/
1123
- nativeReplace.call(match[0], reCopy, function () {
1124
- for (i = 1; i < arguments.length - 2; i++) {
1125
- if (arguments[i] === undefined) match[i] = undefined;
1126
- }
1127
- });
1128
- }
1129
-
1130
- return match;
1131
- };
1132
- }
1133
-
1134
- var regexpExec = patchedExec;
1135
-
1136
- _export({ target: 'RegExp', proto: true, forced: /./.exec !== regexpExec }, {
1137
- exec: regexpExec
1138
- });
1139
-
1140
- var SPECIES$3 = wellKnownSymbol('species');
1141
-
1142
- var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {
1143
- // #replace needs built-in support for named groups.
1144
- // #match works fine because it just return the exec results, even if it has
1145
- // a "grops" property.
1146
- var re = /./;
1147
- re.exec = function () {
1148
- var result = [];
1149
- result.groups = { a: '7' };
1150
- return result;
1151
- };
1152
- return ''.replace(re, '$<a>') !== '7';
1153
- });
1154
-
1155
- // IE <= 11 replaces $0 with the whole match, as if it was $&
1156
- // https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0
1157
- var REPLACE_KEEPS_$0 = (function () {
1158
- return 'a'.replace(/./, '$0') === '$0';
1159
- })();
1160
-
1161
- // Chrome 51 has a buggy "split" implementation when RegExp#exec !== nativeExec
1162
- // Weex JS has frozen built-in prototypes, so use try / catch wrapper
1163
- var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {
1164
- var re = /(?:)/;
1165
- var originalExec = re.exec;
1166
- re.exec = function () { return originalExec.apply(this, arguments); };
1167
- var result = 'ab'.split(re);
1168
- return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';
1169
- });
1170
-
1171
- var fixRegexpWellKnownSymbolLogic = function (KEY, length, exec, sham) {
1172
- var SYMBOL = wellKnownSymbol(KEY);
1173
-
1174
- var DELEGATES_TO_SYMBOL = !fails(function () {
1175
- // String methods call symbol-named RegEp methods
1176
- var O = {};
1177
- O[SYMBOL] = function () { return 7; };
1178
- return ''[KEY](O) != 7;
1179
- });
1180
-
1181
- var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {
1182
- // Symbol-named RegExp methods call .exec
1183
- var execCalled = false;
1184
- var re = /a/;
1185
-
1186
- if (KEY === 'split') {
1187
- // We can't use real regex here since it causes deoptimization
1188
- // and serious performance degradation in V8
1189
- // https://github.com/zloirock/core-js/issues/306
1190
- re = {};
1191
- // RegExp[@@split] doesn't call the regex's exec method, but first creates
1192
- // a new one. We need to return the patched regex when creating the new one.
1193
- re.constructor = {};
1194
- re.constructor[SPECIES$3] = function () { return re; };
1195
- re.flags = '';
1196
- re[SYMBOL] = /./[SYMBOL];
1197
- }
1198
-
1199
- re.exec = function () { execCalled = true; return null; };
1200
-
1201
- re[SYMBOL]('');
1202
- return !execCalled;
1203
- });
1204
-
1205
- if (
1206
- !DELEGATES_TO_SYMBOL ||
1207
- !DELEGATES_TO_EXEC ||
1208
- (KEY === 'replace' && !(REPLACE_SUPPORTS_NAMED_GROUPS && REPLACE_KEEPS_$0)) ||
1209
- (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)
1210
- ) {
1211
- var nativeRegExpMethod = /./[SYMBOL];
1212
- var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {
1213
- if (regexp.exec === regexpExec) {
1214
- if (DELEGATES_TO_SYMBOL && !forceStringMethod) {
1215
- // The native String method already delegates to @@method (this
1216
- // polyfilled function), leasing to infinite recursion.
1217
- // We avoid it by directly calling the native @@method method.
1218
- return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };
1219
- }
1220
- return { done: true, value: nativeMethod.call(str, regexp, arg2) };
1221
- }
1222
- return { done: false };
1223
- }, { REPLACE_KEEPS_$0: REPLACE_KEEPS_$0 });
1224
- var stringMethod = methods[0];
1225
- var regexMethod = methods[1];
1226
-
1227
- redefine(String.prototype, KEY, stringMethod);
1228
- redefine(RegExp.prototype, SYMBOL, length == 2
1229
- // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)
1230
- // 21.2.5.11 RegExp.prototype[@@split](string, limit)
1231
- ? function (string, arg) { return regexMethod.call(string, this, arg); }
1232
- // 21.2.5.6 RegExp.prototype[@@match](string)
1233
- // 21.2.5.9 RegExp.prototype[@@search](string)
1234
- : function (string) { return regexMethod.call(string, this); }
1235
- );
1236
- }
1237
-
1238
- if (sham) createNonEnumerableProperty(RegExp.prototype[SYMBOL], 'sham', true);
1239
- };
1240
-
1241
- // `String.prototype.{ codePointAt, at }` methods implementation
1242
- var createMethod$2 = function (CONVERT_TO_STRING) {
1243
- return function ($this, pos) {
1244
- var S = String(requireObjectCoercible($this));
1245
- var position = toInteger(pos);
1246
- var size = S.length;
1247
- var first, second;
1248
- if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;
1249
- first = S.charCodeAt(position);
1250
- return first < 0xD800 || first > 0xDBFF || position + 1 === size
1251
- || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF
1252
- ? CONVERT_TO_STRING ? S.charAt(position) : first
1253
- : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;
1254
- };
1255
- };
1256
-
1257
- var stringMultibyte = {
1258
- // `String.prototype.codePointAt` method
1259
- // https://tc39.github.io/ecma262/#sec-string.prototype.codepointat
1260
- codeAt: createMethod$2(false),
1261
- // `String.prototype.at` method
1262
- // https://github.com/mathiasbynens/String.prototype.at
1263
- charAt: createMethod$2(true)
1264
- };
1265
-
1266
- var charAt = stringMultibyte.charAt;
1267
-
1268
- // `AdvanceStringIndex` abstract operation
1269
- // https://tc39.github.io/ecma262/#sec-advancestringindex
1270
- var advanceStringIndex = function (S, index, unicode) {
1271
- return index + (unicode ? charAt(S, index).length : 1);
1272
- };
1273
-
1274
- // `RegExpExec` abstract operation
1275
- // https://tc39.github.io/ecma262/#sec-regexpexec
1276
- var regexpExecAbstract = function (R, S) {
1277
- var exec = R.exec;
1278
- if (typeof exec === 'function') {
1279
- var result = exec.call(R, S);
1280
- if (typeof result !== 'object') {
1281
- throw TypeError('RegExp exec method returned something other than an Object or null');
1282
- }
1283
- return result;
1284
- }
1285
-
1286
- if (classofRaw(R) !== 'RegExp') {
1287
- throw TypeError('RegExp#exec called on incompatible receiver');
1288
- }
1289
-
1290
- return regexpExec.call(R, S);
1291
- };
1292
-
1293
- var max$2 = Math.max;
1294
- var min$2 = Math.min;
1295
- var floor$1 = Math.floor;
1296
- var SUBSTITUTION_SYMBOLS = /\$([$&'`]|\d\d?|<[^>]*>)/g;
1297
- var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&'`]|\d\d?)/g;
1298
-
1299
- var maybeToString = function (it) {
1300
- return it === undefined ? it : String(it);
1301
- };
1302
-
1303
- // @@replace logic
1304
- fixRegexpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative, reason) {
1305
- return [
1306
- // `String.prototype.replace` method
1307
- // https://tc39.github.io/ecma262/#sec-string.prototype.replace
1308
- function replace(searchValue, replaceValue) {
1309
- var O = requireObjectCoercible(this);
1310
- var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];
1311
- return replacer !== undefined
1312
- ? replacer.call(searchValue, O, replaceValue)
1313
- : nativeReplace.call(String(O), searchValue, replaceValue);
1314
- },
1315
- // `RegExp.prototype[@@replace]` method
1316
- // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace
1317
- function (regexp, replaceValue) {
1318
- if (reason.REPLACE_KEEPS_$0 || (typeof replaceValue === 'string' && replaceValue.indexOf('$0') === -1)) {
1319
- var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);
1320
- if (res.done) return res.value;
1321
- }
1322
-
1323
- var rx = anObject(regexp);
1324
- var S = String(this);
1325
-
1326
- var functionalReplace = typeof replaceValue === 'function';
1327
- if (!functionalReplace) replaceValue = String(replaceValue);
1328
-
1329
- var global = rx.global;
1330
- if (global) {
1331
- var fullUnicode = rx.unicode;
1332
- rx.lastIndex = 0;
1333
- }
1334
- var results = [];
1335
- while (true) {
1336
- var result = regexpExecAbstract(rx, S);
1337
- if (result === null) break;
1338
-
1339
- results.push(result);
1340
- if (!global) break;
1341
-
1342
- var matchStr = String(result[0]);
1343
- if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);
1344
- }
1345
-
1346
- var accumulatedResult = '';
1347
- var nextSourcePosition = 0;
1348
- for (var i = 0; i < results.length; i++) {
1349
- result = results[i];
1350
-
1351
- var matched = String(result[0]);
1352
- var position = max$2(min$2(toInteger(result.index), S.length), 0);
1353
- var captures = [];
1354
- // NOTE: This is equivalent to
1355
- // captures = result.slice(1).map(maybeToString)
1356
- // but for some reason `nativeSlice.call(result, 1, result.length)` (called in
1357
- // the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and
1358
- // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.
1359
- for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));
1360
- var namedCaptures = result.groups;
1361
- if (functionalReplace) {
1362
- var replacerArgs = [matched].concat(captures, position, S);
1363
- if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);
1364
- var replacement = String(replaceValue.apply(undefined, replacerArgs));
1365
- } else {
1366
- replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);
1367
- }
1368
- if (position >= nextSourcePosition) {
1369
- accumulatedResult += S.slice(nextSourcePosition, position) + replacement;
1370
- nextSourcePosition = position + matched.length;
1371
- }
1372
- }
1373
- return accumulatedResult + S.slice(nextSourcePosition);
1374
- }
1375
- ];
1376
-
1377
- // https://tc39.github.io/ecma262/#sec-getsubstitution
1378
- function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {
1379
- var tailPos = position + matched.length;
1380
- var m = captures.length;
1381
- var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;
1382
- if (namedCaptures !== undefined) {
1383
- namedCaptures = toObject(namedCaptures);
1384
- symbols = SUBSTITUTION_SYMBOLS;
1385
- }
1386
- return nativeReplace.call(replacement, symbols, function (match, ch) {
1387
- var capture;
1388
- switch (ch.charAt(0)) {
1389
- case '$': return '$';
1390
- case '&': return matched;
1391
- case '`': return str.slice(0, position);
1392
- case "'": return str.slice(tailPos);
1393
- case '<':
1394
- capture = namedCaptures[ch.slice(1, -1)];
1395
- break;
1396
- default: // \d\d?
1397
- var n = +ch;
1398
- if (n === 0) return match;
1399
- if (n > m) {
1400
- var f = floor$1(n / 10);
1401
- if (f === 0) return match;
1402
- if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);
1403
- return match;
1404
- }
1405
- capture = captures[n - 1];
1406
- }
1407
- return capture === undefined ? '' : capture;
1408
- });
1409
- }
1410
- });
1411
-
1412
1061
  // iterable DOM collections
1413
1062
  // flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods
1414
1063
  var domIterables = {
@@ -1583,24 +1232,7 @@
1583
1232
  * @version: v1.1.0
1584
1233
  */
1585
1234
 
1586
- var initBodyCaller; // it only does '%s', and return '' when arguments are undefined
1587
-
1588
- var sprintf = function sprintf(str) {
1589
- var args = arguments;
1590
- var flag = true;
1591
- var i = 1;
1592
- str = str.replace(/%s/g, function () {
1593
- var arg = args[i++];
1594
-
1595
- if (typeof arg === 'undefined') {
1596
- flag = false;
1597
- return '';
1598
- }
1599
-
1600
- return arg;
1601
- });
1602
- return flag ? str : '';
1603
- };
1235
+ var initBodyCaller;
1604
1236
 
1605
1237
  var groupBy = function groupBy(array, f) {
1606
1238
  var tmpGroups = {};
@@ -1612,10 +1244,23 @@
1612
1244
  return tmpGroups;
1613
1245
  };
1614
1246
 
1247
+ $.extend($.fn.bootstrapTable.defaults.icons, {
1248
+ collapseGroup: {
1249
+ bootstrap3: 'glyphicon-chevron-up',
1250
+ materialize: 'arrow_drop_down'
1251
+ }[$.fn.bootstrapTable.theme] || 'fa-angle-up',
1252
+ expandGroup: {
1253
+ bootstrap3: 'glyphicon-chevron-down',
1254
+ materialize: 'arrow_drop_up'
1255
+ }[$.fn.bootstrapTable.theme] || 'fa-angle-down'
1256
+ });
1615
1257
  $.extend($.fn.bootstrapTable.defaults, {
1616
1258
  groupBy: false,
1617
1259
  groupByField: '',
1618
- groupByFormatter: undefined
1260
+ groupByFormatter: undefined,
1261
+ groupByToggle: false,
1262
+ groupByShowToggleIcon: false,
1263
+ groupByCollapsedGroups: []
1619
1264
  });
1620
1265
  var Utils = $.fn.bootstrapTable.utils;
1621
1266
  var BootstrapTable = $.fn.bootstrapTable.Constructor;
@@ -1640,7 +1285,7 @@
1640
1285
  if (this.options.customSort) {
1641
1286
  Utils.calculateObjectValue(this.options, this.options.customSort, [this.options.sortName, this.options.sortOrder, this.data]);
1642
1287
  } else {
1643
- this.data.sort(function (a, b) {
1288
+ this.options.data.sort(function (a, b) {
1644
1289
  var groupByFields = _this.getGroupByFields();
1645
1290
 
1646
1291
  var fieldValuesA = [];
@@ -1680,6 +1325,10 @@
1680
1325
  item._data = {};
1681
1326
  }
1682
1327
 
1328
+ if (_this.isCollapsed(key, value)) {
1329
+ item._class = 'hidden';
1330
+ }
1331
+
1683
1332
  item._data['parent-index'] = index;
1684
1333
  });
1685
1334
  index++;
@@ -1688,6 +1337,8 @@
1688
1337
  };
1689
1338
 
1690
1339
  BootstrapTable.prototype.initBody = function () {
1340
+ var _this2 = this;
1341
+
1691
1342
  initBodyCaller = true;
1692
1343
 
1693
1344
  for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
@@ -1703,10 +1354,8 @@
1703
1354
  this.columns.forEach(function (column) {
1704
1355
  if (column.checkbox) {
1705
1356
  checkBox = true;
1706
- } else {
1707
- if (column.visible) {
1708
- visibleColumns += 1;
1709
- }
1357
+ } else if (column.visible) {
1358
+ visibleColumns += 1;
1710
1359
  }
1711
1360
  });
1712
1361
 
@@ -1716,7 +1365,7 @@
1716
1365
 
1717
1366
  this.tableGroups.forEach(function (item) {
1718
1367
  var html = [];
1719
- html.push(sprintf('<tr class="info groupBy expanded" data-group-index="%s">', item.id));
1368
+ html.push(Utils.sprintf('<tr class="info groupBy %s" data-group-index="%s">', _this2.options.groupByToggle ? 'expanded' : '', item.id));
1720
1369
 
1721
1370
  if (that.options.detailView && !that.options.cardView) {
1722
1371
  html.push('<td class="detail"></td>');
@@ -1728,12 +1377,22 @@
1728
1377
 
1729
1378
  var formattedValue = item.name;
1730
1379
 
1731
- if (typeof that.options.groupByFormatter === 'function') {
1732
- formattedValue = that.options.groupByFormatter(item.name, item.id, item.data);
1380
+ if (that.options.groupByFormatter !== undefined) {
1381
+ formattedValue = Utils.calculateObjectValue(that.options, that.options.groupByFormatter, [item.name, item.id, item.data]);
1382
+ }
1383
+
1384
+ html.push('<td', Utils.sprintf(' colspan="%s"', visibleColumns), '>', formattedValue);
1385
+ var icon = _this2.options.icons.collapseGroup;
1386
+
1387
+ if (_this2.isCollapsed(item.name, item.data)) {
1388
+ icon = _this2.options.icons.expandGroup;
1733
1389
  }
1734
1390
 
1735
- html.push('<td', sprintf(' colspan="%s"', visibleColumns), '>', formattedValue, '</td>');
1736
- html.push('</tr>');
1391
+ if (_this2.options.groupByToggle && _this2.options.groupByShowToggleIcon) {
1392
+ html.push("<span class=\"float-right ".concat(_this2.options.iconsPrefix, " ").concat(icon, "\"></span>"));
1393
+ }
1394
+
1395
+ html.push('</td></tr>');
1737
1396
  that.$body.find("tr[data-parent-index=".concat(item.id, "]:first")).before($(html.join('')));
1738
1397
  });
1739
1398
  this.$selectGroup = [];
@@ -1746,10 +1405,21 @@
1746
1405
  })
1747
1406
  });
1748
1407
  });
1749
- this.$container.off('click', '.groupBy').on('click', '.groupBy', function () {
1750
- $(this).toggleClass('expanded');
1751
- that.$body.find("tr[data-parent-index=".concat($(this).closest('tr').data('group-index'), "]")).toggleClass('hidden');
1752
- });
1408
+
1409
+ if (this.options.groupByToggle) {
1410
+ this.$container.off('click', '.groupBy').on('click', '.groupBy', function () {
1411
+ var $this = $(this);
1412
+ var groupIndex = $this.closest('tr').data('group-index');
1413
+ var $groupRows = that.$body.find("tr[data-parent-index=".concat(groupIndex, "]"));
1414
+ $this.toggleClass('expanded collapsed');
1415
+ $this.find('span').toggleClass("".concat(that.options.icons.collapseGroup, " ").concat(that.options.icons.expandGroup));
1416
+ $groupRows.toggleClass('hidden');
1417
+ $groupRows.each(function (i, element) {
1418
+ return that.collapseRow($(element).data('index'));
1419
+ });
1420
+ });
1421
+ }
1422
+
1753
1423
  this.$container.off('click', '[name="btSelectGroup"]').on('click', '[name="btSelectGroup"]', function (event) {
1754
1424
  event.stopImmediatePropagation();
1755
1425
  var self = $(this);
@@ -1779,13 +1449,6 @@
1779
1449
  }
1780
1450
  };
1781
1451
 
1782
- BootstrapTable.prototype.getGroupSelections = function (index) {
1783
- var that = this;
1784
- return this.data.filter(function (row) {
1785
- return row[that.header.stateField] && row._data['parent-index'] === index;
1786
- });
1787
- };
1788
-
1789
1452
  BootstrapTable.prototype.checkGroup = function (index) {
1790
1453
  this.checkGroup_(index, true);
1791
1454
  };
@@ -1794,26 +1457,36 @@
1794
1457
  this.checkGroup_(index, false);
1795
1458
  };
1796
1459
 
1460
+ BootstrapTable.prototype.isCollapsed = function (groupKey, items) {
1461
+ if (this.options.groupByCollapsedGroups) {
1462
+ var collapsedGroups = Utils.calculateObjectValue(this, this.options.groupByCollapsedGroups, [groupKey, items], true);
1463
+
1464
+ if ($.inArray(groupKey, collapsedGroups) > -1) {
1465
+ return true;
1466
+ }
1467
+ }
1468
+
1469
+ return false;
1470
+ };
1471
+
1797
1472
  BootstrapTable.prototype.checkGroup_ = function (index, checked) {
1798
- var rows;
1473
+ var rowsBefore = this.getSelections();
1799
1474
 
1800
1475
  var filter = function filter() {
1801
1476
  return $(this).closest('tr').data('parent-index') === index;
1802
1477
  };
1803
1478
 
1804
- if (!checked) {
1805
- rows = this.getGroupSelections(index);
1806
- }
1807
-
1808
1479
  this.$selectItem.filter(filter).prop('checked', checked);
1809
1480
  this.updateRows();
1810
1481
  this.updateSelected();
1482
+ var rowsAfter = this.getSelections();
1811
1483
 
1812
1484
  if (checked) {
1813
- rows = this.getGroupSelections(index);
1485
+ this.trigger('check-all', rowsAfter, rowsBefore);
1486
+ return;
1814
1487
  }
1815
1488
 
1816
- this.trigger(checked ? 'check-all' : 'uncheck-all', rows);
1489
+ this.trigger('uncheck-all', rowsAfter, rowsBefore);
1817
1490
  };
1818
1491
 
1819
1492
  BootstrapTable.prototype.getGroupByFields = function () {
@@ -1852,7 +1525,7 @@
1852
1525
 
1853
1526
  if (options.unit === 'rows') {
1854
1527
  var scrollTo = 0;
1855
- this.$body.find("> tr:lt(".concat(options.value, ")")).each(function (i, el) {
1528
+ this.$body.find("> tr:not(.groupBy):lt(".concat(options.value, ")")).each(function (i, el) {
1856
1529
  scrollTo += $(el).outerHeight(true);
1857
1530
  });
1858
1531
  var $targetColumn = this.$body.find("> tr:not(.groupBy):eq(".concat(options.value, ")"));