|
1 | 1 | /* ======================================================================== |
2 | | - * Bootstrap: bootstrap-iconpicker.js v1.4.0 by @recktoner |
| 2 | + * Bootstrap: bootstrap-iconpicker.js v1.5.0 by @recktoner |
3 | 3 | * https://victor-valencia.github.com/bootstrap-iconpicker |
4 | 4 | * ======================================================================== |
5 | 5 | * Copyright 2013-2014 Victor Valencia Rico. |
|
243 | 243 | placement: 'bottom', |
244 | 244 | arrowClass: 'btn-primary', |
245 | 245 | selectedClass: 'btn-warning', |
246 | | - unselectedClass: 'btn-default' |
| 246 | + unselectedClass: 'btn-default', |
| 247 | + search: true, |
| 248 | + searchText: 'Search icon' |
247 | 249 | }; |
248 | 250 |
|
249 | 251 | Iconpicker.prototype.createButtonBar = function(){ |
|
265 | 267 | } |
266 | 268 | } |
267 | 269 | op.table.find('thead').append(tr); |
| 270 | + if(op.search == true){ |
| 271 | + var search = [ |
| 272 | + '<tr>', |
| 273 | + ' <td colspan="' + op.cols + '">', |
| 274 | + ' <input type="text" class="form-control search-control" style="width: ' + op.cols * 39 + 'px;" placeholder="' + op.searchText + '">', |
| 275 | + ' </td>', |
| 276 | + '</tr>' |
| 277 | + ]; |
| 278 | + op.table.find('thead').append(search.join('')); |
| 279 | + } |
268 | 280 | }; |
269 | 281 |
|
270 | 282 | Iconpicker.prototype.updateButtonBar = function(page){ |
271 | 283 | var op = this.options; |
272 | 284 | var total_pages = Math.ceil( op.icons.length / (op.cols * op.rows) ); |
273 | | - op.table.find('.page-count').html(page + ' / ' + total_pages); |
| 285 | + op.table.find('.page-count').html(((total_pages == 0 ) ? 0: page) + ' / ' + total_pages); |
274 | 286 | var btn_prev = op.table.find('.btn-previous'); |
275 | 287 | var btn_next = op.table.find('.btn-next'); |
276 | 288 | (page == 1) ? btn_prev.addClass('disabled'): btn_prev.removeClass('disabled'); |
277 | | - (page == total_pages) ? btn_next.addClass('disabled'): btn_next.removeClass('disabled'); |
| 289 | + (page == total_pages || total_pages == 0) ? btn_next.addClass('disabled'): btn_next.removeClass('disabled'); |
278 | 290 | }; |
279 | 291 |
|
280 | 292 | Iconpicker.prototype.bindEvents = function(){ |
|
288 | 300 | el.select($(this).val()); |
289 | 301 | el.$element.popover('destroy'); |
290 | 302 | }); |
| 303 | + op.table.find('.search-control').off('keyup').on('keyup', function(e){ |
| 304 | + el.changeList(1); |
| 305 | + }); |
291 | 306 | }; |
292 | 307 |
|
293 | 308 | Iconpicker.prototype.select = function(icon){ |
|
319 | 334 |
|
320 | 335 | Iconpicker.prototype.changeList = function(page){ |
321 | 336 | var op = this.options; |
| 337 | + var search = ""; |
| 338 | + if(op.search == true){ |
| 339 | + search = op.table.find('.search-control').val(); |
| 340 | + if(search == ""){ |
| 341 | + op.icons = Iconpicker.ICONSET[op.ic]; |
| 342 | + } |
| 343 | + else{ |
| 344 | + var result = []; |
| 345 | + $.each(Iconpicker.ICONSET[op.ic], function(i, v){ |
| 346 | + if(v.indexOf(search) > -1){ |
| 347 | + result.push(v); |
| 348 | + } |
| 349 | + }); |
| 350 | + op.icons = result; |
| 351 | + } |
| 352 | + } |
322 | 353 | this.updateButtonBar(page); |
323 | 354 | var tbody = op.table.find('tbody').empty(); |
324 | 355 | var offset = (page - 1) * op.rows * op.cols; |
|
358 | 389 | var op = data.options; |
359 | 390 | var ic = (op.iconset == 'fontawesome') ? 'fa' : 'glyphicon'; |
360 | 391 | op = $.extend(op, { |
| 392 | + ic: ic, |
361 | 393 | icons: Iconpicker.ICONSET[ic], |
362 | 394 | iconClass: ic, |
363 | 395 | iconClassFix: ic + '-', |
|
371 | 403 | .append('<input type="hidden" ' + name + '></input>') |
372 | 404 | .append('<span class="caret"></span>'); |
373 | 405 | $this.addClass('iconpicker'); |
374 | | - data.createButtonBar(); |
| 406 | + data.createButtonBar(); |
375 | 407 | data.changeList(1); |
376 | 408 | $this.on('click', function(e){ |
377 | 409 | e.preventDefault(); |
|
0 commit comments