@gitlab/ui
Version:
GitLab UI Components
43 lines (36 loc) • 1.19 kB
JavaScript
import { extend } from '../../../vue';
import { SLOT_NAME_TOP_ROW } from '../../../constants/slots';
import { isFunction } from '../../../utils/inspect';
import { BTr } from '../tr';
// --- Props ---
const props = {};
// --- Mixin ---
// @vue/component
const topRowMixin = extend({
methods: {
renderTopRow() {
const {
computedFields: fields,
stacked,
tbodyTrClass,
tbodyTrAttr
} = this;
const h = this.$createElement;
// Add static Top Row slot (hidden in visibly stacked mode as we can't control the data-label)
// If in *always* stacked mode, we don't bother rendering the row
if (!this.hasNormalizedSlot(SLOT_NAME_TOP_ROW) || stacked === true || stacked === '') {
return h();
}
return h(BTr, {
staticClass: 'b-table-top-row',
class: [isFunction(tbodyTrClass) ? tbodyTrClass(null, 'row-top') : tbodyTrClass],
attrs: isFunction(tbodyTrAttr) ? tbodyTrAttr(null, 'row-top') : tbodyTrAttr,
key: 'b-top-row'
}, [this.normalizeSlot(SLOT_NAME_TOP_ROW, {
columns: fields.length,
fields
})]);
}
}
});
export { props, topRowMixin };