UNPKG

bootstrap-table

Version:

An extended table to integration with some of the most widely used CSS frameworks. (Supports Bootstrap, Semantic UI, Bulma, Material Design, Foundation)

110 lines (89 loc) 2.71 kB
/** * @author: Dustin Utecht * @github: https://github.com/UtechtDustin */ const Utils = $.fn.bootstrapTable.utils $.extend($.fn.bootstrapTable.defaults, { customView: false, showCustomView: false, showCustomViewButton: false }) $.extend($.fn.bootstrapTable.defaults.icons, { customView: { bootstrap3: 'glyphicon glyphicon-eye-open', bootstrap5: 'bi-eye', bootstrap4: 'fa fa-eye', semantic: 'fa fa-eye', foundation: 'fa fa-eye', bulma: 'fa fa-eye', materialize: 'remove_red_eye' }[$.fn.bootstrapTable.theme] || 'fa-eye' }) $.extend($.fn.bootstrapTable.defaults, { onCustomViewPostBody () { return false }, onCustomViewPreBody () { return false } }) $.extend($.fn.bootstrapTable.locales, { formatToggleCustomView () { return 'Toggle custom view' } }) $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales) $.fn.bootstrapTable.methods.push('toggleCustomView') $.extend($.fn.bootstrapTable.Constructor.EVENTS, { 'custom-view-post-body.bs.table': 'onCustomViewPostBody', 'custom-view-pre-body.bs.table': 'onCustomViewPreBody' }) $.BootstrapTable = class extends $.BootstrapTable { init () { this.showCustomView = this.options.showCustomView super.init() } initToolbar (...args) { if (this.options.customView && this.options.showCustomViewButton) { this.buttons = Object.assign(this.buttons, { customView: { text: this.options.formatToggleCustomView(), icon: this.options.icons.customView, event: this.toggleCustomView, attributes: { 'aria-label': this.options.formatToggleCustomView(), title: this.options.formatToggleCustomView() } } }) } super.initToolbar(...args) } initBody () { super.initBody() if (!this.options.customView) { return } const $table = this.$el const $customViewContainer = this.$container.find('.fixed-table-custom-view') $table.hide() $customViewContainer.hide() if (!this.options.customView || !this.showCustomView) { $table.show() return } const data = this.getData().slice(this.pageFrom - 1, this.pageTo) const value = Utils.calculateObjectValue(this, this.options.customView, [data], '') this.trigger('custom-view-pre-body', data, value) if ($customViewContainer.length === 1) { $customViewContainer.show().html(value) } else { this.$tableBody.after(`<div class="fixed-table-custom-view">${value}</div>`) } this.trigger('custom-view-post-body', data, value) } toggleCustomView () { this.showCustomView = !this.showCustomView this.initBody() } }