bootstrap-table-rails 1.10.1 → 1.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. checksums.yaml +4 -4
  2. data/lib/bootstrap-table-rails/version.rb +1 -1
  3. data/vendor/assets/javascripts/bootstrap-table-locale-all.js +60 -19
  4. data/vendor/assets/javascripts/bootstrap-table.js +305 -94
  5. data/vendor/assets/javascripts/extensions/bootstrap-table-angular.js +5 -3
  6. data/vendor/assets/javascripts/extensions/bootstrap-table-cookie.js +85 -28
  7. data/vendor/assets/javascripts/extensions/bootstrap-table-copy-rows.js +102 -0
  8. data/vendor/assets/javascripts/extensions/bootstrap-table-editable.js +51 -33
  9. data/vendor/assets/javascripts/extensions/bootstrap-table-export.js +11 -2
  10. data/vendor/assets/javascripts/extensions/bootstrap-table-filter-control.js +216 -71
  11. data/vendor/assets/javascripts/extensions/bootstrap-table-group-by.js +1 -1
  12. data/vendor/assets/javascripts/extensions/bootstrap-table-i18n-enhance.js +34 -0
  13. data/vendor/assets/javascripts/extensions/bootstrap-table-multi-toggle.js +88 -0
  14. data/vendor/assets/javascripts/extensions/bootstrap-table-multiple-search.js +6 -2
  15. data/vendor/assets/javascripts/extensions/bootstrap-table-multiple-sort.js +39 -24
  16. data/vendor/assets/javascripts/extensions/bootstrap-table-natural-sorting.js +12 -2
  17. data/vendor/assets/javascripts/extensions/bootstrap-table-reorder-columns.js +57 -1
  18. data/vendor/assets/javascripts/extensions/bootstrap-table-select2-filter.js +303 -0
  19. data/vendor/assets/javascripts/extensions/bootstrap-table-sticky-header.js +16 -9
  20. data/vendor/assets/javascripts/locale/bootstrap-table-en-US.js +6 -0
  21. data/vendor/assets/javascripts/locale/bootstrap-table-it-IT.js +5 -1
  22. data/vendor/assets/javascripts/locale/bootstrap-table-nl-NL.js +24 -15
  23. data/vendor/assets/javascripts/locale/bootstrap-table-pt-PT.js +18 -3
  24. data/vendor/assets/javascripts/locale/bootstrap-table-zh-CN.js +7 -1
  25. data/vendor/assets/stylesheets/bootstrap-table.css +9 -2
  26. metadata +7 -3
@@ -167,7 +167,7 @@
167
167
 
168
168
  // Compatibility: IE < 9 and old browsers
169
169
  if (!Object.keys) {
170
- setObjectKeys();
170
+ $.fn.bootstrapTable.utils.objectKeys();
171
171
  }
172
172
 
173
173
  //Make sure that the internal variables are set correctly
