naive-ui/demo/documentation/components/data-table/enUS/render-header.demo.md
2020-12-12 15:33:41 +08:00

1.7 KiB

Custom Render Column Header

<n-data-table
  ref="table"
  :columns="columns"
  :data="data"
  :pagination="pagination"
/>
import { h, resolveComponent } from 'vue'

const renderTooltip = (trigger, content) => {
  return h(
    resolveComponent('n-tooltip'),
    {
      showArrow: true
    },
    {
      trigger: () => trigger,
      default: () => content
    }
  )
}

const createColumns = (instance) => {
  return [
    {
      key: 'name',
      title (column) {
        return renderTooltip(
          h(
            resolveComponent('n-gradient-text'),
            {
              size: 24,
              type: 'danger'
            },
            { default: () => 'Name' }
          ),
          'Tooltip Content'
        )
      }
    },
    {
      key: 'age',
      title (column) {
        return h(
          resolveComponent('n-gradient-text'),
          {
            size: '20',
            type: 'info'
          },
          { default: () => 'Age' }
        )
      }
    },
    {
      key: 'address',
      title (column) {
        return h(
          resolveComponent('n-gradient-text'),
          {
            size: '16',
            type: 'warning'
          },
          { default: () => 'Address' }
        )
      }
    }
  ]
}

const data = [
  {
    key: 0,
    name: 'John Brown',
    age: 32,
    address: 'New York No. 1 Lake Park'
  },
  {
    key: 1,
    name: 'Jim Green',
    age: 42,
    address: 'London No. 1 Lake Park'
  },
  {
    key: 2,
    name: 'Joe Black',
    age: 32,
    address: 'Sidney No. 1 Lake Park'
  }
]

export default {
  data () {
    return {
      data: data,
      columns: createColumns(this),
      pagination: {
        pageSize: 10
      }
    }
  }
}