UNPKG

quasar

Version:

Build high-performance VueJS user interfaces (SPA, PWA, SSR, Mobile and Desktop) in record time

125 lines (111 loc) 3.53 kB
import QLinearProgress from '../linear-progress/QLinearProgress.js' import QCheckbox from '../checkbox/QCheckbox.js' import QTh from './QTh.js' export default { methods: { getTableHeader (h) { const child = [ this.getTableHeaderRow(h) ] this.loading === true && child.push( h('tr', { staticClass: 'q-table__progress' }, [ h('th', { staticClass: 'relative-position', attrs: { colspan: '100%' } }, [ h(QLinearProgress, { staticClass: 'q-table__linear-progress', props: { color: this.color, dark: this.dark, indeterminate: true } }) ]) ]) ) return h('thead', child) }, getTableHeaderRow (h) { const header = this.$scopedSlots.header, headerCell = this.$scopedSlots['header-cell'] if (header !== void 0) { return header(this.addTableHeaderRowMeta({ header: true, cols: this.computedCols, sort: this.sort, colsMap: this.computedColsMap })) } let mapFn if (headerCell !== void 0) { mapFn = col => headerCell({ col, cols: this.computedCols, sort: this.sort, colsMap: this.computedColsMap }) } else { mapFn = col => { const props = { col, cols: this.computedCols, sort: this.sort, colsMap: this.computedColsMap } const slot = this.$scopedSlots[`header-cell-${col.name}`] return slot !== void 0 ? slot(props) : h(QTh, { key: col.name, props: { props }, style: col.style, class: col.classes }, col.label) } } const child = this.computedCols.map(mapFn) if (this.singleSelection === true && this.grid !== true) { child.unshift(h('th', { staticClass: 'q-table--col-auto-width' }, [' '])) } else if (this.multipleSelection === true) { child.unshift(h('th', { staticClass: 'q-table--col-auto-width' }, [ h(QCheckbox, { props: { color: this.color, value: this.someRowsSelected ? null : this.allRowsSelected, dark: this.dark, dense: this.dense }, on: { input: val => { if (this.someRowsSelected) { val = false } this.__updateSelection( this.computedRows.map(row => row[this.rowKey]), this.computedRows, val ) } } }) ])) } return h('tr', { style: this.tableHeaderStyle, class: this.tableHeaderClass }, child) }, addTableHeaderRowMeta (data) { if (this.multipleSelection === true) { Object.defineProperty(data, 'selected', { get: () => this.someRowsSelected ? 'some' : this.allRowsSelected, set: val => { if (this.someRowsSelected) { val = false } this.__updateSelection( this.computedRows.map(row => row[this.rowKey]), this.computedRows, val ) }, configurable: true, enumerable: true }) data.partialSelected = this.someRowsSelected data.multipleSelect = true } return data } } }