@@ -0,0 +1,34 @@
1
+ /**
2
+ * @author: Jewway
3
+ * @version: v1.0.0
4
+ */
5
+
6
+ !function ($) {
7
+ 'use strict';
8
+
9
+ var BootstrapTable = $.fn.bootstrapTable.Constructor;
10
+
11
+ BootstrapTable.prototype.changeTitle = function (locale) {
12
+ $.each(this.options.columns, function (idx, columnList) {
13
+ $.each(columnList, function (idx, column) {
14
+ if (column.field) {
15
+ column.title = locale[column.field];
16
+ }
17
+ });
18
+ });
19
+
20
+ this.initHeader();
21
+ this.initBody();
22
+ this.initToolbar();
23
+ };
24
+
25
+ BootstrapTable.prototype.changeLocale = function (localeId) {
26
+ this.options.locale = localeId;
27
+ this.initLocale();
28
+ this.initPagination();
29
+ };
30
+
31
+ $.fn.bootstrapTable.methods.push('changeTitle');
32
+ $.fn.bootstrapTable.methods.push('changeLocale');
33
+
34
+ }(jQuery);
@@ -0,0 +1,88 @@
1
+ /**
2
+ * @author Homer Glascock <HopGlascock@gmail.com>
3
+ * @version: v1.0.0
4
+ */
5
+
6
+ !function ($) {
7
+ "use strict";
8
+
9
+ var sprintf = $.fn.bootstrapTable.utils.sprintf;
10
+
11
+ var reInit = function (self) {
12
+ self.initHeader();
13
+ self.initSearch();
14
+ self.initPagination();
15
+ self.initBody();
16
+ };
17
+
18
+ $.extend($.fn.bootstrapTable.defaults, {
19
+ showToggleBtn: false,
20
+ multiToggleDefaults: [], //column names go here
21
+ });
22
+
23
+ $.fn.bootstrapTable.methods.push('hideAllColumns', 'showAllColumns');
24
+
25
+ var BootstrapTable = $.fn.bootstrapTable.Constructor,
26
+ _initToolbar = BootstrapTable.prototype.initToolbar;
27
+
28
+ BootstrapTable.prototype.initToolbar = function () {
29
+
30
+ _initToolbar.apply(this, Array.prototype.slice.apply(arguments));
31
+
32
+ var that = this,
33
+ $btnGroup = this.$toolbar.find('>.btn-group');
34
+
35
+ if (typeof this.options.multiToggleDefaults === 'string') {
36
+ this.options.multiToggleDefaults = JSON.parse(this.options.multiToggleDefaults);
37
+ }
38
+
39
+ if (this.options.showToggleBtn && this.options.showColumns) {
40
+ var showbtn = "<button class='btn btn-default hidden' id='showAllBtn'><span class='glyphicon glyphicon-resize-full icon-zoom-in'></span></button>",
41
+ hidebtn = "<button class='btn btn-default' id='hideAllBtn'><span class='glyphicon glyphicon-resize-small icon-zoom-out'></span></button>";
42
+
43
+ $btnGroup.append(showbtn + hidebtn);
44
+
45
+ $btnGroup.find('#showAllBtn').click(function () { that.showAllColumns();
46
+ $btnGroup.find('#hideAllBtn').toggleClass('hidden');
47
+ $btnGroup.find('#showAllBtn').toggleClass('hidden');
48
+ });
49
+ $btnGroup.find('#hideAllBtn').click(function () { that.hideAllColumns();
50
+ $btnGroup.find('#hideAllBtn').toggleClass('hidden');
51
+ $btnGroup.find('#showAllBtn').toggleClass('hidden');
52
+ });
53
+ }
54
+ };
55
+
56
+ BootstrapTable.prototype.hideAllColumns = function () {
57
+ var that = this,
58
+ defaults = that.options.multiToggleDefaults;
59
+
60
+ $.each(this.columns, function (index, column) {
61
+ //if its one of the defaults dont touch it
62
+ if (defaults.indexOf(column.field) == -1 && column.switchable) {
63
+ column.visible = false;
64
+ var $items = that.$toolbar.find('.keep-open input').prop('disabled', false);
65
+ $items.filter(sprintf('[value="%s"]', index)).prop('checked', false);
66
+ }
67
+ });
68
+
69
+ reInit(that);
70
+ };
71
+
72
+ BootstrapTable.prototype.showAllColumns = function () {
73
+ var that = this;
74
+ $.each(this.columns, function (index, column) {
75
+ if (column.switchable) {
76
+ column.visible = true;
77
+ }
78
+
79
+ var $items = that.$toolbar.find('.keep-open input').prop('disabled', false);
80
+ $items.filter(sprintf('[value="%s"]', index)).prop('checked', true);
81
+ });
82
+
83
+ reInit(that);
84
+
85
+ that.toggleColumn(0, that.columns[0].visible, false);
86
+ };
87
+
88
+ }(jQuery);
@@ -9,7 +9,8 @@
9
9
  'use strict';
10
10
 
11
11
  $.extend($.fn.bootstrapTable.defaults, {
12
- multipleSearch: false
12
+ multipleSearch: false,
13
+ delimeter: " "
13
14
  });
