bootstrap-table-foundation.js 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. /**
  2. * @author zhixin wen <wenzhixin2010@gmail.com>
  3. * https://github.com/wenzhixin/bootstrap-table/
  4. * theme: https://github.com/zurb/foundation-sites
  5. */
  6. $.extend($.fn.bootstrapTable.defaults, {
  7. classes: 'table hover',
  8. buttonsPrefix: '',
  9. buttonsClass: 'button'
  10. })
  11. $.fn.bootstrapTable.theme = 'foundation'
  12. $.BootstrapTable = class extends $.BootstrapTable {
  13. initConstants () {
  14. super.initConstants()
  15. this.constants.classes.buttonsGroup = 'button-group'
  16. this.constants.classes.buttonsDropdown = 'dropdown-container'
  17. this.constants.classes.paginationDropdown = ''
  18. this.constants.classes.dropdownActive = 'is-active'
  19. this.constants.classes.paginationActive = 'current'
  20. this.constants.classes.buttonActive = 'success'
  21. this.constants.html.toolbarDropdown = ['<ul class="dropdown-pane" id="toolbar-columns-id" data-dropdown><ul class="vertical menu">', '</ul></div>']
  22. this.constants.html.toolbarDropdownItem = '<li><label class="dropdown-item">%s</label></li>'
  23. this.constants.html.toolbarDropdownSeperator = '<li><hr></li>'
  24. this.constants.html.pageDropdown = ['<div class="dropdown-pane" id="pagination-list-id" data-dropdown><ul class="vertical menu">', '</ul></div>']
  25. this.constants.html.pageDropdownItem = '<li class="dropdown-item %s"><a href="#">%s</a></li>'
  26. this.constants.html.dropdownCaret = '<i class="fa fa-angle-down"></i>'
  27. this.constants.html.pagination = ['<ul class="pagination%s">', '</ul>']
  28. this.constants.html.paginationItem = '<li><a class="page-item%s" aria-label="%s" href="#">%s</a></li>'
  29. this.constants.html.inputGroup = '<div class="input-group">%s <div class="input-group-button">%s</div></div>'
  30. this.constants.html.searchInput = '<input class="%s input-%s input-group-field" type="text" placeholder="%s">'
  31. this.constants.html.searchButton = '<button class="button" type="button" name="search" title="%s">%s %s</button>'
  32. this.constants.html.searchClearButton = '<button class="button" type="button" name="clearSearch" title="%s">%s %s</button>'
  33. }
  34. initToolbar () {
  35. super.initToolbar()
  36. this.handleToolbar()
  37. }
  38. handleToolbar () {
  39. if (this.$toolbar.find('.dropdown-toggle').length) {
  40. this.$toolbar.find('.dropdown-toggle').each((i, el) => {
  41. $(el).attr('data-toggle', $(el).next().attr('id'))
  42. const $pane = $(el).next()
  43. .attr('data-position', 'bottom')
  44. .attr('data-alignment', 'right')
  45. new window.Foundation.Dropdown($pane)
  46. })
  47. this._initDropdown()
  48. }
  49. }
  50. initPagination () {
  51. super.initPagination()
  52. if (this.options.pagination && !this.options.onlyInfoPagination) {
  53. const $el = this.$pagination.find('.dropdown-toggle')
  54. $el.attr('data-toggle', $el.next().attr('id'))
  55. const $pane = this.$pagination.find('.dropdown-pane')
  56. .attr('data-position', 'top')
  57. .attr('data-alignment', 'left')
  58. new window.Foundation.Dropdown($pane)
  59. this._initDropdown()
  60. }
  61. }
  62. _initDropdown () {
  63. const $dropdowns = this.$container.find('.dropdown-toggle')
  64. $dropdowns.off('click').on('click', e => {
  65. const $this = $(e.currentTarget)
  66. e.stopPropagation()
  67. $dropdowns.not($this).next().foundation('close')
  68. $this.next().foundation('toggle')
  69. })
  70. $(document).off('click.bs.dropdown.foundation').on('click.bs.dropdown.foundation', () => {
  71. $dropdowns.next().foundation('close')
  72. })
  73. }
  74. }