| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- /**
- * @author Homer Glascock <HopGlascock@gmail.com>
- * @update zhixin wen <wenzhixin2010@gmail.com>
- */
- const Utils = $.fn.bootstrapTable.utils
- $.extend($.fn.bootstrapTable.locales, {
- formatCopyRows () {
- return 'Copy Rows'
- }
- })
- $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales)
- $.extend($.fn.bootstrapTable.defaults.icons, {
- copy: {
- bootstrap3: 'glyphicon-copy icon-pencil',
- bootstrap5: 'bi-clipboard',
- materialize: 'content_copy',
- 'bootstrap-table': 'icon-copy'
- }[$.fn.bootstrapTable.theme] || 'fa-copy'
- })
- const copyText = text => {
- const textField = document.createElement('textarea')
- $(textField).html(text)
- document.body.appendChild(textField)
- textField.select()
- try {
- document.execCommand('copy')
- } catch (e) {
- console.warn('Oops, unable to copy')
- }
- $(textField).remove()
- }
- $.extend($.fn.bootstrapTable.defaults, {
- showCopyRows: false,
- copyWithHidden: false,
- copyDelimiter: ', ',
- copyNewline: '\n'
- })
- $.extend($.fn.bootstrapTable.columnDefaults, {
- ignoreCopy: false,
- rawCopy: false
- })
- $.fn.bootstrapTable.methods.push(
- 'copyColumnsToClipboard'
- )
- $.BootstrapTable = class extends $.BootstrapTable {
- initToolbar (...args) {
- if (this.options.showCopyRows && this.header.stateField) {
- this.buttons = Object.assign(this.buttons, {
- copyRows: {
- text: this.options.formatCopyRows(),
- icon: this.options.icons.copy,
- event: this.copyColumnsToClipboard,
- attributes: {
- 'aria-label': this.options.formatCopyRows(),
- title: this.options.formatCopyRows()
- }
- }
- })
- }
- super.initToolbar(...args)
- this.$copyButton = this.$toolbar.find('>.columns [name="copyRows"]')
- if (this.options.showCopyRows && this.header.stateField) {
- this.updateCopyButton()
- }
- }
- copyColumnsToClipboard () {
- const rows = []
- $.each(this.getSelections(), (index, row) => {
- const cols = []
- $.each(this.options.columns[0], (indy, column) => {
- if (
- column.field !== this.header.stateField &&
- (!this.options.copyWithHidden || this.options.copyWithHidden && column.visible) &&
- !column.ignoreCopy
- ) {
- if (row[column.field] !== null) {
- const columnValue = column.rawCopy ? row[column.field] : Utils.calculateObjectValue(column, this.header.formatters[indy], [row[column.field], row, index], row[column.field])
- cols.push(columnValue)
- }
- }
- })
- rows.push(cols.join(this.options.copyDelimiter))
- })
- copyText(rows.join(this.options.copyNewline))
- }
- updateSelected () {
- super.updateSelected()
- this.updateCopyButton()
- }
- updateCopyButton () {
- if (this.options.showCopyRows && this.header.stateField && this.$copyButton) {
- this.$copyButton.prop('disabled', !this.getSelections().length)
- }
- }
- }
|