14
15
 
15
16
  var BootstrapTable = $.fn.bootstrapTable.Constructor,
@@ -17,7 +18,10 @@
17
18
 
18
19
  BootstrapTable.prototype.initSearch = function () {
19
20
  if (this.options.multipleSearch) {
20
- var strArray = this.searchText.split(" "),
21
+ if (this.searchText === undefined) {
22
+ return;
23
+ }
24
+ var strArray = this.searchText.split(this.options.delimeter),
21
25
  that = this,
22
26
  f = $.isEmptyObject(this.filterColumns) ? null : this.filterColumns,
23
27
  dataFiltered = [];
@@ -1,7 +1,8 @@
1
1
  /**
2
2
  * @author Nadim Basalamah <dimbslmh@gmail.com>
3
- * @version: v1.0.0
3
+ * @version: v1.1.0
4
4
  * https://github.com/dimbslmh/bootstrap-table/tree/master/src/extensions/multiple-sort/bootstrap-table-multiple-sort.js
5
+ * Modification: ErwannNevou <https://github.com/ErwannNevou>
5
6
  */
6
7
 
7
8
  (function($) {
@@ -9,11 +10,6 @@
9
10
 
10
11
  var isSingleSort = false;
11
12
 
12
- var sort_order = {
13
- asc: 'Ascending',
14
- desc: 'Descending'
15
- };
16
-
17
13
  var showSortModal = function(that) {
18
14
  var _selector = that.$sortModal.selector,
19
15
  _id = _selector.substr(1);
@@ -58,10 +54,10 @@
58
54
  sModal += ' </div>';
59
55
  sModal += ' </div>';
60
56
 
61
- $("body").append($(sModal));
57
+ $('body').append($(sModal));
62
58
 
63
59
  that.$sortModal = $(_selector);
64
- var $rows = that.$sortModal.find("tbody > tr");
60
+ var $rows = that.$sortModal.find('tbody > tr');
65
61
 
66
62
  that.$sortModal.off('click', '#add').on('click', '#add', function() {
67
63
  var total = that.$sortModal.find('.multi-sort-name:first option').length,
@@ -86,7 +82,7 @@
86
82
  });
87
83
 
88
84
  that.$sortModal.off('click', '.btn-primary').on('click', '.btn-primary', function() {
89
- var $rows = that.$sortModal.find("tbody > tr"),
85
+ var $rows = that.$sortModal.find('tbody > tr'),
90
86
  $alert = that.$sortModal.find('div.alert'),
91
87
  fields = [],
92
88
  results = [];
@@ -123,9 +119,22 @@
123
119
  $($alert).remove();
124
120
  }
125
121
 
126
- that.options.sortName = "";
127
- that.onMultipleSort();
128
122
  that.$sortModal.modal('hide');
123
+ that.options.sortName = '';
124
+
125
+ if (that.options.sidePagination === 'server') {
126
+
127
+ that.options.queryParams = function(params) {
128
+ params.multiSort = that.options.sortPriority;
129
+ return params;
130
+ };
131
+
132
+ that.initServer(that.options.silentSort);
133
+ return;
134
+ }
135
+
136
+ that.onMultipleSort();
137
+
129
138
  }
130
139
  });
131
140
 
@@ -175,34 +184,40 @@
175
184
  return 'Multiple Sort';
176
185
  },
177
186
  formatAddLevel: function() {
178
- return "Add Level";
187
+ return 'Add Level';
179
188
  },
180
189
  formatDeleteLevel: function() {
181
- return "Delete Level";
190
+ return 'Delete Level';
182
191
  },
183
192
  formatColumn: function() {
184
- return "Column";
193
+ return 'Column';
185
194
  },
186
195
  formatOrder: function() {
187
- return "Order";
196
+ return 'Order';
188
197
  },
189
198
  formatSortBy: function() {
190
- return "Sort by";
199
+ return 'Sort by';
191
200
  },
192
201
  formatThenBy: function() {
193
- return "Then by";
202
+ return 'Then by';
194
203
  },
195
204
  formatSort: function() {
196
- return "Sort";
205
+ return 'Sort';
197
206
  },
198
207
  formatCancel: function() {
199
- return "Cancel";
208
+ return 'Cancel';
200
209
  },
201
210
  formatDuplicateAlertTitle: function() {
202
- return "Duplicate(s) detected!";
211
+ return 'Duplicate(s) detected!';
203
212
  },
204
213
  formatDuplicateAlertDescription: function() {
205
- return "Please remove or change any duplicate column.";
214
+ return 'Please remove or change any duplicate column.';
215
+ },
216
+ formatSortOrders: function() {
217
+ return {
218
+ asc: 'Ascending',
219
+ desc: 'Descending'
220
+ };
206
221
  }
207
222
  });
