0.1.1 • Published 4 years ago

vue-z-table v0.1.1

Weekly downloads
1
License
MIT
Repository
-
Last release
4 years ago

How to use

플러그인 등록

import Vue from 'vue'
import zTable from 'vue-z-table'

Vue.use(zTable)

내장 컴포넌트 사용

import { CheckboxHeader, Checkbox, ColumnHeader, Tooltip } from 'vue-z-table'

options

<template>
  <div>
    <z-table options="options" />
  </div>
</template>

<script>
export default {
  data () {
    return {
      options: {
        data: [], // {Array} - 표에서 사용할 데이터
        columns: [], // {Array} - 머리 열을 구성할 옵션
        rowAddable: false, // {Boolean} - 내장 행 추가 버튼을 사용할 지 여부
        infiniteScroll: false, // {Boolean} - 무한 스크롤 여부
        dataLengthLimit: Infinity, // {Number} - 추가 가능한 데이터의 개수
        tableDataChanged: function (data) {},
        rowDataChanged: function (row, value, status) {},
        // sortedInAscending: function () {},
        // sortedInDescending: function () {},
        columnHeaderSorted: function (columns) {},
        scrollEndPointObserved: function () {},
        checkedItemChanged: function (rows) {}
      }
    }        
  },
  methods: {
    useTo$zTable () {
      this.$zTable.redrawTableLayout()
      this.$zTable.setColumnOptions(columns)
      this.$zTable.setData(data)
      this.$zTable.unshiftData(data)
      this.$zTable.pushData(data)
      this.$zTable.setRow(row, value)
      this.$zTable.addRow(index, value)
      this.$zTable.removeRow(index)
      this.$zTable.removeCheckedRows()
      this.$zTable.addColumn(title, columns)
      this.$zTable.removeColumn(title)
      this.$zTable.unobserveScrollEndPoint()
    }  
  }
}
</script>

<style lang="scss">
  .z-table {
    .table__row {
      &--head {}
      &--body {}
    }
    .table__cell {
      &:focus {}
      &--head {}
      &--data {}
      &--checkbox {}
    }
  }
</style>

column options

import { Tooltip } from 'vue-z-table'
import SomeHeaderComponent from '~/SomeHeaderComponent'
import SomeDataComponent from '~/SomeDataComponent'
import SomeTooltipComponent from '~/SomeTooltipComponent'

const columns = [
  {
    field: '', // {String} - 머리 열의 고유 이름 (필수 속성)
    title: '', // {String} - 머리 열의 표시 이름
    width: 'auto', // {Number} - 'px'단위로 변환 || {String} - 'auto'
    resizable: true, // {Boolean} - 머리 열 가로 너비 조절 여부
    headerComponent: null, // {Component} - 머리 열에서 사용할 Vue 컴포넌트
    component: null, // {Component} - 일반 열에서 사용할 Vue 컴포넌트
    tooltipComponent: Tooltip, // {Component} - 툴팁으로 사용할 Vue 컴포넌트, 지정하지 않으면 내장 컴포넌트(Tooltip) 사용
    tooltip: '' // {String} - 툴팁 메시지, HTML 사용 가능
  },
  {
    field: 'title',
    title: 'My Title~',
    width: 230,
    resizable: false,
    headerComponent: SomeHeaderComponent,
    component: SomeDataComponent,
    tooltipComponent: SomeTooltipComponent,
    tooltip: 'This is <span style="color:red;">Tooltip</span>!'
  }
  {
    // ...
  }
]

component options for column

headerComponent

<script>
export default {
  props: {
    tableData: Array,
    columnData: Object,
    options: Object
  }
}
</script>

component

<script>
export default {
  props: {
    tableData: Array,
    rowData: Object,
    columnData: Object,
    cellId: String
  }
}
</script>

tooltipComponent

<script>
export default {
  props: {
    columnData: Object,
    tooltip: String
  }
}
</script>