208
223
 
@@ -323,19 +338,19 @@
323
338
  .append($('<td>').text(text))
324
339
  .append($('<td>').append($('<select class="form-control multi-sort-name">')))
325
340
  .append($('<td>').append($('<select class="form-control multi-sort-order">')))
326
- );
341
+ );
327
342
 
328
343
  var $multiSortName = this.$sortModal.find('.multi-sort-name').last(),
329
344
  $multiSortOrder = this.$sortModal.find('.multi-sort-order').last();
330
345
 
331
- $.each(this.columns, function (i, column) {
346
+ $.each(this.columns, function(i, column) {
332
347
  if (column.sortable === false || column.visible === false) {
333
348
  return true;
334
349
  }
335
350
  $multiSortName.append('<option value="' + column.field + '">' + column.title + '</option>');
336
351
  });
337
352
 
338
- $.each(sort_order, function(value, order) {
353
+ $.each(this.options.formatSortOrders(), function(value, order) {
339
354
  $multiSortOrder.append('<option value="' + value + '">' + order + '</option>');
340
355
  });
341
356
 
@@ -29,8 +29,18 @@ function alphanum(a, b) {
29
29
  return tz;
30
30
  }
31
31
 
32
- var aa = chunkify(a);
33
- var bb = chunkify(b);
32
+ function stringfy(v) {
33
+ if (typeof(v) === "number") {
34
+ v = "" + v;
35
+ }
36
+ if (!v) {
37
+ v = "";
38
+ }
39
+ return v;
40
+ }
41
+
42
+ var aa = chunkify(stringfy(a));
43
+ var bb = chunkify(stringfy(b));
34
44
 
35
45
  for (x = 0; aa[x] && bb[x]; x++) {
36
46
  if (aa[x] !== bb[x]) {
@@ -8,6 +8,44 @@
8
8
 
9
9
  'use strict';
10
10
 
11
+ //From MDN site, https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
12
+ var filterFn = function () {
13
+ if (!Array.prototype.filter) {
14
+ Array.prototype.filter = function(fun/*, thisArg*/) {
15
+ 'use strict';
16
+
17
+ if (this === void 0 || this === null) {
18
+ throw new TypeError();
19
+ }
20
+
21
+ var t = Object(this);
22
+ var len = t.length >>> 0;
23
+ if (typeof fun !== 'function') {
24
+ throw new TypeError();
25
+ }
26
+
27
+ var res = [];
28
+ var thisArg = arguments.length >= 2 ? arguments[1] : void 0;
29
+ for (var i = 0; i < len; i++) {
30
+ if (i in t) {
31
+ var val = t[i];
32
+
33
+ // NOTE: Technically this should Object.defineProperty at
34
+ // the next index, as push can be affected by
35
+ // properties on Object.prototype and Array.prototype.
36
+ // But that method's new, and collisions should be
37
+ // rare, so use the more-compatible alternative.
38
+ if (fun.call(thisArg, val, i, t)) {
39
+ res.push(val);
40
+ }
41
+ }
42
+ }
43
+
44
+ return res;
45
+ };
46
+ }
47
+ };
48
+
11
49
  $.extend($.fn.bootstrapTable.defaults, {
12
50
  reorderableColumns: false,
13
51
  maxMovingRows: 10,
@@ -85,7 +123,8 @@
85
123
  formatters = [],
86
124
  columns = [],
87
125
  columnsHidden = [],
88
- columnIndex = -1;
126
+ columnIndex = -1,
127
+ optionsColumns = [];
89
128
  that.$header.find('th').each(function (i) {
90
129
  ths.push($(this).data('field'));
91
130
  formatters.push($(this).data('formatter'));
@@ -111,6 +150,23 @@
111
150
  }
112
151
 
113
152
  that.columns = that.columns.concat(columns);
153
+
154
+ filterFn(); //Support <IE9
155
+ $.each(that.columns, function(i, column) {
156
+ var found = false,
157
+ field = column.field;
158
+ that.options.columns[0].filter(function(item) {
159
+ if(!found && item["field"] == field) {
160
+ optionsColumns.push(item);
161
+ found = true;
162
+ return false;
163
+ } else
164
+ return true;
165
+ })
166
+ });
167
+
168
+ that.options.columns[0] = optionsColumns;
169
+
114
170
  that.header.fields = ths;
115
171
  that.header.formatters = formatters;
116
172
  that.resetView();
@@ -0,0 +1,303 @@
1
+ /**
2
+ * @author: Jewway
3
+ * @version: v1.0.0
4
+ */
5
+
6
+ !function ($) {
7
+ 'use strict';
8
+
9
+ function getCurrentHeader(that) {
10
+ var header = that.$header;
11
+ if (that.options.height) {
12
+ header = that.$tableHeader;
13
+ }
14
+
15
+ return header;
16
+ }
17
+
18
+ function getFilterFields(that) {
19
+ return getCurrentHeader(that).find('[data-filter-field]');
20
+ }
21
+
22
+ function setFilterValues(that) {
23
+ var $filterElms = getFilterFields(that);
24
+ if (!$.isEmptyObject(that.filterColumnsPartial)) {
25
+ $filterElms.each(function (index, ele) {
26
+ var $ele = $(ele),
27
+ field = $ele.attr('data-filter-field'),
28
+ value = that.filterColumnsPartial[field];
29
+
30
+ if ($ele.is("select")) {
31
+ $ele.val(value).trigger('change');
32
+ }
33
+ else {
34
+ $ele.val(value);
35
+ }
36
+ });
37
+ }
38
+ }
39
+
40
+ function createFilter(that, header) {
41
+ var enableFilter = false,
42
+ isVisible,
43
+ html,
44
+ timeoutId = 0;
45
+
46
+ $.each(that.columns, function (i, column) {
47
+ isVisible = 'hidden';
48
+ html = [];
49
+
50
+ if (!column.visible) {
51
+ return;
52
+ }
53
+
54
+ if (!column.filter) {
55
+ html.push('<div class="no-filter"></div>');
56
+ } else {
57
+ var filterClass = column.filter.class ? ' ' + column.filter.class : '';
58
+ html.push('<div style="margin: 0px 2px 2px 2px;" class="filter' + filterClass + '">');
59
+
60
+ if (column.searchable) {
61
+ enableFilter = true;
62
+ isVisible = 'visible'
63
+ }
64
+
65
+ switch (column.filter.type.toLowerCase()) {
66
+ case 'input' :
67
+ html.push('<input type="text" data-filter-field="' + column.field + '" style="width: 100%; visibility:' + isVisible + '">');
68
+ break;
69
+ case 'select':
70
+ html.push('<select data-filter-field="' + column.field + '" style="width: 100%; visibility:' + isVisible + '"></select>');
71
+ break;
72
+ }
73
+ }
74
+
75
+ $.each(header.children().children(), function (i, tr) {
76
+ tr = $(tr);
77
+ if (tr.data('field') === column.field) {
78
+ tr.find('.fht-cell').append(html.join(''));
79
+ return false;
80
+ }
81
+ });
82
+ });
83
+
84
+ if (enableFilter) {
85
+ var $inputs = header.find('input'),
86
+ $selects = header.find('select');
87
+
88
+
89
+ if ($inputs.length > 0) {
90
+ $inputs.off('keyup').on('keyup', function (event) {
91
+ clearTimeout(timeoutId);
92
+ timeoutId = setTimeout(function () {
93
+ that.onColumnSearch(event);
94
+ }, that.options.searchTimeOut);
95
+ });
96
+
97
+
98
+ $inputs.off('mouseup').on('mouseup', function (event) {
99
+ var $input = $(this),
100
+ oldValue = $input.val();
101
+
102
+ if (oldValue === "") {
103
+ return;
104
+ }
105
+
106
+ setTimeout(function () {
107
+ var newValue = $input.val();
108
+
109
+ if (newValue === "") {
110
+ clearTimeout(timeoutId);
111
+ timeoutId = setTimeout(function () {
112
+ that.onColumnSearch(event);
113
+ }, that.options.searchTimeOut);
114
+ }
115
+ }, 1);
116
+ });
117
+ }
118
+
119
+ if ($selects.length > 0) {
120
+ $selects.on('select2:select', function (event) {
121
+ that.onColumnSearch(event);
122
+ });
123
+ }
124
+ } else {
125
+ header.find('.filter').hide();
126
+ }
127
+ }
128
+
129
+ function initSelect2(that) {
130
+ var $header = getCurrentHeader(that);
131
+
132
+ $.each(that.columns, function (idx, column) {
133
+ if (column.filter && column.filter.type === 'select') {
134
+ var $selectEle = $header.find('select[data-filter-field=' + column.field + ']');
135
+
136
+ if ($selectEle.length > 0 && !$selectEle.data().select2) {
137
+ column.filter.data.unshift("");
138
+
139
+ var select2Opts = {
140
+ placeholder: "",
141
+ allowClear: true,
142
+ data: column.filter.data,
143
+ dropdownParent: that.$el.closest(".bootstrap-table")
144
+ };
145
+
146
+ $selectEle.select2(select2Opts);
147
+ $selectEle.on("select2:unselecting", function (event) {
148
+ event.preventDefault();
149
+ $selectEle.val(null).trigger('change');
150
+ that.searchText = undefined;
151
+ that.onColumnSearch(event);
152
+ });
153
+ }
154
+ }
155
+ });
156
+ }
157
+
158
+ $.extend($.fn.bootstrapTable.defaults, {
159
+ filter: false,
160
+ filterValues: {}
161
+ });
162
+
163
+ $.extend($.fn.bootstrapTable.COLUMN_DEFAULTS, {
164
+ filter: undefined
165
+ });
166
+
167
+ var BootstrapTable = $.fn.bootstrapTable.Constructor,
168
+ _init = BootstrapTable.prototype.init,
169
+ _initHeader = BootstrapTable.prototype.initHeader,
170
+ _initSearch = BootstrapTable.prototype.initSearch;
171
+
172
+ BootstrapTable.prototype.init = function () {
173
+ //Make sure that the filtercontrol option is set
174
+ if (this.options.filter) {
175
+ var that = this;
176
+
177
+ if (!$.isEmptyObject(that.options.filterValues)) {
178
+ that.filterColumnsPartial = that.options.filterValues;
179
+ that.options.filterValues = {};
180
+ }
181
+
182
+ this.$el.on('reset-view.bs.table', function () {
183
+ //Create controls on $tableHeader if the height is set
184
+ if (!that.options.height) {
185
+ return;
186
+ }
187
+
188
+ //Avoid recreate the controls
189
+ if (that.$tableHeader.find('select').length > 0 || that.$tableHeader.find('input').length > 0) {
190
+ return;
191
+ }
192
+
193
+ createFilter(that, that.$tableHeader);
194
+ }).on('post-header.bs.table', function () {
195
+ var timeoutId = 0;
196
+
197
+ initSelect2(that);
198
+ clearTimeout(timeoutId);
199
+ timeoutId = setTimeout(function () {
200
+ setFilterValues(that);
201
+ }, that.options.searchTimeOut - 1000);
202
+ }).on('column-switch.bs.table', function (field, checked) {
203
+ setFilterValues(that);
204
+ });
205
+ }
206
+
207
+ _init.apply(this, Array.prototype.slice.apply(arguments));
208
+ };
209
+
210
+ BootstrapTable.prototype.initHeader = function () {
211
+ _initHeader.apply(this, Array.prototype.slice.apply(arguments));
212
+ if (this.options.filter) {
213
+ createFilter(this, this.$header);
214
+ }
215
+ };
216
+
217
+ BootstrapTable.prototype.initSearch = function () {
218
+ _initSearch.apply(this, Array.prototype.slice.apply(arguments));
219
+
220
+ var that = this,
221
+ filterValues = that.filterColumnsPartial;
222
+
223
+ // Filter for client
224
+ if (that.options.sidePagination === 'client') {
225
+ this.data = $.grep(this.data, function (row, idx) {
226
+ for (var field in filterValues) {
227
+ var column = that.columns[$.fn.bootstrapTable.utils.getFieldIndex(that.columns, field)],
228
+ filterValue = filterValues[field].toLowerCase(),
229
+ rowValue = row[field];
230
+
231
+ rowValue = $.fn.bootstrapTable.utils.calculateObjectValue(
232
+ that.header,
233
+ that.header.formatters[$.inArray(field, that.header.fields)],
234
+ [rowValue, row, idx], rowValue);
235
+
236
+ if (column.filterStrictSearch) {
237
+ if (!($.inArray(field, that.header.fields) !== -1 &&
238
+ (typeof rowValue === 'string' || typeof rowValue === 'number') &&
239
+ rowValue.toString().toLowerCase() === filterValue.toString().toLowerCase())) {
240
+ return false;
241
+ }
242
+ } else {
243
+ if (!($.inArray(field, that.header.fields) !== -1 &&
244
+ (typeof rowValue === 'string' || typeof rowValue === 'number') &&
245
+ (rowValue + '').toLowerCase().indexOf(filterValue) !== -1)) {
246
+ return false;
247
+ }
248
+ }
249
+ }
250
+
251
+ return true;
252
+ });
253
+ }
254
+ };
255
+
256
+ BootstrapTable.prototype.onColumnSearch = function (event) {
257
+ var field = $(event.currentTarget).attr('data-filter-field'),
258
+ value = $.trim($(event.currentTarget).val());
259
+
260
+ if ($.isEmptyObject(this.filterColumnsPartial)) {
261
+ this.filterColumnsPartial = {};
262
+ }
263
+
264
+ if (value) {
265
+ this.filterColumnsPartial[field] = value;
266
+ } else {
267
+ delete this.filterColumnsPartial[field];
268
+ }
269
+
270
+ this.options.pageNumber = 1;
271
+ this.onSearch(event);
272
+ };
273
+
274
+ BootstrapTable.prototype.setFilterData = function (field, data) {
275
+ var that = this,
276
+ $header = getCurrentHeader(that),
277
+ $selectEle = $header.find('select[data-filter-field=\"' + field + '\"]');
278
+
279
+ data.unshift("");
280
+ $selectEle.empty();
281
+ $selectEle.select2({
282
+ data: data,
283
+ placeholder: "",
284
+ allowClear: true,
285
+ dropdownParent: that.$el.closest(".bootstrap-table")
286
+ });
287
+
288
+ $.each(this.columns, function (idx, column) {
289
+ if (column.field === field) {
290
+ column.filter.data = data;
291
+ return false;
292
+ }
293
+ });
294
+ };
295
+
296
+ BootstrapTable.prototype.setFilterValues = function (values) {
297
+ this.filterColumnsPartial = values;
298
+ };
299
+
300
+ $.fn.bootstrapTable.methods.push('setFilterData');
301
+ $.fn.bootstrapTable.methods.push('setFilterValues');
302
+
303
+ }(jQuery);